From 8c397edad7e412e66463a43971309ee81106276b Mon Sep 17 00:00:00 2001 From: YXY <932687738@qq.com> Date: Sun, 15 Oct 2023 10:29:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E4=BF=AE=E6=94=B9=E8=8E=B7?= =?UTF-8?q?=E5=8F=96token=E7=9A=84=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quartz/task/CJT/RefreshTokenJob.java | 12 +++++ .../task/CJT/SyncAccountsJobAbstract.java | 16 ++---- .../ruoyi/quartz/task/CJT/SyncReportJob.java | 49 ++++++++++++------- 3 files changed, 47 insertions(+), 30 deletions(-) diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/RefreshTokenJob.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/RefreshTokenJob.java index c67d8db..0959529 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/RefreshTokenJob.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/RefreshTokenJob.java @@ -59,6 +59,18 @@ public class RefreshTokenJob { return generateToken(value,ticket); } + public void waitForToken(CjtAccountEnum cjtAccountEnum){ + try { + String refreshCacheKey = buildCacheUniqueKey(RedisConstants.CJT_TICKET_REFRESH_CACHE_KEY, cjtAccountEnum.getAppKey()); + Long expireTime = redisCache.getExpireTime(refreshCacheKey); + if (expireTime != null && expireTime > 0){ + Thread.sleep(expireTime); + } + }catch (Exception e){ + log.info("",e); + } + } + /** * 获取ticket,失效前重置 */ diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncAccountsJobAbstract.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncAccountsJobAbstract.java index 9927bd5..99e135a 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncAccountsJobAbstract.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncAccountsJobAbstract.java @@ -193,7 +193,7 @@ public abstract class SyncAccountsJobAbstract { redisCache.deleteObject(asynchronous); } else { String errorInfo = buildRobotErrorCountMessage2(e, queryFromTime, queryToTime); - if (!StringUtils.isEmpty(errorInfo) && !errorInfo.contains("openToken已失效") && !errorInfo.contains("会话过期请重新登录")) { + if (!StringUtils.isEmpty(errorInfo)) { larkRobotHelper.sendMessageByBot(ROBOT_GROUP, errorInfo); } // CJTRetryRequest request = new CJTRetryRequest(now, 1, cjt); @@ -590,7 +590,7 @@ public abstract class SyncAccountsJobAbstract { String openToken = (String) redisCache.getCacheObject(tokenCacheKey); if (StringUtils.isEmpty(openToken)) { CjtAccountEnum cjtAccountEnum = cjtAccount(context.getCjt()); - waitForToken(cjtAccountEnum); + refreshTokenJob.waitForToken(cjtAccountEnum); return refreshTokenJob.getToken(cjtAccountEnum); } else { context.setOpenToken(openToken); @@ -598,17 +598,7 @@ public abstract class SyncAccountsJobAbstract { } } - private void waitForToken(CjtAccountEnum cjtAccountEnum){ - try { - String refreshCacheKey = buildCacheUniqueKey(RedisConstants.CJT_TICKET_REFRESH_CACHE_KEY, cjtAccountEnum.getAppKey()); - Long expireTime = redisCache.getExpireTime(refreshCacheKey); - if (expireTime != null && expireTime > 0){ - Thread.sleep(expireTime); - } - }catch (Exception e){ - log.info("",e); - } - } + /** * 生成调用接口的token信息 diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncReportJob.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncReportJob.java index 3c297d8..84cf520 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncReportJob.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CJT/SyncReportJob.java @@ -54,6 +54,8 @@ public class SyncReportJob { private LarkTableHelper larkTableHelper; @Autowired private LarkRobotHelper larkRobotHelper; + @Autowired + private RefreshTokenJob refreshTokenJob; @Value("${lark.robot.group}") private String ROBOT_GROUP; @Value("${sync.flag}") @@ -94,7 +96,7 @@ public class SyncReportJob { //初始化飞书信息及相关配置 initLarkInfo(context); //重置ticket - resetTicket(context); +// resetTicket(context); // preSync(context); cleanTableDate(context); //执行分页同步 @@ -382,31 +384,44 @@ public class SyncReportJob { context.setTicket(ticket); } - /** - * 生成调用接口的token信息 - */ private String generateToken(CJTJobContext context) { String tokenCacheKey = buildCacheUniqueKey(RedisConstants.CJT_TOKEN_CACHE_KEY, context.getAppKey()); String openToken = (String) redisCache.getCacheObject(tokenCacheKey); - if (StringUtils.isBlank(openToken)) { - CJTRequest cjtRequest = new CJTRequest(REQUEST_GENERATE_TOKEN_PATH - , context.getAppKey() - , context.getAppSecret() - , context.getTicket() - , context.getCertificate()); - cjtRequest.buildGenerateBody(); - JSONObject body = JSONObject.parseObject(post(cjtRequest)); - JSONObject value = body.getJSONObject("value"); - String token = value.getString("accessToken"); - context.setOpenToken(token); - redisCache.setCacheObject(tokenCacheKey, token, 5, TimeUnit.MINUTES); - return token; + if (org.springframework.util.StringUtils.isEmpty(openToken)) { + CjtAccountEnum cjtAccountEnum = cjtAccount(context.getCjt()); + refreshTokenJob.waitForToken(cjtAccountEnum); + return refreshTokenJob.getToken(cjtAccountEnum); } else { context.setOpenToken(openToken); return openToken; } } + /** + * 生成调用接口的token信息 + */ +// private String generateToken(CJTJobContext context) { +// String tokenCacheKey = buildCacheUniqueKey(RedisConstants.CJT_TOKEN_CACHE_KEY, context.getAppKey()); +// String openToken = (String) redisCache.getCacheObject(tokenCacheKey); +// if (StringUtils.isBlank(openToken)) { +// CJTRequest cjtRequest = new CJTRequest(REQUEST_GENERATE_TOKEN_PATH +// , context.getAppKey() +// , context.getAppSecret() +// , context.getTicket() +// , context.getCertificate()); +// cjtRequest.buildGenerateBody(); +// JSONObject body = JSONObject.parseObject(post(cjtRequest)); +// JSONObject value = body.getJSONObject("value"); +// String token = value.getString("accessToken"); +// context.setOpenToken(token); +// redisCache.setCacheObject(tokenCacheKey, token, 5, TimeUnit.MINUTES); +// return token; +// } else { +// context.setOpenToken(openToken); +// return openToken; +// } +// } + /** * 生成调用接口的token信息 */