| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- <?php
- class deptClassModel extends Model
- {
- public $firstpid,$groupids,$temparaa;
-
- /**
- * $uarr 相应人员才能查看对应部门数据
- */
- public function getdata($uarr=array())
- {
- $darr = $dtotal =array();
- $gids = '0';
- $dbs = m('admin');
- //要权限判断
- if(is_array($uarr)){
- $did = '0';
- if($uarr)foreach($uarr as $k=>$rs){
- $dpath = str_replace(array('[',']'), array('',''), $rs['deptpath']);
- if(!isempt($dpath)){
- $dpatha = explode(',', $dpath);
- foreach($dpatha as $dpatha1){
- if(isempt($dpatha1))continue;
- $darr[$dpatha1]=$dpatha1;
- if(!isset($dtotal[$dpatha1]))$dtotal[$dpatha1]=0;
- $dtotal[$dpatha1]++;
- }
- }
- if(!isempt(arrvalue($rs,'groupname')))$gids.=','.$rs['groupname'].'';
- }
- foreach($darr as $k1=>$v1)$did.=','.$k1.'';
- $where= 'id in('.$did.')';
-
- if(isempt($this->rock->get('changerange'))){
- if((int)$dbs->getmou('type', $this->adminid)==1){
- $where = '1=1'; //管理员可看全部
- }else{
- $where1= m('view')->viewwhere('dept', $this->adminid, 'id');
- if(contain($where1,'1=1')){
- $where = '1=1'; //全部
- }else{
- $where = '`id`>0 and ((1 '.$where1.') or (id in('.$did.')))';
- }
- }
- }
- }else{
- $where = '1=1';
- }
- $this->firstpid = 0;
-
- //多单位
- if(ISMORECOM){
- $sysalluview = ','.m('option')->getval('sysalluview','0').',1,';
- if(!contain($sysalluview,','.$this->adminid.',')){
- $comid = $dbs->getcompanyid();
- $where.=' and `companyid` in(0,'.$comid.') and `id`>1';
- $this->firstpid = 1;
- }
- }
-
- $rows = $this->getall($where,'`id`,`name`,`pid`,`sort`','`pid`,`sort`');
- if(is_array($uarr))foreach($rows as $k=>$rs){
- //$stotal = $dbs->rows("`status`=1 and instr(`deptpath`,'[".$rs['id']."]')>0");
- $stotal = 0;
- $rows[$k]['stotal'] = $stotal; //对应部门下有多少人
- $rows[$k]['ntotal'] = $this->rock->arrvalue($dtotal, $rs['id'], '0');
- }
- $this->groupids = $gids;
- $this->temparaa = array();
- $this->getshowdeptarr($rows, $this->firstpid, 1);
- return $this->temparaa;
- }
-
- private function getshowdeptarr($rows, $pid, $level)
- {
- foreach($rows as $k=>$rs){
- if($pid>=0){
- if($rs['pid']==$pid){
- $rs['level'] = $level;
- $this->temparaa[] = $rs;
- $this->getshowdeptarr($rows, $rs['id'],$level+1);
- }
- }
- }
- }
-
- public function getdeptrows($ids)
- {
- if(isempt($ids))return array();
- $rows = $this->getall("`id` in($ids)",'`id`,`name`,`pid`,`sort`','`pid`,`sort`');
- return $rows;
- }
-
- /**
- * 获取部门和人员数据
- * $lx=0 通讯录,1选择人员
- */
- public function getdeptuserdata($lx=0)
- {
- $changerange= $this->rock->get('changerange');
- $admindb = m('admin');
- $userarr = $admindb->getuser($lx);
- //根据禁看权限
- $flow = m('flow')->initflow('user');
- $userarr = $flow->viewjinfields($userarr);
-
- $deptarr = $this->getdata($userarr);
- $where1 = '';
- if(ISMORECOM && $this->adminid>1)$where1=' and `companyid` in('.$admindb->getcompanyid().')';
- $grouparr = m('group')->getall('id >0'.$where1.'','id,name','`sort`');
- $garr = array();
- foreach($grouparr as $k=>$rs){
- if(!isempt($changerange)){
- if(!contain(','.$changerange.',',',g'.$rs['id'].','))continue;
- }
- $uids = $admindb->getgrouptouid($rs['id']);
- $usershu = 0;
- if($uids!='')$usershu = count(explode(',', $uids));
- $rs['usershu'] = $usershu;
- $garr[] = $rs;
- }
-
- return array(
- 'uarr' => $userarr,
- 'darr' => $deptarr,
- 'garr' => $garr,
- 'isall'=> $admindb->allshow
- );
- }
-
- //获取某个人对应部门Id
- public function getudept($uid)
- {
- $urs = $this->db->getone('[Q]admin', "`id`='$uid'",'deptid,deptpath');
- $deptid = arrvalue($urs,'deptid','0');
- $drs = $this->getone('`id`='.$deptid.'');
-
- if(!$drs)$drs = array('name'=>'','id'=>0,'num'=>'');
- $nums = $drs['num'];
- if(isempt($nums))$nums = $drs['id'];
- $drs['nums'] = $nums;
- return $drs;
- }
-
- //人员在线离线更新
- public function online($lx)
- {
- $ustr = "online=".$lx.",`lastonline`='".$this->rock->now."'";
- $this->db->update('[Q]admin', $ustr,'`id`='.$this->adminid.'');
- if($lx==1)m('login')->uplastdt('pc', $this->rock->session('admintoken'));
- }
-
-
- public function getheadman($did)
- {
- $rs = $this->getone($did);
- $headid = '';
- $headids = '';
- if($rs){
- $headid = $rs['headid'];
- $headids = $rs['headman'];
- if(isempt($headid) && $rs['pid']>0){
- $sars= $this->getheadman($rs['pid']);
- $headid = $sars[0];
- $headids = $sars[1];
- }
- }
- return array($headid, $headids);
- }
- }
|