From c194c169bee0dcc3aea38c77b230e75332c12030 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 11 Sep 2025 22:34:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor(task):=20=E9=87=8D=E6=9E=84=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E9=80=9A=E7=9F=A5=E4=BB=BB=E5=8A=A1=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 ScenicConfigManager 用于获取景区配置信息 - 根据景区配置动态生成通知标题和内容 - 优化了第二次和第三次通知的处理逻辑 - 移除了优惠券相关查询,简化了代码结构 --- .../task/impl/TaskTaskServiceImpl.java | 13 +++- .../task/DownloadNotificationTasker.java | 60 +++++++++++-------- 2 files changed, 45 insertions(+), 28 deletions(-) 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 6468ef74..fa0e598b 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 @@ -648,7 +648,16 @@ public class TaskTaskServiceImpl implements TaskService { return; } ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId()); - String title = "您在【" + scenic.getName() + "】的专属影像"; + 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 = "pages/videoSynthesis/index?type=1&scenicId=" + item.getScenicId() + "&faceId=" + item.getFaceId(); /** * 视频名称 {{thing1.DATA}} @@ -664,7 +673,7 @@ public class TaskTaskServiceImpl implements TaskService { timeMap2.put("value", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm")); dataParam.put("time4", timeMap2); Map remarkMap = new HashMap<>(); - remarkMap.put("value", "请及时查看视频,48小时后系统删除"); + remarkMap.put("value", configContent); dataParam.put("thing3", remarkMap); params.put("data", dataParam); params.put("page", page); diff --git a/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java b/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java index 8936eebb..c15fc6a7 100644 --- a/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java +++ b/src/main/java/com/ycwl/basic/task/DownloadNotificationTasker.java @@ -18,6 +18,7 @@ import com.ycwl.basic.notify.entity.NotifyContent; import com.ycwl.basic.notify.enums.NotifyType; import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.repository.TemplateRepository; +import com.ycwl.basic.integration.common.manager.ScenicConfigManager; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -65,7 +66,16 @@ public class DownloadNotificationTasker { } log.info("发送模板消息"); ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId()); - String title = "您在【" + scenic.getName() + "】的专属影像"; + 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 = "pages/videoSynthesis/index?type=2&scenicId=" + item.getScenicId() + "&faceId=" + item.getFaceId(); /** * 景区 {{thing1.DATA}} @@ -77,17 +87,7 @@ public class DownloadNotificationTasker { videoMap.put("value", title); dataParam.put("thing1", videoMap); Map remarkMap = new HashMap<>(); - // 查询是否有优惠券可用,如果有,则显示优惠券配置的内容 - CouponQueryReq query = new CouponQueryReq(); - query.setScenicId(item.getScenicId()); - query.setType(2); - query.setStatus(1); - List coupons = couponMapper.selectByQuery(query); - if (coupons.isEmpty() || StringUtils.isBlank(coupons.getFirst().getBroadcast())) { - remarkMap.put("value", "系统删除前,请下载好您的旅行视频"); - } else { - remarkMap.put("value", coupons.getFirst().getBroadcast()); - } + remarkMap.put("value", configContent); dataParam.put("thing3", remarkMap); params.put("data", dataParam); params.put("page", page); @@ -121,7 +121,16 @@ public class DownloadNotificationTasker { } log.info("发送模板消息"); ScenicEntity scenic = scenicRepository.getScenic(item.getScenicId()); - String title = "您在【" + scenic.getName() + "】的专属影像"; + 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 = "pages/videoSynthesis/index?type=3&scenicId=" + item.getScenicId() + "&faceId=" + item.getFaceId(); /** * 影像名称 {{thing1.DATA}} @@ -138,17 +147,7 @@ public class DownloadNotificationTasker { dateMap.put("value", DateUtil.format(expireDate, "yyyy-MM-dd HH:mm")); dataParam.put("time2", dateMap); Map remarkMap = new HashMap<>(); - // 查询是否有优惠券可用,如果有,则显示优惠券配置的内容 - CouponQueryReq query = new CouponQueryReq(); - query.setScenicId(item.getScenicId()); - query.setType(3); - query.setStatus(1); - List coupons = couponMapper.selectByQuery(query); - if (coupons.isEmpty() || StringUtils.isBlank(coupons.getFirst().getBroadcast())) { - remarkMap.put("value", "视频即将删除,花点小钱买下回忆"); - } else { - remarkMap.put("value", coupons.getFirst().getBroadcast()); - } + remarkMap.put("value", configContent); dataParam.put("thing3", remarkMap); params.put("data", dataParam); params.put("page", page); @@ -201,8 +200,17 @@ public class DownloadNotificationTasker { log.info("模板消息为空"); 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; + } + log.info("发送模板消息"); - String title = "您在【" + scenic.getName() + "】的专属影像"; + String title = configTitle.replace("【景区】", scenic.getName()); String page = "pages/videoSynthesis/index?type=2&scenicId=" + item.getScenicId() + "&faceId=" + item.getFaceId(); /** * 景区 {{thing1.DATA}} @@ -214,7 +222,7 @@ public class DownloadNotificationTasker { videoMap.put("value", title); dataParam.put("thing1", videoMap); Map remarkMap = new HashMap<>(); - remarkMap.put("value", "请及时购买并下载好您的旅行视频"); + remarkMap.put("value", configContent); dataParam.put("thing3", remarkMap); params.put("data", dataParam); params.put("page", page);