浏览代码

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

# Conflicts:
#	vendor/GatewayWorker_windows/Applications/whisper/Events.php
vali 6 年之前
父节点
当前提交
bfdcff1b27

+ 9 - 0
application/admin/controller/Kfnotice.php

@@ -72,6 +72,8 @@ class Kfnotice extends Base
                 })->limit($offset, $limit)->order('id', 'desc')->select();
             }
 
+            //管理员
+            $admins = db('admins')->select();
 
             foreach ($result as $key => $vo) {
                 $vo->readtime = empty($vo->readtime) ? '' : date('Y-m-d H:i:s', $vo->readtime);
@@ -79,6 +81,11 @@ class Kfnotice extends Base
                 unset($vo->kfuser);
                 $vo->sendtype = $vo->sendtype == 1 ? '即时发送' : '预约发送';
                 $result[$key] = array_merge($vo->toArray(), ['operate' => $this->makeBtn($vo->id)]);
+                for($i=0;$i<count($admins);$i++){
+                    if($vo['admin_id'] == $admins[$i]['id']){
+                        $result[$key]['admin_name'] = $admins[$i]['user_name'];
+                    }
+                }
             }
 
             if (!$bibao) {
@@ -134,6 +141,7 @@ class Kfnotice extends Base
                     'atext' => $atext,
                     'sendtime' => $sendtime,
                     'sendtype' => $sendtype,
+                    'admin_id' => session('user_id'),
                 ];
                 $datas[] = $arr;
             } else {
@@ -152,6 +160,7 @@ class Kfnotice extends Base
                         'atext' => $atext,
                         'sendtime' => $sendtime,
                         'sendtype' => $sendtype,
+                        'admin_id' => session('user_id'),
                     ];
                     $datas[] = $arr;
                 }

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

@@ -181,7 +181,7 @@ class Sensitivec extends Base
 //        }
 
         if(empty($file)){
-            //$this->error('请先上传文件');
+            $this->error('请先上传文件');
             return json(['code' => -4, 'data' => url('sensitivec/index'), 'msg' => '请先上传文件']);
         }
 

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

@@ -292,7 +292,7 @@ class System extends Base
                     $result[$key]['servicelog_close_type'] = '客服掉线';
                 }
                 if($vo['servicelog_close_type'] == 5){
-                    $result[$key]['servicelog_close_type'] = '转';
+                    $result[$key]['servicelog_close_type'] = '转';
                 }
 
                 // 生成操作按钮

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

@@ -86,6 +86,7 @@
                         <th data-field="ctime">创建时间</th>
                         <th data-field="sendtime">发送时间</th>
                         <th data-field="readtime">读取时间</th>
+                        <th data-field="admin_name">发件人</th>
                         <th data-field="operate">操作</th>
                         </thead>
                     </table>

+ 17 - 3
application/service/controller/Index.php

@@ -214,7 +214,14 @@ class Index extends Common
         $user_id = input('post.user_id');
         //获取未读公告
         try{
-            $readnotice = db('servicenotice')->field('id,uid,title,atext,sendtime')->where('readtime',0)->where('uid',$user_id)->where('sendtime','<',date('Y-m-d H:i:s',time()))->order('sendtime','desc')->select();
+            $admins = db('admins')->select();
+            $readnotice = db('servicenotice')->field('id,uid,title,atext,sendtime,admin_id')->where('readtime',0)->where('uid',$user_id)->where('sendtime','<',date('Y-m-d H:i:s',time()))->order('sendtime','desc')->select();
+            for($i=0;$i<count($readnotice);$i++){
+                for($j=0;$j<count($admins);$j++)
+                    if($readnotice[$i]['admin_id'] == $admins[$j]['id']){
+                        $readnotice[$i]['admin_name'] = $admins[$j]['user_name'];
+                    }
+            }
             return json(['code' => 1, 'data' => $readnotice, 'msg' => '成功']);
         } catch (\Exception $e) {
             return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
@@ -230,9 +237,16 @@ class Index extends Common
     public function readnotice()
     {
         $user_id = input('post.user_id');
-        //获取读公告
+        //获取读公告
         try{
-            $unreadnotice = db('servicenotice')->field('id,uid,title,atext,sendtime')->where('readtime','<>',0)->where('uid',$user_id)->order('sendtime','desc')->select();
+            $admins = db('admins')->select();
+            $unreadnotice = db('servicenotice')->field('id,uid,title,atext,sendtime,admin_id')->where('readtime','<>',0)->where('uid',$user_id)->order('sendtime','desc')->select();
+            for($i=0;$i<count($unreadnotice);$i++){
+                for($j=0;$j<count($admins);$j++)
+                if($unreadnotice[$i]['admin_id'] == $admins[$j]['id']){
+                    $unreadnotice[$i]['admin_name'] = $admins[$j]['user_name'];
+                }
+            }
             return json(['code' => 1, 'data' => $unreadnotice, 'msg' => '成功']);
         } catch (\Exception $e) {
             return json(['code' => -3, 'data' => '', 'msg' => $e->getMessage()]);

+ 2 - 1
application/service/controller/Services.php

@@ -52,17 +52,18 @@ class Services extends Base
             if(!empty($account)){
                 try{
                     db('accounts')->where('id', $account_id)->update($param);
+                    return json(['code' => 1, 'data' => '', 'msg' => '保存成功']);
                 }catch(\Exception $e){
                     return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
                 }
             }else{
                 try{
                     db('accounts')->insertGetId($param);
+                    return json(['code' => 1, 'data' => '', 'msg' => '保存成功']);
                 }catch(\Exception $e){
                     return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
                 }
             }
-            return json(['code' => 1, 'data' => '', 'msg' => '保存成功']);
         }
     }
 

+ 16 - 8
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -477,7 +477,8 @@ class Events
         $uid = intval($message['uid']);
         $group = intval($message['group']);
 
-        if (!isset(self::$global->groupmap[$group])) {
+        $last = self::UserHasOldTalk($uid);
+        if (!isset(self::$global->groupmap[$group]) && !$last) {
             self::MySendMsg($client_id, (json_encode(['message_type' => 'reLoginErr', 'msg' => '不存在客服组....'], 256)));
             return true;
             //Gateway::closeCurrentClient();
@@ -500,7 +501,6 @@ class Events
             Gateway::closeCurrentClient();
             return;
         }
-        $last = self::UserHasOldTalk($uid);
 
         $onlinekf = self::getOnlineKfData($group, 1);
         if (empty($onlinekf) && empty($last)) {
@@ -523,10 +523,15 @@ class Events
             'group' => $message['group'],
             'intime' => time(),
             'kfuid' => '',
-            'ip' => $_SESSION['remotip'],
             'serverid' => 0,
             'client_id' => $client_id
         ];
+        if ($last) {
+            $data['group'] = $last['group_id'];
+            $data['intime'] = $last['intime'];
+            $data['kfuid'] = $last['kf_id'];
+            $data['serverid'] = $last['servicelog_id'];
+        }
         self::$redis->hset(self::USERLIST, $uid, json_encode($data, 256));
         self::$redis->hset(self::USERINFOKEY, $uid, json_encode($data, 256));
 
@@ -809,7 +814,7 @@ class Events
         }
 
         $allkfgkarr = self::getWorkKfData();
-        if (empty($allkfgkarr)) {
+        if (empty($allkfgkarr) && !$last) {
             return;
         }
 
@@ -820,9 +825,13 @@ class Events
             //否则按先到后到以及客服最大服务数限制
             if ($last) {
                 self::BeginOldTalk(self::getkfuid($last['kf_id']), $uid, $last['group_id'], $last['servicelog_id']);
+                // 查询工单历史会话.
+                $serviceid = $last['servicelog_id'];
+                $chatLog = self::$db->select('*')->from('ws_chat_log')->where("servicelog_id=$serviceid")->orderByDESC(['time_line'])->row();
                 $toOld_message = [
                     'message_type' => 'toOld',
                     'data' => [
+                        'chatLog' => $chatLog ?? [],
                         'content' => '接入至未结束的会话'
                     ]
                 ];
@@ -980,7 +989,7 @@ class Events
         $data['website'] = $userInfo['website'];
         $data['system'] = $userInfo['system'];
         $data['browse'] = $userInfo['browse'];
-        $data['status'] = $userInfo['status'];
+        $data['status'] = 1;
         self::$redis->hset(self::SERVICELOG, $serviceid, json_encode($data, 256));
 
         // 更改用户连接客服信息
@@ -989,16 +998,15 @@ class Events
         self::$redis->hset(self::USERINFOKEY, $uid, json_encode($userInfo, 256));
         // 更改客服连接信息.
         $kfinfo = json_decode(self::$redis->hget(self::KFINFOKEY, $kfuid), true);
-        //$kfUsers = json_decode($kfinfo['user_info'], true);
         $kfUsers = self::$redis->hgetall(self::getKfServiceKey($kfuid));
         foreach ($kfUsers as $key => $value) {
-            if ($value == $uid) {
+            if ($value == $serviceid) {
                 // 删除之前的当前用户连接
                 unset($kfUsers[$key]);
             }
         }
         // 增加现在用户的连接到客服
-        $kfUsers[$userInfo['client_id']] = $uid;
+        $kfUsers[$userInfo['client_id']] = $serviceid;
         $kfinfo['user_info'] = $kfUsers;
         // 将数据存入redis
         self::$redis->hset('KFINFO', $kfuid, json_encode($kfinfo, 256));