lip 3 tháng trước cách đây
mục cha
commit
4ea6bee37e

+ 1 - 1
app/admin/controller/Admin.php

@@ -234,7 +234,7 @@ class Admin extends BaseController
             ];
 
             //通知客服签到
-            wsSendMsg($userInfo['id'],'sign',['id'=>$userInfo['id']]);
+            wsSendMsg($userInfo['id'],'sign',['is_sign'=>1]);
         } catch (\Exception $e) {
             return $this->error($e->getMessage());
         }

+ 5 - 0
app/admin/controller/Kefu.php

@@ -7,6 +7,7 @@ use app\BaseController;
 use app\admin\model\Admin;
 use app\admin\model\Sign;
 use app\admin\model\KefuWork;
+use app\admin\model\User;
 use Exception;
 
 
@@ -114,6 +115,10 @@ class Kefu extends BaseController
         } catch (\Exception $e) {
             return $this->error($e->getMessage());
         }
+        //通知客服已签到
+        $user_id = User::getCsId($admin_id);
+        wsSendMsg($user_id,'sign',['is_sign'=>0]);
+        
         return $this->success([], '签到成功');
     }
 

+ 5 - 0
app/admin/model/User.php

@@ -17,6 +17,9 @@ class User extends BaseModel
    protected $json = ['setting'];
    protected $jsonAssoc = true;
 
+   public static function getCsId($admin_id) {
+      return self::where('from', 0)->where('uid', $admin_id)->value('user_id');
+   }
    public function getAvatarAttr($value,$data)
     {
         return avatarUrl($data['avatar'],$data['realname'],$data['user_id']);
@@ -64,6 +67,8 @@ class User extends BaseModel
             'friend_limit' => 500,
             'group_limit' => 500,
             'phone' => $params['phone'] ?? '',
+            'from' => 0,
+            'uid' => $params['id'],
         ]);
 
     }

+ 30 - 6
app/worker/Events.php

@@ -24,6 +24,8 @@ use Lcobucci\JWT\Builder;
 use Lcobucci\JWT\Parser;
 use thans\jwt\provider\JWT\Lcobucci;
 use utils\Aes;
+use app\admin\model\Admin;
+use think\facade\Log;
 
 class Events
 {
@@ -39,8 +41,23 @@ class Events
     {
         Gateway::sendToClient($client_id, json_encode(array(
             'type'      => 'init',
-            'client_id' => $client_id
+            'client_id' => $client_id,
         )));
+        
+        if($_SESSION['role'] != 0){
+            $admin_id = $_SESSION['user_id'];
+            $is_online = Admin::where('id',$admin_id)->value('is_online');
+            if ($is_online == 0) {
+                
+                //更新客服上线状态
+                Admin::where('id',$admin_id)->update(['is_online'=>1]);
+                Log::info('客服'.$admin_id.'上线');
+                Gateway::sendToClient($client_id, json_encode(array(
+                    'type'      => 'sign',
+                    'data' => ['is_sign' => 1],
+                )));
+            }
+        }
         self::onlineStatistics();
     }
     /**
@@ -135,7 +152,7 @@ class Events
             self::closeClient($client_id);
         }
         $_SESSION['user_id']=$userInfo['user_id'];
-    
+        $_SESSION['role']=$userInfo['role'];
         self::sendStatus($client_id);
     }
 
@@ -155,10 +172,17 @@ class Events
         $user_id=$_SESSION['user_id'] ?? '';
         if($user_id){
             Gateway::sendToAll(json_encode(array(
-            'type'      => 'isOnline',
-            'time' => time(),
-            'data' => ['id'=>$user_id,'is_online'=>0]
-        )));
+                'type'      => 'isOnline',
+                'time' => time(),
+                'data' => ['id'=>$user_id,'is_online'=>0]
+            )));
+
+            if($_SESSION['role'] != 0){
+                //更新客服离线状态
+                Admin::where('id',$user_id)->update(['is_online'=>0]);
+                
+                Log::info('客服'.$user_id.'下线');
+            }
         }
         self::onlineStatistics();
     }