Эх сурвалжийг харах

Merge branch 'dev' of http://git.bocai108.com:10180/Ethan/Customer-Service into dev

vali 6 жил өмнө
parent
commit
8bb4739a06

+ 8 - 0
application/admin/controller/Accounts.php

@@ -171,8 +171,16 @@ class Accounts extends Base
             if(!empty($param['user_id']) && $param['user_id'] != 0){
             if(!empty($param['user_id']) && $param['user_id'] != 0){
                 $info['user_id'] = $param['user_id'];
                 $info['user_id'] = $param['user_id'];
             }
             }
+            $update = array();
+            $update['nick_name'] = $param['nick_name'];
+            $update['email'] = $param['account_email'];
+            $update['phone'] = $param['account_phone'];
             try{
             try{
                 db('accounts')->where('id', $param['id'])->update($info);
                 db('accounts')->where('id', $param['id'])->update($info);
+                $accounts = db('accountsmessage')->where('account_id', $param['id'])->select();
+                if(!empty($accounts)){
+                    db('accountsmessage')->where('account_id', $param['id'])->update($update);
+                }
             }catch(\Exception $e){
             }catch(\Exception $e){
                 return json(['code' => -6, 'data' => '', 'msg' => $e->getMessage()]);
                 return json(['code' => -6, 'data' => '', 'msg' => $e->getMessage()]);
             }
             }

+ 1 - 1
application/admin/controller/Settings.php

@@ -21,7 +21,7 @@ class Settings extends Base
                 $filesInfo[] = (object)[
                 $filesInfo[] = (object)[
                     'fileName' => 'entranceJs/new/'.$v,
                     'fileName' => 'entranceJs/new/'.$v,
                     'addTime' => date("Y-m-d H:i:s",$addTime),
                     'addTime' => date("Y-m-d H:i:s",$addTime),
-                    'lastLoad' => date("Y-m-d H:i:s",$lastLoad),
+                    'lastLoad' => $lastLoad ? date("Y-m-d H:i:s",$lastLoad) : '--',
                     'operate' => $this->fileBtn($v),
                     'operate' => $this->fileBtn($v),
                 ];
                 ];
             }
             }

+ 36 - 3
application/admin/controller/System.php

@@ -571,6 +571,9 @@ class System extends Base
             if($alarm['alarm_respond'] == 1){
             if($alarm['alarm_respond'] == 1){
                 $span = $span . '<span class="alarm_info">客服未回应</span>';
                 $span = $span . '<span class="alarm_info">客服未回应</span>';
             }
             }
+            if($alarm['alarm_count'] == 0 && $type !== 'onLine'){
+                $span = $span . '<span class="alarm_info">会话无内容</span>';
+            }
         }
         }
 
 
         //用户信息
         //用户信息
@@ -639,6 +642,33 @@ class System extends Base
         $evaluate = db('evaluate')->select();
         $evaluate = db('evaluate')->select();
         //$alarm报警信息
         //$alarm报警信息
         $alarm =  db('alarm')->select();
         $alarm =  db('alarm')->select();
+        //会话超时标准
+        $verifyAllTime =  db('systemconfig')->where('systemconfig_name','质检会话时长设置')->find();
+        //会话响应时长标准
+        $verifyReturnTime =  db('systemconfig')->where('systemconfig_name','质检会话响应时长设置')->find();
+        for($c=0;$c<count($alarm);$c++){
+            $alarm[$c]['alarminfo'] = '';
+            if($alarm[$c]['alarm_userSensitive'] != 0){
+                $alarm[$c]['alarminfo'] .= '访客敏感词/';
+            }
+            if($alarm[$c]['alarm_serverSensitive'] != 0){
+                $alarm[$c]['alarminfo'] .= '客服敏感词/';
+            }
+            if($alarm[$c]['alarm_corresponding'] > $verifyReturnTime['systemconfig_data']){
+                $alarm[$c]['alarminfo'] .= '响应超时/';
+            }
+            if($alarm[$c]['alarm_cvtOvertime'] > $verifyAllTime['systemconfig_data']){
+                $alarm[$c]['alarminfo'] .= '会话超时/';
+            }
+            if($alarm[$c]['alarm_respond'] == 1){
+                $alarm[$c]['alarminfo'] .= '客服未回应/';
+            }
+            if($alarm[$c]['alarm_count'] == 0){
+                $alarm[$c]['alarminfo'] .= '会话无内容';
+            }
+
+        }
+
         foreach($result as $key=>$vo){
         foreach($result as $key=>$vo){
             if($result[$key]['intime'] != 0){
             if($result[$key]['intime'] != 0){
                 $result[$key]['intime'] = date('Y-m-d H:i:s', $vo['intime']);
                 $result[$key]['intime'] = date('Y-m-d H:i:s', $vo['intime']);
@@ -678,9 +708,10 @@ class System extends Base
                 }
                 }
             }
             }
 
 
-            //会话时长/响应时长
+            //会话时长/响应时长/报警信息
             $result[$key]['conversation'] = '';
             $result[$key]['conversation'] = '';
             $result[$key]['response'] = '';
             $result[$key]['response'] = '';
+            $result[$key]['alarm'] = '';
             for($b=0;$b<count($alarm);$b++){
             for($b=0;$b<count($alarm);$b++){
                 if($result[$key]['servicelog_id'] == $alarm[$b]['servicelog_id']){
                 if($result[$key]['servicelog_id'] == $alarm[$b]['servicelog_id']){
                     //会话时长
                     //会话时长
@@ -691,6 +722,8 @@ class System extends Base
                     $response_min = intval($alarm[$b]['alarm_corresponding']/60);
                     $response_min = intval($alarm[$b]['alarm_corresponding']/60);
                     $response_s = $alarm[$b]['alarm_corresponding']%60;
                     $response_s = $alarm[$b]['alarm_corresponding']%60;
                     $result[$key]['response'] = $response_min.'分'.$response_s.'秒';
                     $result[$key]['response'] = $response_min.'分'.$response_s.'秒';
+                    //报警信息
+                    $result[$key]['alarminfo'] = $alarm[$b]['alarminfo'];
                 }
                 }
             }
             }
 
 
@@ -734,8 +767,8 @@ class System extends Base
             }
             }
 
 
         }
         }
-        $head = ['工单id', '访客进线时间', '接待客服', '所在组', '访客账号', '开始时间', '结束时间', '会话时长', '响应时长', '关闭原因', '满意度','来源ip','来源网站','来源系统','来源浏览器','聊天详情'];
-        $key = ['servicelog_id', 'intime', 'kefu_name', 'group_name', 'user_name', 'start_time', 'end_time', 'conversation', 'response', 'servicelog_close_type', 'evaluate_name','user_ip','website','system','browse','detail'];
+        $head = ['工单id', '访客进线时间', '接待客服', '所在组', '访客账号', '开始时间', '结束时间', '会话时长', '响应时长', '关闭原因', '满意度','来源ip','来源网站','来源系统','来源浏览器','报警信息','聊天详情'];
+        $key = ['servicelog_id', 'intime', 'kefu_name', 'group_name', 'user_name', 'start_time', 'end_time', 'conversation', 'response', 'servicelog_close_type', 'evaluate_name','user_ip','website','system','browse','alarminfo','detail'];
         (new Office())->outdata('工单数据导出', $result, $head, $key);
         (new Office())->outdata('工单数据导出', $result, $head, $key);
         return true;
         return true;
     }
     }

+ 1 - 1
application/database.php

@@ -27,7 +27,7 @@ return [
     // 数据库连接参数
     // 数据库连接参数
     'params'          => [],
     'params'          => [],
     // 数据库编码默认采用utf8
     // 数据库编码默认采用utf8
-    'charset'         => 'utf8',
+    'charset'         => 'utf8mb4',
     // 数据库表前缀
     // 数据库表前缀
     'prefix'          => 'ws_',
     'prefix'          => 'ws_',
     // 数据库调试模式
     // 数据库调试模式

+ 4 - 1
application/service/controller/History.php

@@ -48,8 +48,11 @@ class History extends Common
                 foreach ($kefuInfo as $va) {
                 foreach ($kefuInfo as $va) {
                     $kefuInfoData = json_decode($va, true);
                     $kefuInfoData = json_decode($va, true);
                     if ($kefuInfoData['group'] == $v['id']) {
                     if ($kefuInfoData['group'] == $v['id']) {
+                        $KFstatus = $kefuInfoData['status'] == 1 ? '(在线)'
+                            : ($kefuInfoData['status'] == 2 ? '(隐身)'
+                                : ($kefuInfoData['status'] == 3 ? '(休息)' : '(未知)'));
                         $data[$k]->children[$n] = (object) [
                         $data[$k]->children[$n] = (object) [
-                            'label' => $kefuInfoData['name'],
+                            'label' => $kefuInfoData['name'].$KFstatus,
                         ];
                         ];
                         $m = 0;
                         $m = 0;
                         $data[$k]->children[$n]->children = [];
                         $data[$k]->children[$n]->children = [];

+ 9 - 0
application/service/controller/Services.php

@@ -61,10 +61,19 @@ class Services extends Base
                 ];
                 ];
             }
             }
 
 
+            $info = array();
+            $info['nick_name'] = $nick_name;
+            $info['email'] = $account_email;
+            $info['phone'] = $phone;
+
             $account = db('accounts')->where('id', $account_id)->select();
             $account = db('accounts')->where('id', $account_id)->select();
             if(!empty($account)){
             if(!empty($account)){
                 try{
                 try{
                     db('accounts')->where('id', $account_id)->update($param);
                     db('accounts')->where('id', $account_id)->update($param);
+                    $accounts = db('accountsmessage')->where('account_id', $account_id)->select();
+                    if(!empty($accounts)){
+                        db('accountsmessage')->where('account_id', $account_id)->update($info);
+                    }
                     return json(['code' => 1, 'data' => '', 'msg' => '保存成功']);
                     return json(['code' => 1, 'data' => '', 'msg' => '保存成功']);
                 }catch(\Exception $e){
                 }catch(\Exception $e){
                     return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
                     return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);

+ 4 - 3
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -1061,7 +1061,7 @@ class Events
     }
     }
 
 
     //开启一个会话
     //开启一个会话
-    private static function BeginTalk($kfuid, $uid, $group, $serviceid = 0, $userInfo = false, $isChangeKF = 0)
+    private static function BeginTalk($kfuid, $uid, $group, $serviceid = 0, $userInfo = false, $isChangeKF = 0, $oldChatLog = [])
     {
     {
 
 
         $serviceid = intval($serviceid);
         $serviceid = intval($serviceid);
@@ -1161,7 +1161,7 @@ class Events
             'data' => [
             'data' => [
                 'user_info' => $userInfo,
                 'user_info' => $userInfo,
                 'conversationId' => $serviceid,
                 'conversationId' => $serviceid,
-                'history' => [],
+                'history' => $oldChatLog,
                 'evaluate_id' => 0,
                 'evaluate_id' => 0,
             ]
             ]
         ];
         ];
@@ -1743,6 +1743,7 @@ class Events
 
 
         /////////取消原有会话,开启新会话
         /////////取消原有会话,开启新会话
         $oldlog = self::$db->select('*')->from('ws_service_log')->where('servicelog_id=:servicelog_id ')->bindValues(['servicelog_id' => $serviceid])->orderByDESC(['servicelog_id'])->row();
         $oldlog = self::$db->select('*')->from('ws_service_log')->where('servicelog_id=:servicelog_id ')->bindValues(['servicelog_id' => $serviceid])->orderByDESC(['servicelog_id'])->row();
+        $oldChatLog = self::$db->query("SELECT * FROM `ws_chat_log` where `servicelog_id`= '$serviceid' order by `time_line`");
         if (!$oldlog) {
         if (!$oldlog) {
             self::DebugOut('changeOtherhKeFu exit5...');
             self::DebugOut('changeOtherhKeFu exit5...');
             return false;
             return false;
@@ -1755,7 +1756,7 @@ class Events
         ///更新redis数据
         ///更新redis数据
         self::updteKfTasksByservicd($fromkfuid, $serviceid, $user_info['client_id'], 0);
         self::updteKfTasksByservicd($fromkfuid, $serviceid, $user_info['client_id'], 0);
 
 
-        self:: BeginTalk($toukfid, $uid, $groupidto, 0, $user_info, 1);
+        self:: BeginTalk($toukfid, $uid, $groupidto, 0, $user_info, 1, $oldChatLog);
         self::servicetrutoother('OUT', $fromkfuid, $toukfid, $serviceid, $uid);
         self::servicetrutoother('OUT', $fromkfuid, $toukfid, $serviceid, $uid);
         $newUserInfo = json_decode(self::$redis->hget(self::USERINFOKEY, $uid), true);
         $newUserInfo = json_decode(self::$redis->hget(self::USERINFOKEY, $uid), true);
         self::servicetrutoother('IN', $toukfid, $fromkfuid, $newUserInfo['serverid'], $uid);
         self::servicetrutoother('IN', $toukfid, $fromkfuid, $newUserInfo['serverid'], $uid);