| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- <?php
- class flow_userClassModel extends flowModel
- {
-
- protected $flowviewufieds = 'id';
- protected $flowcompanyidfieds = 'companyid';
-
- public function getstatusarr()
- {
- $barr[1] = array('启用','green');
- $barr[0] = array('停用','#888888');
- return $barr;
- }
-
- public function flowsearchfields()
- {
- $arr[] = array('name'=>'部门/用户...','fields'=>'id');
- return $arr;
- }
-
-
-
- /**
- * 用户显示展示
- */
- protected function flowbillwhere($uid, $lx)
- {
- $where = '';
- $pnum = $this->rock->get('pnum');
- //其他地方来的,需要权限
- if($pnum != 'all' ){
- $where = 'and `status`=1 '.$this->viewmodel->viewwhere($this->moders, $uid, 'id');//权限控制
- }
- $detpid = (int)$this->rock->post('deptid','0');
- if($detpid>0){
- $where.= " and instr(`deptpath`,'[$detpid]')>0";
- }
- return array(
- 'fields'=> '`name`,`id`,`id` as uid,`face`,`sort`,`deptallname`,deptpath,`ranking`,`tel`,`mobile`,`email`,`user`,num,workdate,sex,deptname,deptnames,superman,status,type,online,lastonline,isvcard,`companyid`,`comid`',
- 'order' => '`status` desc,`sort`',
- 'where' => $where
- );
- }
-
-
- //替换
- private $companyarr = array();
- public function flowrsreplace($rs, $lx=0)
- {
- if(!$this->companyarr){
- $this->companyarr = $this->db->getkeyall('[Q]company','id,name');
- }
- if(isset($rs['mobile'])){
- $sjhao = $rs['mobile'];
- }
- if(getconfig('systype')=='demo')$rs['mobile']='';
-
- if($this->rock->ismobile()){
- if(isset($rs['mobile']) && !isempt($rs['mobile']))$rs['mobile']='<a onclick="return callPhone(\''.$sjhao.'\')" href="tel:'.$sjhao.'">'.$rs['mobile'].'</a>';
- if(isset($rs['tel']) && !isempt($rs['tel']))$rs['tel']='<a onclick="return callPhone(this)" href="tel:'.$rs['tel'].'">'.$rs['tel'].'</a>';
- }
- $type = arrvalue($rs,'type');
- if($type=='0')$rs['type']='';
- if($type=='1')$rs['type']='<font color=green>是</font>';
- if(isset($rs['companyid']))$rs['companyid'] = arrvalue($this->companyarr, $rs['companyid']);
-
- //判断当前用户状态
- $online = arrvalue($rs,'online','0');
- $lastonline = arrvalue($rs,'lastonline');
- if($online=='1'){
- $jgtime = time()- strtotime($lastonline);
- if($jgtime>210){
- $online = '0'; //超过200
- $this->adminmodel->update('online=0', $rs['id']);
- }
- }
- $rs['online'] = $online;
- if($lx==1){
- $rs['temp_dwid'] = $this->getdwname($rs);
- }
- return $rs;
- }
-
- //编辑时候替换
- protected function flowrsreplaceedit($rs)
- {
- $rs['groupname'] = m('sjoin')->getgroupid($rs['id']);
- $rs['pass'] = '';
- unset($rs['deptallname']);
-
- $rs['temp_dwid'] = $this->getdwname($rs);
- if(getconfig('systype')=='demo')$rs['mobile'] = '';
- return $rs;
- }
-
- private function getdwname($rs)
- {
- $dwid = arrvalue($rs,'dwid');
- $temp_dwid = '';
- if(!isempt($dwid)){
- $dwarr = m('company')->getall('`id` in('.$dwid.')');
- foreach($dwarr as $k1=>$rs1)$temp_dwid.=','.$rs1['name'].'';
- if($temp_dwid!='')$temp_dwid = substr($temp_dwid, 1);
- }
- return $temp_dwid;
- }
-
- //删除用户时
- protected function flowdeletebill($sm)
- {
- $id = $this->id;
- $name = $this->rs['name'];
- m('im_messzt')->delete('`uid`='.$id.'');
- m('im_history')->delete('`uid`='.$id.'');
-
-
- $dbs = m('userinfo');
- $urs = $dbs->getone($id);
- if(!$urs)return;
- $quitdt = $urs['quitdt'];
- $state = $urs['state'];
- $uarr = array();
- if(isempt($quitdt))$uarr['quitdt'] = date('Y-m-d'); //设置离职日期
- if($state != '5')$uarr['state'] = 5;//离职状态为5
- if($uarr)$dbs->update($uarr, $id);
- }
-
- //删除前判断
- protected function flowdeletebillbefore()
- {
- $rs = m('flowbill')->getone('`uid`='.$this->id.' and `status`=0');
- if($rs)return '此用户申请的['.$rs['modename'].']流程还未完成,不能删除,可以先停用';
- }
-
- //导入数据的测试显示
- public function flowdaorutestdata()
- {
- return array(
- 'user' => 'zhangsan',
- 'name' => '张三',
- 'sex' => '男',
- 'mobile' => '15812345678',
- 'ranking' => '程序员',
- 'superman' => '磐石',
- 'deptname' => '信呼开发团队/开发部',
- 'tel' => '0592-1234567-005',
- 'email' => 'zhangsan@rockoa.com',
- 'workdate' => '2017-01-17',
- );
- }
-
- //导入之后
- public function flowdaoruafter()
- {
- //更新设置上级主管
- foreach($this->superarrar as $superman=>$suparr){
- $superid = (int)$this->getmou('id', "`name`='$superman'");
- $userld = "'".join("','", $suparr)."'";
- if($superid>0){
- $this->update(array(
- 'superman' => $superman,
- 'superid' => $superid,
- ),"`user` in($userld)");
- }
- }
- m('admin')->updateinfo();
- }
-
- //导入之前判断
- private $superarrar = array();
- public function flowdaorubefore($rows)
- {
- $inarr = array();
- $sort = (int)$this->getmou('max(`sort`)', '`id`>0');
- $dbs = m('dept');
- $py = c('pingyin');
- $dname = $dbs->getmou('name', 1);if(isempt($dname))$dname = '信呼开发团队';
-
- foreach($rows as $k=>$rs){
- $user = $rs['user'];
- $name = $rs['name'];
- $mobile = $rs['mobile'];
- $arr = $rs;
-
- $arr['pingyin'] = $py->get($name,1);
- if($this->rows("`name`='$name'")>0)$name = $name.'1';
- if(isempt($user))$user = $arr['pingyin'];
-
- if($this->rows("`user`='$user'")>0)$user = $user.'1'; //相同用户名?
- $arr['user'] = strtolower($user);
- $arr['name'] = $name;
-
- $arr['pass'] = md5('123456');
- $arr['sort'] = $sort+$k+1;
- $arr['workdate'] = arrvalue($rs,'workdate', $this->rock->date);
- $arr['adddt'] = $this->rock->now;
- $arr['companyid'] = $this->companyid; //默认单位
-
- //读取上级主管Id
- if(isset($arr['superman'])){
- //$superid = (int)$this->getmou('id', "`name`='".$arr['superman']."'");
- //if($superid==0)$arr['superman'] = '';
- //$arr['superid'] = $superid;
- $this->superarrar[$arr['superman']][] = $arr['user'];
- }
- $arr['superman'] = '';
- $arr['superid'] = '';
-
- //读取部门Id
- $deptarr = $this->getdeptid($rs['deptname'], $dbs);
-
- if($deptarr['deptid']==0){
- $arr['drerr'] = '找不到顶级部门['.$rs['deptname'].'],请写完整部门路径如:'.$dname.'/'.$rs['deptname'].'';
- }
-
- foreach($deptarr as $k1=>$v1)$arr[$k1]=$v1;
-
- $inarr[] = $arr;
- }
-
- return $inarr;
- }
- private function getdeptid($str,$dobj)
- {
- $deptid = '0';
- if(isempt($str))return $deptid;
- $stra = explode(',', $str);
- $depad = $this->getdeptids($stra[0],$dobj);
- $deptids= '';
- $deptnames= '';
- for($i=1;$i<count($stra);$i++){
- $depads = $this->getdeptids($stra[$i],$dobj);
- if($depads[0]>0){
- $deptids.=','.$depads[0].'';
- $deptnames.=','.$depads[1].'';
- }
- }
- if($deptids!='')$deptids = substr($deptids, 1);
- if($deptnames!='')$deptnames = substr($deptnames, 1);
-
- return array(
- 'deptid' => $depad[0],
- 'deptname' => $depad[1],
- 'deptallname' => $stra[0],
- 'deptids' => $deptids,
- 'deptnames' => $deptnames,
- );
- }
- private function getdeptids($str,$dobj)
- {
- $stra = explode('/', $str);
- $pid = 0;
- $id = 1;//默认顶级ID
- $deptname = '';
- for($i=0;$i<count($stra);$i++){
- $name = $stra[$i];
- $deptname = $name;
- $id = (int)$dobj->getmou('id',"`pid`='$pid' and `name`='$name'");
- //不存在就创建部门
- if($id==0){
- if($pid==0)return array(0, $deptname);
- $cjbm['name'] = $deptname;
- $cjbm['pid'] = $pid;
- $id = $dobj->insert($cjbm);
- $pid = $id;
- }else{
- $pid = $id;
- }
- }
-
- return array($id, $deptname);
- }
- }
|