Преглед изворни кода

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

Jonlin пре 6 година
родитељ
комит
0810d35947

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

@@ -23,7 +23,7 @@ class Words extends Base
 
             $where['user_id'] = $param['type'] == 1? 0 : ['neq',0];
             if (strlen($param['searchText'])) {
-                $where['content'] = $param['searchText'];
+                $where['content'] = ['like', '%' . $param['searchText'] . '%'];
             }
 
             $result = db('words')

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

@@ -217,6 +217,8 @@
                     <table id="cusTable">
                         <thead>
                         <th data-field="uidname">客服</th>
+                        <th data-field="ip">IP</th>
+                        <th data-field="status">状态</th>
                         <th data-field="hhl">当前会话量</th>
                         <th data-field="jdl">今日接待量</th>
                         <th data-field="pjhysc">今日平均会话时长</th>

+ 0 - 1
application/admin/view/report/index.html

@@ -483,7 +483,6 @@
             elem: '#daterang'
             , range: ','
         });
-
     });
 </script>
 </body>

+ 51 - 26
application/common/KfjkLogic.php

@@ -50,8 +50,11 @@ class KfjkLogic
         $mydl = $this->mydl($kfuidarray, $todayall);
         $pjxysc = $this->pjxysc($kfuidarray, $todayall);
         $jrxxsc = $this->jrxxsc($kfuidarray, $todayall);
+        $kfip = $this->getKfinline();
 
         foreach ($kfuidarray_index as $uid => $val) {
+            $kfuidarray_index[$uid]['ip'] = $kfip['KF' . $uid]['ip'];
+            $kfuidarray_index[$uid]['status'] = $this->getStatusName($kfip['KF' . $uid]['status']);
             $kfuidarray_index[$uid]['uid'] = $uids[$uid];
             $kfuidarray_index[$uid]['uidname'] = $uidsname[$uid];
             $kfuidarray_index[$uid]['hhl'] = $hyl[$uid];
@@ -72,6 +75,11 @@ class KfjkLogic
         return $last;
     }
 
+    public function getStatusName($status)
+    {
+        $r = ['0' => '离线', '1' => '在线', '2' => '隐身', '3' => '休息'];
+        return isset($r[$status]) ? $r[$status] : 'Error';
+    }
 
     // 生成按钮
     private function makeBtn($id)
@@ -97,17 +105,18 @@ class KfjkLogic
         return $return;
     }
 
-    public function  uidName($uidArray){
-        $users = (new Users)->where(['id'=>['IN',$uidArray]])->select();
+    public function uidName($uidArray)
+    {
+        $users = (new Users)->where(['id' => ['IN', $uidArray]])->select();
         $return = kftoKey($uidArray);
-        foreach ($return as $uid=>$ttttt){
-            foreach ($users as $nowuser){
-                if ($uid == $nowuser['id']){
+        foreach ($return as $uid => $ttttt) {
+            foreach ($users as $nowuser) {
+                if ($uid == $nowuser['id']) {
                     $return[$uid] = $nowuser['user_name'];
                 }
             }
         }
-        return $return ;
+        return $return;
     }
 
     //会话量 统计
@@ -117,7 +126,7 @@ class KfjkLogic
 
         foreach ($rets as $uid => $aaaa) {
             foreach ($alllogs as $log) {
-                if ($uid == $log['kf_id'] && ($log['status'] == 1  || $log['status'] == 3)) {
+                if ($uid == $log['kf_id'] && ($log['status'] == 1 || $log['status'] == 3)) {
                     $rets[$uid]++;
                 }
             }
@@ -150,7 +159,7 @@ class KfjkLogic
             foreach ($alllogs as $log) {
                 if ($uid == $log['kf_id']) {
                     (!isset($rets[$uid]['count'])) ? ($rets[$uid]['count'] = 1) : $rets[$uid]['count']++;
-                    (!isset($rets[$uid]['times'])) ? ($rets[$uid]['times'] = 0) : ($rets[$uid]['times'] += (($log['end_time'] ?  $log['end_time'] : $log['start_time']) - $log['start_time']));
+                    (!isset($rets[$uid]['times'])) ? ($rets[$uid]['times'] = 0) : ($rets[$uid]['times'] += (($log['end_time'] ? $log['end_time'] : $log['start_time']) - $log['start_time']));
                 }
             }
         }
@@ -223,18 +232,18 @@ class KfjkLogic
     public function pjxysc($uidArray, $alllogs)
     {
         $rets = kftoKey($uidArray);
-        if (empty($alllogs)){
-            return $rets ;
+        if (empty($alllogs)) {
+            return $rets;
         }
-        $serids =[] ;
-        foreach ($alllogs as $val){
+        $serids = [];
+        foreach ($alllogs as $val) {
             $serids[] = $val['servicelog_id'];
         }
-        $times = Db::name('alarm')->field('alarm_corresponding,servicelog_id')->where(['alarm_respond' => 2,'servicelog_id'=>['IN',$serids]])->select();
-        if ($times){
-            foreach ($alllogs as $key=>$val){
-                foreach ($times as $sval){
-                    if ($val['servicelog_id'] == $sval['servicelog_id']){
+        $times = Db::name('alarm')->field('alarm_corresponding,servicelog_id')->where(['alarm_respond' => 2, 'servicelog_id' => ['IN', $serids]])->select();
+        if ($times) {
+            foreach ($alllogs as $key => $val) {
+                foreach ($times as $sval) {
+                    if ($val['servicelog_id'] == $sval['servicelog_id']) {
                         $alllogs[$key]['corresponding'] = $sval['alarm_corresponding'];
                     }
                 }
@@ -267,24 +276,26 @@ class KfjkLogic
     //今日休息时长统计
     public function jrxxsc($uidArray, $alllogs)
     {
-        $kfuidarray = array_map(function($i){return 'KF'.$i; },$uidArray);
+        $kfuidarray = array_map(function ($i) {
+            return 'KF' . $i;
+        }, $uidArray);
         $return = kftoKey($uidArray);
         $rets = kftoKey($uidArray, 1);
-        $today =date("Y-m-d");
-        $ret = Db::name('kfstatetimes')->field('kfuid,stime')->where(['sday'=>$today,'kfuid'=>['IN',$kfuidarray],'kstatus'=>3])->select();
-        if (!$ret){
+        $today = date("Y-m-d");
+        $ret = Db::name('kfstatetimes')->field('kfuid,stime')->where(['sday' => $today, 'kfuid' => ['IN', $kfuidarray], 'kstatus' => 3])->select();
+        if (!$ret) {
             return $return;
         }
 
-        foreach ($return as $uid=>$ttttt){
-            foreach ($ret as $val){
-                $ruid = trim($val['kfuid'],'KF');
-                if ($uid == $ruid){
+        foreach ($return as $uid => $ttttt) {
+            foreach ($ret as $val) {
+                $ruid = trim($val['kfuid'], 'KF');
+                if ($uid == $ruid) {
                     $return[$uid] = $val['stime'];
                 }
             }
         }
-        return $return ;
+        return $return;
     }
 
     public function getTodayServiceData($kfuidArray = [])
@@ -302,4 +313,18 @@ class KfjkLogic
         return $ret;
     }
 
+    //获取在线客服ip地址
+    public function getKfinline()
+    {
+        $ret = Db::name('kfonline')->select();
+        $return = [];
+        if ($ret) {
+            foreach ($ret as $item) {
+                //'KF22'=>'192.168.1.1';
+                $return[$item['uid']] = $item;
+            }
+        }
+        return $return;
+    }
+
 }

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
public/static/admin/js/layui/css/layui.mobile.css


+ 32 - 0
public/static/admin/js/layui/css/myLayui.css

@@ -1,5 +1,37 @@
 
 
+@font-face {
+    font-family: layui-icon;
+    src: url(../font/iconfont.eot?v=1.0.7);
+    src: url(../font/iconfont.eot?v=1.0.7#iefix) format('embedded-opentype'), url(../font/iconfont.woff?v=1.0.7) format('woff'), url(../font/iconfont.ttf?v=1.0.7) format('truetype'), url(../font/iconfont.svg?v=1.0.7#iconfont) format('svg')
+}
+
+.layui-icon {
+    font-family: layui-icon !important;
+    font-size: 16px;
+    font-style: normal;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+.layui-box, .layui-box * {
+    -webkit-box-sizing: content-box !important;
+    -moz-box-sizing: content-box !important;
+    box-sizing: content-box !important
+}
+
+.layui-border-box, .layui-border-box * {
+    -webkit-box-sizing: border-box !important;
+    -moz-box-sizing: border-box !important;
+    box-sizing: border-box !important
+}
+
+
+
+
+
+
+
 .layui-icon {
     font-family: layui-icon !important;
     font-size: 16px;

+ 10 - 12
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -1846,10 +1846,10 @@ class Events
         $noResponse = strtotime('-' . (self::$global->noResponse['systemconfig_data']) . ' second');
         foreach ($serviceLog as $k => $v) {
             // 会话超时关闭.
-            if ($v['start_time'] <= $overtime) {
+            /*if ($v['start_time'] <= $overtime) {
                 $servicelog_id = $v['servicelog_id'];
                 self::$db->query("update `ws_service_log` set `servicelog_close_type` = 2 where `servicelog_id`= '$servicelog_id'");
-                self::serverClose($v['client_id'], $servicelog_id, $v['user_id'], 'KF' . $v['kf_id'], $v['group_id']);
+                self::serverClose($v['client_id'], $servicelog_id, $v['user_id'], 'KF'.$v['kf_id'], $v['group_id']);
                 // 如果小于设定时间前一分钟则给出提示.
             } elseif ($v['start_time'] <= $setOvertime) {
                 $chat_message = [
@@ -1859,15 +1859,13 @@ class Events
                     ]
                 ];
                 Gateway::sendToClient($v['client_id'], json_encode($chat_message, 256));
-            }
-
-            // 访客静默超时.
-            // 如果没有说一句话.
+            }*/
+            // 无效会话关闭.如果没有说一句话.
             if (!strlen(array_search($v['servicelog_id'], array_column($chatLog, 'servicelog_id')))) {
                 if ($v['start_time'] <= $unoperated) {
                     $servicelog_id = $v['servicelog_id'];
                     self::$db->query("update `ws_service_log` set `servicelog_close_type` = 1 where `servicelog_id`= '$servicelog_id'");
-                    self::serverClose($v['client_id'], $servicelog_id, $v['user_id'], 'KF' . $v['kf_id'], $v['group_id']);
+                    self::serverClose($v['client_id'], $servicelog_id, $v['user_id'], 'KF'.$v['kf_id'], $v['group_id']);
                     // 如果小于设定时间前一分钟则给出提示.
                 } elseif ($v['start_time'] <= $setUnoperated) {
                     $chat_message = [
@@ -1880,16 +1878,16 @@ class Events
                 }
             }
         }
-        // 访客静默超时.如果说了话
+        // 双方静默超时.
         foreach ($chatLog as $k => $v) {
             // 如果对话为客服的最后一次对话且时间小于设定时间则结束工单.
-            if ($v['time_line'] <= $unoperated) {
+            if ($v['time_line'] <= $overtime) {
                 $found_key = array_search($v['servicelog_id'], array_column($serviceLog, 'servicelog_id'));
                 $servicelog_id = $v['servicelog_id'];
-                self::$db->query("update `ws_service_log` set `servicelog_close_type` = 1 where `servicelog_id`= '$servicelog_id'");
-                self::serverClose($serviceLog[$found_key]['client_id'], $servicelog_id, $serviceLog[$found_key]['user_id'], 'KF' . $serviceLog[$found_key]['kf_id'], $serviceLog[$found_key]['group_id']);
+                self::$db->query("update `ws_service_log` set `servicelog_close_type` = 2 where `servicelog_id`= '$servicelog_id'");
+                self::serverClose($serviceLog[$found_key]['client_id'], $servicelog_id, $serviceLog[$found_key]['user_id'], 'KF'.$serviceLog[$found_key]['kf_id'], $serviceLog[$found_key]['group_id']);
                 // 如果对话为客服的最后一次对话且时间小于设定时间前一分钟则给出提示.
-            } elseif ($v['time_line'] <= $setUnoperated) {
+            } elseif ($v['time_line'] <= $setOvertime) {
                 $chat_message = [
                     'message_type' => 'overtime',
                     'data' => [

Неке датотеке нису приказане због велике количине промена