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

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

vali 6 жил өмнө
parent
commit
73276e22ac

+ 20 - 0
application/admin/controller/Clean.php

@@ -1,6 +1,8 @@
 <?php
 namespace app\admin\controller;
 
+use think\Db;
+
 /**
  * 管理系统系统设置类
  */
@@ -50,6 +52,8 @@ class Clean extends Base
                     $servicelog[] = $servicelog_id[$i]['servicelog_id'];
                 }
                 if($delete_time != ''){
+                    // 启动事务
+                    Db::startTrans();
                     try {
                         //聊天数据清理
                         db('service_log')->where('start_time','<',$del_time)->delete();
@@ -60,29 +64,45 @@ class Clean extends Base
                         db('kfstatetimes')->where('sday','<',$delete_time)->delete();
                         db('service_data')->where('add_date','<',$delete_time)->delete();
                         db('servicetimelog')->where('cdate','<',$delete_time)->delete();
+                        // 提交事务
+                        Db::commit();
                         return json(['code' => 1, 'data' => '', 'msg' => '数据清理成功']);
                     } catch (\Exception $e) {
+                        // 回滚事务
+                        Db::rollback();
                         return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
                     }
                 }else{
+                    // 启动事务
+                    Db::startTrans();
                     try {
                         db('service_log')->where('start_time','<',$del_time)->delete();
                         db('chat_log')->where('servicelog_id','in',$servicelog)->delete();
                         db('alarm')->where('servicelog_id','in',$servicelog)->delete();
+                        // 提交事务
+                        Db::commit();
                         return json(['code' => 1, 'data' => '', 'msg' => '聊天数据清理成功']);
                     } catch (\Exception $e) {
+                        // 回滚事务
+                        Db::rollback();
                         return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
                     }
                 }
             }else{
                 if($delete_time != ''){
+                    // 启动事务
+                    Db::startTrans();
                     try {
                         db('kfonlinehistory')->where('wday','<',$delete_time)->delete();
                         db('kfstatetimes')->where('sday','<',$delete_time)->delete();
                         db('service_data')->where('add_date','<',$delete_time)->delete();
                         db('servicetimelog')->where('cdate','<',$delete_time)->delete();
+                        // 提交事务
+                        Db::commit();
                         return json(['code' => 1, 'data' => '', 'msg' => '客服操作记录清理成功']);
                     } catch (\Exception $e) {
+                        // 回滚事务
+                        Db::rollback();
                         return json(['code' => -3, 'data' => '', 'msg' => $e->getMessage()]);
                     }
                 }else{

+ 4 - 0
application/admin/controller/Robot.php

@@ -199,6 +199,10 @@ class Robot extends Base
         Loader::import('PHPExcel.PHPExcel.PHPExcel_Cell');
         //获取表单上传文件
         $file = request()->file('excel');
+        if(empty($file)){
+            return json(['code' => -4, 'data' => '', 'msg' => '请先上传文件']);
+        }
+
         $info = $file->validate(['ext' => 'xlsx'])->move(ROOT_PATH . 'public' . DS . 'uploads');
         //上传验证后缀名,以及上传之后移动的地址
         if ($info) {

+ 5 - 0
application/admin/controller/Sensitivec.php

@@ -173,6 +173,11 @@ class Sensitivec extends Base
         Loader::import('PHPExcel.PHPExcel.PHPExcel_Cell');
         //获取表单上传文件
         $file = request()->file('excel');
+        if(empty($file)){
+            $this->error('请先上传文件');
+            //return json(['code' => -4, 'data' => '', 'msg' => '请先上传文件']);
+        }
+
         $info = $file->validate(['ext' => 'xlsx'])->move(ROOT_PATH . 'public' . DS . 'uploads');
         //上传验证后缀名,以及上传之后移动的地址
         if ($info) {

+ 0 - 1
application/admin/controller/System.php

@@ -173,7 +173,6 @@ class System extends Base
         if(request()->isAjax()){
 
             $param = input('param.');
-
             $limit = $param['pageSize'];
             $offset = ($param['pageNumber'] - 1) * $limit;
 

+ 4 - 0
application/admin/controller/Words.php

@@ -173,6 +173,10 @@ class Words extends Base
         Loader::import('PHPExcel.PHPExcel.PHPExcel_Cell');
         //获取表单上传文件
         $file = request()->file('excel');
+        if(empty($file)){
+            return json(['code' => -4, 'data' => '', 'msg' => '请先上传文件']);
+        }
+
         $info = $file->validate(['ext' => 'xlsx'])->move(ROOT_PATH . 'public' . DS . 'uploads');
         //上传验证后缀名,以及上传之后移动的地址
         if ($info) {

+ 9 - 0
application/admin/view/index/index.html

@@ -352,6 +352,15 @@
         });
         socket.send(login_data);
     };
+
+    // 心跳检测.
+    setInterval(function(){
+      socket.send(JSON.stringify({
+        type: 'ping',
+      }));
+    }, 5000);
+
+
     socket.onmessage = function(res) {
         var data = eval("("+res.data+")");
         switch(data['message_type']){

+ 14 - 14
application/admin/view/system/wordslog.html

@@ -174,20 +174,20 @@
             var start = $('#start').val();
             var end = $('#end').val();
 
-//            if('' == start){
-//                layer.tips("输入开始时间", '#start');
-//                return false;
-//            }
-//
-//            if('' == end){
-//                layer.tips("输入结束时间", '#end');
-//                return false;
-//            }
-//
-//            if(start > end){
-//                layer.msg('开始时间不能大于结束时间');
-//                return false;
-//            }
+            if('' == start){
+                layer.tips("输入开始时间", '#start');
+                return false;
+            }
+
+            if('' == end){
+                layer.tips("输入结束时间", '#end');
+                return false;
+            }
+
+            if(start > end){
+                layer.msg('开始时间不能大于结束时间');
+                return false;
+            }
 
             initTable();
         });

+ 40 - 18
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -238,6 +238,27 @@ class Events
             $data['userLastTime'] = time();
             Gateway::sendToClient($data['kf_client_id'], json_encode($chat_message, 256));
         }
+        // 返回当前时间
+        if (isset($message['webTime'])) {
+            $timeDifference = strtotime(date('H:i')) - strtotime($message['webTime']);
+            if ($timeDifference >= 120) {
+                $chat_message = [
+                    'message_type' => 'webTime',
+                    'data' => [
+                        'webTime' => date('H:i'),
+                    ]
+                ];
+                Gateway::sendToCurrentClient(json_encode($chat_message, 256));
+            }
+        } else {
+            $chat_message = [
+                'message_type' => 'webTime',
+                'data' => [
+                    'webTime' => date('H:i'),
+                ]
+            ];
+            Gateway::sendToCurrentClient(json_encode($chat_message, 256));
+        }
         // 保存修改后的工单信息.
         self::$redis->HSET('SERVICELOG', $message['conversationId'], json_encode($data, 256));
 
@@ -498,10 +519,10 @@ class Events
             'id' => $uid,
             'name' => $message['name'],
             'avatar' => $message['avatar'],
-            'website' => $_SESSION['origin'],//$_SERVER['HTTP_ORIGIN'],
+            'website' => $_SESSION['origin'],//$message['website'],
             'browse' => Gateway::browse_info(),
-            'system' => Gateway::get_os(),
-            'ip' => isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '',
+            'system' => Gateway::get_os(),//$message['system'],
+            'ip' => isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '',//message['ip'],
             'group' => $message['group'],
             'intime' => time(),
             'kfuid' => '',
@@ -1274,21 +1295,21 @@ class Events
 
         self::DebugOut([$serviceLog, $csdTime, $verifyReturnTime], 'systemMonitoring');
 
+        $chat_message = [
+            'message_type' => 'monitor',
+            'data' => [
+                'cvtList' => $serviceLog,
+                'userSensitive' => $userSensitive,
+                'serverSensitive' => $serverSensitive,
+                'csdNumber' => $csdNumber,
+                'csdTime' => $csdTime,
+                'overtimeNumber' => $overtimeNumber,
+                'overtimeTime' => $overtimeTime,
+                'evaluateCount' => $evaluateCount,
+            ]
+        ];
         // 查询对话时效设置.
         foreach ($adminList as $v) {
-            $chat_message = [
-                'message_type' => 'monitor',
-                'data' => [
-                    'cvtList' => $serviceLog,
-                    'userSensitive' => $userSensitive,
-                    'serverSensitive' => $serverSensitive,
-                    'csdNumber' => $csdNumber,
-                    'csdTime' => $csdTime,
-                    'overtimeNumber' => $overtimeNumber,
-                    'overtimeTime' => $overtimeTime,
-                    'evaluateCount' => $evaluateCount,
-                ]
-            ];
             Gateway::sendToClient($v, json_encode($chat_message, 256));
         }
     }
@@ -1427,6 +1448,7 @@ class Events
             self::$redis->del(self::KFINFOKEY);
             self::$redis->del(self::USERLIST);
             self::$redis->del(self::USERINFOKEY);
+            self::$redis->del('adminList');
             self::$db->query("update ws_service_log set status=2,end_time=$now where  start_time>=$t and  status!=2");
         }
 
@@ -1527,7 +1549,7 @@ class Events
             });
 
             // 管理员实时监控.
-            Timer::add(60, function () {
+            Timer::add(20, function () {
                 // 获取在线管理员
                 $adminList = self::$redis->smembers('adminList');
                 if ($adminList) {
@@ -1536,7 +1558,7 @@ class Events
             });
 
             // 检查对话时效给出.
-            Timer::add(60, function () {
+            Timer::add(20, function () {
                 self::overTime();
             });