liugc 9 месяцев назад
Родитель
Сommit
e60359ad49

+ 20 - 1
app/adminapi/controller/notice/NoticeController.php

@@ -90,7 +90,26 @@ class NoticeController extends BaseAdminController
         }
         return $this->fail(NoticeLogic::getError());
     }
-
+    public function isOnline()
+    {
+        $params = $this->request->post();
+        $params['admin_id'] = $this->adminId??0;
+        return $this->success('', ['is_online' => OnlineCustomerService::isOnline($params['admin_id'])?1:0]);
+    }
+    public function serviceOnline()
+    {
+        $params = $this->request->post();
+        $params['admin_id'] = $this->adminId??0;
+        $result = OnlineCustomerService::addOnlineCustomerService($params['admin_id']);
+        return $this->success('', $result?:[]);
+    }
+    public function serviceOffline()
+    {
+        $params = $this->request->post();
+        $params['admin_id'] = $this->adminId??0;
+        $result = OnlineCustomerService::subOnlineCustomerService($params['admin_id']);
+        return $this->success('', $result?:[]);
+    }
     public function getUnifiedNotific()
     {
         $params = $this->request->post();

+ 3 - 0
app/adminapi/logic/LoginLogic.php

@@ -18,6 +18,7 @@ use app\common\logic\BaseLogic;
 use app\common\model\auth\Admin;
 use app\adminapi\service\AdminTokenService;
 use app\common\service\FileService;
+use app\common\service\OnlineCustomerService;
 use think\facade\Config;
 
 /**
@@ -78,6 +79,8 @@ class LoginLogic extends BaseLogic
         if (!isset($adminInfo['token'])) {
             return false;
         }
+        $admin_id = $adminInfo['admin_id']??0;
+        OnlineCustomerService::subOnlineCustomerService($admin_id);
         //设置token过期
         return AdminTokenService::expireToken($adminInfo['token']);
     }

+ 13 - 1
app/common/service/OnlineCustomerService.php

@@ -26,7 +26,17 @@ class OnlineCustomerService
     ];
 
 
-
+    public static function isOnline($admin_id){
+        $customerOnlineServiceArr = Cache::store('common_redis')->get('customer_online_service_list');
+        if(!empty($customerOnlineServiceArr)){
+            //$max_code => $admin_id
+            $max_code = array_search($admin_id, $customerOnlineServiceArr, true);
+            if($max_code){
+                return true;
+            }
+        }
+        return false;
+    }
     public static function addOnlineCustomerService($admin_id){
         $customerOnlineServiceArr = Cache::store('common_redis')->get('customer_online_service_list');
         $max_code = 1;
@@ -120,6 +130,8 @@ class OnlineCustomerService
     }
 
     public static function getAllNotificList($admin_id,$business_codes = [],$prefix = '',$is_test = 0){
+        // TODO 测试 tmp
+        $admin_id = 1;
         if($is_test){
             return [
                 ['type'=>'consultation','mp3_url'=>'','unique_code'=> md5('consultation'.time()),'to_router'=>'/works/external_consultation','notificationTitle' => '客咨消息','notific_count' => 5],