| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 | <?phpnamespace app\api\controller\v1;use app\api\controller\Base;use app\common\util\AppMsg;use app\hander\HelpHander;use think\Controller;use think\Db;use think\Exception;class ModeCate extends Base{    public function list(){        $lists = Db::name('mode_cate')            ->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([],'操作成功');    }}
 |