839 lines
24 KiB
PHP
839 lines
24 KiB
PHP
<?php
|
||
class adminClassModel extends Model
|
||
{
|
||
private $_getjoinstr = array();
|
||
public $nowurs,$allshow,$getsuperarrba;
|
||
|
||
public function gjoin($joinid, $glx='', $blx='bxl')
|
||
{
|
||
$uid = $did = $gid = '0';
|
||
if($glx=='')$glx = 'ud';
|
||
if(isempt($joinid))return '';
|
||
$joinid = strtolower($joinid);
|
||
if(contain($joinid, 'all'))return 'all';
|
||
if($blx!='where' && $glx!='d' && !contain($joinid,'u')
|
||
&& !contain($joinid,'d') && !contain($joinid,'g'))return $joinid;
|
||
$narr = explode(',', $joinid);
|
||
$dwhe = array();
|
||
foreach($narr as $sid){
|
||
if(isempt($sid))continue;
|
||
$lx = substr($sid, 0, 1);
|
||
$ssid = str_replace(array('u','d','g'), array('','',''), $sid);
|
||
if($lx == 'd' || $glx=='d'){
|
||
$did.=','.$ssid.'';
|
||
$dwhe[] = "instr(`deptpath`, '[$ssid]')>0";
|
||
}else if($lx=='g'){
|
||
$gid.=','.$ssid.'';
|
||
}else{
|
||
$uid.=','.$ssid.'';
|
||
}
|
||
}
|
||
$where = '';
|
||
if($gid!='0'){
|
||
$uids = $this->getgrouptouid($gid);
|
||
if($uids!='')$uid.=','.$uids.'';
|
||
}
|
||
if($did != '0'){
|
||
$where = join(' or ', $dwhe);
|
||
if($uid!='0')$where.=" or `id` in($uid)";
|
||
}else{
|
||
if($uid!='0')$where ="`id` in($uid)";
|
||
}
|
||
if($blx == 'where')return $where;
|
||
$guid = '';
|
||
if($where!=''){
|
||
$swhe = '`status`=1';
|
||
if($blx=='all')$swhe = '1=1';
|
||
$swhe.= $this->getcompanywhere();
|
||
$rows = $this->getall("$swhe and ($where)", '`id`');
|
||
foreach($rows as $k=>$rs)$guid.=','.$rs['id'].'';
|
||
if($guid !='')$guid = substr($guid, 1);
|
||
}
|
||
return $guid;
|
||
}
|
||
|
||
/**
|
||
* 根据组部门id获取底下人员ID
|
||
*/
|
||
public function gjoins($receid)
|
||
{
|
||
if(contain($receid,'u') || contain($receid, 'd') || contain($receid, 'g'))$receid = $this->gjoin($receid);
|
||
return $receid;
|
||
}
|
||
|
||
/**
|
||
* 根据组获取底下人员Id
|
||
*/
|
||
public function getgrouptouid($gid)
|
||
{
|
||
if(isempt($gid))return '';
|
||
$where = "1=1 and ((`type`='gu' and `mid` in($gid)) or (`type`='ug' and `sid` in($gid)))";
|
||
$rows = $this->db->getall("select `type`,`mid`,`sid` from `[Q]sjoin` where $where");
|
||
$uids = array();
|
||
foreach($rows as $k=>$rs){
|
||
$uid = '';
|
||
if($rs['type']=='gu')$uid =$rs['sid'];
|
||
if($rs['type']=='ug')$uid =$rs['mid'];
|
||
if($uid!='' && !in_array($uid, $uids)){
|
||
$uids[]= $uid;
|
||
}
|
||
}
|
||
return join(',', $uids);
|
||
}
|
||
|
||
/**
|
||
* 判断某个id是不是在里面,权限
|
||
*/
|
||
public function containjoin($joinid, $myid=0, $glx='ud')
|
||
{
|
||
$bo = false;
|
||
$wh = $this->gjoin($joinid, $glx, 'where');
|
||
if($wh == 'all')$bo = true;
|
||
if(!$bo && $wh != ''){
|
||
if($this->rows("`id`='$myid' and ($wh)")>0)$bo = true;
|
||
}
|
||
return $bo;
|
||
}
|
||
|
||
public function getjoinstr($fids, $us, $lx=0, $slx=0)
|
||
{
|
||
$s = '';
|
||
if(is_numeric($us)){
|
||
$key= 'a'.$fids.''.$us.'_'.$lx.'_'.$slx.'';
|
||
if(isset($this->_getjoinstr[$key]))return $this->_getjoinstr[$key];
|
||
$us = $this->getone($us,'id,`name`,`deptid`,`deptpath`,`type`');
|
||
}
|
||
if(!$us)return '';
|
||
$this->nowurs = $us;
|
||
$uid = $us['id'];
|
||
$key = 'a'.$fids.''.$uid.'_'.$lx.'_'.$slx.'';
|
||
if(isset($this->_getjoinstr[$key]))return $this->_getjoinstr[$key];
|
||
if($slx==0)$tj[] = "ifnull($fids,'')=''";
|
||
$tj[] = $this->rock->dbinstr($fids, 'all');
|
||
$tj[] = $this->rock->dbinstr($fids, 'u'.$uid);
|
||
if($us){
|
||
if(!isempt($us['deptpath'])){
|
||
$dep = explode(',', $us['deptpath']);
|
||
foreach($dep as $deps){
|
||
$_deps = str_replace(array('[',']'), array('',''), $deps);
|
||
$tj[] = $this->rock->dbinstr($fids, 'd'.$_deps);
|
||
}
|
||
}
|
||
//所在组Id
|
||
$gids = m('sjoin')->getgroupid($uid);
|
||
if($gids!='0'){
|
||
$gidsa = explode(',', $gids);
|
||
foreach($gidsa as $k1=>$gid1)if($k1>0)$tj[] = $this->rock->dbinstr($fids, 'g'.$gid1);
|
||
}
|
||
}
|
||
$s = join(' or ', $tj);
|
||
if($s != '' && $lx==0)$s = ' and ('.$s.')';
|
||
$this->_getjoinstr[$key] = $s;
|
||
return $s;
|
||
}
|
||
|
||
/**
|
||
* 获取对应部门负责人
|
||
*/
|
||
public function getdeptheadman($id, $lx=0)
|
||
{
|
||
$drs = $this->db->getone('[Q]dept','id='.$id.'');
|
||
if(!$drs)return false;
|
||
$cuid = $drs['headid'];
|
||
$name = $drs['headman'];
|
||
if(isempt($cuid)){
|
||
if($lx==0){
|
||
$lbar = $this->getdeptheadman($drs['pid'], 1);
|
||
if($lbar){
|
||
$cuid = $lbar[0];
|
||
$name = $lbar[1];
|
||
}
|
||
}
|
||
}
|
||
if(isempt($cuid))return false;
|
||
return array($cuid, $name);
|
||
}
|
||
|
||
/**
|
||
* 获取某个人的上级主管或者领导
|
||
* 返回 array(id,$name)
|
||
*/
|
||
public function getsuperman($uid)
|
||
{
|
||
$b = array(0,'');
|
||
$urs = $this->getone($uid,'`superid`,`superman`,`deptid`');
|
||
if(!$urs)return $b;
|
||
$cuid = $urs['superid'];
|
||
$name = $urs['superman'];
|
||
if(isempt($cuid)){
|
||
$deptid = (int)$urs['deptid'];
|
||
if($deptid > 0){
|
||
$drs = $this->getdeptheadman($deptid);
|
||
if($drs){
|
||
$cuid = $drs[0];
|
||
$name = $drs[1];
|
||
}
|
||
}
|
||
}
|
||
if(!isempt($cuid)){
|
||
$b = array($cuid, $name);
|
||
}
|
||
return $b;
|
||
}
|
||
|
||
public function getjoinstrs($fids, $us, $slx=0, $lx=0)
|
||
{
|
||
return $this->getjoinstr($fids, $us, $lx, $slx);
|
||
}
|
||
|
||
/**
|
||
获取人员上级主管id
|
||
*/
|
||
public function getup($uid)
|
||
{
|
||
$one = $this->getone($uid, 'superid,deptid');
|
||
$rows = $this->getpath($one['deptid'], $one['superid']);
|
||
$s = $rows['superpath'];
|
||
$s = str_replace('[', '', $s);
|
||
$s = str_replace(']', '', $s);
|
||
return $s;
|
||
}
|
||
|
||
/**
|
||
* 递归获取人员全部上级
|
||
*/
|
||
public function getsuperarr($uid, $lx=0)
|
||
{
|
||
if($lx==0)$this->getsuperarrba = array();
|
||
$sql = "select a.id,a.name,b.`headid`,a.`superid` from `[Q]admin` a left join `[Q]dept` b on a.`deptid`=b.`id` where a.`id`='$uid'";
|
||
$rows = $this->db->getall($sql);
|
||
$superid = '';
|
||
if($rows){
|
||
$urs = $rows[0];
|
||
$superid = $urs['superid'];
|
||
if(isempt($superid))$superid = $urs['headid'];
|
||
}
|
||
if(!isempt($superid) && $lx<20){
|
||
$superida = explode(',', $superid);
|
||
foreach($superida as $sid){
|
||
if($sid != $uid){
|
||
$sna = $this->getmou('name', $sid);
|
||
$this->getsuperarrba[] = array('id'=>$sid,'name'=>$sna);
|
||
$this->getsuperarr($sid, $lx+1);
|
||
}
|
||
}
|
||
}
|
||
return $this->getsuperarrba;
|
||
}
|
||
|
||
private $deptarr = array();
|
||
public function getpath($did, $sup,$dids='')
|
||
{
|
||
$deptpath = $this->db->getpval('[Q]dept', 'pid', 'id', $did, '],[');
|
||
$deptallname= $this->db->getpval('[Q]dept', 'pid', 'name', $did, '/');
|
||
if(!$this->deptarr)$this->deptarr = $this->db->getkeyall('[Q]dept','id,name');
|
||
$deptname = arrvalue($this->deptarr, $did);
|
||
$supername = '';
|
||
$deptnames = '';
|
||
|
||
$superpath = '';
|
||
if(!isempt($sup)){
|
||
$sua = explode(',', $sup);
|
||
foreach($sua as $suas){
|
||
$sss1 = $this->db->getpval('[Q]admin', 'superid', 'id' ,$suas, '],[');
|
||
if($sss1 != '')$superpath.=',['.$sss1.']';
|
||
$sss2 = $this->db->getmou('[Q]admin', 'name', "`id`='$suas'");
|
||
if(!isempt($sss2))$supername.=','.$sss2;
|
||
}
|
||
if($superpath!='')$superpath=substr($superpath,1);
|
||
if($supername!='')$supername=substr($supername,1);
|
||
}
|
||
//部门路径
|
||
if(!isempt($deptpath))$deptpath = $this->rock->strformat('[?0]', $deptpath);
|
||
//有多部门
|
||
if(!isempt($dids)){
|
||
$didsa = explode(',', $dids);
|
||
foreach($didsa as $dids1){
|
||
$desss = $this->db->getpval('[Q]dept', 'pid', 'id', $dids1, '],[');
|
||
if(isempt($desss))continue;
|
||
$desssa = explode(',', $this->rock->strformat('[?0]', $desss));
|
||
foreach($desssa as $desssa1){
|
||
if(!contain($deptpath, $desssa1))$deptpath.=','.$desssa1.'';
|
||
}
|
||
$names1 = arrvalue($this->deptarr, $dids1);
|
||
if(!isempt($names1))$deptnames.=','.$names1.'';
|
||
}
|
||
if($deptnames!='')$deptnames=substr($deptnames, 1);
|
||
}
|
||
if(!isempt($deptpath) && substr($deptpath,0,1)==',')$deptpath = substr($deptpath,1);
|
||
|
||
$rows['deptpath'] = $deptpath;
|
||
$rows['superpath'] = $superpath;
|
||
$rows['deptname'] = $deptname;
|
||
$rows['deptnames'] = $deptnames;
|
||
$rows['superman'] = $supername;
|
||
$rows['deptallname']= $deptallname;
|
||
|
||
return $rows;
|
||
}
|
||
|
||
/**
|
||
* 获取下级人员id
|
||
* $lx 0 全部下级,1直属下级
|
||
* return 所有人员ID
|
||
*/
|
||
public function getdown($uid, $lx=0)
|
||
{
|
||
$where = $this->getdowns($uid, $lx);
|
||
$rows = $this->getall($where, 'id');
|
||
$s = '';
|
||
foreach($rows as $k=>$rs)$s.=','.$rs['id'];
|
||
if($s != '')$s = substr($s, 1);
|
||
return $s;
|
||
}
|
||
|
||
/**
|
||
* 获取下级人员id
|
||
* $lx 0 全部下级,1直属下级
|
||
* return 字符串条件
|
||
*/
|
||
public function getdowns($uid, $lx=0)
|
||
{
|
||
$where = "instr(superpath,'[$uid]')>0";
|
||
if($lx==1)$where=$this->rock->dbinstr('superid', $uid);
|
||
return $where;
|
||
}
|
||
|
||
/**
|
||
* 获取下属人员Id条件记录,如我下属任务
|
||
* 返回如( distid in(1) or uid in(2) )
|
||
*/
|
||
public function getdownwhere($fid, $uid, $lx=0)
|
||
{
|
||
$bstr = $this->getdown($uid, $lx);
|
||
$where= '1=2';
|
||
if($bstr=='')return $where;
|
||
$bas = explode(',', $bstr);
|
||
$barr = array();
|
||
foreach($bas as $bid){
|
||
$barr[] = ''.$fid.' in('.$bid.')';
|
||
}
|
||
$where = join(' or ', $barr);
|
||
$where = '('.$where.')';
|
||
return $where;
|
||
}
|
||
|
||
//返回我下属字符串条件如: instr(',1,2,3,', 字段)>0;
|
||
public function getdownwheres($fid, $uid, $lx=0)
|
||
{
|
||
$bstr = $this->getdown($uid, $lx);
|
||
$where= '1=2';
|
||
if($bstr=='')return $where;
|
||
$bstr = ','.$bstr.',';
|
||
$where= "instr('$bstr', concat(',',$fid,','))>0";
|
||
return $where;
|
||
}
|
||
|
||
|
||
|
||
|
||
/**
|
||
* 获取用户信息(部门,单位,职位等)
|
||
*/
|
||
public function getinfor($uid)
|
||
{
|
||
$unitname = $deptname = $ranking = '';
|
||
$name = '';
|
||
$face = '';
|
||
$deptid = '';
|
||
$rs = $this->getone($uid, 'name,deptname,deptid,ranking,face');
|
||
if($rs){
|
||
$deptname = $rs['deptname'];
|
||
$ranking = $rs['ranking'];
|
||
$name = $rs['name'];
|
||
$deptid = $rs['deptid'];
|
||
$face = $this->getface($rs['face']);
|
||
if(!$this->isempt($deptid))$unitname = $this->db->getpval('[Q]dept','pid','name', $deptid);
|
||
}
|
||
return array(
|
||
'id' => $uid,
|
||
'unitname' => $unitname,
|
||
'deptname' => $deptname,
|
||
'name' => $name,
|
||
'ranking' => $ranking,
|
||
'face' => $face,
|
||
'deptid' => $deptid
|
||
);
|
||
}
|
||
|
||
/*
|
||
获取在线的人员Id
|
||
*/
|
||
public function getonline($receid, $lx=10)
|
||
{
|
||
$uarr = $this->getonlines('reim,pc', $receid, $lx);
|
||
$jonus = join(',', $uarr);
|
||
return $jonus;
|
||
}
|
||
|
||
//获取对应类型在线人员
|
||
public function getonlines($type, $teuid='all', $lx=11, $where='')
|
||
{
|
||
$arrs = array();
|
||
$dts = c('date')->adddate($this->rock->now, 'i', 0-$lx);
|
||
$wheres = '';
|
||
if($teuid != 'all' && $teuid!=''){
|
||
if($this->contain($teuid,'u') || $this->contain($teuid,'d')){
|
||
$teuid = $this->gjoin($teuid);
|
||
if($teuid=='')return $arrs;
|
||
}
|
||
$wheres=" and `uid` in($teuid)";
|
||
}
|
||
if($lx>0){
|
||
$wheres .= " and `moddt`>'$dts'";
|
||
}
|
||
$sql = "select `uid` from `[Q]logintoken` where instr(',".$type.",', concat(',',`cfrom`, ','))>0 and `online`=1 $wheres $where group by `uid`";
|
||
|
||
$rows = $this->db->getall($sql);
|
||
foreach($rows as $k=>$rs){
|
||
$arrs[] = $rs['uid'];
|
||
}
|
||
return $arrs;
|
||
}
|
||
|
||
public function getface($face, $mr='')
|
||
{
|
||
if($face==null)$face='';
|
||
if($mr=='')$mr = 'images/noface.png';
|
||
if(substr($face,0,4)!='http' && !$this->isempt($face))$face = URL.''.$face.'';
|
||
$face = $this->rock->repempt($face, $mr);
|
||
return $face;
|
||
}
|
||
|
||
/**
|
||
* 获取人员信息
|
||
*/
|
||
public function getuserinfo($uids='0')
|
||
{
|
||
$uarr = $this->getall("`id` in(".$uids.") and `status`=1",'`id`,`name`,`face`','`sort`');
|
||
foreach($uarr as $k=>$rs){
|
||
$uarr[$k]['face'] = $this->getface($rs['face']);
|
||
}
|
||
return $uarr;
|
||
}
|
||
|
||
/**
|
||
* 获取人员数据
|
||
* $lx=0 通讯录,1选择人员
|
||
*/
|
||
public function getuser($lx=0, $uid=0)
|
||
{
|
||
$fields = '`id`,`name`,`deptid`,`deptname`,`deptpath`,`groupname`,`deptallname`,`mobile`,`ranking`,`tel`,`face`,`sex`,`email`,`pingyin`,`deptids`,`isvcard`';
|
||
$this->allshow = false;
|
||
if($uid==0){
|
||
$uid = $this->adminid;
|
||
$where = m('view')->viewwhere('user', $uid, 'id');
|
||
$where = str_replace('{asqom}','', $where);
|
||
$range = $this->rock->get('changerange'); //指定了人
|
||
$rangeno= $this->rock->get('changerangeno'); //no指定了人
|
||
$where1 = '';$where2 = '';
|
||
if(!isempt($range)){
|
||
//本部门||下级部门
|
||
if($range=='dept' || $range=='deptall'){
|
||
$urs = $this->getone($uid);
|
||
$deptid = $urs['deptid'];
|
||
if(!isempt($urs['deptids']))$deptid.=','.$urs['deptids'].'';
|
||
$deptida = explode(',', $deptid);
|
||
$datsa = array();
|
||
|
||
if($range=='dept'){
|
||
$datsa[]= '`deptid` in('.$deptid.')';
|
||
foreach($deptida as $did1)if($did1)$datsa[]=$this->rock->dbinstr('deptids', $did1);
|
||
}else{
|
||
foreach($deptida as $did1)if($did1)$datsa[] = 'instr(`deptpath`,\'['.$did1.']\')>0';
|
||
}
|
||
|
||
$where1 = join(' )or( ', $datsa);
|
||
$where1 = 'and ('.$where1.')';
|
||
}else if($range=='down' || $range=='downall'){
|
||
$where1 = 'and '.$this->rock->dbinstr('superid', $this->adminid).'';
|
||
if($range=='downall')$where1 = 'and instr(`superpath`,\'['.$this->adminid.']\')>0';
|
||
}else{
|
||
$where1 = $this->gjoin($range, '', 'where');
|
||
$where1 = 'and ('.$where1.')';
|
||
}
|
||
}
|
||
if(!isempt($rangeno)){
|
||
$where2 = $this->gjoin($rangeno, '', 'where');
|
||
$where2 = 'and not('.$where2.')';
|
||
}
|
||
|
||
//--start--
|
||
if(ISMORECOM && $uid>1){
|
||
$comid = $this->getcompanyid($uid);
|
||
$str11 = $this->rock->dbinstr('`dwid`', $comid);
|
||
$where2.=' and (`companyid`='.$comid.' or '.$str11.')';
|
||
}
|
||
//--end--
|
||
//读取我可查看权限
|
||
if(contain($where,'1=1')){
|
||
$where = '';
|
||
if($this->rock->get('gtype')=='change' && getconfig('userhoucache')=='1'){
|
||
$this->allshow = true;
|
||
if(!ISMORECOM && c('cache')->get('deptuserjson'))return array();
|
||
}
|
||
}else{
|
||
$where = 'and ((1 '.$where.') or (`id`='.$uid.'))';
|
||
}
|
||
if($lx==0)$where2.=' and `isvcard`=1'; //通讯录显示
|
||
$sql = "select $fields from `[Q]admin` where `status`=1 $where $where1 $where2 order by `sort`,`name`";
|
||
$rows = $this->db->getall($sql);
|
||
}else{
|
||
$sql = "select $fields from `[Q]admin` where `id`='$uid'";
|
||
$rows = $this->db->getall($sql);
|
||
}
|
||
|
||
|
||
foreach($rows as $k=>$rs){
|
||
$rows[$k]['face'] = $rs['face'] = $this->getface($rs['face']);
|
||
$deptidss = ','.$rs['deptid'].',';
|
||
if(!isempt($rs['deptids']))$deptidss.=''.$rs['deptids'].',';
|
||
$rows[$k]['deptidss'] = $deptidss;
|
||
if($rs['pingyin']==null)$rows[$k]['pingyin']='';
|
||
if($rs['ranking']==null)$rows[$k]['ranking']='';
|
||
if($rs['deptname']==null)$rows[$k]['deptname']='';
|
||
}
|
||
return $rows;
|
||
}
|
||
|
||
public function getadmininfor($rows, $suids, $fid='checkid')
|
||
{
|
||
$farr = $this->db->getarr('[Q]admin', "`id` in($suids)",'`face`,`name`');
|
||
foreach($rows as $k=>$rs){
|
||
$face = $name = '';
|
||
if(isset($farr[$rs[$fid]])){
|
||
$face = $farr[$rs[$fid]]['face'];
|
||
$name = $farr[$rs[$fid]]['name'];
|
||
$rows[$k]['name'] = $name;
|
||
}
|
||
$rows[$k]['face'] = $this->getface($face);
|
||
}
|
||
return $rows;
|
||
}
|
||
|
||
public function getusinfo($uid, $fields='id')
|
||
{
|
||
$urs = $this->db->getone('[Q]userinfo', $uid, $fields);
|
||
if(!$urs){
|
||
$urs = array();
|
||
$far = explode(',', str_replace('`','',$fields));
|
||
foreach($far as $f)$urs[$f]='';
|
||
$urs['id'] = $uid;
|
||
}
|
||
return $urs;
|
||
}
|
||
|
||
|
||
|
||
|
||
public function getidtouser($id)
|
||
{
|
||
return $this->getmou('user', "`id`='$id'");
|
||
}
|
||
|
||
|
||
|
||
|
||
/**
|
||
* 更新信息
|
||
*/
|
||
public function updateinfo($where='')
|
||
{
|
||
if($where)c('cache')->del('deptuserjson');
|
||
$rows = $this->db->getall("select * from `[Q]admin` a where id>0 $where");
|
||
$total = $this->db->count;
|
||
$cl = 0;
|
||
$sjo = m('sjoin');
|
||
foreach($rows as $k=>$rs){
|
||
$nrs = $this->getpath($rs['deptid'], $rs['superid'], $rs['deptids']);
|
||
$gids = $sjo->getgroupid($rs['id']);
|
||
if($gids=='0'){
|
||
$gids = '';
|
||
}else{
|
||
$gids = substr($gids, 2);
|
||
}
|
||
if($nrs['deptpath'] != $rs['deptpath'] || $nrs['deptname'] != $rs['deptname'] || $nrs['superpath'] != $rs['superpath'] || $nrs['superman'] != $rs['superman'] || $nrs['deptnames'] != $rs['deptnames'] || $nrs['deptallname'] != $rs['deptallname'] || $gids != $rs['groupname']){
|
||
$nrs['groupname'] = $gids;
|
||
$this->record($nrs, "`id`='".$rs['id']."'");
|
||
$cl++;
|
||
}
|
||
}
|
||
|
||
$cl += $this->updateuserinfo($where);
|
||
|
||
//更新单据上flow_bill上的uname,udeptname
|
||
m('flowbill')->updatebill($where);
|
||
m('imgroup')->updategall(); //更新会话上
|
||
|
||
return array($total, $cl);
|
||
}
|
||
public function updateuserinfo($whe='')
|
||
{
|
||
$db = m('userinfo');
|
||
$rows = $this->db->getall('select a.name,a.deptname,a.id,a.status,a.ranking,b.id as ids,a.sex,a.tel,a.mobile,a.email,a.workdate,a.quitdt,b.state,a.num,a.companyid,a.dwid,a.deptnames,a.rankings,a.deptallname from `[Q]admin` a left join `[Q]userinfo` b on a.id=b.id where a.id>0 '.$whe.' ');
|
||
$xbo = 0;
|
||
foreach($rows as $k=>$rs){
|
||
$uparr = array(
|
||
'id' => $rs['id'],
|
||
'name' => $rs['name'],
|
||
'deptname' => $rs['deptname'],
|
||
'deptnames' => $rs['deptnames'],
|
||
'deptallname' => $rs['deptallname'],
|
||
'ranking' => $rs['ranking'],
|
||
'rankings' => $rs['rankings'],
|
||
'sex' => $rs['sex'],
|
||
'tel' => $rs['tel'],
|
||
'mobile' => $rs['mobile'],
|
||
'email' => $rs['email'],
|
||
'workdate' => $rs['workdate'],
|
||
'quitdt' => $rs['quitdt'],
|
||
'num' => $rs['num'],
|
||
'companyid' => $rs['companyid'],
|
||
'dwid' => $rs['dwid'],
|
||
);
|
||
if(isempt($rs['quitdt'])){
|
||
if($rs['state']=='5')$uparr['state'] = 0;
|
||
}else{
|
||
$uparr['state'] = 5;//离职
|
||
}
|
||
if(isempt($rs['ids'])){
|
||
$db->insert($uparr);
|
||
}else{
|
||
unset($uparr['id']);
|
||
$db->update($uparr, $rs['ids']);
|
||
}
|
||
$xbo+=$this->db->row_count();
|
||
}
|
||
return $xbo;
|
||
}
|
||
|
||
//返回这个月份人员
|
||
public function monthuwhere($month, $qz='')
|
||
{
|
||
$month = substr($month, 0, 7);
|
||
$start = ''.$month.'-01';
|
||
$enddt = c('date')->getenddt($month);
|
||
$s = $this->monthuwheres($start, $enddt, $qz);
|
||
return $s;
|
||
}
|
||
public function monthuwheres($start, $enddt, $qz='')
|
||
{
|
||
$s = " and ($qz`quitdt` is null or $qz`quitdt`>='$start') and ($qz`workdate` is null or $qz`workdate`<='$enddt')";
|
||
return $s;
|
||
}
|
||
|
||
public function changeface($uid, $fid)
|
||
{
|
||
$frs = m('file')->getone($fid);
|
||
if(!$frs)return false;
|
||
$path = $frs['thumbpath'];
|
||
if(isempt($path))$path = $frs['filepath'];
|
||
$face = $path;
|
||
if(file_exists($path)){
|
||
$face = ''.UPDIR.'/face/'.$uid.'_'.rand(1000,9999).'.jpg';
|
||
$this->rock->createdir($face);
|
||
c('image')->conver($path, $face);
|
||
$oface = $this->getmou('face', $uid);
|
||
if(!isempt($oface) && file_exists($oface))@unlink($oface);//删除原来头像
|
||
$this->update("face='$face'", $uid);
|
||
}
|
||
m('file')->delfile($fid);
|
||
if(!file_exists($face))$face='';
|
||
return $face;
|
||
}
|
||
|
||
//根据邮箱获取人员姓名
|
||
private $emailtoursarr = array();
|
||
public function emailtours($email)
|
||
{
|
||
$key = 'rock'.$email.'';
|
||
if(!isset($this->emailtoursarr[$key])){
|
||
$urs = $this->getone("`email`='$email'",'`id`,`name`');
|
||
$this->emailtoursarr[$key] = $urs;
|
||
}else{
|
||
$urs = $this->emailtoursarr[$key];
|
||
}
|
||
return $urs;
|
||
}
|
||
|
||
/**
|
||
* 关键词搜索的
|
||
*/
|
||
public function getkeywhere($key, $qz='', $ots='')
|
||
{
|
||
$where = " and ($qz`name` like '%$key%' or $qz`user` like '%$key%' or $qz`deptallname` like '%$key%' or $qz`ranking` like '%$key%' or $qz`pingyin` like '$key%' $ots)";
|
||
return $where;
|
||
}
|
||
|
||
/**
|
||
* 根据receid获取对应字段$fid聚合得到多个,分开的
|
||
*/
|
||
public function getjoinfields($receid, $fid)
|
||
{
|
||
if(!is_numeric($receid)){
|
||
$receid = $this->gjoin($receid,'ud', 'where'); //读取
|
||
$where = '1=1';
|
||
if($receid != 'all')$where = $receid;
|
||
if(isempt($receid))$where = '1=2';
|
||
}else{
|
||
$where = 'id='.$receid.'';
|
||
}
|
||
$wherew1 = $this->getcompanywhere();
|
||
$rows = $this->getall("`status`=1 $wherew1 and ($where)", '`id`,`'.$fid.'`');
|
||
$strs = '';
|
||
foreach($rows as $k=>$rs){
|
||
if(!isempt($rs[$fid]))$strs.=','.$rs[$fid].'';
|
||
}
|
||
if($strs!='')$strs = substr($strs, 1);
|
||
|
||
return $strs;
|
||
}
|
||
|
||
/**
|
||
* 是否已修改密码了
|
||
*/
|
||
public function iseditpass($uid)
|
||
{
|
||
$editpass = (int)getconfig('editpass','0');
|
||
$stype = getconfig('systype');
|
||
if($editpass==0 || $stype=='dev' || $stype=='demo')return 1;
|
||
$urs = $this->getone('`id`='.$uid.'');
|
||
$editpass = (int)arrvalue($urs, 'editpass','0');
|
||
return $editpass;
|
||
}
|
||
|
||
/**
|
||
* 读取用户信息
|
||
*/
|
||
private $getuserrsarr = array();
|
||
public function geturs($id)
|
||
{
|
||
if(isempt($id))return false;
|
||
if(isset($this->getuserrsarr[$id]))return $this->getuserrsarr[$id];
|
||
|
||
$where = "`user`='$id'";
|
||
$check = c('check');
|
||
if($check->iscnmobile($id)){
|
||
$where = "`mobile`='$id'";
|
||
}elseif($check->isemail($id)){
|
||
$where = "`email`='$id'";
|
||
}elseif($check->isincn($id)){
|
||
$where = "`name`='$id'";
|
||
}elseif($check->isnumber($id)){
|
||
$where = "`id`='$id'";
|
||
}
|
||
if(contain($id, ':')){
|
||
$ida = explode(':', $id);
|
||
$where = "`".$ida[0]."`='".$ida[1]."'";
|
||
}
|
||
$urs = $this->db->getall("select * from `[Q]admin` where $where");
|
||
if($urs)$urs = $urs[0];
|
||
$this->getuserrsarr[$id] = $urs;
|
||
return $urs;
|
||
}
|
||
|
||
/**
|
||
* 获取单位的信息
|
||
*/
|
||
public function getcompanyinfo($uid=0, $glx=0)
|
||
{
|
||
if($uid==0)$uid = $this->adminid;
|
||
if($uid==0)$uid = (int)arrvalue($GLOBALS,'adminid','0');
|
||
if($uid==0)$uid = 1;//必须要有个值
|
||
$urs = $this->getone('`id`='.$uid.'');
|
||
$companyid = $urs['companyid'];
|
||
$comid = (int)arrvalue($urs, 'comid', '0');
|
||
if(isempt($companyid) || $companyid=='0'){
|
||
$this->update('`companyid`=1', $uid);
|
||
$companyid = '1';
|
||
}
|
||
$alldwid = $companyid;
|
||
$dwid= arrvalue($urs, 'dwid');
|
||
if(!isempt($dwid))$alldwid.=','.$dwid.'';
|
||
$companyinfo = array('id'=>0);
|
||
$companyinfd = false;
|
||
$cwhere = '`id` in('.$alldwid.')';
|
||
if($glx==5 && $uid==1)$cwhere = '`id`>0';
|
||
$companyinfoall = m('company')->getall($cwhere,'*','`pid`,`sort`');
|
||
$nid = $companyid;
|
||
$allid = array(0);
|
||
foreach($companyinfoall as $k=>$rs){
|
||
$nlogo = 'images/logo.png';
|
||
$logo = $rs['logo'];
|
||
if(isempt($logo)){
|
||
$logo = $nlogo;
|
||
}else{
|
||
if(substr($logo,0,4)!='http' && !file_exists($logo))
|
||
$logo = $nlogo;
|
||
}
|
||
$companyinfoall[$k]['logo'] = $rs['logo'] = $this->getface($logo, $nlogo);
|
||
|
||
if($rs['id']==$nid)$companyinfo = $rs;
|
||
if($rs['id']==$comid)$companyinfd = $rs;
|
||
$allid[] = $rs['id'];
|
||
}
|
||
if($companyinfd)$companyinfo = $companyinfd;
|
||
$this->setcompanyid($companyinfo['id']);
|
||
if($glx==1)return $companyinfo;
|
||
if($glx==2)return $companyinfo['id'];
|
||
return array(
|
||
'companyinfoall' => $companyinfoall,
|
||
'companyallid' => $allid,
|
||
'companyinfo' => $companyinfo,
|
||
'companyid' => $companyinfo['id']
|
||
);
|
||
}
|
||
|
||
public function getcompanyid($uid=0)
|
||
{
|
||
//$comid = (int)$this->rock->session('companyid','0');
|
||
$comid = $this->getcompanyinfo($uid,2);
|
||
if(!$comid)$comid=1;
|
||
return $comid;
|
||
}
|
||
|
||
public function setcompanyid($comid)
|
||
{
|
||
//$this->rock->setsession('companyid', $comid);
|
||
return $comid;
|
||
}
|
||
|
||
public function getcompanywhere($lx=0, $qz='',$comid=false)
|
||
{
|
||
$where = '';
|
||
//--start--
|
||
if(ISMORECOM){
|
||
if($comid===false)$comid = ''.$this->getcompanyid().'';
|
||
$comi2 = $comid;
|
||
$str11 = $this->rock->dbinstr(''.$qz.'dwid', $comid);
|
||
if($this->adminid==1)$comid.=',0';
|
||
$where= " and (".$qz."`companyid` in (".$comid.") or $str11)";
|
||
if($lx==1)$where= " and ".$qz."`comid` in (".$comid.")";
|
||
if($lx==2)$where= " and ".$qz."`companyid` in (".$comid.")";
|
||
if($lx==3)$where= " and ".$qz."`comid`=".$comi2."";
|
||
if($lx==5)$where= " and ".$qz."`companyid`=".$comi2.""; //用在关联userinfo表只看本单位
|
||
if($lx==4)$where= " and ".$qz."`uid` in(select `id` from `[Q]admin` where `companyid`=".$comi2.")";
|
||
}
|
||
//--end--
|
||
return $where;
|
||
}
|
||
|
||
public function getcompanynum($uid=0)
|
||
{
|
||
$num ='';
|
||
$carr = $this->getcompanyinfo($uid);
|
||
$num = $carr['companyinfo']['num'];
|
||
if(isempt($num))$num='';
|
||
return $num;
|
||
}
|
||
} |