Przeglądaj źródła

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

Jonlin 6 lat temu
rodzic
commit
5786a9fcef

+ 41 - 28
application/admin/controller/Users.php

@@ -116,46 +116,59 @@ class Users extends Base
         if(request()->isAjax()){
 
             $param = input('post.');
-            unset($param['file']); // 删除layui头像上传隐藏字段
 
             if(empty($param['group_id'])){
-                return json(['code' => -4, 'data' => '', 'msg' => '请选择分组']);
+                return json(['code' => -2, 'data' => '', 'msg' => '请选择分组']);
             }
 
-            // 检测用户修改的用户名是否重复
-            /*$has = db('users')->where('user_name', $param['user_name'])->where('id', '<>', $param['id'])->find();
-            if(!empty($has)){
-                return json(['code' => -1, 'data' => '', 'msg' => '该客服已经存在']);
-            }*/
+            $addar = array();
+            $where = array();
+            $where['id'] = $param['id'];
+            $userspw = db('users')->where($where)->field("user_pwd")->find();
+            $newpwd = md5($param['new_pwd'] . config('salt'));//新密码
+            $oldpwd = md5($param['user_pwd'] . config('salt'));//旧密码
+            $rules = '/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/';
+            $useremail = $param['user_email'];
+            $phone = $param['phone'];
+            
+            // 检测用户新密码与原密码是否重复
+            if(!empty($param['new_pwd'])){
+                if($oldpwd != $userspw['user_pwd']){
+                    return json(['code' => -8, 'data' => '', 'msg' => '原密码不对']);
+                }
 
-            // 检测用户修改的工号是否重复
-            $user_job_number = db('users')->where('user_job_number', $param['user_job_number'])->where('id', '<>', $param['id'])->find();
-            if(!empty($user_job_number)){
-                return json(['code' => -2, 'data' => '', 'msg' => '该工号已经存在']);
-            }
+                if($newpwd==$userspw['user_pwd']){
+                    return json(['code' => -3, 'data' => '', 'msg' => '新密码与原密码一致']);
+                }
 
-            // 检测用户修改的邮箱是否重复
-            /*$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' => '该邮箱已经存在']);
+                if($param['renew_pwd'] != $param['new_pwd']){
+                    return json(['code' => -7, 'data' => '', 'msg' => '新密码与确认密码不一致']);
+                }
+                $addar['user_pwd'] = md5($param['new_pwd'] . config('salt'));
             }
 
-            // 修改用户头像
-            if(empty($param['user_avatar'])){
-                unset($param['user_avatar']);
+            if(!preg_match($rules,$useremail)){
+                return json(['code' => -9, 'data' => '', 'msg' => '请输入正确的邮箱']);
             }
 
-            // 修改用户密码
-            if(empty($param['user_pwd'])){
-                unset($param['user_pwd']);
-            }else{
-                $param['user_pwd'] = md5($param['user_pwd'] . config('salt'));
-            }*/
-
+            if(!preg_match("/^1[34578]\d{9}$/", $phone)){
+                return json(['code' => -10, 'data' => '', 'msg' => '请输入正确的手机号码']);
+            }
+            
+            if(!empty($param['user_avatar'])){
+                $addar['user_avatar'] = $param['user_avatar'];
+            }
+            $addar['fullname'] = $param['fullname'];
+            $addar['user_email'] = $param['user_email'];
+            $addar['phone'] = $param['phone'];
+            $addar['signature'] = $param['signature'];
+            $addar['group_id'] = $param['group_id'];
+            $addar['status'] = $param['status'];
+          
             try{
-                db('users')->where('id', $param['id'])->update($param);
+                db('users')->where('id', $param['id'])->update($addar);
             }catch(\Exception $e){
-                return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
+                return json(['code' => -6, 'data' => '', 'msg' => $e->getMessage()]);
             }
 
             return json(['code' => 1, 'data' => '', 'msg' => '编辑客服成功']);

+ 47 - 21
application/admin/view/users/edituser.html

@@ -22,22 +22,33 @@
                 <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">
-                            <label class="col-sm-3 control-label">客服名称:</label>
+                        <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">
+                                <button type="button" class="layui-btn layui-btn-small" id="up-avatar">
+                                    <i class="layui-icon"></i>上传图片</button>
+                            </div>
+                            <div class="input-group col-sm-3" id="avatar">
+                                <img src="{$info['user_avatar']}" width="40px" height="40px"/>
+                            </div>
+                        </div>
+                        <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']}">
+                                <input id="user_name" type="text" class="form-control" name="user_name" required="" aria-required="true" value="{$info['user_name']}" disabled="disabled">
                             </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']}">
+                                <input id="user_job_number" type="text" class="form-control" name="user_job_number" required="" aria-required="true" value="{$info['user_job_number']}" disabled="disabled">
                             </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']}">
+                                <input id="user_email" type="text" class="form-control" name="user_email" required="" aria-required="true" value="{$info['user_email']}">
                             </div>
                         </div>
                         <div class="form-group">
@@ -47,11 +58,35 @@
                             </div>
                         </div>
                         <div class="form-group">
-                            <label class="col-sm-3 control-label">登录密码:</label>
+                            <label class="col-sm-3 control-label">姓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名:</label>
+                            <div class="input-group col-sm-4">
+                                <input id="fullname" type="text" class="form-control" name="fullname" required="" aria-required="true" value="{$info['fullname']}">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">个性签名:</label>
                             <div class="input-group col-sm-4">
-                                <input id="password" type="text" class="form-control" name="user_pwd" placeholder="重新输入则为修改">
+                                <input id="signature" type="text" class="form-control" name="signature" required="" aria-required="true" value="{$info['signature']}">
                             </div>
-                        </div>-->
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">原&nbsp;密&nbsp;码:</label>
+                            <div class="input-group col-sm-4">
+                                <input id="user_pwd" type="text" class="form-control" name="user_pwd" placeholder="请输入原密码">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">新&nbsp;密&nbsp;码:</label>
+                            <div class="input-group col-sm-4">
+                                <input id="new_pwd" type="text" class="form-control" name="new_pwd" placeholder="请输入新密码">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-3 control-label">确认密码:</label>
+                            <div class="input-group col-sm-4">
+                                <input id="renew_pwd" type="text" class="form-control" name="renew_pwd" placeholder="请再次输入新密码">
+                            </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,17 +111,7 @@
                                 {/if}
                             </div>
                         </div>
-                        <!--<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">
-                                <button type="button" class="layui-btn layui-btn-small" id="up-avatar">
-                                    <i class="layui-icon"></i>上传图片</button>
-                            </div>
-                            <div class="input-group col-sm-3" id="avatar">
-                                <img src="{$info['user_avatar']}" width="40px" height="40px"/>
-                            </div>
-                        </div>-->
+                        
 
                         <div class="form-group">
                             <div class="col-sm-4 col-sm-offset-6" style="margin-left: 20%;">
@@ -114,6 +139,7 @@
     layui.use(['form', 'upload'], function(){
         var form = layui.form;
         var upload = layui.upload;
+        
         //执行实例
         var uploadInst = upload.render({
             elem: '#up-avatar' //绑定元素

+ 35 - 3
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -80,6 +80,8 @@ class Events
 
         // 定时统计数据
         if (0 === $worker->id) {
+            self::writeLogKfStatus(0, 0, 0);
+
             // 1分钟统计一次实时数据
             Timer::add(60 * 1, function () {
                 self::writeLog(1);
@@ -210,7 +212,7 @@ class Events
                     $data = $message['data'];
                     self::userInitEnt($client_id, $data);
                     break;
-                // 聊天
+                //在线客服信息
                 case 'getkfonlines':
                     Gateway::sendToCurrentClient(json_encode(self::getkfonlines(), 256));
                     break;
@@ -375,6 +377,8 @@ class Events
                         }
                     }
                     self::$global->kfList = $kfList;
+                    self::writeLogKfStatus($userId, $status);
+
                     break;
                 case 'changeOtherhKeFu';
                     self::changeOtherhKeFu($client_id, $message);
@@ -413,7 +417,7 @@ class Events
         foreach ($kfs as $gruop => $fs) {
             foreach ($fs as $kfid => $kfdata) {
                 if ($kfdata['status'] == 1) {
-                    $ret[$gruop][] = ['id' => $kfid, 'name' => $kfdata['name'], 'job_member' => $kfdata['job_name'], 'avatar' => $kfdata['avatar'],'signature'=>$kfdata['signature']];
+                    $ret[$gruop][] = ['id' => $kfid, 'name' => $kfdata['name'], 'job_member' => $kfdata['job_name'], 'avatar' => $kfdata['avatar'], 'signature' => $kfdata['signature']];
                 }
             }
         }
@@ -452,6 +456,11 @@ class Events
         if (!isset($kfList[$groupid]) || !isset($kfList[$groupid][$toukfid]) || !isset($kfList[$groupid][$fromkfuid])) {
             return false;
         }
+        if ($kfList[$groupid][$toukfid]['status'] != 1) {
+            return false;
+        }
+
+
         foreach ($kfList[$groupid] as $key => $val) {
             if ($key == $fromkfuid) {
                 $kfList_new[$groupid][$fromkfuid]['task']--;
@@ -546,7 +555,7 @@ class Events
                     'avatar' => $kfinfo['user_avatar'],
                     'client_id' => $client_id,
                     'task' => 0,
-                    'signature'=>$kfinfo['signature'],
+                    'signature' => $kfinfo['signature'],
                     'status' => 2,// 1为在线(接收分配、接收消息)2为隐身(不接收分配、只接收消息)
                     'user_info' => []
                 ];
@@ -568,6 +577,8 @@ class Events
         $_SESSION['uid'] = $message['uid'];
         $_SESSION['name'] = $message['name'];
 
+        self::writeLogKfStatus($message['uid'], 2);
+
         // TODO 尝试拉取用户来服务 [二期规划]
 
     }
@@ -712,6 +723,9 @@ class Events
 
         do {
         } while (!self::$global->cas('kfList', $kefuinfo_old, $kefuinfo_old_new));
+
+        self::writeLogKfStatus($uid, 0);
+
         return;
     }
 
@@ -1509,6 +1523,24 @@ class Events
     }
 
 
+    //客服在线状态写组
+    private static function writeLogKfStatus($kf, $status, $flag = 1)
+    {
+        if ($flag == 1) {
+            $status = intval($status);
+            if ($status == 0) {
+                self::$db->delete('ws_kfonline')->where("uid='$kf'")->query();
+            } else {
+                $now = date('Y-m-d H:i;s');
+                $sql = "insert into ws_kfonline(uid,status,uptime) values('$kf',$status,'$now') ON DUPLICATE KEY UPDATE status=$status,uptime='$now' ";
+                self::$db->query($sql);
+            }
+        } else {
+            self::$db->query("delete from ws_kfonline ");
+        }
+    }
+
+
     //踢掉同一用户的旧用户
     private static function tickOlduser($uid)
     {