From 5d2e6ca50091f405dfda9e287b367dd295dc6cf8 Mon Sep 17 00:00:00 2001
From: Xiajijian <1176061145@qq.com>
Date: Mon, 09 Feb 2026 17:39:17 +0800
Subject: [PATCH] 1. 航线任务增加校验,只有下发人和登陆人是一个人才可以删除修改操作。 2. 增加校验航线任务是否可以创建航线接口。

---
 ard-framework/src/main/java/com/ard/framework/web/service/TokenService.java |   32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/ard-framework/src/main/java/com/ard/framework/web/service/TokenService.java b/ard-framework/src/main/java/com/ard/framework/web/service/TokenService.java
index 5250cf1..682a1ab 100644
--- a/ard-framework/src/main/java/com/ard/framework/web/service/TokenService.java
+++ b/ard-framework/src/main/java/com/ard/framework/web/service/TokenService.java
@@ -26,7 +26,7 @@
 /**
  * token验证处理
  *
- * @author ruoyi
+ * @author ard
  */
 @Component
 public class TokenService
@@ -44,6 +44,10 @@
     // 令牌有效期(默认30分钟)
     @Value("${token.expireTime}")
     private int expireTime;
+
+    // 是否允许账户多终端同时登录(true允许 false不允许)
+    @Value("${token.soloLogin}")
+    private boolean soloLogin;
 
     protected static final long MILLIS_SECOND = 1000;
 
@@ -96,12 +100,17 @@
     /**
      * 删除用户身份信息
      */
-    public void delLoginUser(String token)
+    public void delLoginUser(String token, Long userId)
     {
         if (StringUtils.isNotEmpty(token))
         {
             String userKey = getTokenKey(token);
             redisCache.deleteObject(userKey);
+        }
+        if (!soloLogin && StringUtils.isNotNull(userId))
+        {
+            String userIdKey = getUserIdKey(userId);
+            redisCache.deleteObject(userIdKey);
         }
     }
 
@@ -151,6 +160,12 @@
         // 根据uuid将loginUser缓存
         String userKey = getTokenKey(loginUser.getToken());
         redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
+        if (!soloLogin)
+        {
+            // 缓存用户唯一标识,防止同一帐号,同时登录
+            String userIdKey = getUserIdKey(loginUser.getUser().getUserId());
+            redisCache.setCacheObject(userIdKey, userKey, expireTime, TimeUnit.MINUTES);
+        }
     }
 
     /**
@@ -228,4 +243,17 @@
     {
         return CacheConstants.LOGIN_TOKEN_KEY + uuid;
     }
+
+    private String getUserIdKey(Long userId)
+    {
+        return CacheConstants.LOGIN_USERID_KEY + userId;
+    }
+
+    public LoginUser getLoginUserByUserId(Long userId) {
+        String userIdKey = getUserIdKey(userId);
+        String tokenKey = redisCache.getCacheObject(userIdKey);
+        if (tokenKey == null) return null;
+        return redisCache.getCacheObject(tokenKey);
+    }
+
 }

--
Gitblit v1.9.3