$params['external_platform_id'], 'shop_code' => $params['shop_code'], 'shop_name' => $params['shop_name'], 'service_name' => $params['service_name']??'', 'unique_code' => $params['unique_code'], 'solution_type' => $params['solution_type'], 'form_detail' => $params['form_detail'], 'user_name' => $params['user_name'], 'mobile' => $params['mobile'], 'user_address' => $params['user_address'], 'appointment_time' => $params['appointment_time'], 'goods_id' => $params['goods_id'], 'amount' => $params['amount'], 'lon' => $params['lon'], 'lat' => $params['lat'], 'remark' => $params['remark'] ]); Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * @notes 编辑 * @param array $params * @return bool * @author likeadmin * @date 2025/04/23 17:10 */ public static function edit(array $params): bool { Db::startTrans(); try { ExternalConsultation::where('id', $params['id'])->update([ 'external_platform_id' => $params['external_platform_id'], 'shop_code' => $params['shop_code'], 'shop_name' => $params['shop_name'], 'service_name' => $params['service_name']??'', 'unique_code' => $params['unique_code'], 'solution_type' => $params['solution_type'], 'form_detail' => $params['form_detail'], 'user_name' => $params['user_name'], 'mobile' => $params['mobile'], 'user_address' => $params['user_address'], 'appointment_time' => $params['appointment_time'], 'goods_id' => $params['goods_id'], 'amount' => $params['amount'], 'lon' => $params['lon'], 'lat' => $params['lat'], 'remark' => $params['remark'] ]); Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public static function order(array $params): bool { if(empty($params['mobile']) || empty($params['lon']) || empty($params['lat']) || empty($params['user_address'])){ self::setError('地址坐标信息为必填项'); return false; } Db::startTrans(); try { // userName mobile goods_id userAddress amount appointment_time lon lat $work_id = ThirdOrderLogic::submitOrders([ 'external_platform_id' => $params['external_platform_id'], 'userName' => $params['user_name'], 'mobile' => $params['mobile'], 'goods_id' => $params['goods_id'], 'userAddress' => $params['user_address'], 'amount' => $params['amount'], 'appointment_time' => $params['appointment_time'], 'lon' => $params['lon'], 'lat' => $params['lat'] ]); if($work_id === false){ throw new \Exception(ThirdOrderLogic::getError()); //$work_id = 0; } ExternalConsultation::where('id', $params['id'])->update([ 'external_platform_id' => $params['external_platform_id'], 'shop_code' => $params['shop_code'], 'shop_name' => $params['shop_name'], 'service_name' => $params['service_name']??'', 'unique_code' => $params['unique_code'], 'solution_type' => $params['solution_type'], 'form_detail' => $params['form_detail'], 'user_name' => $params['user_name'], 'mobile' => $params['mobile'], 'user_address' => $params['user_address'], 'appointment_time' => $params['appointment_time'], 'goods_id' => $params['goods_id'], 'amount' => $params['amount'], 'lon' => $params['lon'], 'lat' => $params['lat'], //'work_id' => $work_id, 'remark' => $params['remark'] ]); $consultationOrder = ExternalConsultationOrder::create([ 'consultation_id' => $params['id'], 'user_address' => $params['user_address'], 'lon' => $params['lon'], 'lat' => $params['lat'], 'appointment_time' => $params['appointment_time'], 'goods_id' => $params['goods_id'], 'amount' => $params['amount'], 'work_id' => $work_id, ]); Db::commit(); // 分配客服派单 OnlineCustomerService::serviceWorkMessage($work_id); return $consultationOrder['id']; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public static function followLog(array $params): bool { Db::startTrans(); try { $consultation = ExternalConsultation::where('id', $params['id'])->findOrEmpty(); if(empty($consultation->follow_start_time)) $consultation->follow_start_time = time(); $consultation->follow_status = 1; $consultation->save(); ExternalConsultationFollowLog::create([ 'consultation_id' => $params['id']??0, 'content' => $params['content']??'', 'admin_id' => $params['admin_id']??0, 'create_time' => time(), ]); Db::commit(); self::delCache($params['id']); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public static function delCache($id) { return OnlineCustomerService::customerClsMessage('consultation',$id); } public static function selectCache() { $consultation_notific_arr = Cache::store('common_redis')->get('consultation_notific'); return count($consultation_notific_arr?:[]); } /** * @notes 删除 * @param array $params * @return bool * @author likeadmin * @date 2025/04/23 17:10 */ public static function delete(array $params): bool { return ExternalConsultation::destroy($params['id']); } /** * @notes 获取详情 * @param $params * @return array * @author likeadmin * @date 2025/04/23 17:10 */ public static function detail($params): array { return ExternalConsultation::findOrEmpty($params['id'])->toArray(); } }