Ethan před 6 roky
rodič
revize
1412c9d25c

+ 7 - 4
application/admin/controller/Users.php

@@ -123,10 +123,10 @@ class Users extends Base
             }
 
             // 检测用户修改的用户名是否重复
-            $has = db('users')->where('user_name', $param['user_name'])->where('id', '<>', $param['id'])->find();
+            /*$has = db('users')->where('user_name', $param['user_name'])->where('id', '<>', $param['id'])->find();
             if(!empty($has)){
                 return json(['code' => -1, 'data' => '', 'msg' => '该客服已经存在']);
-            }
+            }*/
 
             // 检测用户修改的工号是否重复
             $user_job_number = db('users')->where('user_job_number', $param['user_job_number'])->where('id', '<>', $param['id'])->find();
@@ -135,7 +135,7 @@ class Users extends Base
             }
 
             // 检测用户修改的邮箱是否重复
-            $user_email = db('users')->where('user_email', $param['user_email'])->where('id', '<>', $param['id'])->find();
+            /*$user_email = db('users')->where('user_email', $param['user_email'])->where('id', '<>', $param['id'])->find();
             if(!empty($user_email)){
                 return json(['code' => -2, 'data' => '', 'msg' => '该邮箱已经存在']);
             }
@@ -150,7 +150,7 @@ class Users extends Base
                 unset($param['user_pwd']);
             }else{
                 $param['user_pwd'] = md5($param['user_pwd'] . config('salt'));
-            }
+            }*/
 
             try{
                 db('users')->where('id', $param['id'])->update($param);
@@ -229,6 +229,9 @@ class Users extends Base
 
         $operate = '<a href="javascript:resetPwd(' . $id . ')"><button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 重置密码</button></a>';
 
+        $operate .= '<a style="margin-left:5px;" href="' . url('users/editUser', ['id' => $id]) . '">';
+        $operate .= '<button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 编辑</button></a> ';
+
         $operate .= '<a style="margin-left:5px;" href="javascript:userDel(' . $id . ')"><button type="button" class="btn btn-danger btn-sm">';
         $operate .= '<i class="fa fa-trash-o"></i> 删除</button></a> ';
 

+ 7 - 5
application/admin/controller/Words.php

@@ -18,7 +18,7 @@ class Words extends Base
             $limit = $param['pageSize'];
             $offset = ($param['pageNumber'] - 1) * $limit;
 
-            $where = [];
+            $where['user_id'] = $param['type'] == 1? 0 : ['neq',0];
             if (!empty($param['searchText'])) {
                 $where['content'] = $param['searchText'];
             }
@@ -32,8 +32,10 @@ class Words extends Base
                     $result[$key]['status'] = '<span class="label label-danger">禁用</span>';
                 }
 
-                // 生成操作按钮
-                $result[$key]['operate'] = $this->makeBtn($vo['id']);
+                if ($param['type'] == 1) {
+                    // 生成操作按钮
+                    $result[$key]['operate'] = $this->makeBtn($vo['id']);
+                }
             }
 
             $return['total'] = db('words')->where($where)->count();  //总数据
@@ -54,7 +56,7 @@ class Words extends Base
             $param = input('post.');
             $param['content'] = trim($param['content']);
 
-            $has = db('words')->field('id')->where('content', $param['content'])->find();
+            $has = db('words')->field('id')->where(['title' => $param['title'], 'user_id' => 0])->find();
             if(!empty($has)){
                 return json(['code' => -1, 'data' => '', 'msg' => '该常用语已经存在']);
             }
@@ -85,7 +87,7 @@ class Words extends Base
             $param['content'] = trim($param['content']);
 
             // 检测用户修改的常用语是否重复
-            $has = db('words')->where('content', $param['content'])->where('id', '<>', $param['id'])->find();
+            $has = db('words')->where(['title' => $param['title'], 'user_id' => 0])->where('id', '<>', $param['id'])->find();
             if(!empty($has)){
                 return json(['code' => -1, 'data' => '', 'msg' => '该常用语已经存在']);
             }

+ 6 - 6
application/admin/view/users/edituser.html

@@ -22,19 +22,19 @@
                 <div class="ibox-content">
                     <form class="form-horizontal m-t layui-form" id="commentForm" method="post" action="{:url('users/edituser')}">
                         <input type="hidden" value="{$info['id']}" name="id"/>
-                        <div class="form-group">
+                        <!--<div class="form-group">
                             <label class="col-sm-3 control-label">客服名称:</label>
                             <div class="input-group col-sm-4">
                                 <input id="username" type="text" class="form-control" name="user_name" required="" aria-required="true" value="{$info['user_name']}">
                             </div>
-                        </div>
+                        </div>-->
                         <div class="form-group">
                             <label class="col-sm-3 control-label">客服工号:</label>
                             <div class="input-group col-sm-4">
                                 <input id="userjobnumber" type="text" class="form-control" name="user_job_number" required="" aria-required="true" value="{$info['user_job_number']}">
                             </div>
                         </div>
-                        <div class="form-group">
+                        <!--<div class="form-group">
                             <label class="col-sm-3 control-label">客服邮箱:</label>
                             <div class="input-group col-sm-4">
                                 <input id="useremail" type="text" class="form-control" name="user_email" required="" aria-required="true" value="{$info['user_email']}">
@@ -51,7 +51,7 @@
                             <div class="input-group col-sm-4">
                                 <input id="password" type="text" class="form-control" name="user_pwd" placeholder="重新输入则为修改">
                             </div>
-                        </div>
+                        </div>-->
                         <div class="form-group">
                             <label class="col-sm-3 control-label">选择分组:</label>
                             <input type="hidden" id="group_id" name="group_id" value="{$info['group_id']}"/>
@@ -76,7 +76,7 @@
                                 {/if}
                             </div>
                         </div>
-                        <div class="form-group layui-form-item form-inline" style="height: 60px;">
+                        <!--<div class="form-group layui-form-item form-inline" style="height: 60px;">
                             <input type="hidden" name="user_avatar" id="user_avatar"/>
                             <label class="col-sm-3 control-label">客服头像:</label>
                             <div class="input-group col-sm-2">
@@ -86,7 +86,7 @@
                             <div class="input-group col-sm-3" id="avatar">
                                 <img src="{$info['user_avatar']}" width="40px" height="40px"/>
                             </div>
-                        </div>
+                        </div>-->
 
                         <div class="form-group">
                             <div class="col-sm-4 col-sm-offset-6" style="margin-left: 20%;">

+ 6 - 0
application/admin/view/words/addword.html

@@ -22,6 +22,12 @@
                 <div class="ibox-content">
                     <form class="form-horizontal m-t layui-form" id="commentForm" method="post" action="{:url('words/addword')}">
 
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">快捷语:</label>
+                            <div class="input-group col-sm-4">
+                                <textarea class="form-control" name="title" required="" aria-required="true" style="width: 400px;height: 40px;resize:none"></textarea>
+                            </div>
+                        </div>
                         <div class="form-group">
                             <label class="col-sm-3 control-label">常用语内容:</label>
                             <div class="input-group col-sm-4">

+ 6 - 0
application/admin/view/words/editword.html

@@ -22,6 +22,12 @@
                 <div class="ibox-content">
                     <form class="form-horizontal m-t layui-form" id="commentForm" method="post" action="{:url('words/editWord')}">
                         <input type="hidden" name="id" value="{$info['id']}"/>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">快捷语:</label>
+                            <div class="input-group col-sm-4">
+                                <textarea class="form-control" name="title" required="" aria-required="true" style="width: 400px;height: 40px;resize:none">{$info['title']}</textarea>
+                            </div>
+                        </div>
                         <div class="form-group">
                             <label class="col-sm-3 control-label">常用语内容:</label>
                             <div class="input-group col-sm-4">

+ 26 - 4
application/admin/view/words/index.html

@@ -13,12 +13,20 @@
 </head>
 <body class="gray-bg">
 <div class="wrapper wrapper-content animated fadeInRight">
+    <input style="display:none;" type="text" value="1" id="type">
     <!-- Panel Other -->
     <div class="ibox float-e-margins">
-        <div class="ibox-title">
-            <h5>常用语列表</h5>
+        <div style="display: flex;">
+            <div class="ibox-title" style="width: 100px;" id="current1" onclick="current(1)">
+                <h5>系统常用语</h5>
+            </div>
+            <div class="ibox-title" id="current2" style="width: 100px; background: #eee" onclick="current(2)">
+                <h5>客服常用语</h5>
+            </div>
+            <div class="ibox-title" style="width: calc(100% - 200px); background: #eee;">
+            </div>
         </div>
-        <div class="ibox-content">
+        <div class="ibox-content" style="border-top: 0;">
             <!--搜索框开始-->
             <form id='commentForm' role="form" method="post" class="form-inline pull-right">
                 <div class="content clearfix m-b">
@@ -38,6 +46,7 @@
                     <table id="cusTable">
                         <thead>
                         <th data-field="id">内容ID</th>
+                        <th data-field="title">快捷</th>
                         <th data-field="content">内容</th>
                         <th data-field="add_time">添加时间</th>
                         <th data-field="status">状态</th>
@@ -59,9 +68,21 @@
 <script src="__JS__/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
 <script src="__JS__/plugins/layer/layer.min.js"></script>
 <script type="text/javascript">
-    function initTable() {
+    function current(id) {
+        $("#type").val(id);
+        if (id == 1) {
+            $("#current1").css("background","#fff");
+            $("#current2").css("background","#eee");
+        } else if (id == 2) {
+            $("#current2").css({"background":"#fff"});
+            $("#current1").css({"background":"#eee"});
+        }
+        initTable()
+    }
+    function initTable(type) {
         //先销毁表格
         $('#cusTable').bootstrapTable('destroy');
+        type = $('#type').val();
         //初始化表格,动态从服务器加载数据
         $("#cusTable").bootstrapTable({
             method: "get",  //使用get请求到服务器获取数据
@@ -81,6 +102,7 @@
                 var param = {
                     pageNumber: params.pageNumber,
                     pageSize: params.pageSize,
+                    type: type,
                     searchText:$('#content').val()
                 };
                 return param;

+ 6 - 5
application/index/controller/Evaluate.php

@@ -46,7 +46,7 @@ class Evaluate extends Common
     public function putEvaluate()
     {
         // 验证token.
-        $tokenStatus = $this->verifyApiToken();
+        /*$tokenStatus = $this->verifyApiToken();
         $code        = -2;
         $msg         = '错误';
         if ($tokenStatus === false) {
@@ -54,21 +54,22 @@ class Evaluate extends Common
             return json(['code' => $code, 'data' => [], 'msg' => $msg]);
         }
 
-        try {
+        try {*/
             // 获取数据.
             $evaluateId                = input('get.evaluateId');
             $conversationId            = input('get.conversationId');
             $evaluateContent           = input('get.evaluateContent');
             $where['servicelog_id']    = $conversationId;
-            $where['evaluate_content'] = $evaluateContent;
+            $data['evaluate_content'] = $evaluateContent;
+            $data['evaluate_id']       = $evaluateId;
             $data['evaluate_id']       = $evaluateId;
             // 评价.
             $result = model('serviceLog')->getEvaluate($where, $data);
 
             return json(['code' => 1, 'data' => $result, 'msg' => '成功']);
-        } catch (\Exception $e) {
+        /*} catch (\Exception $e) {
             return json(['code' => $code, 'data' => [], 'msg' => $msg]);
-        }//end try
+        }//end try*/
 
     }//end putEvaluate()
 

+ 23 - 10
application/service/controller/Words.php

@@ -87,20 +87,25 @@ class Words extends Common
                 $userWordsData['title'] = input('post.title');
             }
 
+            $hasWhere['title']   = input('post.title');
+            $hasWhere['user_id'] = $getUserInfo->id;
+            $hasWhere['id']      = [
+                '<>',
+                input('post.id'),
+            ];
+            // 查询是否存在.
+            $has = model('Words')->findHas($hasWhere);
+            if (empty($has) === false) {
+                return json(['code' => -1, 'data' => [], 'msg' => '该快捷语已经存在']);
+            }
+
             // 更新.
             if (isset($userWordsData) === true) {
-                $updateWordsResult = model('Words')->updateWords($userWordsWhere, $userWordsData);
-                if (empty($updateWordsResult) === false) {
-                    $result = true;
-                }
+                model('Words')->updateWords($userWordsWhere, $userWordsData);
             }
 
             // 参数返回.
-            if (isset($result) === true) {
-                return json(['code' => 1, 'data' => [], 'msg' => '成功']);
-            } else {
-                return json(['code' => 1, 'data' => [], 'msg' => 1]);
-            }
+            return json(['code' => 1, 'data' => [], 'msg' => '成功']);
         } catch (\Exception $e) {
             return json(['code' => $code, 'data' => [], 'msg' => $msg]);
         }//end try
@@ -162,7 +167,15 @@ class Words extends Common
 
         try {
             // 获取用户信息.
-            $getUserInfo   = $this->getUserInfo();
+            $getUserInfo         = $this->getUserInfo();
+            $hasWhere['title']   = input('post.title');
+            $hasWhere['user_id'] = $getUserInfo->id;
+            // 查询是否存在.
+            $has = model('Words')->findHas($hasWhere);
+            if (empty($has) === false) {
+                return json(['code' => -1, 'data' => [], 'msg' => '该快捷语已经存在']);
+            }
+
             $userWordsData = [
                 'user_id'  => $getUserInfo->id,
                 'title'    => input('post.title'),

+ 16 - 0
application/service/model/Words.php

@@ -80,4 +80,20 @@ class Words extends Model
     }//end addWords()
 
 
+    /**
+     * 数据增加
+     *
+     * @access public
+     * @param mixed $where 条件
+     * @return array 返回类型
+     */
+    public function findHas($where)
+    {
+        $result = $this->field('id')->where($where)->find();
+
+        return $result;
+
+    }//end findHas()
+
+
 }

binární
public/static/customer/images/robot.png


+ 5 - 2
public/static/customer/js/whisper-cli.js

@@ -25,8 +25,10 @@ if(config != undefined && config.socket != undefined){
     socket.onopen = function(res) {
         console.log('握手成功');
         // 登录
-        var login_data = '{"type":"userInit", "uid": "' + config.uid + '", "name" : "' + config.name +
-            '", "avatar" : "' + config.avatar + '", "group" : ' + config.group + '}';
+        /*var login_data = '{"type":"userInit", "uid": "' + config.uid + '", "name" : "' + config.name +
+            '", "avatar" : "' + config.avatar + '", "group" : ' + config.group + '}';*/
+        var login_data = '{"type":"userInit","data":{"uid":"' + config.uid + '","name":"anon_5d1ef6fe753a1","avatar":"","group":1}}';
+        console.log(login_data)
         socket.send(login_data);
 
         // 解锁
@@ -247,6 +249,7 @@ function sendMsg(sendMsg){
 function showMsg(info, flag){
     // 清除系统消息
     document.getElementsByClassName('whisper-chat-system').innerHTML = '';
+    console.log(info)
 
     var _html = document.getElementById('chat-list').innerHTML;
     var content = replaceContent(info.content);

+ 5 - 3
public/static/service/js/whisper.js

@@ -17,8 +17,10 @@ socket.onopen = function (res) {
         });
     });
     // 登录
-    var login_data = '{"type":"init", "uid":"' + uinfo.id + '", "token":"NzQ1MTM5IyRAJSFeKi8xNTYyMjkxMTczLzg=", "name" : "' + uinfo.username + '", "avatar" : "'
-        + uinfo.avatar + '", "group": ' + uinfo.group + '}';
+    /*var login_data = '{"type":"init", "uid":"' + uinfo.id + '", "token":"OTY3NDMwIyRAJSFeKi8xNTYyMzEzOTAwLzE=", "name" : "' + uinfo.username + '", "avatar" : "'
+        + uinfo.avatar + '", "group": ' + uinfo.group + '}';*/
+
+    var login_data = '{"type":"init","data":{"uid":"' + uinfo.id + '", "token":"OTY3NDMwIyRAJSFeKi8xNTYyMzEzOTAwLzE=","name":"' + uinfo.username + '","avatar":"","group":1}}';
     socket.send(login_data);
 };
 
@@ -338,7 +340,7 @@ function showUserMessage(uinfo, content) {
     if ($('#f-' + uinfo.id).length == 0) {
         addUser(uinfo);
     }
-
+console.log(content)
     // 未读条数计数
     if (!$('#f-' + uinfo.id).hasClass('active')) {
         var num = $('#f-' + uinfo.id).find('span:eq(1)').text();

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

@@ -190,23 +190,25 @@ class Events
      */
     public static function onMessage($client_id, $message)
     {
-        if ($message == '{"type":"ping"}' || $message == '{"type":"pong"}') {
+        /*if ($message == '{"type":"ping"}' || $message == '{"type":"pong"}') {
             //Gateway::sendToCurrentClient('{"type":"pong"}');
             return;
         } else {
             echo "onMessage: " . $message . "\r\n";
             print_r([self::$global->kfList, self::$global->userList, self::$global->uidSimpleList, self::$global->userToKf]);
-        }
+        }*/
         $message = json_decode($message, true);
         if (isset($message['type'])) {
             switch ($message['type']) {
                 // 客服初始化
                 case 'init':
-                    self::Kfinit($client_id, $message);
+                    $data = $message['data'];
+                    self::Kfinit($client_id, $data);
                     break;
                 // 顾客初始化
                 case 'userInit';
-                    self::userInitEnt($client_id, $message);
+                    $data = $message['data'];
+                    self::userInitEnt($client_id, $data);
                     break;
                 // 聊天
                 case 'getkfonlines':
@@ -1103,6 +1105,7 @@ class Events
                 'data' => [
                     'kf_id' => $res['data']['0'],
                     'conversationId' => $conversationId,
+                    'serverInfo' => self::$global->kfList[$group][$res['data']['0']],
                     'kf_name' => $res['data']['1']
                 ]
             ];
@@ -1117,7 +1120,7 @@ class Events
                     'message_type' => 'chatMessage',
                     'data' => [
                         'name' => $res['data']['1'],
-                        'avatar' => self::$global->kfList[$group][$res['data']['0']],
+                        //'avatar' => self::$global->kfList[$group][$res['data']['0']],
                         'id' => $res['data']['0'],
                         'time' => date('H:i'),
                         'content' => htmlspecialchars($sayHello['0']['word'])