浏览代码

【第一版开发】
1.修改大乐透/双色球定时任务的执行逻辑

ChenYL 6 月之前
父节点
当前提交
7ed890aeb3

+ 49 - 26
data-easy/src/main/java/com/dataeasy/server/task/DaLeTouTask.java

@@ -51,41 +51,25 @@ public class DaLeTouTask extends AbstractHzApiTask {
     private IDataDaLeTouService daLeTouService;
 
     @Scheduled(cron = "0 55 21 * * 1,3,6")
-    @Scheduled(cron = "0 0 0,6,12 * * 2,4,7")
     public void execute() {
         super.execute();
     }
 
+    /**
+     * 首次查询时数据可能不完整,需要定时刷新
+     */
+    @Scheduled(cron = "0 0 0,6,12 * * 2,4,7")
+    public void refreshDataExecute() {
+        refreshData();
+    }
+
     @Override
     public boolean fetchData() {
-        // 拉取数据
-        HzApiRequest request = buildCommonRequest();
-        DaLeTouResponse daLeTouResponse = hzApiFeign.getDaLeTou(request);
-        if (Objects.isNull(daLeTouResponse)) {
-            log.warn("拉取大乐透数据失败,返回结果对象为空");
-            return false;
-        }
-        if (!HzApiStatusEnum.SUCCESS.getCode().equals(daLeTouResponse.getCode())) {
-            log.warn("拉取大乐透数据失败,接口盒子返回错误信息:{}", daLeTouResponse.getMsg());
+        DataDaLeTou addDaLeTou = refreshData();
+        if (Objects.isNull(addDaLeTou)) {
             return false;
         }
 
-        // 获取历史数据
-        DataDaLeTou oldDataDaLeTou = daLeTouService.getByDrawDate(daLeTouResponse.getQihao());
-
-        // 数据入库
-        DataDaLeTou addDaLeTou = new DataDaLeTou();
-        BeanUtils.copyProperties(daLeTouResponse, addDaLeTou);
-        if (Objects.isNull(oldDataDaLeTou)) {
-            daLeTouService.insert(addDaLeTou);
-        } else {
-            addDaLeTou.setId(oldDataDaLeTou.getId());
-            daLeTouService.update(addDaLeTou);
-        }
-
-        // 清除缓存,以防缓存中数据过时
-        cacheManager.getCache(CacheNameConstant.DATA_DA_LE_TOU_LIST).evict(addDaLeTou.getQihao());
-
         // 设置上下文
         Map<String, Object> context = ScheduleTaskLogAspect.scheduleTaskContextThreadLocal.get().getContext();
         context.put(CONTEXT_QIHAO, addDaLeTou.getQihao());
@@ -116,4 +100,43 @@ public class DaLeTouTask extends AbstractHzApiTask {
         templateData.setPagePath(pagePath);
         return templateData;
     }
+
+    /**
+     * 首次查询时数据可能不完整,需要定时刷新
+     */
+    public DataDaLeTou refreshData() {
+        log.info("======= 大乐透定时任务 刷新中奖数据 开始 =======");
+
+        // 拉取数据
+        HzApiRequest request = buildCommonRequest();
+        DaLeTouResponse daLeTouResponse = hzApiFeign.getDaLeTou(request);
+        if (Objects.isNull(daLeTouResponse)) {
+            log.warn("拉取大乐透数据失败,返回结果对象为空");
+            return null;
+        }
+        if (!HzApiStatusEnum.SUCCESS.getCode().equals(daLeTouResponse.getCode())) {
+            log.warn("拉取大乐透数据失败,接口盒子返回错误信息:{}", daLeTouResponse.getMsg());
+            return null;
+        }
+
+        // 获取历史数据
+        DataDaLeTou oldDataDaLeTou = daLeTouService.getByDrawDate(daLeTouResponse.getQihao());
+
+        // 数据入库
+        DataDaLeTou addDaLeTou = new DataDaLeTou();
+        BeanUtils.copyProperties(daLeTouResponse, addDaLeTou);
+        if (Objects.isNull(oldDataDaLeTou)) {
+            daLeTouService.insert(addDaLeTou);
+        } else {
+            addDaLeTou.setId(oldDataDaLeTou.getId());
+            daLeTouService.update(addDaLeTou);
+        }
+
+        // 清除缓存,以防缓存中数据过时
+        cacheManager.getCache(CacheNameConstant.DATA_DA_LE_TOU_LIST).evict(addDaLeTou.getQihao());
+
+        log.info("======= 大乐透定时任务 刷新中奖数据 结束 =======");
+
+        return addDaLeTou;
+    }
 }

+ 49 - 27
data-easy/src/main/java/com/dataeasy/server/task/ShuangSeQiuTask.java

@@ -51,44 +51,29 @@ public class ShuangSeQiuTask extends AbstractHzApiTask {
     private IDataShuangSeQiuService shuangSeQiuService;
 
     @Scheduled(cron = "0 35 21 * * 2,4,7")
-    @Scheduled(cron = "0 0 0,6,12 * * 3,5,1")
     public void execute() {
         super.execute();
     }
 
+    /**
+     * 首次查询时数据可能不完整,需要定时刷新
+     */
+    @Scheduled(cron = "0 0 0,6,12 * * 3,5,1")
+    public void refreshDataExecute() {
+        refreshData();
+    }
+
     @Override
     public boolean fetchData() {
-        // 拉取数据
-        HzApiRequest request = buildCommonRequest();
-        ShuangSeQiuResponse shuangSeQiuResponse = hzApiFeign.getShuangSeQiu(request);
-        if (Objects.isNull(shuangSeQiuResponse)) {
-            log.warn("拉取双色球数据失败,返回结果对象为空");
-            return false;
-        }
-        if (!HzApiStatusEnum.SUCCESS.getCode().equals(shuangSeQiuResponse.getCode())) {
-            log.warn("拉取双色球数据失败,接口盒子返回错误信息:{}", shuangSeQiuResponse.getMsg());
+        DataShuangSeQiu dataShuangSeQiu = refreshData();
+        if (Objects.isNull(dataShuangSeQiu)) {
             return false;
         }
 
-        DataShuangSeQiu oldDataShuangSeQiu = shuangSeQiuService.getByDrawDate(shuangSeQiuResponse.getQihao());
-
-        // 数据入库
-        DataShuangSeQiu addShuangSeQiu = new DataShuangSeQiu();
-        BeanUtils.copyProperties(shuangSeQiuResponse, addShuangSeQiu);
-        if (Objects.isNull(oldDataShuangSeQiu)) {
-            shuangSeQiuService.insert(addShuangSeQiu);
-        } else {
-            addShuangSeQiu.setId(oldDataShuangSeQiu.getId());
-            shuangSeQiuService.update(addShuangSeQiu);
-        }
-
-        // 清除缓存,以防缓存中数据过时
-        cacheManager.getCache(CacheNameConstant.DATA_SHUANG_SE_QIU_LIST).evict(addShuangSeQiu.getQihao());
-
         // 设置上下文
         Map<String, Object> context = ScheduleTaskLogAspect.scheduleTaskContextThreadLocal.get().getContext();
-        context.put(CONTEXT_QIHAO, addShuangSeQiu.getQihao());
-        context.put(CONTEXT_TIME, addShuangSeQiu.getTime());
+        context.put(CONTEXT_QIHAO, dataShuangSeQiu.getQihao());
+        context.put(CONTEXT_TIME, dataShuangSeQiu.getTime());
 
         return true;
     }
@@ -115,4 +100,41 @@ public class ShuangSeQiuTask extends AbstractHzApiTask {
         templateData.setPagePath(pagePath);
         return templateData;
     }
+
+    /**
+     * 首次查询时数据可能不完整,需要定时刷新
+     */
+    public DataShuangSeQiu refreshData() {
+        log.info("======= 双色球定时任务 刷新中奖数据 开始 =======");
+        // 拉取数据
+        HzApiRequest request = buildCommonRequest();
+        ShuangSeQiuResponse shuangSeQiuResponse = hzApiFeign.getShuangSeQiu(request);
+        if (Objects.isNull(shuangSeQiuResponse)) {
+            log.warn("拉取双色球数据失败,返回结果对象为空");
+            return null;
+        }
+        if (!HzApiStatusEnum.SUCCESS.getCode().equals(shuangSeQiuResponse.getCode())) {
+            log.warn("拉取双色球数据失败,接口盒子返回错误信息:{}", shuangSeQiuResponse.getMsg());
+            return null;
+        }
+
+        DataShuangSeQiu oldDataShuangSeQiu = shuangSeQiuService.getByDrawDate(shuangSeQiuResponse.getQihao());
+
+        // 数据入库
+        DataShuangSeQiu addShuangSeQiu = new DataShuangSeQiu();
+        BeanUtils.copyProperties(shuangSeQiuResponse, addShuangSeQiu);
+        if (Objects.isNull(oldDataShuangSeQiu)) {
+            shuangSeQiuService.insert(addShuangSeQiu);
+        } else {
+            addShuangSeQiu.setId(oldDataShuangSeQiu.getId());
+            shuangSeQiuService.update(addShuangSeQiu);
+        }
+
+        // 清除缓存,以防缓存中数据过时
+        cacheManager.getCache(CacheNameConstant.DATA_SHUANG_SE_QIU_LIST).evict(addShuangSeQiu.getQihao());
+
+        log.info("======= 双色球定时任务 刷新中奖数据 结束 =======");
+
+        return addShuangSeQiu;
+    }
 }