| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 | <?phpnamespace app\admin\controller;use app\common\util\ExcelUtil;use Overtrue\Pinyin\Pinyin;use think\Db;use think\Exception;use tools\Phptree;class UserSorts extends Auth{    public function index(){        if(request()->isAjax()){            //分页参数            $length = input('rows',10,'intval');   //每页条数            $page = input('page',1,'intval');      //第几页            $start = ($page - 1) * $length;     //分页开始位置            //排序            $sortRow = input('sidx','u.id','trim');      //排序列            $sort = input('sord','desc','trim');        //排序方式            $order = $sortRow.' '.$sort;            $title = input('title','','trim');            if($title){                $map[] = ['u.account|u.real_name|u.mobile','like','%'.$title.'%'];            }            $enable = input('enable','','trim');            if($enable != ''){                $map[] = ['u.enable','=',$enable];            }            $depId = input('depId','','trim');            if($depId != ''){//                $map[] = ['ud.dep_id','=',$depId];                $userDepId = Db::name('user_dep')                    ->where('dep_id',$depId)                    ->column('user_id');                $map[] = ['u.id','in',$userDepId];            }            $worker = input('worker','','trim');            if($worker != ''){                $map[] = ['u.worker','=',$worker];            }            $rolesId = Db::name('roles')                ->where('parent_id',7)                ->where('org_id',$this->orgId)                ->where('del',0)                ->column('id');            $userRolesId = Db::name('user_roles')                ->where('roles_id','in',$rolesId)                ->column('user_id');            $map[] = ['u.id','in',$userRolesId];            $map[] = ['u.del','=',0];            $map[] = ['u.type','=',0];            $map[] = ['uo.org_id','=',$this->orgId];            $map[] = ['u.enable','=',1];            $map= empty($map) ? true: $map;            $lists = db('user')                ->alias('u')                ->join('user_org uo','u.id=uo.user_id')                ->where($map)                ->field('u.*,uo.org_id')                ->limit($start,$length)                ->order(['u.sorts'=>'desc','u.id'=>'asc'])                ->select();            $cache =  cache("org_user_sort_list_".$this->orgId);            $lastUser = Db::name('order_auto_send_log')                ->where('org_id',$this->orgId)                ->where('type',0)                ->order('id','desc')                ->value('user_id');            foreach ($lists as $k=>$v){                $lists[$k]['dep_name'] = Db::name('user_dep')                    ->alias('ud')                    ->join('dep d','d.id=ud.dep_id')                    ->where('ud.user_id',$v['id'])                    ->where('d.org_id',$v['org_id'])                    ->value('d.title');                $lists[$k]['type_name'] =$v['type_id']>0?Db::name('order_type')                    ->where('id',$v['type_id'])                    ->value('title'):"";                $lists[$k]['roles_name'] = Db::name('user_roles')                        ->alias('ur')                        ->join('roles r','r.id=ur.roles_id')                        ->where('ur.user_id',$v['id'])                        ->where('r.org_id',$v['org_id'])                        ->value('r.name');                $lists[$k]['old_sorts'] = 0;                if($cache){                    foreach ($cache as $kk=>$vv){                        if($vv['id']==$v['id']){                            $lists[$k]['old_sorts'] = $vv['sorts'];                        }                    }                }                $lists[$k]['is_last'] = false;                if($v['id']==$lastUser){                    $lists[$k]['is_last'] = true;                }            }            //数据返回            $totalCount = db('user')                ->alias('u')                ->join('user_org uo','uo.user_id = u.id')                ->where($map)->count();            $totalPage = ceil($totalCount/$length);            $result['page'] = $page;            $result['total'] = $totalPage;            $result['records'] = $totalCount;            $result['rows'] = $lists;            return json($result);        }else{            $deps = model('Dep')->getList();            $this->assign('deps',$deps);            return $this->fetch();        }    }    public function batchSorts(){        $data = input('data','','trim');        if(!$data){            $this->error('参数错误');        }        $data = json_decode($data,true);        if(!$data){            $this->error('参数错误');        }        $oldSort = cache("org_user_sort_".$this->orgId);        $lastUser = Db::name('order_auto_send_log')            ->where('org_id',$this->orgId)            ->where('type',0)            ->order('id','desc')            ->value('user_id');        if(empty($oldSort) && !empty($lastUser) && !cache("auto_send_end_".$this->orgId)){            cache("org_user_sort_".$this->orgId,get_sort_user($this->orgId,1));            cache("org_user_sort_list_".$this->orgId,get_sort_user_list($this->orgId,1));        }        Db::startTrans();        try{            foreach ($data as $k=>$v){                Db::name('user')->where('id',$v['id'])->setField('sorts',$v['sort']);            }            Db::commit();        }catch (Exception $e){            Db::rollback();            $this->error('操作失败');        }        $this->success('操作成功');    }    public function changeField($id=0,$fn='',$fv=0){        if(!$fn||!$id){            $this->error('参数错误');        }        $info = Db::name('user')->where('id',$id)->where('del',0)->find();        if(!$info){            $this->error('记录不存在');        }        $res = db('user')->where('id',$id)->setField($fn,$fv);        if($res){            $this->success('操作成功');        }else{            $this->error('操作失败');        }    }    public function remove(){        cache('org_user_sort_'.$this->orgId,null);        cache('auto_send_end_'.$this->orgId,null);        cache('org_user_sort_list_'.$this->orgId,null);        Db::name('order_auto_send_log')            ->where('org_id',$this->orgId)            ->delete();        Db::name('order_auto_send_area')            ->where('org_id',$this->orgId)            ->update(['last_user'=>""]);        $this->success('操作成功');    }}
 |