| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package com.dataeasy.server.task;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- import java.util.Objects;
- import com.dataeasy.server.atomic.entity.SubscriptionTaskConfig;
- import com.dataeasy.server.pojo.task.ScheduleTaskContext;
- import com.dataeasy.server.pojo.task.TemplateData;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import com.dataeasy.server.atomic.entity.DataDaLeTou;
- import com.dataeasy.server.atomic.service.IDataDaLeTouService;
- import com.dataeasy.server.common.annotation.ScheduleTask;
- import com.dataeasy.server.constant.CacheNameConstant;
- import com.dataeasy.server.constant.HzApiStatusEnum;
- import com.dataeasy.server.constant.ScheduleTaskEnum;
- import com.dataeasy.server.core.aop.ScheduleTaskLogAspect;
- import com.dataeasy.server.feign.dto.hzapi.DaLeTouResponse;
- import com.dataeasy.server.feign.dto.hzapi.HzApiRequest;
- import lombok.extern.slf4j.Slf4j;
- import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
- /**
- * @author tyuio
- * @version 1.0.0
- * @description 大乐透定时任务,执行时间:每周一、三、六,晚上21:45
- * @date 2025/3/6 20:19
- */
- @Slf4j
- @Component
- @ScheduleTask(ScheduleTaskEnum.DA_LE_TOU)
- public class DaLeTouTask extends AbstractHzApiTask {
- /**
- * 开奖期号
- */
- private static final String CONTEXT_QIHAO = "qihao";
- /**
- * 开奖时间
- */
- private static final String CONTEXT_TIME = "time";
- @Autowired
- private IDataDaLeTouService daLeTouService;
- @Scheduled(cron = "0 45 21 * * 1,3,6")
- public void execute() {
- super.execute();
- }
- @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());
- return false;
- }
- // 删除历史数据数据,以防重复执行导致数据重复引发系统异常
- daLeTouService.deleteByQihao(daLeTouResponse.getQihao());
- // 数据入库
- DataDaLeTou addDaLeTou = new DataDaLeTou();
- BeanUtils.copyProperties(daLeTouResponse, addDaLeTou);
- daLeTouService.insert(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());
- context.put(CONTEXT_TIME, addDaLeTou.getTime());
- return true;
- }
- @Override
- public TemplateData getTemplateMessage() {
- ScheduleTaskContext scheduleTaskContext = ScheduleTaskLogAspect.scheduleTaskContextThreadLocal.get();
- // 获取上下文
- Map<String, Object> context = scheduleTaskContext.getContext();
- String drwaDate = (String) context.get(CONTEXT_QIHAO);
- String drawTime = (String) context.get(CONTEXT_TIME);
- // 获取任务配置并构建完整页面路径
- SubscriptionTaskConfig subscriptionTaskConfig = scheduleTaskContext.getSubscriptionTaskConfig();
- String pagePath = String.format("%s?drawDate=%s", subscriptionTaskConfig.getPagePath(), drwaDate);
- // 模板所需数据
- List<WxMpTemplateData> templateDataList = new ArrayList();
- templateDataList.add(new WxMpTemplateData("thing76", String.format("大乐透开奖结果-%s期", drwaDate)));
- templateDataList.add(new WxMpTemplateData("time4", drawTime));
- TemplateData templateData = new TemplateData();
- templateData.setTemplateMessage(templateDataList);
- templateData.setPagePath(pagePath);
- return templateData;
- }
- }
|