You've already forked FrameTour-BE
chore(task):
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user