Files
xinhu/webmain/model/deptModel.php
2023-04-05 13:00:20 +08:00

170 lines
4.6 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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);
}
}