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() {
|
public void sendExpireNotification() {
|
||||||
log.info("开始执行定时任务");
|
log.info("开始执行定时任务");
|
||||||
// 用于记录已发送通知的用户ID,避免重复发送
|
// 用于记录已发送通知的用户ID,避免重复发送
|
||||||
@@ -143,6 +143,56 @@ public class DownloadNotificationTasker {
|
|||||||
WechatSubscribeNotifyTriggerResult result = notifyTriggerService.trigger("EXPIRE_NOTIFY", request);
|
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 * * * *")
|
@Scheduled(cron = "0 0 * * * *")
|
||||||
public void sendExtraDownloadNotification() {
|
public void sendExtraDownloadNotification() {
|
||||||
|
|||||||
Reference in New Issue
Block a user