You've already forked FrameTour-BE
feat(notification): 引入通知授权检查机制
- 在任务服务中集成通知授权工具类 - 实现视频生成通知前的权限校验逻辑- 在下载通知任务中增加授权消费检查- 添加过期提醒及额外下载通知的权限控制 - 完善无授权时的日志记录与处理流程
This commit is contained in:
@@ -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)) {
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user