Kaynağa Gözat

修改总后台消息记录查看

zilong 4 yıl önce
ebeveyn
işleme
c91a27652e

+ 2 - 4
app/Admin/Actions/backstage/Orders/Message.php

xqd
@@ -16,8 +16,6 @@ class Message extends RowAction
     {
         return '/admin/message?order_id='.$this->row->id.
             '&docter_id='.$this->row->docter_id.
-            '&user_id='.$this->row->user_id.
-            '&start='.$this->row->receiving_time.
-            '&end='.$this->row->end_time.'';
+            '&user_id='.$this->row->user_id;
     }
-}
+}

+ 11 - 43
app/Admin/Controllers/OrdersManagement/ConsultingOrdersController.php

xqd
@@ -310,61 +310,29 @@ class ConsultingOrdersController extends AdminController
 
         return $form;
     }
+
     function message(Content $content,Request $request)
     {
-//        dd($request->all());
-        $user = $request->input('user_id');
-        $docter = $request->input('docter_id');
-        $start = $request->input('start');
-        $end = $request->input('end');
-        if (empty($end)) {
-            $end = time();
-        }
-        $str_docter = 'doctor_'.$user;
-        $str_user = 'member_'.$docter;
-//        $docter = 10086;
-//        $user = 29068;
-//        $start = 1614433272;
-//        $end = 1614433703;
-//        $str_docter = 'doctor_'.$docter;
-//        $str_user = 'member_'.$user;
-        $user_arr = ImMessage::whereBetween('create_time',[$start,$end])
-            ->where('senderId',$str_user)
-            ->get()->toArray();
-        $docter_arr = ImMessage::whereBetween('create_time',[$start,$end])
-            ->where('senderId',$str_docter)
-            ->get()->toArray();
-        $arr = array_merge($user_arr,$docter_arr);
-        array_multisort(array_column($arr,'create_time'),SORT_ASC,$arr);
-        $content = new Content();
+        $user_id = $request->input('user_id');
+        $docter_id = $request->input('docter_id');
         $order_id = $request->input('order_id');
+        $content = new Content();
         $content->title('图文咨询聊天记录 ');
         $content->description('订单号'.$order_id);
         Admin::js('jquery-3.5.1.min.js');
-        $content->body('<iframe src="/admin/message_view?docter_id='.$docter.'
-                                                                &user='.$user.'
-                                                                &start='.$start.'
-                                                                &end='.$end.'
+        $content->body('<iframe src="/admin/message_view?docter_id='.$docter_id.'
+                                                                &user_id='.$user_id.'
                                                                 &order_id='.$order_id.'" style="width: 100%;height:800px;border: none"></iframe>');
         return $content;
     }
+
     public function message_view(Request $request)
     {
-        $start = $request->input('start');
-        $end = $request->input('end');
         $docter = $request->input('docter_id');
-        $user = $request->input('user');
+        $user = $request->input('user_id');
         $order_id = $request->input('order_id');
-        $str_docter = 'doctor_'.$docter;
-        $str_user = 'member_'.$user;
-        $user_arr = ImMessage::whereBetween('create_time',[$start,$end])
-            ->where('senderId',$str_user)
-            ->get()->toArray();
-        $docter_arr = ImMessage::whereBetween('create_time',[$start,$end])
-            ->where('senderId',$str_docter)
-            ->get()->toArray();
-        $arr = array_merge($user_arr,$docter_arr);
-        array_multisort(array_column($arr,'create_time'),SORT_ASC,$arr);
-        return view('admin.message',compact('arr','order_id','docter','user'));
+        $arr = ImMessage::getChatRecord($order_id);
+
+        return view('admin.message', compact('arr','order_id','docter','user'));
     }
 }

+ 20 - 12
app/Models/ImMessage.php

xqd
@@ -14,21 +14,29 @@ class ImMessage extends BaseModel
 
     public static function getChatRecord($order_id)
     {
-        $order = Order::select(['docter_id', 'user_id'])->where('id', $order_id)->first();
+        $order = Order::select(['docter_id', 'user_id', 'receiving_time', 'end_time'])->where('id', $order_id)->first();
         $docterImId = 'doctor_'.$order['docter_id'];
         $userImId = 'member_'.$order['user_id'];
-        $data = ImMessage::whereIn('senderId', [$docterImId, $userImId])->whereIn('receiverId', [$docterImId, $userImId])->orderBy('timestamp', 'asc')->get()->toArray();
 
-        $user = User::select(['nickname', 'avatar'])->where('id', $order['user_id'])->first();
-        $docter = Docter::select(['name', 'avatar'])->where('id', $order['docter_id'])->first();
-        foreach ($data as $k => &$v) {
-            if ($v['senderId'] == $userImId) {
-                $v['sender_name'] = $user['nickname'];
-                $v['sender_avatar'] = $user['avatar'];
-            }
-            else {
-                $v['sender_name'] = $docter['name'];
-                $v['sender_avatar'] = $docter['avatar'];
+        $data = [];
+        $start_time = $order['receiving_time']*1000;
+        if (!empty($start_time)) {
+            $end_time = !empty($order['end_time']) ? $order['end_time'] : time();
+            $end_time = $end_time*1000;
+            $data = ImMessage::whereIn('senderId', [$docterImId, $userImId])->whereIn('receiverId', [$docterImId, $userImId])->whereBetween('timestamp', [$start_time, $end_time])->orderBy('timestamp', 'asc')->get()->toArray();
+            if (!empty($data)) {
+                $user = User::select(['nickname', 'avatar'])->where('id', $order['user_id'])->first();
+                $docter = Docter::select(['name', 'avatar'])->where('id', $order['docter_id'])->first();
+                foreach ($data as $k => &$v) {
+                    if ($v['senderId'] == $userImId) {
+                        $v['sender_name'] = $user['nickname'];
+                        $v['sender_avatar'] = $user['avatar'];
+                    }
+                    else {
+                        $v['sender_name'] = $docter['name'];
+                        $v['sender_avatar'] = $docter['avatar'];
+                    }
+                }
             }
         }