diff --git a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java index 56cce4c6..ecd3a236 100644 --- a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java @@ -57,6 +57,7 @@ import com.ycwl.basic.task.VideoPieceGetter; import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.utils.SnowFlakeUtil; import com.ycwl.basic.utils.VideoReUploader; +import com.ycwl.basic.utils.NotificationAuthUtils; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -130,6 +131,8 @@ public class TaskTaskServiceImpl implements TaskService { private MemberRelationRepository memberRelationRepository; @Autowired private ZtMessageProducerService ztMessageProducerService; + @Autowired + private NotificationAuthUtils notificationAuthUtils; private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) { String accessKey = req.getAccessKey(); @@ -642,16 +645,23 @@ public class TaskTaskServiceImpl implements TaskService { log.warn("未配置视频生成通知模板"); return; } + + // 检查并消费通知授权 + if (!notificationAuthUtils.checkAndConsumeAuthorization(memberId, templateId, item.getScenicId())) { + log.debug("用户[memberId={}]对模板[templateId={}]授权不足,跳过视频生成通知", memberId, templateId); + return; + } + ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId()); ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(item.getScenicId()); String configTitle = configManager.getString("first_notification_title"); String configContent = configManager.getString("first_notification_content"); - + if (StringUtils.isBlank(configTitle) || StringUtils.isBlank(configContent)) { log.info("景区[{}]未配置第一次通知内容,跳过发送通知", scenic.getName()); return; } - + String title = configTitle.replace("【景区】", scenic.getName()); String page; if (configManager.getBoolean("grouping_enable", false)) { diff --git a/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java b/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java index 69efea7c..78e25ec9 100644 --- a/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java +++ b/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java @@ -17,6 +17,7 @@ import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery; import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.repository.TemplateRepository; import com.ycwl.basic.integration.common.manager.ScenicConfigManager; +import com.ycwl.basic.utils.NotificationAuthUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -50,6 +51,8 @@ public class DownloadNotificationTasker { private CouponMapper couponMapper; @Autowired private ZtMessageProducerService ztMessageProducerService; + @Autowired + private NotificationAuthUtils notificationAuthUtils; @Scheduled(cron = "0 0 21 * * *") public void sendDownloadNotification() { @@ -75,16 +78,23 @@ public class DownloadNotificationTasker { log.info("模板消息为空"); return; } + + // 检查并消费通知授权 + if (!notificationAuthUtils.checkAndConsumeAuthorization(item.getMemberId(), templateId, item.getScenicId())) { + log.debug("用户[memberId={}]对模板[templateId={}]授权不足,跳过下载通知", item.getMemberId(), templateId); + return; + } + ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId()); ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(item.getScenicId()); String configTitle = configManager.getString("second_notification_title"); String configContent = configManager.getString("second_notification_content"); - + if (StringUtils.isBlank(configTitle) || StringUtils.isBlank(configContent)) { log.info("景区[{}]未配置第二次通知内容,跳过发送通知", scenic.getName()); return; } - + String title = configTitle.replace("【景区】", scenic.getName()); String page; if (configManager.getBoolean("grouping_enable", false)) { @@ -147,16 +157,23 @@ public class DownloadNotificationTasker { log.info("模板消息为空"); return; } + + // 检查并消费通知授权 + if (!notificationAuthUtils.checkAndConsumeAuthorization(item.getMemberId(), templateId, item.getScenicId())) { + log.debug("用户[memberId={}]对模板[templateId={}]授权不足,跳过过期提醒通知", item.getMemberId(), templateId); + return; + } + ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId()); ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(item.getScenicId()); String configTitle = configManager.getString("third_notification_title"); String configContent = configManager.getString("third_notification_content"); - + if (StringUtils.isBlank(configTitle) || StringUtils.isBlank(configContent)) { log.info("景区[{}]未配置第三次通知内容,跳过发送通知", scenic.getName()); return; } - + String title = configTitle.replace("【景区】", scenic.getName()); String page; if (configManager.getBoolean("grouping_enable", false)) { @@ -242,15 +259,22 @@ public class DownloadNotificationTasker { log.info("模板消息为空"); return; } + + // 检查并消费通知授权 + if (!notificationAuthUtils.checkAndConsumeAuthorization(item.getMemberId(), templateId, item.getScenicId())) { + log.debug("用户[memberId={}]对模板[templateId={}]授权不足,跳过额外下载通知", item.getMemberId(), templateId); + return; + } + ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(scenicId); String configTitle = configManager.getString("second_notification_title"); String configContent = configManager.getString("second_notification_content"); - + if (StringUtils.isBlank(configTitle) || StringUtils.isBlank(configContent)) { log.info("景区[{}]未配置第一次通知内容,跳过发送通知", scenic.getName()); return; } - + String title = configTitle.replace("【景区】", scenic.getName()); String page; if (configManager.getBoolean("grouping_enable", false)) {