Quellcode durchsuchen

修改客服接线数量的更新逻辑、过滤一周前的用户联系人列表

lip vor 3 Wochen
Ursprung
Commit
0c2589e001

+ 2 - 1
app/admin/command/UserQueue.php

@@ -69,7 +69,8 @@ class UserQueue extends Command
             User::where('user_id', $user_id)->update(['cs_uid'=>$cs_uid,'service_status' => 2, 'service_start' => time(), 'timeout_type' => 0]);
             User::where('user_id', $user_id)->update(['cs_uid'=>$cs_uid,'service_status' => 2, 'service_start' => time(), 'timeout_type' => 0]);
             
             
             //更新客服接线数量
             //更新客服接线数量
-            User::where('user_id', $cs_uid)->update(['chat_num'=>Db::raw('chat_num+1')]);
+            $chat_num = User::where('cs_uid',$cs_uid)->whereIn('service_status',[1,2])->count();
+            User::where('user_id', $cs_uid)->update(['chat_num'=>$chat_num]);
             //客服接线次数更新
             //客服接线次数更新
             KefuWork::addNum($admin_id, 'chat_num');
             KefuWork::addNum($admin_id, 'chat_num');
 
 

+ 4 - 2
app/admin/controller/Kefu.php

@@ -224,7 +224,8 @@ class Kefu extends BaseController
             $user->save();
             $user->save();
 
 
             //更新客服接线数量
             //更新客服接线数量
-            User::where('user_id', $cs_uid)->update(['chat_num'=>Db::raw('chat_num+1')]);
+            $chat_num = User::where('cs_uid',$cs_uid)->whereIn('service_status',[1,2])->count();
+            User::where('user_id', $cs_uid)->update(['chat_num'=>$chat_num]);
             //客服接线次数更新
             //客服接线次数更新
             KefuWork::addNum($this->admin_id, 'chat_num');
             KefuWork::addNum($this->admin_id, 'chat_num');
             //客服对接记录表
             //客服对接记录表
@@ -278,7 +279,8 @@ class Kefu extends BaseController
             $user->timeout_type = 0;
             $user->timeout_type = 0;
             $user->save();
             $user->save();
             //更新客服接线数量
             //更新客服接线数量
-            User::where('user_id', $cs_uid)->update(['chat_num'=>Db::raw('chat_num+1')]);
+            $chat_num = User::where('cs_uid',$cs_uid)->whereIn('service_status',[1,2])->count();
+            User::where('user_id', $cs_uid)->update(['chat_num'=>$chat_num]);
             //客服接线次数更新
             //客服接线次数更新
             KefuWork::addNum($admin_id, 'chat_num');
             KefuWork::addNum($admin_id, 'chat_num');
             
             

+ 2 - 1
app/admin/model/KefuTime.php

@@ -31,7 +31,8 @@ class KefuTime extends BaseModel
         //结束接线(需要判断当前没有任何接线的用户,才结束接线时间)
         //结束接线(需要判断当前没有任何接线的用户,才结束接线时间)
         if ($type == 3) {
         if ($type == 3) {
             //更新客服接线数量
             //更新客服接线数量
-            User::where('user_id', $cs_uid)->where('chat_num', '>', 0)->update(['chat_num'=>Db::raw('chat_num-1')]);
+            $chat_num = User::where('cs_uid',$cs_uid)->whereIn('service_status',[1,2])->count();
+            User::where('user_id', $cs_uid)->update(['chat_num'=>$chat_num]);
 
 
             $count = User::where('cs_uid', $cs_uid)->whereIn('service_status', [1,2])->count();
             $count = User::where('cs_uid', $cs_uid)->whereIn('service_status', [1,2])->count();
             if ($count == 0) {
             if ($count == 0) {

+ 8 - 1
app/enterprise/model/User.php

@@ -232,7 +232,13 @@ class User extends BaseModel
          $onlineList=[];
          $onlineList=[];
       }
       }
       $isRegion=$config['sysInfo']['ipregion'] ?? 0;
       $isRegion=$config['sysInfo']['ipregion'] ?? 0;
+      $auto_cs_uid = getAutoCsUid();//获取机器人ID
       foreach ($list_chart as $k => $v) {
       foreach ($list_chart as $k => $v) {
+         $lastSendTime = $list_chart[$k]['lastSendTime'] * 1000;//time() * 1000;
+         $is_auto = $v['role'] == 0 && $v['cs_uid'] == $auto_cs_uid ? 1 : 0; //挂在机器人名下的用户
+         if ($is_auto == 1 && $lasMsgList < time() - 7*24*60*60) {
+            unset($list_chart[$k]);//过滤一周前的用户
+         }
          // 是否有消息通知或者置顶聊天
          // 是否有消息通知或者置顶聊天
          $friend = isset($friendList[$v['user_id']]) ? $friendList[$v['user_id']] : [];
          $friend = isset($friendList[$v['user_id']]) ? $friendList[$v['user_id']] : [];
          $list_chart[$k]['id'] = $v['user_id'];
          $list_chart[$k]['id'] = $v['user_id'];
@@ -241,13 +247,14 @@ class User extends BaseModel
          $list_chart[$k]['avatar'] = avatarUrl($v['avatar'], $v['realname'], $v['user_id'], 120);
          $list_chart[$k]['avatar'] = avatarUrl($v['avatar'], $v['realname'], $v['user_id'], 120);
          $list_chart[$k]['lastContent'] = '';
          $list_chart[$k]['lastContent'] = '';
          $list_chart[$k]['unread'] = 0;
          $list_chart[$k]['unread'] = 0;
-         $list_chart[$k]['lastSendTime'] = $list_chart[$k]['lastSendTime'] * 1000;//time() * 1000;
+         $list_chart[$k]['lastSendTime'] = $lastSendTime;
          $list_chart[$k]['is_group'] = 0;
          $list_chart[$k]['is_group'] = 0;
          $list_chart[$k]['setting'] = [];
          $list_chart[$k]['setting'] = [];
          $list_chart[$k]['is_at'] = 0;
          $list_chart[$k]['is_at'] = 0;
          $list_chart[$k]['last_login_ip'] = '';
          $list_chart[$k]['last_login_ip'] = '';
          $list_chart[$k]['location'] ="";
          $list_chart[$k]['location'] ="";
          $list_chart[$k]['cs_uid'] = $v['cs_uid'];
          $list_chart[$k]['cs_uid'] = $v['cs_uid'];
+         $list_chart[$k]['is_auto'] = $is_auto;
          $list_chart[$k]['service_status'] = $v['service_status'];
          $list_chart[$k]['service_status'] = $v['service_status'];
          $list_chart[$k]['language_code'] = $v['language_code'];
          $list_chart[$k]['language_code'] = $v['language_code'];
          if($isRegion){
          if($isRegion){