'报修', 2 =>'保洁', 3 =>'运送', 4 =>'安保', ]; public function space() { return $this->fetch(); } public function dispatchCenter() { $configId = Db::name('config') ->where('name', 'org_ai_send') ->value('id'); $ai= Db::name('config_org') ->where('config_id', $configId) ->where('value', 1) ->where('org_id', $this->orgId) ->findOrEmpty(); $ai = $ai ? 1 : 0; $this->assign('ai',$ai); return $this->fetch(); } public function config($id = 6) { $type = [6=>'Ai']; $list = Db::name("config") ->where(['status'=>1,'group'=>$id,'cate'=>2]) ->field('id,name,title,extra,value,remark,type') ->order('sort asc') ->select(); $list = $list?$list:[]; foreach ($list as $k=>$v){ $value = Db::name('config_org')->where('config_id',$v['id'])->where('org_id',$this->orgId)->find(); $list[$k]['value'] = $value?$value['value']:''; } $this->assign('list',$list); $this->assign('type',$type); $this->assign('id',$id); return $this->fetch(); } public function configSave(){ $config = request()->post(); if($config && is_array($config)){ foreach ($config as $name => $value) { if($name == 'org_ai_send'){ cache('ai_send',null); }elseif ($name == 'org_ai_time'){ cache('ai_time_' . $this->orgId, null); } $info = Db::name('config')->where('name',$name)->find(); if(!$info){ continue; } $oinfo = Db::name('config_org')->where('config_id',$info['id'])->where('org_id',$this->orgId)->find(); if($oinfo){ Db::name('config_org')->where('id',$oinfo['id'])->update(['value'=>$value]); }else{ Db::name('config_org')->insert([ 'config_id' => $info['id'], 'org_id' => $this->orgId, 'value' => $value ]); } } } $this->success('保存成功'); } public function userSkill(){ 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 != ''){ $uids = Db::name('user_dep')->where('dep_id',$depId)->column('user_id'); $map[] = ['u.id','in',$uids]; } $roles = (new \app\common\model\WorkTypeMode())->getRoles(1, $this->orgId); $roleIds = Db::name('roles') ->whereIn('parent_id',array_column($roles,'id')) ->where('org_id',$this->orgId) ->where('del',0) ->where('enable',1) ->column('id'); $map[] = ['u.del','=',0]; $map[] = ['u.type','=',0]; $map[] = ['uo.org_id','=',$this->orgId]; $map[] = ['ur.roles_id','in',$roleIds]; $map= empty($map) ? true: $map; $query = Db::name('user') ->alias('u') ->join('user_org uo','u.id=uo.user_id') ->join('user_roles ur','u.id=ur.user_id') ->join('roles r','r.id=ur.roles_id') ->where($map) ->field('u.*,uo.org_id,r.name as roles_name'); $lists =$query ->limit($start,$length) ->order(['u.sort'=>'asc','u.id'=>'desc']) ->select(); $orderType = Db::name('order_type') ->where('parent_id',0) ->where('enable',1) ->where('del',0) ->where('org_id',$this->orgId) ->column('title','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'); $labels = $v['label'] ? explode(',',$v['label']) : []; if ($labels){ foreach ($labels as &$label){ $label = $orderType[$label]??''; } unset($label); $lists[$k]['label'] = implode(',',$labels); } } //数据返回 $totalCount = $query ->removeOption('limit') ->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 editUser($id=0,$type = 1){ if(request()->isPost()){ if ($type == 1){ $res = Db::name('user')->where(['id'=>$id])->update(['label'=>input('label','')]); }else if ($type == 2){ $res = Db::name('dep')->where(['id'=>$id])->update(['users'=>input('users','')]); }else{ $res = Db::name('address')->where(['id'=>$id])->update(['users'=>input('users','')]); } if($res){ $this->success('操作成功',url('index')); }else{ $this->error(model('User')->getError()); } }else{ if($id){ $config = [ 1 => ['table' => 'user', 'field' => 'label'], 2 => ['table' => 'dep', 'field' => 'users'], ]; $current = $config[$type] ?? ['table' => 'address', 'field' => 'users']; $info = db($current['table']) ->where('id', $id) ->find(); if ($info) { $field = $current['field']; $info[$field] = empty($info[$field]) ? [] : explode(',', $info[$field]); } $this->assign('info',$info); } if ($type == 1){ $orderType =model('OrderType')->list(); $this->assign('orderType',$orderType); }else{ $roles = (new \app\common\model\WorkTypeMode())->getRoles($type == 2 ? 1 : 3, $this->orgId); $roleIds = Db::name('roles') ->whereIn('parent_id',array_column($roles,'id')) ->where('org_id',$this->orgId) ->where('del',0) ->where('enable',1) ->column('id'); $user = Db::name('user_roles') ->alias('ur') ->join('user u','u.id = ur.user_id') ->join('user_dep ud','ud.user_id = u.id') ->where('u.del',0) ->where('u.enable',1) ->whereIn('ur.roles_id',$roleIds) ->where('u.work',1) ->field('u.id,u.real_name as title') ->select(); $this->assign('users',$user); } $this->assign('type',$type); return $this->fetch(); } } public function dep(){ if(request()->isAjax()){ //分页参数 $length = input('rows',10,'intval'); //每页条数 $page = input('page',1,'intval'); //第几页 $start = ($page - 1) * $length; //分页开始位置 //排序 $sortRow = input('sidx','id','trim'); //排序列 $sort = input('sord','desc','trim'); //排序方式 $order = $sortRow.' '.$sort; $title = input('title','','trim'); if($title){ $map[] = ['title','like','%'.$title.'%']; } $enable = input('enable','','trim'); if($enable != ''){ $map[] = ['enable','=',$enable]; } $map[] = ['del','=',0]; $map[] = ['org_id','=',$this->orgId]; $map= empty($map) ? true: $map; //数据查询 $lists = Db::name('dep') ->where($map) ->limit($start,$length) ->order($order) ->select(); $roles = (new \app\common\model\WorkTypeMode())->getRoles(1, $this->orgId); $roleIds = Db::name('roles') ->whereIn('parent_id',array_column($roles,'id')) ->where('org_id',$this->orgId) ->where('del',0) ->where('enable',1) ->column('id'); $userList = Db::name('user_roles') ->alias('ur') ->join('user u','u.id = ur.user_id') ->where('u.del',0) ->where('u.enable',1) ->whereIn('ur.roles_id',$roleIds) ->where('u.work',1) ->column('u.real_name','u.id'); foreach ($lists as $k=>$v){ $users = $v['users'] ? explode(',',$v['users']) : []; if ($users){ foreach ($users as &$user){ $user = $userList[$user]??''; } unset($user); $lists[$k]['users'] = implode(',',$users); } } //数据返回 $totalCount = Db::name('dep')->where($map)->count(); $totalPage = ceil($totalCount/$length); $result['page'] = $page; $result['total'] = $totalPage; $result['records'] = $totalCount; $result['rows'] = $lists; return json($result); }else{ return $this->fetch(); } } public function address(){ if(request()->isAjax()){ //分页参数 $length = input('rows',10,'intval'); //每页条数 $page = input('page',1,'intval'); //第几页 $start = ($page - 1) * $length; //分页开始位置 //排序 $sortRow = input('sidx','id','trim'); //排序列 $sort = input('sord','desc','trim'); //排序方式 $order = $sortRow.' '.$sort; $title = input('title','','trim'); if($title){ $map[] = ['title','like','%'.$title.'%']; } $enable = input('enable','','trim'); if($enable != ''){ $map[] = ['enable','=',$enable]; } $map[] = ['del','=',0]; $map[] = ['org_id','=',$this->orgId]; $map[]=['','exp',Db::raw("FIND_IN_SET(2,types)")]; $map= empty($map) ? true: $map; //数据查询 $query = Db::name('address')->where($map); $lists = $query ->limit($start,$length) ->order($order) ->select(); $roles = (new \app\common\model\WorkTypeMode())->getRoles(3, $this->orgId); $roleIds = Db::name('roles') ->whereIn('parent_id',array_column($roles,'id')) ->where('org_id',$this->orgId) ->where('del',0) ->where('enable',1) ->column('id'); $userList = Db::name('user_roles') ->alias('ur') ->join('user u','u.id = ur.user_id') ->where('u.del',0) ->where('u.enable',1) ->whereIn('ur.roles_id',$roleIds) ->where('u.work',1) ->column('u.real_name','u.id'); foreach ($lists as $k=>$v){ $users = $v['users'] ? explode(',',$v['users']) : []; if ($users){ foreach ($users as &$user){ $user = $userList[$user]??''; } unset($user); $lists[$k]['users'] = implode(',',$users); } } //数据返回 $totalCount = $query->removeOption('limit')->count(); $totalPage = ceil($totalCount/$length); $result['page'] = $page; $result['total'] = $totalPage; $result['records'] = $totalCount; $result['rows'] = $lists; return json($result); }else{ return $this->fetch(); } } //TODO 给todo表和orders加上索引 public function show() { if(request()->isAjax()){ $today = date('Ymd'); $echart = Db::name('todo') ->where('org_id', $this->orgId) ->where('del', 0) ->where('create_yyyymmdd', '>=',date('Ymd',strtotime('-7 days'))) ->where('create_yyyymmdd', '<=',$today) ->field('create_yyyymmdd, SUM(create_user_id = -1) as ai, SUM(create_user_id != -1) as user') ->group('create_yyyymmdd') ->order('create_yyyymmdd') ->select(); $statsByDate = []; foreach ($echart as $item) { $statsByDate[$item['create_yyyymmdd']] = $item; } $dates = []; for ($i = 6; $i >= 0; $i--) { $date = date('Ymd', strtotime("-$i days")); $aiData[] = isset($statsByDate[$date]) ? (int)$statsByDate[$date]['ai'] : 0; $userData[] = isset($statsByDate[$date]) ? (int)$statsByDate[$date]['user'] : 0; $dates[] = date('m-d', strtotime("-$i days"));; } $records = Db::name('ai_send_success') ->where('org_id', $this->orgId) ->field('mode') ->group('mode') ->column('COUNT(*)', 'mode'); $done = [ 'total' => array_sum($records), 'bx' => $records[1] ?? 0, 'bj' => $records[2] ?? 0, 'ys' => $records[3] ?? 0, 'ab' => $records[4] ?? 0 ]; $orders = Db::name('orders') ->where('org_id',$this->orgId) ->where('del',0) ->where('create_yyyymmdd',$today) ->where('order_mode',1) ->whereNotExists(function ($query) { $query->table('ai_send_fail') ->whereColumn('ai_send_fail.order_id', 'orders.id'); }) ->field('work_type_mode') ->group('work_type_mode') ->column('COUNT(*)', 'work_type_mode'); $fail = Db::name('ai_send_fail') ->where('org_id', $this->orgId) ->where('status', 0) ->whereTime('create_time', 'today') ->count(); $bh = Db::name('todo') ->where('org_id', $this->orgId) ->where('create_user_id', -1) ->where('todo_mode', 4) ->whereTime('create_time', 'today') ->count(); $undo = [ 'total' => array_sum($orders), 'bx' => $orders[1] ?? 0, 'bj' => $orders[2] ?? 0, 'ys' => $orders[3] ?? 0, 'ab' => $orders[4] ?? 0, 'yc'=>$fail, 'bh'=>$bh ]; $data = [ 'ai' =>$aiData, 'user' =>$userData, 'date'=>$dates, 'done'=>$done, 'undo'=>$undo, ]; return json($data); }else{ $configId = Db::name('config') ->where('name', 'org_ai_send') ->value('id'); $ai= Db::name('config_org') ->where('config_id', $configId) ->where('value', 1) ->where('org_id', $this->orgId) ->findOrEmpty(); $ai = $ai ? 1 : 0; $this->assign('ai',$ai); return $this->fetch(); } } public function todoList() { $size = input('size',10,'intval'); $page = input('page',1,'intval'); $mode= input('mode',0,'intval'); // $query = Db::name('todo') // ->alias('t') // ->join('orders o','t.order_id = o.id') // ->where('t.org_id', $this->orgId) // ->where('t.del', 0) // ->where('t.create_yyyymmdd', date('Ymd')) // ->when($mode > 0,function ($query) use($mode){ // $query->where('t.work_type_mode', $mode); // }) // ->where('t.create_user_id',-1) // ->field('o.id,o.sn,o.work_type_mode,o.user_id,t.id as tid,t.create_time,t.to_user_id'); $query = Db::name('ai_send_success') ->alias('a') ->join('orders o','a.order_id = o.id') ->where('a.org_id', $this->orgId) ->whereTime('a.create_time', 'today') ->when($mode > 0,function ($query) use($mode){ $query->where('a.mode', $mode); }) ->field('a.user_id,a.todo_id,a.mode,a.create_time,o.sn,o.user_id as uid,o.id'); $todoList = $query ->order('a.create_time desc') ->limit(($page -1) * $size,$size) ->select(); $total = $query->removeOption('limit')->count(); $userIds = array_column($todoList,'uid'); $toUserIds = array_column($todoList,'user_id'); $allIds = array_unique(array_merge($toUserIds,$userIds)); $users = Db::name('user')->whereIn('id',$allIds)->column('real_name','id'); foreach ($todoList as &$v){ $v['user'] = $users[$v['uid']]??''; $v['toUser'] = $users[$v['user_id']]??''; $v['type'] = self::$types[$v['mode']]??''; } unset($v); return json(['data'=>$todoList,'total'=>$total]); } public function orderList() { $size = input('size',10,'intval'); $page = input('page',1,'intval'); $query = Db::name('orders') ->where('org_id',$this->orgId) ->where('del',0) ->where('create_yyyymmdd',date('Ymd')) ->whereIn('work_type_mode',[1,2,3,4]) ->whereNotExists(function ($query) { $query->table('ai_send_fail') ->whereColumn('ai_send_fail.order_id', 'orders.id'); }) ->where('order_mode',1) ->field('id,sn,work_type_mode,user_id'); $orderList = $query ->limit(($page -1) * $size,$size) ->select(); $total = $query->removeOption('limit')->count(); $users = Db::name('user') ->whereIn('id',array_unique(array_column($orderList,'user_id'))) ->column('real_name','id'); $i = 1; foreach ($orderList as &$v2){ $v2['user'] = $users[$v2['user_id']]??''; $v2['type'] = self::$types[$v2['work_type_mode']]??''; $v2['flag'] = 0; if ($i <= 20){ $v2['flag'] = 1; $i ++; } } unset($v2); return json(['data'=>$orderList,'total'=>$total]); } public function send($id, $mode = 1,$type = 0) {//type=0表示重新派单,1-手动派单,2-被驳回重新派 $model = new \app\common\model\Orders(); if (request()->isGet()) { $user = ''; if ($type != 1){ $user = Db::name('todo') ->alias('t') ->join('user u','t.to_user_id = u.id') ->where('t.id', $id) ->value('u.real_name'); } $this->assign('user', $user); $this->assign('id', $id); $this->assign('mode', $mode); $this->assign('type', $type); $this->assign('send_user_num', $model->sendUserNum($mode, $this->orgId)); $this->assign('user_list', (new \app\common\model\WorkTypeMode())->getRolesUserByNum($mode, $this->orgId, 1)); $two_dispatch_roles = model('user')->get_two_dispatch_role($this->orgId, $mode); $this->assign('dispatch_roles', $two_dispatch_roles); $this->assign('dispatch_type', check_two_dispatch($this->userId)); $this->assign('two_dispatch_off', two_dispatch_off($this->orgId)); return $this->fetch(); } else { $time = getTime(); $data = request()->post(); $info = in_array($type,[0,2]) ? Db::name('todo')->where('id',$id)->find(): Db::name('orders')->where('id',$id)->find(); $orderId = in_array($type,[0,2]) ? $info['order_id'] : $info['id']; $pusharr = []; // 需要推送给工人 if (!isset($data['to_user_id']) || empty($data['to_user_id'])) { $this->error('请选择执行人'); } if ($type == 0 && $info['todo_mode'] != 1){ $this->error('当前状态无法重新派单'); } Db::startTrans(); try { if ($type == 0){ Db::name('todo')->where('id',$id)->update(['del'=>1]); Db::name('task')->where('bus_id',$id)->delete(); Db::name('ai_send_success')->where('todo_id', $id) ->update(['del' => 1]); }elseif ($type == 1){ Db::name('ai_send_fail')->where('order_id', $orderId) ->update(['status' => 1,'user_id',$this->userId]); }elseif ($type == 2){ Db::name('todo')->where('id',$id)->update(['todo_mode'=>7]); Db::name('task')->where('bus_id',$id)->delete(); } $send_user_num = $model->sendUserNum($info['work_type_mode'],$info['org_id']); $users = explode(',', $data['to_user_id']); if($send_user_num==1 && count($users) >1){ $this->error('执行人只能选择单人'); } $to_user_id = array_unique($users); $todoData = [ 'order_id' => $orderId, 'todo_content' => $data['todo_content'], 'create_user_id' => $this->userId, 'org_id' => $info['org_id'], 'create_time' => $time, 'todo_mode' => 1, 'work_type_mode' => $info['work_type_mode'], 'create_yyyy' => date('Y'), 'create_yyyymm' => date('Ym'), 'create_yyyymmdd' => date('Ymd'), ]; $taskData = [ 'org_id' => $info['org_id'], 'type' => 1, 'start_time' => $time, 'create_time' => $time, ]; if ($type == 0){ if($info['work_type_mode']==1){ $orderRepair = Db::name('order_repair') ->where('order_id',$info['id']) ->find(); $taskData['priority'] = !empty($orderRepair) && $orderRepair['repair_priority']==3?1:0; }else if ($info['work_type_mode']==3){ $order_convey = Db::name('order_convey') ->where('order_id',$info['id']) ->find(); $taskData['priority'] = !empty($order_convey) && $order_convey['priority']==3?2:0; } } $sns = []; foreach ($to_user_id as $k => $v) { if(empty($v)){ continue; } $todoData['to_user_id'] = $v; $todoData['sn'] = get_unique_sn(get_config('sn_prefix')); while (true){ if(in_array($todoData['sn'],$sns)){ $todoData['sn'] = get_unique_sn(get_config('sn_prefix')); }else{ $sns[] = $todoData['sn']; break; } } $res = Db::name('todo') ->insertGetId($todoData); if (!$res) { \exception('执行人:' . $v . '派单失败'); } $pusharr[] = [ 'user_id' => $v, 'todo_id' => $res ]; $taskData['user_id'] = $v; $taskData['bus_id'] = $res; $res = Db::name('task') ->insert($taskData); if (!$res) { \exception('执行人:' . $v . '任务保存失败'); } } $res = Db::name('orders')->where('id', $orderId) ->update(['order_mode' => 4, 'send_time' => $time]); if (!$res) { \exception('订单更新失败'); } Db::commit(); if($pusharr){ foreach ($pusharr as $k=>$v){ // 极光推送 send_jpush([$v['user_id']],AppMsg::PUSH_WORKER_ORDER_SEND,'',['id'=>$v['todo_id']]); } } $this->success('操作成功'); }catch (DbException $e){ Db::rollback(); $this->error($e->getMessage()); } } } public function history(){ $mode = input('mode',0,'intval'); if(request()->isAjax()){ //分页参数 $length = input('rows',10,'intval'); //每页条数 $page = input('page',1,'intval'); //第几页 $start = ($page - 1) * $length; //分页开始位置 //排序 $sortRow = input('sidx','a.id','trim'); //排序列 $sort = input('sord','desc','trim'); //排序方式 $order = $sortRow.' '.$sort; $sn = input('sn','','trim'); $s = input('start',''); $e= input('end',''); $del= input('del',''); $query = Db::name('ai_send_success') ->alias('a') ->join('orders o','a.order_id = o.id') ->where('a.org_id', $this->orgId) ->when($mode > 0,function ($query) use($mode){ $query->where('a.mode', $mode); })->when($del != '',function ($query) use($del){ $query->where('a.del', $del); }) ->when($s,function ($query) use($s){ $query->where('a.create_time','>=', $s); })->when($e,function ($query) use($e){ $query->where('a.create_time','<=', $e); })->when($sn,function ($query) use($sn){ $query->where('o.sn', $sn); }) ->field('a.*,o.sn,o.user_id as uid'); //数据查询 $todoList = $query ->order('a.create_time desc') ->limit(($page -1) * $length,$length) ->select(); $userIds = array_column($todoList,'uid'); $toUserIds = array_column($todoList,'user_id'); $allIds = array_unique(array_merge($toUserIds,$userIds)); $users = Db::name('user')->whereIn('id',$allIds)->column('real_name','id'); foreach ($todoList as &$v){ $v['user'] = $users[$v['uid']]??''; $v['toUser'] = $users[$v['user_id']]??''; $v['type'] = self::$types[$v['mode']]??''; } unset($v); //数据返回 $totalCount = $query->removeOption('limit')->count(); $totalPage = ceil($totalCount/$length); $result['page'] = $page; $result['total'] = $totalPage; $result['records'] = $totalCount; $result['rows'] = $todoList; return json($result); }else{ $this->assign('mode',$mode); $this->assign('types',self::$types); return $this->fetch(); } } public function UnDispatched(){ $mode = input('mode',0,'intval'); if(request()->isAjax()){ //分页参数 $length = input('rows',10,'intval'); //每页条数 $page = input('page',1,'intval'); //第几页 $start = ($page - 1) * $length; //分页开始位置 //排序 $sortRow = input('sidx','a.id','trim'); //排序列 $sort = input('sord','desc','trim'); //排序方式 $order = $sortRow.' '.$sort; $sn = input('sn',null,'trim'); $query = Db::name('orders') ->where('org_id',$this->orgId) ->where('order_mode',1) ->where('del',0) ->whereIn('work_type_mode',[1,2,3,4]) ->when($mode > 0,function ($query) use($mode){ $query->where('work_type_mode', $mode); }) ->where('create_yyyymmdd',date('Ymd')) ->whereNotExists(function ($query) { $query->table('ai_send_fail') ->whereColumn('ai_send_fail.order_id', 'orders.id'); }) ->where('order_mode',1) ->when(!is_null($sn),function ($query) use($sn){ $query->where('sn', $sn); }) ->field('id,sn,work_type_mode,user_id'); //数据查询 $orderList = $query ->limit(($page -1) * $length,$length) ->select(); $users = Db::name('user') ->whereIn('id',array_unique(array_column($orderList,'user_id'))) ->column('real_name','id'); $i = 1; foreach ($orderList as &$v2){ $v2['user'] = $users[$v2['user_id']]??''; $v2['type'] = self::$types[$v2['work_type_mode']]??''; $v2['flag'] = 0; if ($i <= 20){ $v2['flag'] = 1; $i ++; } } unset($v2); //数据返回 $totalCount = $query->removeOption('limit')->count(); $totalPage = ceil($totalCount/$length); $result['page'] = $page; $result['total'] = $totalPage; $result['records'] = $totalCount; $result['rows'] = $orderList; return json($result); }else{ $this->assign('mode',$mode); $this->assign('types',self::$types); return $this->fetch(); } } public function abnormal() { $type= input('type',0,'intval'); if(request()->isAjax()) { $sn = input('sn','','trim'); if ($type == 1) { //异常 $query = Db::name('ai_send_fail') ->alias('a') ->join('orders o', 'a.order_id = o.id') ->where('a.org_id', $this->orgId) ->where('a.status', 0) // ->whereTime('a.create_time', 'today') ->when($sn,function ($query) use($sn){ $query->where('o.sn', $sn); }) ->field('o.sn,o.user_id,o.work_type_mode,o.id'); } else {//驳回 $query = Db::name('todo') ->alias('a') ->join('orders o', 'a.order_id = o.id') ->where('a.org_id', $this->orgId) ->where('a.create_user_id', -1) ->where('a.todo_mode', 4) // ->whereTime('a.create_time', 'today') ->when($sn,function ($query) use($sn){ $query->where('o.sn', $sn); }) ->field('o.sn,o.user_id,o.work_type_mode,a.id,a.to_user_id'); } $lists = $query->order('o.id desc')->select(); $users = Db::name('user')->whereIn('id', array_unique(array_column($lists, 'user_id')))->column('real_name', 'id'); foreach ($lists as &$v2) { $v2['user'] = $users[$v2['user_id']] ?? ''; $v2['type'] = self::$types[$v2['work_type_mode']] ?? ''; if ($type == 2) { $v2['toUser'] = Db::name('user')->where('id',$v2['to_user_id'])->value('real_name')??''; } $v2['status'] = '派单未匹配'; } unset($v2); //数据返回 $totalCount = $query->count(); $totalPage = 1; $result['page'] = 1; $result['total'] = $totalPage; $result['records'] = $totalCount; $result['rows'] = $lists; return json($result); }else{ $this->assign('type',$type); return $this->fetch(); } } }