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.repository.TemplateRepository;
|
||||||
import com.ycwl.basic.utils.SnowFlakeUtil;
|
import com.ycwl.basic.utils.SnowFlakeUtil;
|
||||||
import com.ycwl.basic.utils.VideoReUploader;
|
import com.ycwl.basic.utils.VideoReUploader;
|
||||||
|
import com.ycwl.basic.utils.NotificationAuthUtils;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -130,6 +131,8 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
private MemberRelationRepository memberRelationRepository;
|
private MemberRelationRepository memberRelationRepository;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ZtMessageProducerService ztMessageProducerService;
|
private ZtMessageProducerService ztMessageProducerService;
|
||||||
|
@Autowired
|
||||||
|
private NotificationAuthUtils notificationAuthUtils;
|
||||||
|
|
||||||
private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) {
|
private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) {
|
||||||
String accessKey = req.getAccessKey();
|
String accessKey = req.getAccessKey();
|
||||||
@@ -642,6 +645,13 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
log.warn("未配置视频生成通知模板");
|
log.warn("未配置视频生成通知模板");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查并消费通知授权
|
||||||
|
if (!notificationAuthUtils.checkAndConsumeAuthorization(memberId, templateId, item.getScenicId())) {
|
||||||
|
log.debug("用户[memberId={}]对模板[templateId={}]授权不足,跳过视频生成通知", memberId, templateId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId());
|
ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId());
|
||||||
ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(item.getScenicId());
|
ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(item.getScenicId());
|
||||||
String configTitle = configManager.getString("first_notification_title");
|
String configTitle = configManager.getString("first_notification_title");
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
|
|||||||
import com.ycwl.basic.repository.ScenicRepository;
|
import com.ycwl.basic.repository.ScenicRepository;
|
||||||
import com.ycwl.basic.repository.TemplateRepository;
|
import com.ycwl.basic.repository.TemplateRepository;
|
||||||
import com.ycwl.basic.integration.common.manager.ScenicConfigManager;
|
import com.ycwl.basic.integration.common.manager.ScenicConfigManager;
|
||||||
|
import com.ycwl.basic.utils.NotificationAuthUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -50,6 +51,8 @@ public class DownloadNotificationTasker {
|
|||||||
private CouponMapper couponMapper;
|
private CouponMapper couponMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ZtMessageProducerService ztMessageProducerService;
|
private ZtMessageProducerService ztMessageProducerService;
|
||||||
|
@Autowired
|
||||||
|
private NotificationAuthUtils notificationAuthUtils;
|
||||||
|
|
||||||
@Scheduled(cron = "0 0 21 * * *")
|
@Scheduled(cron = "0 0 21 * * *")
|
||||||
public void sendDownloadNotification() {
|
public void sendDownloadNotification() {
|
||||||
@@ -75,6 +78,13 @@ public class DownloadNotificationTasker {
|
|||||||
log.info("模板消息为空");
|
log.info("模板消息为空");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查并消费通知授权
|
||||||
|
if (!notificationAuthUtils.checkAndConsumeAuthorization(item.getMemberId(), templateId, item.getScenicId())) {
|
||||||
|
log.debug("用户[memberId={}]对模板[templateId={}]授权不足,跳过下载通知", item.getMemberId(), templateId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId());
|
ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId());
|
||||||
ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(item.getScenicId());
|
ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(item.getScenicId());
|
||||||
String configTitle = configManager.getString("second_notification_title");
|
String configTitle = configManager.getString("second_notification_title");
|
||||||
@@ -147,6 +157,13 @@ public class DownloadNotificationTasker {
|
|||||||
log.info("模板消息为空");
|
log.info("模板消息为空");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查并消费通知授权
|
||||||
|
if (!notificationAuthUtils.checkAndConsumeAuthorization(item.getMemberId(), templateId, item.getScenicId())) {
|
||||||
|
log.debug("用户[memberId={}]对模板[templateId={}]授权不足,跳过过期提醒通知", item.getMemberId(), templateId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId());
|
ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId());
|
||||||
ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(item.getScenicId());
|
ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(item.getScenicId());
|
||||||
String configTitle = configManager.getString("third_notification_title");
|
String configTitle = configManager.getString("third_notification_title");
|
||||||
@@ -242,6 +259,13 @@ public class DownloadNotificationTasker {
|
|||||||
log.info("模板消息为空");
|
log.info("模板消息为空");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查并消费通知授权
|
||||||
|
if (!notificationAuthUtils.checkAndConsumeAuthorization(item.getMemberId(), templateId, item.getScenicId())) {
|
||||||
|
log.debug("用户[memberId={}]对模板[templateId={}]授权不足,跳过额外下载通知", item.getMemberId(), templateId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(scenicId);
|
ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(scenicId);
|
||||||
String configTitle = configManager.getString("second_notification_title");
|
String configTitle = configManager.getString("second_notification_title");
|
||||||
String configContent = configManager.getString("second_notification_content");
|
String configContent = configManager.getString("second_notification_content");
|
||||||
|
|||||||
Reference in New Issue
Block a user