chore(task):

This commit is contained in:
2026-01-20 20:28:22 +08:00
parent 6c305f4cd1
commit 00bf4b5a8b

View File

@@ -93,7 +93,7 @@ public class DownloadNotificationTasker {
});
}
@Scheduled(cron = "0 0 20 * * *")
@Scheduled(cron = "0 0 19 * * *")
public void sendExpireNotification() {
log.info("开始执行定时任务");
// 用于记录已发送通知的用户ID,避免重复发送
@@ -143,6 +143,56 @@ public class DownloadNotificationTasker {
WechatSubscribeNotifyTriggerResult result = notifyTriggerService.trigger("EXPIRE_NOTIFY", request);
});
}
@Scheduled(cron = "0 0 19 * * *")
public void sendPreExpireNotification() {
log.info("开始执行定时任务");
// 用于记录已发送通知的用户ID,避免重复发送
Set<Long> sentMemberIds = ConcurrentHashMap.newKeySet();
videoMapper.listRelationByCreateTime(new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000), new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000))
.forEach(item -> {
if (item.getIsBuy() == 1) {
return;
}
// 检查该用户是否已经发送过通知,避免重复发送
if (sentMemberIds.contains(item.getMemberId())) {
log.debug("用户[memberId={}]已发送过过期提醒通知,跳过", item.getMemberId());
return;
}
sentMemberIds.add(item.getMemberId());
MemberRespVO member = memberMapper.getById(item.getMemberId());
ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(item.getScenicId());
Integer videoStoreDay = scenicConfig.getInteger("video_store_day");
if (videoStoreDay == null) {
videoStoreDay = 3;
}
Date expireDate = new Date(item.getCreateTime().getTime() + videoStoreDay * 24 * 60 * 60 * 1000);
// 发送模板消息
HashMap<String, Object> variables = new HashMap<>();
ScenicV2DTO scenic = scenicRepository.getScenicBasic(item.getScenicId());
variables.put("scenicName", scenic.getName());
variables.put("scenicId", scenic.getId());
variables.put("faceId", item.getFaceId());
ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(item.getScenicId());
if (configManager.getBoolean("grouping_enable", false)) {
variables.put("videoResultPage", "travelVideoCenter");
} else {
variables.put("videoResultPage", "videoSynthesis");
}
variables.put("expireDate", DateUtil.format(expireDate, "yyyy-MM-dd"));
variables.put("videoDeviceCount", videoTaskRepository.getTaskDeviceNum(item.getTaskId()));
variables.put("videoLensCount", videoTaskRepository.getTaskLensNum(item.getTaskId()));
variables.put("videoShotTime", DateUtil.format(videoTaskRepository.getTaskShotDate(item.getTaskId()), "yyyy-MM-dd HH:mm"));
WechatSubscribeNotifyTriggerRequest request = WechatSubscribeNotifyTriggerRequest.builder()
.scenicId(item.getScenicId())
.memberId(item.getMemberId())
.openId(member.getOpenId())
.bizId(String.valueOf(item.getId()))
.variables(variables)
.build();
WechatSubscribeNotifyTriggerResult result = notifyTriggerService.trigger("VIDEO_PRE_EXPIRE", request);
});
}
@Scheduled(cron = "0 0 * * * *")
public void sendExtraDownloadNotification() {