$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; } } }