$params['user_id'],'work_sn'=>$params['work_sn']])->findOrEmpty(); if($work->isEmpty()){ throw new Exception('工单不存在'); } $receive_time = time(); $work->work_status = 2;//待联系 $work->service_status = 1;//服务中 $work->receive_time = $receive_time; $work->save(); //添加变更日志 $work_log = [ 'work_id'=>$work->id, 'master_worker_id'=>$work->master_worker_id, 'opera_log'=>'编号['.$params['user_info']['worker_number'].']'.$params['user_info']['real_name'].'于'.date('y-m-d H:i:s',$receive_time).'领取了工单', ]; ServiceWorkLogLogic::add($work_log); Db::commit(); } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } /** * 预约成功,等待上门 * @return false|void */ public static function appointWork($params) { Db::startTrans(); try { $work = ServiceWork::where(['master_worker_id'=>$params['user_id'],'work_sn'=>$params['work_sn']])->findOrEmpty(); if($work->isEmpty()){ throw new Exception('工单不存在'); } if($work->work_status != 2){ throw new Exception('请勿重复点击'); } //验证更改的预约时间必须是在领单时间内的半小内修改,否则不允许修改 if(strtotime($work->appointment_time) != strtotime($params['appointment_time']) && (time()-$work->receive_time)>1800){ throw new Exception('距离领单时间已超过半小时,无法修改预约时间,请联系客服'); } $work->work_status = 3;//待上门 $work->appointment_time = strtotime($params['appointment_time']); $work->save(); //添加变更日志 $work_log = [ 'work_id'=>$work->id, 'master_worker_id'=>$work->master_worker_id, 'opera_log'=>'编号['.$params['user_info']['worker_number'].']'.$params['user_info']['real_name'].'于'.date('y-m-d H:i:s',time()).'联系了客户,确认了于'.$params['appointment_time'].$params['address'].'预约上门', ]; ServiceWorkLogLogic::add($work_log); Db::commit(); } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } /** * 师傅确认上门 * @param $params * @return false|void */ public static function confirmDoor($params) { Db::startTrans(); try { $work = ServiceWork::where(['master_worker_id'=>$params['user_id'],'work_sn'=>$params['work_sn']])->findOrEmpty(); if($work->isEmpty()){ throw new Exception('工单不存在'); } $order = RechargeOrder::where(['sn'=>$params['order_sn'],'work_id'=>$work['id']])->findOrEmpty(); if($order->isEmpty()){ throw new Exception('订单不存在'); } if($work->work_status != 3){ throw new Exception('请勿重复点击'); } $work->work_status = 4;//已上门 $work->save(); //添加变更日志 $work_log = [ 'work_id'=>$work->id, 'master_worker_id'=>$work->master_worker_id, 'opera_log'=>'编号['.$params['user_info']['worker_number'].']'.$params['user_info']['real_name'].'于'.date('y-m-d H:i:s',time()).'于'.date('Y-m-d H:i:s',time()).'已上门', ]; ServiceWorkLogLogic::add($work_log); Db::commit(); } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } /** * 师傅确认报价单 * @param $params * @return false|void */ public static function confirmPrice($params) { Db::startTrans(); try { $work = ServiceWork::where(['master_worker_id'=>$params['user_id'],'work_sn'=>$params['work_sn']])->findOrEmpty(); if($work->isEmpty()){ throw new Exception('工单不存在'); } //搜索待支付订单 $paid_order = RechargeOrder::where(['work_id'=>$work['id'],'pay_status'=>1])->findOrEmpty()->toArray(); if(empty($paid_order)){ throw new Exception('订单错误'); } if($work->work_status != 3 || $work->user_confirm_status !=1 ){ throw new Exception('请勿重复操作'); } //定金存在尾款结算功能,全款直接提交 if($paid_order['payment_type']==1){ $un_order = RechargeOrder::where(['work_id'=>$work['id'],'pay_status'=>0])->findOrEmpty(); if($un_order->isEmpty()){ //新增待支付尾款 $order_data = [ 'order_type'=>$paid_order['order_type'], 'sn'=>generate_sn(\app\common\model\orders\RechargeOrder::class, 'sn'), 'work_id'=>$paid_order['work_id'], 'user_id'=>$paid_order['user_id'], 'payment_type'=>2, 'order_total'=>$params['amount'], 'order_amount'=>$params['amount'], 'order_terminal'=>$paid_order['order_terminal'] ]; RechargeOrder::create($order_data); } //修改尾款信息 $un_order->order_total = $params['amount']; $un_order->order_amount = $params['amount']; $un_order->save(); } $work->user_confirm_status = 1;//待确认报价 $work->save(); //添加变更日志 $work_log = [ 'work_id'=>$work->id, 'master_worker_id'=>$work->master_worker_id, 'opera_log'=>'编号['.$params['user_info']['worker_number'].']'.$params['user_info']['real_name'].'于'.date('y-m-d H:i:s',time()).'于'.date('Y-m-d H:i:s',time()).'提交了报价单', ]; ServiceWorkLogLogic::add($work_log); Db::commit(); } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } }