input('chat_id'); $service_user_id = $request->input('service_user_id'); if ($chat_id) { if($service_user_id){ $group = Group::with('order')->where('im_chat_id', $chat_id)->first(); }else{ $group = Group::with('order')->where('chat_id', $chat_id)->first(); } $order = $group->order; }else { $order = Order::where('pay_status', 'PAID')->orderByDesc('id')->first(); } // $comments = CommentService::orderComments($order); $comments = Comment::with(['role','user'])->where('commentable_id',$order->id)->orderByDesc('id')->paginate(); if($comments){ foreach ($comments as $k => $v){ $comments[$k]->images = json_decode($v->images,true); } } if($service_user_id){ $user = User::whereHas('serviceUser', function($sql) use($service_user_id) { $sql->where('user_id', $service_user_id); })->first(); }else{ //清除红点 $work_user = session('work_wechat_user'); if ($work_user) { $work_id = $work_user['raw']['userid']; }else{ $work_id = $request->input('work_id'); } $user = User::whereHas('serviceUser', function($sql) use($work_id) { $sql->where('work_user_id', $work_id); })->first(); } if($user){ $key = 'red_event_'.$chat_id.'_'.$user->id; Redis::del($key); } return $this->success('ok', $comments); } public function commentOrder(Request $request) { $chat_id = $request->input('chat_id'); if (empty($chat_id)) throw new \Exception("缺少企业微信群id"); $service_user_id = $request->input('service_user_id'); if($service_user_id){ $group = Group::with('order')->where('im_chat_id', $chat_id)->first(); }else{ $group = Group::with('order')->where('chat_id', $chat_id)->first(); } $order = $group->order; $content = $request->input('comment'); $images = $request->input('images'); $type_id = $request->input('type_id', 3); if(is_array($images)){ $images = json_encode($images); } if (empty($content) && empty($images)) return $this->failure("请输入备注内容"); if($service_user_id){ $user = User::whereHas('serviceUser', function($sql) use($service_user_id) { $sql->where('user_id', $service_user_id); })->first(); }else{ $work_user = session('work_wechat_user'); if ($work_user) { if(config('app.env') == 'production'){ $work_id = $work_user['raw']['userid']; }else{ $work_id = "hankin"; } }else{ $work_id = $request->get('work_id'); } $user = User::whereHas('serviceUser', function($sql) use($work_id) { $sql->where('work_user_id', $work_id); })->first(); } // CommentService::commentOrder($order, $content, $user); // if($user && $images){ // $latestRecord = Comment::where('user_id',$user->id)->latest()->first(); // if($latestRecord){ // $latestRecord->update(['images'=>$images]); // } // } $comment_type = CommentType::where('id',$type_id)->first(); Comment::create([ 'commentable_type'=>get_class(), 'commentable_id'=>$order->id, 'comment'=>$content, 'images'=>$images, 'type_id' => $type_id, 'type_name' => $comment_type->name, 'user_id'=>$user->id??null ]); //查看这个订单是有哪些服务人员,增加红点提示 if($user){ $service_user_ids = ServiceRoleOrder::where('order_id',$order->id) ->where('user_id','<>',$user->id) ->pluck('user_id')->unique(); //取和当前用户不同身份的角色发送 $service_user_role = ServiceRoleOrder::where('order_id',$order->id) ->where('user_id',$user->id)->value('role_id'); // 计算两个数组的差集 $difference = array_diff([ServiceRole::MAIN_COACH,ServiceRole::COACH,ServiceRole::CUSTOMER], [$service_user_role]); //发送网易云通知 $chatService = new ChatService(); $chatService->sendImMsgUserToUser($order->id,'系统通知','用户【'.$order->name.'】的群,内部沟通有留言,请查阅。','https://image.fulllinkai.com/202403/29/dea3e0c27107cdf178635d2a41199e5e.png','yfheal://app/push/RemarksManagement',$difference); //不是网易云信群再发送备注信息 foreach ($service_user_ids as $user_id){ $key = 'red_event_'.$chat_id.'_'.$user_id; Redis::incr($key); //发送企业微信通知 $message = "【{$group->name}】有一个新备注,请注意查看"; $work_user_id = ServiceUser::where('user_id',$user_id)->value('work_user_id'); if($work_user_id && config('app.env') == 'production' && !$service_user_id){ WechatService::sendWorkMessage($work_user_id,'text',['content'=>$message]); } } } DmaProcessLog::addUserProcessLog($order->user_id??0,$order->id??0,1,"submit_comment","提交了备注信息",$service_user_id??0); DmaProcessLog::addUserProcessLog($order->user_id??0,$order->id??0,1,"send_comment_msg","系统发送备注通知",$service_user_id??0); return $this->success('ok'); } public function deleteComment(Comment $comment) { $comment->delete(); return $this->success('ok'); } public function updateOrderComment(Request $request, Comment $comment) { $content = $request->input('comment'); $comment->comment = $content; $images = $request->input('images'); $type_id = $request->input('type_id', 1); $comment_type = CommentType::find($type_id); if(!empty($images)){ $images = json_encode($images); } $comment->images = $images; $comment->type_id = $type_id; $comment->type_name = $comment_type->name; $comment->save(); return $this->success('ok'); } public function orderComment(Request $request, Comment $comment) { if($comment){ $comment->images = json_decode($comment->images); } return $this->success('ok', $comment); } public function getCommentType(){ try { $list = CommentType::get(); return $this->success('ok',$list); }catch (\Exception $e){ return $this->failure('file:'.$e->getFile().'|line:'.$e->getLine().'|message:'.$e->getMessage()); } } }