gorden 8 сар өмнө
parent
commit
f9ada5daf8

+ 0 - 1
app/admin/controller/finance/WriteOffController.php

@@ -181,7 +181,6 @@ class WriteOffController
                 left join app_goods as g on JSON_EXTRACT(du.join_data_used_object_json,'$.goods_id') = g.goods_id 
                 {$where}
             group by data_used_classify";
-            dump($sql);
         $rows = Db::select($sql);
         $rows = json_decode(json_encode($rows),true);
         

+ 64 - 0
app/admin/service/client/MessageService.php

@@ -0,0 +1,64 @@
+<?php
+
+namespace app\admin\service\client;
+
+use app\model\ClientMessage;
+use app\model\SysUser;
+use support\Db;
+
+class MessageService
+{
+    public static function unreadChatMessage()
+    {
+        $times = [
+            strtotime("-40 minutes"),
+            strtotime("-30 minutes"),
+        ];
+        $chats = Db::table('chat_message')
+            ->selectRaw('join_message_recv_id,join_message_send_id,GROUP_CONCAT(chat_message_id) as chat_message_ids,MIN(chat_message_id) as min_chat_message_id')
+            ->where('chat_message_status', 'PENDING')
+//            ->whereBetween('chat_message_addtimes',$times)
+            ->groupBy('join_message_send_id', 'join_message_recv_id')
+            ->get();
+        dump($chats);
+
+        foreach ($chats as $chat) {
+            // 接收者是后台人员
+            if (substr($chat->join_message_recv_id, 0, 2) == 'UR') {
+                continue;
+            }
+            if (ClientMessage::where('join_client_message_recv_member_id', $chat->join_message_recv_id)
+                ->where('client_message_classify','CHAT')
+                ->whereJsonContains("client_message_extend_json->message_id",'\"'.$chat->min_chat_message_id.'\"')
+                ->exists()) {
+                continue;
+            }
+            // 是客服还是医生
+            $user = SysUser::select('join_user_role_id', 'user_id')
+                ->where('user_id',$chat->join_message_send_id)
+                ->first();
+            if ($user && $user->join_user_role_id == 30){
+                $role = '医生';
+            }elseif ($user && $user->join_user_role_id == 27){
+                $role = '小悦客服';
+            }else{
+                continue;
+            }
+            $messageIds = explode(',',$chat->chat_message_ids);
+            $insertData = [
+                'client_message_classify'=>'CHAT',
+                'join_client_message_send'=>'SYSTEM',
+                'join_client_message_recv_member_id'=>$chat->join_message_recv_id,
+                'client_message_sendtime'=>date('Y-m-d H:i:s'),
+                'client_message_status'=>'PENDING',
+                'client_message_category'=>'NORMAL',
+                'client_message_header_json'=>json_encode(['title'=>'未读消息']),
+                'client_message_body_json'=>json_encode(['content'=>"您有来自".$role."的消息,请及时查收。"]),
+                'client_message_extend_json'=>json_encode(['message_id'=>$messageIds]),
+                'client_message_addtimes'=>time()
+            ];
+            ClientMessage::insert($insertData);
+        }
+
+    }
+}

+ 4 - 0
process/Task.php

@@ -3,6 +3,7 @@
 namespace process;
 
 use app\admin\controller\notify\RechargeController;
+use app\admin\service\client\MessageService;
 use app\admin\service\goods\GoodsService;
 use app\admin\service\order\OrderService;
 use Workerman\Crontab\Crontab;
@@ -21,6 +22,9 @@ class Task
 //            GoodsService::checkOffListing();
             // 未支付30分钟取消
             OrderService::checkPayingOrder();
+
+            // 会员消息 30分钟未读,发送站内信
+//            MessageService::unreadChatMessage();
         });
 
         // 每天的8点执行,注意这里省略了秒位