Przeglądaj źródła

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

vali 6 lat temu
rodzic
commit
744b36c451

+ 5 - 0
application/admin/controller/Base.php

@@ -26,6 +26,11 @@ class Base extends Controller
             }
         }
         $settings = db('settings')->where('id',1)->find();
+        if($settings['ip_disjunctor'] == 'on'){
+            $settings['disjunctor'] = '关闭ip限制';
+        }else{
+            $settings['disjunctor'] = '开启ip限制';
+        }
         $material = db('material')->select();
 
         $this->assign([

+ 20 - 0
application/admin/controller/Iplimit.php

@@ -143,6 +143,26 @@ class Iplimit extends Base
         }
     }
 
+    //开启/关闭ip限制
+    public function disjunctor(){
+        if(request()->isAjax()){
+            $disjunctor = input('param.disjunctor');
+            try{
+                if($disjunctor == 'on'){
+                    $msg = '开启';
+                    db('settings')->where('id', 1)->update(['ip_disjunctor'=>$disjunctor]);
+                }else{
+                    $msg = '关闭';
+                    db('settings')->where('id', 1)->update(['ip_disjunctor'=>$disjunctor]);
+                }
+            }catch(\Exception $e){
+                return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
+            }
+
+            return json(['code' => 1, 'data' => '', 'msg' => $msg.'ip限制成功']);
+        }
+    }
+
     // 生成按钮
     private function makeBtn($id)
     {

+ 2 - 2
application/admin/view/iplimit/add.html

@@ -25,8 +25,8 @@
                         <input style="display: none" id="type" name="object" value=""/>
                         <div class="form-group">
                             <label class="col-sm-3 control-label">IP/IP范围:</label>
-                            <div class="input-group col-sm-4">
-                                <input class="form-control" name="ip" required="" aria-required="true" style="width: 400px;height: 38px;resize:none">
+                            <div class="input-group col-sm-4" style="width: 320px;">
+                                <input class="form-control" name="ip" required="" aria-required="true" placeholder="ip范围用“-”隔开,例如'127.0.0.1-127.0.0.11'">
                             </div>
                         </div>
                         <!--<div class="form-group">

+ 2 - 2
application/admin/view/iplimit/edit.html

@@ -24,8 +24,8 @@
                         <input type="hidden" name="id" value="{$info['id']}"/>
                         <div class="form-group">
                             <label class="col-sm-3 control-label">访问ip:</label>
-                            <div class="input-group col-sm-4">
-                                <input class="form-control" name="ip" required="" aria-required="true" value="{$info['ip']}">
+                            <div class="input-group col-sm-4" style="width: 320px;">
+                                <input class="form-control" name="ip" required="" aria-required="true" value="{$info['ip']}" placeholder="ip范围用“-”隔开,例如'127.0.0.1-127.0.0.11'">
                             </div>
                         </div>
                         <div class="form-group">

+ 53 - 4
application/admin/view/iplimit/index.html

@@ -18,10 +18,10 @@
         <input style="display:none;" type="text" value="2" id="type">
         <div style="display: flex;">
             <div class="ibox-title" style="width: 100px; cursor:pointer;" id="current1" onclick="current(2)">
-                <h5>客服</h5>
+                <h5>客服白名单</h5>
             </div>
             <div class="ibox-title" id="current2" style="width: 100px; cursor:pointer; background: #eee" onclick="current(1)">
-                <h5>用户</h5>
+                <h5>用户黑名单</h5>
             </div>
             <div class="ibox-title" style="width: calc(100% - 200px); background: #eee;">
             </div>
@@ -32,12 +32,24 @@
                 </button>
             </a>
 
+
+            <form action="/admin/sensitivec/disjunctor" enctype="multipart/form-data" method="post" role="form" class="form-inline pull-right">
+                <div class="content clearfix m-b">
+                    <div class="form-group" style="margin-left: 200px">
+                        <a href="javascript:disjunctor()" class="btn" style="margin-top:5px;" >
+                            <input type="button" id="disjunctor" class="btn {if($settings['ip_disjunctor']=='on')}btn-primary{else}btn-danger{/if} btn-sm" value="{$settings['disjunctor']}" style="font-weight: bold;height: 34px;margin-top: -2px;">
+                        </a>
+                    </div>
+                </div>
+            </form>
+
+
             <!--搜索框开始-->
             <form id='commentForm' role="form" method="post" class="form-inline pull-right">
                 <div class="content clearfix m-b" style="margin-top: 5px;">
                     <div class="form-group">
-                        <label>IP:</label>
-                        <input type="text" class="form-control" id="content" name="content" value="" placeholder="请输入IP">
+                        <label>IP地址:</label>
+                        <input type="text" class="form-control" id="content" name="content" value="" placeholder="请输入IP地址">
                         <input style="display: none">
                     </div>
                     <div class="form-group">
@@ -171,6 +183,43 @@
 
     }
 
+    function disjunctor(){
+        if($('#disjunctor').val() == '开启IP限制'){
+            var disjunctor = 'on';
+        }else{
+            var disjunctor = 'off';
+        }
+        layer.confirm('确认'+$('#disjunctor').val()+'?', {icon: 3, title:'提示'}, function(index){
+            //do something
+            $.getJSON("{:url('iplimit/disjunctor')}", {'disjunctor':disjunctor}, function(res){
+                //console.log(disjunctor);
+                console.log(res);
+                if(1 == res.code){
+                    layer.alert(res.msg, {title: '友情提示', icon: 1, closeBtn: 0}, function(){
+                        initTable();
+                        if($('#disjunctor').val() == '开启IP限制'){
+                            $('#disjunctor').val('关闭IP限制');
+                            $("#disjunctor").addClass("btn-primary");
+                            $("#disjunctor").removeClass("btn-danger");
+                        }else{
+                            $('#disjunctor').val('开启IP限制');
+                            $("#disjunctor").addClass("btn-danger");
+                            $("#disjunctor").removeClass("btn-primary");
+                        }
+
+                    });
+                }else if(111 == res.code){
+                    window.location.reload();
+                }else{
+                    layer.alert(res.msg, {title: '友情提示', icon: 2});
+                }
+            });
+
+            layer.close(index);
+        })
+
+    }
+
 </script>
 </body>
 </html>

+ 2 - 2
application/admin/view/system/conversation.html

@@ -98,14 +98,14 @@
                         </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>
+                            <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="{$systemconfig[6]['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>
+                            <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="{$systemconfig[7]['systemconfig_data']}">
                             </div>

+ 11 - 8
application/index/controller/Register.php

@@ -99,14 +99,17 @@ class Register extends Common
     public function autoReg()
     {
         //验证用户IP
-        @$ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
-        $ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];
-        //将ip地址转换成int型
-        $intip = bindec(decbin(ip2long($ip)));
-        $res = db('iplimit')->where('ip',$ip)->where('object',1)->find();
-        $result = db('iplimit')->where('start_ip','<=',$intip)->where('end_ip','>=',$intip)->where('object',1)->find();
-        if(!empty($res) || !empty($result)){
-            return json(['code' => 0, 'data' => [], 'msg' => 'ip禁止登陆']);
+        $settings = db('settings')->where('id',1)->find();
+        if($settings['ip_disjunctor'] == 'on'){
+            @$ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
+            $ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];
+            //将ip地址转换成int型
+            $intip = bindec(decbin(ip2long($ip)));
+            $res = db('iplimit')->where('ip',$ip)->where('object',1)->find();
+            $result = db('iplimit')->where('start_ip','<=',$intip)->where('end_ip','>=',$intip)->where('object',1)->find();
+            if(!empty($res) || !empty($result)){
+                return json(['code' => 0, 'data' => [], 'msg' => '访问受限']);
+            }
         }
 
         if (!$this->verifyApiToken()) {

+ 13 - 0
application/service/controller/Login.php

@@ -16,6 +16,19 @@ class Login extends Controller
 
     public function doLogin()
     {
+        //验证用户IP
+        $settings = db('settings')->where('id',1)->find();
+        if($settings['ip_disjunctor'] == 'on'){
+            @$ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
+            $ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];
+            //将ip地址转换成int型
+            $intip = bindec(decbin(ip2long($ip)));
+            $res = db('iplimit')->where('ip',$ip)->where('object',2)->find();
+            $result = db('iplimit')->where('start_ip','<=',$intip)->where('end_ip','>=',$intip)->where('object',2)->find();
+            if(empty($res) && empty($result)){
+                return json(['code' => 0, 'data' => [], 'msg' => '访问受限']);
+            }
+        }
 
         $userAccount = input('post.username');
         $password = input('post.password');

+ 2 - 2
vendor/GatewayWorker_windows/Applications/whisper/Events.php

@@ -176,7 +176,7 @@ class Events
                     break;
                 // 客服关闭会话.
                 case 'kfCloseUser':
-                    self::serverClose($message['data']['conversationId'], 3);
+                    self::serverClose($message['data']['conversationId'], $message['data']['type']);
                     break;
                 // 客服更改状态.
                 case 'kfOnline':
@@ -1107,7 +1107,7 @@ class Events
         $serviceid = intval($serviceid);
         $userInfo = json_decode(self::$redis->hget(self::USERINFOKEY, $uid), true);
         $kfinfo = json_decode(self::$redis->hget(self::KFINFOKEY, $kfuid), true);
-        if (empty($userInfo) || empty($kfinfo)) {
+        if (empty($userInfo)) {
             return false;
         }
         // 获取旧工单信息.