Просмотр исходного кода

飞书认证参数链接定时清理

wangxy 6 дней назад
Родитель
Сommit
c62ce61ed5

+ 33 - 0
fs-admin/src/main/java/com/fs/task/AuthLinkTokenCleanTask.java

@@ -0,0 +1,33 @@
+package com.fs.task;
+
+import com.fs.feishu.service.IFsAuthLinkTokenService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * 飞书授权链接token清理定时任务
+ * 每天凌晨3点清理 fs_auth_link_token 表中已过期的记录
+ */
+@Component("authLinkTokenCleanTask")
+@Slf4j
+public class AuthLinkTokenCleanTask {
+
+    @Autowired
+    private IFsAuthLinkTokenService authLinkTokenService;
+
+    /**
+     * 每天凌晨3点执行,清理已过期的token记录
+     */
+//    @Scheduled(cron = "0 0 3 * * ?")
+    public void cleanExpiredTokens() {
+        try {
+            log.info("授权token清理 - 定时任务开始");
+            int count = authLinkTokenService.cleanExpiredTokens();
+            log.info("授权token清理 - 定时任务完成 | 删除过期记录={}", count);
+        } catch (Exception e) {
+            log.error("授权token清理 - 定时任务执行失败", e);
+        }
+    }
+}

+ 3 - 0
fs-service/src/main/java/com/fs/feishu/mapper/FsAuthLinkTokenMapper.java

@@ -15,4 +15,7 @@ public interface FsAuthLinkTokenMapper {
 
     /** 根据token删除 */
     int deleteFsAuthLinkTokenByToken(String token);
+
+    /** 删除已过期的token记录 */
+    int deleteExpiredTokens();
 }

+ 1 - 1
fs-service/src/main/java/com/fs/feishu/service/FeiShuService.java

@@ -198,7 +198,7 @@ public class FeiShuService {
             String encodedJson = URLEncoder.encode(courseJson, "UTF-8");
             // 拼接完整URL(userId与course参数同级)
             String baseUrl = config.getFeishuNewLinkDomainName();
-            String fullUrl = baseUrl + "/feishuCourse/pages_course/videovip?course=" + encodedJson + "&userId=" +userId;
+            String fullUrl = baseUrl + "/pages_course/videovip?course=" + encodedJson + "&userId=" +userId;
             // 第二次编码:对整个URL进行URL编码(适配飞书iframe创建要求)
             return URLEncoder.encode(fullUrl, "UTF-8");
         } catch (UnsupportedEncodingException e) {

+ 7 - 0
fs-service/src/main/java/com/fs/feishu/service/IFsAuthLinkTokenService.java

@@ -24,4 +24,11 @@ public interface IFsAuthLinkTokenService {
      * @return 授权参数,token无效或过期返回 null
      */
     Map<String, Object> getAuthParamsByToken(String token);
+
+    /**
+     * 清理已过期的token记录
+     *
+     * @return 删除条数
+     */
+    int cleanExpiredTokens();
 }

+ 5 - 0
fs-service/src/main/java/com/fs/feishu/service/impl/FsAuthLinkTokenServiceImpl.java

@@ -90,6 +90,11 @@ public class FsAuthLinkTokenServiceImpl implements IFsAuthLinkTokenService {
         return JSONUtil.toBean(paramsJson, Map.class);
     }
 
+    @Override
+    public int cleanExpiredTokens() {
+        return fsAuthLinkTokenMapper.deleteExpiredTokens();
+    }
+
     /** 生成8位随机token(小写字母+数字) */
     private String generateToken() {
         SecureRandom random = new SecureRandom();

+ 4 - 0
fs-service/src/main/resources/mapper/feishu/FsAuthLinkTokenMapper.xml

@@ -32,4 +32,8 @@
         delete from fs_auth_link_token where token = #{token}
     </delete>
 
+    <delete id="deleteExpiredTokens">
+        delete from fs_auth_link_token where expire_time &lt; NOW()
+    </delete>
+
 </mapper>