Pārlūkot izejas kodu

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

Jonlin 6 gadi atpakaļ
vecāks
revīzija
6643e4e6e0

+ 6 - 1
application/admin/controller/Base.php

@@ -7,7 +7,12 @@ class Base extends Controller
 {
     public function _initialize()
     {
-        if (!session('user_id') || !session('token')) {
+        $admin = db('admins')->where('token',session('token'))->find();
+        if (!session('user_id')) {
+            $this->redirect('admin/login/index');
+        }
+        if (!$admin) {
+
             $this->redirect('admin/login/index');
         }
         $admin = db('admins')->where('id',session('user_id'))->find();

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

@@ -96,6 +96,10 @@ class System extends Base
                 $upRoundData['systemconfig_data'] = $param['round'];
                 $upRoundWhere['systemconfig_id']  = 5;
                 model('Systemconfig')->updateSystemconfig($upRoundWhere, $upRoundData);
+                // 客服接待人数设置.
+                $upKfConfigData['max_service']      = $param['max_service'];
+                $upKfConfigData['kfConfig_maxWait'] = $param['kfConfig_maxWait'];
+                db('kf_config')->where('id', 1)->update($upKfConfigData);
 
                 return json(['code' => 1, 'data' => '', 'msg' => '设置成功']);
             } catch (\Exception $e) {
@@ -105,9 +109,11 @@ class System extends Base
 
         // 获取设置.
         $systemconfig = model('Systemconfig')->selectSystemconfig();
+        $kfConfig     = db('kf_config')->where('id', 1)->find();
         $this->assign(
             [
                 'systemconfig' => $systemconfig,
+                'kfConfig'     => $kfConfig,
                 'status'       => config('kf_status'),
             ]
         );

+ 1 - 1
application/admin/view/admins/addpower.html

@@ -76,7 +76,7 @@
             layer.close(index);
             if(1 == res.code){
                layer.alert(res.msg, {title: '友情提示', icon: 1, closeBtn: 0}, function(){
-                   window.location.href = '/admin/admins/index.html';
+                   window.location.href = '/admin/admins/power.html';
                });
             }else if(111 == res.code){
                 window.location.reload();

+ 1 - 1
application/admin/view/admins/editpower.html

@@ -93,7 +93,7 @@
             layer.close(index);
             if(1 == res.code){
                layer.alert(res.msg, {title: '友情提示', icon: 1, closeBtn: 0}, function(){
-                   window.location.href = '/admin/admins/index.html';
+                   window.location.href = '/admin/admins/power.html';
                });
             }else if(111 == res.code){
                 window.location.reload();

+ 2 - 6
application/admin/view/kfnotice/index.html

@@ -20,12 +20,12 @@
             <h5>公告列表</h5>
         </div>
         <div class="ibox-content">
-            <a href="/admin/kfnotice/add.html">
+            <a href="{:url('kfnotice/add')}">
                 <button class="btn btn-primary" type="button" style="margin-top:5px"><strong>新 增</strong>
                 </button>
             </a>
             <!--搜索框开始-->
-            <form id='commentForm' role="form" method="post" class="form-inline">
+            <form id='commentForm' role="form" method="post" class="form-inline pull-right">
                 <div class="content clearfix m-b">
                     <div class="form-group">
                         <div class="layui-input-inline">
@@ -73,10 +73,6 @@
                         </button>
                     </div>
 
-                    <div class="form-group">
-                        <a class="btn btn-info" href="{:url('kfnotice/add')}" style="margin-left: 20px;" role="button">新建公告</a>
-                    </div>
-
                 </div>
             </form>
             <!--搜索框结束-->

+ 14 - 13
application/admin/view/messages/type.html

@@ -19,22 +19,23 @@
             <h5>留言类型列表</h5>
         </div>
         <div class="ibox-content">
+            <a href="/admin/messages/add.html">
+                <button class="btn btn-primary" type="button" style="margin-top:5px"><strong>新 增</strong>
+                </button>
+            </a>
             <!--搜索框开始-->
-            <form id='commentForm' role="form" method="post" class="form-inline pull-right">
+            <!--<form id='commentForm' role="form" method="post" class="form-inline pull-right">
                 <div class="content clearfix m-b">
-                    <a href="/admin/messages/add.html">
-                        <button type="button" class="btn btn-info btn-sm"><i class="fa fa-institution"></i> 添加</button>
-                    </a>
-                    <!--<div class="form-group">-->
-                        <!--<label>用户名称:</label>-->
-                        <!--<input type="text" class="form-control" id="username" name="user_name">-->
-                    <!--</div>-->
-                    <!--<div class="form-group">-->
-                        <!--<button class="btn btn-primary" type="button" style="margin-top:5px" id="search"><strong>搜 索</strong>-->
-                        <!--</button>-->
-                    <!--</div>-->
+                    &lt;!&ndash;<div class="form-group">&ndash;&gt;
+                        &lt;!&ndash;<label>用户名称:</label>&ndash;&gt;
+                        &lt;!&ndash;<input type="text" class="form-control" id="username" name="user_name">&ndash;&gt;
+                    &lt;!&ndash;</div>&ndash;&gt;
+                    &lt;!&ndash;<div class="form-group">&ndash;&gt;
+                        &lt;!&ndash;<button class="btn btn-primary" type="button" style="margin-top:5px" id="search"><strong>搜 索</strong>&ndash;&gt;
+                        &lt;!&ndash;</button>&ndash;&gt;
+                    &lt;!&ndash;</div>&ndash;&gt;
                 </div>
-            </form>
+            </form>-->
             <!--搜索框结束-->
             <div class="example-wrap">
                 <div class="example">

+ 2 - 2
application/admin/view/sensitivec/addsensitive.html

@@ -28,7 +28,7 @@
                                 <textarea class="form-control" name="sensitivewords_word" required="" aria-required="true" style="width: 400px;height: 38px;resize:none"></textarea>
                             </div>
                         </div>
-                        <div class="form-group">
+                        <!--<div class="form-group">
                             <label class="col-sm-3 control-label">选择对象:</label>
                             <input type="hidden" id="sensitivewords_for" name="sensitivewords_for"/>
                             <div class="input-group col-sm-4 layui-form">
@@ -38,7 +38,7 @@
                                     <option value="2">客服</option>
                                 </select>
                             </div>
-                        </div>
+                        </div>-->
                         <div class="form-group layui-form-item">
                             <label class="col-sm-3 control-label">是否启用:</label>
                             <div class="input-group col-sm-6">

+ 2 - 2
application/admin/view/sensitivec/editsensitive.html

@@ -28,7 +28,7 @@
                                 <textarea class="form-control" name="sensitivewords_word" required="" aria-required="true" style="width: 400px;height: 38px;resize:none">{$info['sensitivewords_word']}</textarea>
                             </div>
                         </div>
-                        <div class="form-group">
+                        <!--<div class="form-group">
                             <label class="col-sm-3 control-label">选择对象:</label>
                             <input type="hidden" id="sensitivewords_for" name="sensitivewords_for" value="{$info['sensitivewords_for']}"/>
                             <div class="input-group col-sm-4 layui-form">
@@ -38,7 +38,7 @@
                                     <option value="2">客服</option>
                                 </select>
                             </div>
-                        </div>
+                        </div>-->
                         <div class="form-group layui-form-item">
                             <label class="col-sm-3 control-label">是否启用:</label>
                             <div class="input-group col-sm-6">

+ 70 - 10
application/admin/view/system/conversation.html

@@ -21,35 +21,95 @@
                 </div>
                 <div class="ibox-content">
                     <form class="form-horizontal m-t layui-form" id="commentForm" method="post" action="{:url('system/conversation')}">
-                        <div class="form-group">
-                            <label class="col-sm-3 control-label">会话超时设置:</label>
+                        <h4 style="margin-bottom: 10px;">会话超时设置</h4>
+                        <div class="ibox-title">
+                        </div>
+                        <div class="form-group" style="flex-wrap: wrap; display: flex">
+                            <p style="width: 100%; margin-left: 20px; color: #9c9c9c; margin-bottom: 15px; font-size: 15px;">在设置的时间内没有新消息产生,系统将自动关闭会话;在自动关闭前1分钟,系统会发送会话即将关闭的提示。</p>
+                            <label class="col-sm-3 control-label">超时时间:</label>
                             <div class="input-group col-sm-1">
                                 <input type="text" class="form-control" name="overtime" required="" aria-required="true" value="{$systemconfig[0]['systemconfig_data']}">
                             </div>
+                            <label class="control-label" style="margin-left: 20px;">秒,</label>
+                        </div>
+                        <div class="form-group" style="flex-wrap: wrap; display: flex">
+                            <label class="col-sm-3 control-label">给与提示语:</label>
+                            <div class="input-group col-sm-8">
+                                <input type="text" class="form-control" name="overtimeInfo" required="" aria-required="true" value="{$systemconfig[0]['systemconfig_content']}">
+                            </div>
                         </div>
-                        <div class="form-group">
-                            <label class="col-sm-3 control-label">访客静默设置:</label>
+
+                        <h4 style="margin-bottom: 10px; margin-top: 40px">访客静默设置</h4>
+                        <div class="ibox-title">
+                        </div>
+                        <div class="form-group" style="flex-wrap: wrap; display: flex">
+                            <p style="width: 100%; margin-left: 20px; color: #9c9c9c; margin-bottom: 15px; font-size: 15px;">访客开启会话框后,在设置的时间内,没有任何操作,系统将发出提示语并立即关闭对话。</p>
+                            <label class="col-sm-3 control-label">超时时间:</label>
                             <div class="input-group col-sm-1">
                                 <input type="text" class="form-control" name="unoperated" required="" aria-required="true" value="{$systemconfig[1]['systemconfig_data']}">
                             </div>
+                            <label class="control-label" style="margin-left: 20px;">秒,</label>
                         </div>
-                        <div class="form-group">
-                            <label class="col-sm-3 control-label">会话时长设置:</label>
+                        <div class="form-group" style="flex-wrap: wrap; display: flex">
+                            <label class="col-sm-3 control-label">给与提示语:</label>
+                            <div class="input-group col-sm-8">
+                                <input type="text" class="form-control" name="unoperatedInfo" required="" aria-required="true" value="{$systemconfig[1]['systemconfig_content']}">
+                            </div>
+                        </div>
+
+                        <h4 style="margin-bottom: 10px; margin-top: 40px">会话时长设置</h4>
+                        <div class="ibox-title">
+                        </div>
+                        <div class="form-group" style="flex-wrap: wrap; display: flex">
+                            <p style="width: 100%; margin-left: 20px; color: #9c9c9c; margin-bottom: 15px; font-size: 15px;">设置访客进入到会话结束时的时间间隔值,作为客服的质检标准。</p>
+                            <label class="col-sm-3 control-label">标准值:</label>
                             <div class="input-group col-sm-1">
                                 <input type="text" class="form-control" name="verifyAllTime" required="" aria-required="true" value="{$systemconfig[2]['systemconfig_data']}">
                             </div>
+                            <label class="control-label" style="margin-left: 20px;">秒</label>
+                        </div>
+
+                        <h4 style="margin-bottom: 10px; margin-top: 40px">会话响应时长设置</h4>
+                        <div class="ibox-title">
                         </div>
-                        <div class="form-group">
-                            <label class="col-sm-3 control-label">会话响应时长设置:</label>
+                        <div class="form-group" style="flex-wrap: wrap; display: flex">
+                            <p style="width: 100%; margin-left: 20px; color: #9c9c9c; margin-bottom: 15px; font-size: 15px;">设置访客访问到客服回复的时间间隔值,作为客服的质检标准。</p>
+                            <label class="col-sm-3 control-label">标准值:</label>
                             <div class="input-group col-sm-1">
                                 <input type="text" class="form-control" name="verifyReturnTime" required="" aria-required="true" value="{$systemconfig[3]['systemconfig_data']}">
                             </div>
+                            <label class="control-label" style="margin-left: 20px;">秒</label>
                         </div>
-                        <div class="form-group">
-                            <label class="col-sm-3 control-label">满意度评价回合限制:</label>
+
+                        <h4 style="margin-bottom: 10px; margin-top: 40px">满意度评价回合限制</h4>
+                        <div class="ibox-title">
+                        </div>
+                        <div class="form-group" style="flex-wrap: wrap; display: flex">
+                            <p style="width: 100%; margin-left: 20px; color: #9c9c9c; margin-bottom: 15px; font-size: 15px;">设置会话回合数后,会话回合数低于设置的值时,访客端右上角评价按钮隐藏,所有系统邀评都不触发。</p>
+                            <label class="col-sm-3 control-label">起始值:</label>
                             <div class="input-group col-sm-1" style="width: 45px">
                                 <input type="text" class="form-control" name="round" required="" aria-required="true" value="{$systemconfig[4]['systemconfig_data']}">
                             </div>
+                            <label class="control-label" style="margin-left: 20px;">回合</label>
+                        </div>
+
+                        <h4 style="margin-bottom: 10px; margin-top: 40px">客服接待设置</h4>
+                        <div class="ibox-title">
+                        </div>
+                        <div class="form-group" style="flex-wrap: wrap; display: flex">
+                            <p style="width: 100%; margin-left: 20px; color: #9c9c9c; margin-bottom: 15px; font-size: 15px;">当客服服务达到上限时,顾客会进入排队等待状态。当排队人数达上限,后续不再接入顾客。</p>
+                            <label class="col-sm-3 control-label">客服接待人数设置:</label>
+                            <div class="input-group col-sm-1" style="width: 45px">
+                                <input type="text" class="form-control" name="max_service" required="" aria-required="true" value="{$kfConfig['max_service']}">
+                            </div>
+                            <label class="control-label" style="margin-left: 20px;">人</label>
+                        </div>
+                        <div class="form-group" style="flex-wrap: wrap; display: flex">
+                            <label class="col-sm-3 control-label">最大排队人数设置:</label>
+                            <div class="input-group col-sm-1" style="width: 45px">
+                                <input type="text" class="form-control" name="kfConfig_maxWait" required="" aria-required="true" value="{$kfConfig['kfConfig_maxWait']}">
+                            </div>
+                            <label class="control-label" style="margin-left: 20px;">人</label>
                         </div>
                         <div class="form-group" style="margin-top: 40px;">
                             <label class="col-sm-3 control-label"></label>

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

@@ -108,9 +108,10 @@ class Events
                 self::overTime();
             });
 
-            // 检查对话时效给出.
+            // 实时监控.
             Timer::add(60, function () {
-                self::systemMonitoring();
+                $adminList = self::$global->adminList ?? [];
+                self::systemMonitoring($adminList);
             });
 
 
@@ -641,10 +642,12 @@ class Events
     {
         // 查询token是否存在.
         $systemConfigData = self::$db->query("SELECT `id` FROM `ws_admins` where `token`= '$token'");
+        //print_r(self::$global->adminList);
         if ($systemConfigData) {
             $adminList = self::$global->adminList;
             $adminList[] = $client_id;
             self::$global->adminList = $adminList;
+            self::systemMonitoring([$client_id]);
         } else {
             Gateway::closeClient($client_id);
         }
@@ -1684,7 +1687,7 @@ class Events
      * 系统监控
      * @param $message 数据
      */
-    private static function systemMonitoring()
+    private static function systemMonitoring($adminList)
     {
         // 查询未结束工单.
         $serviceLog = self::$db->query("select ws_service_log.servicelog_id,ws_users.user_name as server_name,ws_service_log.user_name,kf_id,start_time,end_time,ws_service_log.group_id,evaluate_id,intime,ws_service_log.status,alarm_userSensitive,alarm_serverSensitive,alarm_corresponding
@@ -1739,7 +1742,6 @@ class Events
             $serviceLog[$k]['allCount'] = $allCount;
         }
         // 查询对话时效设置.
-        $adminList = self::$global->adminList ?? [];
         foreach ($adminList as $v) {
             $chat_message = [
                 'message_type' => 'monitor',