where('del',0) ->where('enable',1) ->where('org_id',$this->orgId) ->order('sort desc,id desc') ->select(); foreach ($lists as $k=>$v){ if($v['mode'] == 2){ $atable = 'cleaning_type b'; }else{ $atable = 'convey_cate b'; } $typeList = Db::name('mode_cate_type') ->alias('a') ->field('b.id,b.title,b.color') ->join($atable,'b.id=a.bus_id') ->where('a.mode',$v['mode']) ->where('a.cate_id',$v['id']) ->order('a.sort desc,a.id desc') ->select(); $lists[$k]['type_list'] = $typeList?$typeList:[]; } HelpHander::success($lists); } public function addOrder(){ $mode = input('mode'); $typeId = input('typeId',0); if(!in_array($mode,[2,3])){ HelpHander::error('参数错误'); } if($typeId < 1){ HelpHander::error('参数错误'); } $addrId = Db::name('user')->where('id',$this->userId)->value('addr_id'); if($addrId < 1){ HelpHander::error('始发空间不能为空'); } $addrInfo = Db::name('address')->where('id',$addrId)->find(); $bjToUserId = $addrInfo['bj_user_id'] ?$addrInfo['bj_user_id']:0; $ysToUserId = $addrInfo['ys_user_id'] ?$addrInfo['ys_user_id']:0; $toUserId = 0; $content = ''; if($mode == 2){ $content = Db::name('cleaning_type')->where('del',0)->where('id',$typeId)->value('title'); if(!$bjToUserId){ HelpHander::error('保洁责任人不能为空'); } $toUserId = $bjToUserId; }elseif($mode == 3){ $conveyCate = Db::name('convey_cate')->where('del',0)->where('is_sss',1)->where('id',$typeId)->find(); if(!$conveyCate){ HelpHander::error('类型不存在'); } $content = $conveyCate['title']; if(!$ysToUserId){ HelpHander::error('运送责任人不能为空'); } $toUserId = $ysToUserId; if($conveyCate['addr_id'] < 1){ HelpHander::error('地点不能为空'); } if($addrId == $conveyCate['addr_id']){ HelpHander::error('开始地点和结束地点不能一致'); } } // $depId = Db::name('user_dep') // ->alias('ud') // ->join('dep d','d.id=ud.dep_id') // ->where('d.del',0) // ->where('ud.user_id',$this->userId) // ->value('d.id'); $odata = [ 'org_id'=>$this->orgId, 'user_id'=>$this->userId, 'create_time' => getTime(), 'create_yyyy' => date('Y'), 'create_yyyymm' => date('Ym'), 'create_yyyymmdd' => date('Ymd'), 'sn' => get_unique_sn(get_config('sn_prefix')), 'content' => $content, 'work_type_mode' => $mode, 'order_mode'=>4, 'source_type' => 2, 'dep_id' => 0, 'send_time' => getTime(), 'is_deal' => 1, 'from' => 0, ]; Db::startTrans(); try { $orderId = Db::name('orders')->insertGetId($odata); if(!$orderId){ \exception('订单生成失败'); } if($mode == 2){ $octData = [ 'order_id'=>$orderId, 'type_id'=>$typeId, 'create_time'=>getTime() ]; $oct = Db::name('order_clean_type')->insert($octData); if(!$oct){ \exception('订单保洁类型扩展生成失败'); } } if($mode == 3){ $conveyCateInfo = Db::name('convey_cate')->where('del',0)->where('id',$typeId)->find(); $time = Db::name('time')->where('del',0)->where('id',$conveyCateInfo['time_id'])->find(); $ywcTime = time() + $time['bz_time']*60; if($conveyCateInfo['type'] == 0){ $saddr = $addrId; $eaddr = $conveyCateInfo['addr_id']; }else{ $saddr = $conveyCateInfo['addr_id']; $eaddr = $addrId; } $ocData = [ 'order_id'=>$orderId, 'type'=>$typeId, 'start'=>$saddr, 'end'=>$eaddr, 'xq_time'=>getTime(), 'ywc_time'=>date('Y-m-d H:i:s',$ywcTime), 'score'=>$conveyCateInfo['score'], 'priority'=>0, ]; $ocAdd = Db::name('order_convey')->insert($ocData); if(!$ocAdd){ \exception('运送扩展生成失败'); } } $todoData = [ 'order_id' => $orderId, 'todo_content' => $content, 'create_user_id' => $this->userId, 'org_id' => $this->orgId, 'create_time' => getTime(), 'confirm_time' => getTime(), 'todo_mode' => 2, 'work_type_mode' => $mode, 'create_yyyy' => date('Y'), 'create_yyyymm' => date('Ym'), 'create_yyyymmdd' => date('Ymd'), 'quality_type' => 0, 'to_user_id'=>$toUserId, 'sn'=> get_unique_sn(get_config('sn_prefix')), ]; $todoId = Db::name('todo')->insertGetId($todoData); if(!$todoId){ \exception('分派订单失败'); } $taskData = [ 'org_id' => $this->orgId, 'type' => 1, 'start_time' => getTime(), 'create_time' => getTime(), 'user_id' => $toUserId, 'bus_id' => $todoId, ]; $res = Db::name('task') ->insert($taskData); if (!$res) { \exception('任务保存失败'); } send_jpush([$toUserId],AppMsg::PUSH_WORKER_ORDER_SEND,'',['id'=>$todoId]); Db::commit(); }catch (\Exception $e){ Db::rollback(); HelpHander::error($e->getMessage()); } HelpHander::success([],'操作成功'); } public function getTodoList(){ $type = input('type',0); $page = input('page',1); $size = input('size',10); if(!in_array($type,[0,1])){ HelpHander::error('参数错误'); } $map[] = ['org_id','=',$this->orgId]; $map[] = ['del','=',0]; $map[] = ['create_user_id','=',$this->userId]; $map[] = ['work_type_mode','in',[2,3]]; if($type == 0){ $map[] = ['todo_mode','=',2]; }else{ $map[] = ['todo_mode','in',[3,6]]; } $list = Db::name('todo') ->where($map) ->page($page,$size) ->order('id','desc') ->select(); $data = []; foreach ($list as $k=>$v){ $data[$k]['id'] = $v['id']; $data[$k]['work_type_mode'] = $v['work_type_mode']; $data[$k]['create_time'] = $v['create_time']; $data[$k]['todo_content'] = $v['todo_content']; $data[$k]['order_id'] = $v['order_id']; $data[$k]['todo_mode'] = $v['todo_mode']; $data[$k]['done_time'] = $v['done_time']; $touser = Db::name('user')->where('id',$v['to_user_id'])->find(); $data[$k]['to_user_name'] = $touser['real_name']; $addrName = Db::name('address')->where('id',$touser['addr_id'])->value('title'); $data[$k]['s_addr'] = $addrName ?$addrName :''; $data[$k]['todo_mode_text'] = Db::name('todo_mode')->where('id',$v['todo_mode'])->value('out_content'); $data[$k]['work_type_mode_text'] = Db::name('work_type_mode')->where('id',$v['work_type_mode'])->value('name'); $data[$k]['type_name'] = ''; $data[$k]['e_addr'] = ''; $data[$k]['last_addr'] = ''; $data[$k]['last_addr_time'] = ''; if($v['work_type_mode'] == 2){ $typeTitle = Db::name('cleaning_type') ->alias('ct') ->join('order_clean_type oct','oct.type_id=ct.id') ->where('oct.order_id',$v['order_id']) ->value('ct.title'); $data[$k]['type_name'] = $typeTitle ? $typeTitle :''; } if($v['work_type_mode'] == 3){ $typeInfo = Db::name('convey_cate') ->alias('cc') ->field('oc.*,cc.title') ->join('order_convey oc','oc.type=cc.id') ->where('oc.order_id',$v['order_id']) ->find(); if($typeInfo){ $saddr = Db::name('address')->where('id',$typeInfo['start'])->value('title'); $eaddr = Db::name('address')->where('id',$typeInfo['end'])->value('title'); $data[$k]['type_name'] = $typeInfo ? $typeInfo['title'] :''; $data[$k]['s_addr'] = $saddr ? $saddr :''; $data[$k]['e_addr'] = $eaddr ? $eaddr :''; $addr = Db::name('order_convey') ->alias('cpr') ->join('todo os', 'cpr.order_id = os.order_id') ->join('orders ods', 'cpr.order_id = ods.id') ->join('address ca', 'ca.id = cpr.start') ->join('address cad', 'cad.id = cpr.end') ->field('os.todo_mode,ca.title as start_name,cad.title as end_name,os.create_time') ->where('os.to_user_id', $v['to_user_id']) ->where('os.del', 0) ->where('ods.del', 0) ->order('os.id desc') ->find(); if(in_array($addr['todo_mode'],[1,2])){ $data[$k]['last_addr'] = $addr['start_name']; }else{ $data[$k]['last_addr'] = $addr['end_name']; } $data[$k]['last_addr_time'] = $addr['create_time']; } } } HelpHander::success($data,'操作成功'); } public function updateState(){ $todoId = input('todoId/d',0); if($todoId <= 0){ HelpHander::error('参数错误'); } $todoMode =input('todoMode',0); if(!in_array($todoMode,[2,4,6])){ HelpHander::error('参数错误'); } $nodoReason = input('nodoReason',''); $rejectVoice = input('rejectVoice',''); $ret = model('Todo')->updateState($todoId,$todoMode,$nodoReason,$this->userId,$rejectVoice); if(!$ret){ HelpHander::error(model('Todo')->getError()); } HelpHander::success([],'操作成功'); } }