lip 3 месяцев назад
Родитель
Сommit
828775d05c

+ 3 - 0
app/admin/command/UserQueue.php

@@ -7,6 +7,7 @@ use think\console\Output;
 use app\admin\model\User;
 use app\admin\model\Config;
 use app\admin\model\KefuWork;
+use app\admin\model\KefuLog;
 use app\enterprise\model\{Message,Friend};
 use Exception;
 use think\facade\Db;
@@ -83,6 +84,8 @@ class UserQueue extends Command
                 Message::where(['from_user' => $user_id, 'to_user' => $robot_id])->update(['to_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
                 Message::where(['from_user' => $robot_id, 'to_user' => $user_id])->update(['from_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
             }
+            //客服对接记录表
+            KefuLog::addData($cs_uid, $user_id, 3);
 
             Db::commit();
             //通知客服已接线

+ 5 - 0
app/admin/command/UserTimeout.php

@@ -7,6 +7,7 @@ use think\console\Output;
 use app\admin\model\User;
 use app\admin\model\Config;
 use app\admin\model\KefuTime;
+use app\admin\model\KefuLog;
 use think\facade\Db;
 use GatewayClient\Gateway;
 
@@ -106,6 +107,10 @@ class UserTimeout extends Command
                     //用户转给机器人客服
                     User::where('user_id', $user['user_id'])->update(['service_status' => -1, 'service_start' => 0, 'timeout_type' => 0, 'cs_uid'=>$cs_uid]);
                     KefuTime::endData($user['uid'], 3, $user['cs_uid']); //结束接线时间
+                    //客服对接记录表
+                    KefuLog::endData($user['cs_uid'], $user['user_id']);
+                    //客服对接记录表
+                    KefuLog::addData($cs_uid, $user['user_id'], 3);
 
                     Db::commit();
                     

+ 2 - 1
app/admin/controller/Complaint.php

@@ -25,7 +25,7 @@ class Complaint extends BaseController
             $limit = $params['limit'] ?? 15;
             $language_code = $params['language_code'] ?? $this->lang;
             
-            $query = ComplaintModel::alias('complaint')->join('admin', 'admin.id=complaint.cs_uid','left')
+            $query = ComplaintModel::alias('complaint')
                                     ->join('user', 'user.uid=complaint.cs_uid','left')
                                     ->where('complaint.language_code', $language_code);
             if (!empty($params['keyword'])) {
@@ -69,6 +69,7 @@ class Complaint extends BaseController
                 return $this->error('投诉项不存在');
             }
             $complaint->result = $result;
+            $complaint->status = 1;
             $complaint->save();
         } catch (Exception $e) {
             return $this->error($e->getMessage());

+ 48 - 1
app/admin/controller/Kefu.php

@@ -14,6 +14,7 @@ use app\admin\model\OperationData;
 use app\admin\model\Department;
 use app\admin\model\Config;
 use app\admin\model\Score;
+use app\admin\model\KefuLog;
 use app\enterprise\model\{Message,Friend};
 use Exception;
 use think\facade\Db;
@@ -215,6 +216,8 @@ class Kefu extends BaseController
             User::where('user_id', $cs_uid)->update(['chat_num'=>Db::raw('chat_num+1')]);
             //客服接线次数更新
             KefuWork::addNum($this->admin_id, 'chat_num');
+            //客服对接记录表
+            KefuLog::addData($cs_uid, $user_id, 1);
 
             $friend = Friend::where('create_user', $user_id)->order('create_time', 'desc')->find();
             if ($friend) {
@@ -250,6 +253,7 @@ class Kefu extends BaseController
             if (!$user) {
                 return $this->error('用户不存在');
             }
+            $old_cs_uid = $user->cs_uid;
             $admin_id = User::getAdminId($cs_uid);
             $user->cs_uid = $cs_uid;
             $user->service_status = 1;
@@ -260,10 +264,13 @@ class Kefu extends BaseController
             User::where('user_id', $cs_uid)->update(['chat_num'=>Db::raw('chat_num+1')]);
             //客服接线次数更新
             KefuWork::addNum($admin_id, 'chat_num');
+            //客服对接记录表
+            KefuLog::endData($old_cs_uid, $user_id);
+            //客服对接记录表
+            KefuLog::addData($cs_uid, $user_id, 2);
 
             $friend = Friend::where('create_user', $user_id)->order('create_time', 'desc')->find();
             if ($friend) {
-                $old_cs_uid = $friend->friend_user_id;
                 $friend->friend_user_id = $cs_uid;
                 $friend->save();
                 
@@ -351,6 +358,11 @@ class Kefu extends BaseController
                     Message::where(['from_user' => $old_cs_uid, 'to_user' => $user_id])->update(['from_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
                 }
 
+                //客服对接记录表
+                KefuLog::endData($old_cs_uid, $user_id);
+                //客服对接记录表
+                KefuLog::addData($cs_uid, $user_id, 3);
+
                 Db::commit();
 
                 //通知关闭聊天框
@@ -414,4 +426,39 @@ class Kefu extends BaseController
         return $this->success(['count' => $count, 'list' => $list]);
     }
 
+    /**
+     * @api {get} 客服对接记录表
+     */
+    public function log()
+    {
+        try {
+            $params = $this->request->param();
+            $page = $params['page'] ?? 1;
+            $limit = $params['limit'] ?? 15;
+            $keyword = $params['keyword'] ?? '';
+            $cs_name = $params['cs_name'] ?? '';
+            
+            $query = KefuLog::alias('log')
+                        ->join('user', 'log.user_id = user.user_id', 'left')
+                        ->join('user as kefu', 'log.cs_uid = kefu.user_id', 'left');
+            if ($keyword) {
+                $query = $query->where('user.realname|user.user_id', 'like', "%{$keyword}%");
+            }
+            if ($cs_name) {
+                $query = $query->where('kefu.realname|user.user_id', 'like', "%{$cs_name}%");
+            }
+
+            $count = $query->count();
+            $list = $query->field(['log.*','user.realname','user.avatar','kefu.realname as cs_name'])
+                        ->order('id', 'desc')
+                        ->limit($limit)
+                        ->page($page)
+                        ->select();
+            
+        } catch (Exception $e) {
+            return $this->error($e->getMessage());
+        }
+        return $this->success(['count' => $count, 'list' => $list]);
+    }
+
 }

+ 38 - 0
app/admin/model/KefuLog.php

@@ -0,0 +1,38 @@
+<?php
+
+namespace app\admin\model;
+
+use app\BaseModel;
+
+
+class KefuLog extends BaseModel
+{
+    
+    // protected $autoWriteTimestamp = true;
+    // protected $createTime = 'created_at';
+    // protected $updateTime = 'updated_at';
+
+    //客服对接记录表:type:类型:1主动接线;2转接接线;3自动接线
+    public static function addData($cs_uid, $user_id, $type) {
+        
+        return self::create([
+            'cs_uid' => $cs_uid,
+            'user_id' => $user_id,
+            'type' => $type,
+            'status' => 0,
+            'created_at' => date('Y-m-d H:i:s')
+        ]);
+    }
+
+    //客服对接结束
+    public static function endData($cs_uid, $user_id) {
+        
+        $info = self::where('cs_uid', $cs_uid)->where('user_id', $user_id)->where('status', 0)->find();
+        if ($info) {
+            $info->status = 1;
+            $info->updated_at = date('Y-m-d H:i:s');
+            $info->save();
+        }
+    }
+
+}

+ 5 - 1
app/admin/model/User.php

@@ -105,6 +105,11 @@ class User extends BaseModel
                 Message::where(['from_user' => $old_cs_uid, 'to_user' => $user_id])->update(['from_user' => $cs_uid, 'chat_identify' => $chat_identify, 'is_read' => 1]);
             }
 
+            //客服对接记录表
+            KefuLog::endData($old_cs_uid, $user_id);
+            //客服对接记录表
+            KefuLog::addData($cs_uid, $user_id, 3);
+
             //通知关闭聊天框
             wsSendMsg($old_cs_uid,'closeChat',['user_id'=>$user_id]);
         }
@@ -116,7 +121,6 @@ class User extends BaseModel
         //结束客服接线时间
         KefuTime::endData($admin_id, 3, $kefu_user_id);
         
-        
         //通知客服已结束
         wsSendMsg(0,'handleChat',['user_id'=>0]);
     }