From d5cd1924f5ce1e487980a24d7d9da65c09b79b72 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 15 Oct 2025 18:43:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(task):=20=E6=B7=BB=E5=8A=A0=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E7=94=9F=E6=88=90=E9=80=9A=E7=9F=A5=E9=98=B2=E9=87=8D?= =?UTF-8?q?=E6=9C=BA=E5=88=B6-=20=E6=96=B0=E5=A2=9ERedis=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E9=94=AEVIDEO=5FNOTIFICATION=5FCACHE=5FKEY=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E9=80=9A=E7=9F=A5=E5=8F=91=E9=80=81=E7=8A=B6?= =?UTF-8?q?=E6=80=81=20-=20=E8=AE=BE=E7=BD=AE=E9=80=9A=E7=9F=A5=E5=8F=91?= =?UTF-8?q?=E9=80=81=E9=97=B4=E9=9A=94=E4=B8=BA2=E5=88=86=E9=92=9F?= =?UTF-8?q?=EF=BC=8C=E9=98=B2=E6=AD=A2=E9=87=8D=E5=A4=8D=E5=8F=91=E9=80=81?= =?UTF-8?q?=20-=20=E5=9C=A8=E5=8F=91=E9=80=81=E9=80=9A=E7=9F=A5=E5=89=8D?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E7=BC=93=E5=AD=98=EF=BC=8C=E8=8B=A53?= =?UTF-8?q?=E5=88=86=E9=92=9F=E5=86=85=E5=B7=B2=E5=8F=91=E9=80=81=E5=88=99?= =?UTF-8?q?=E8=B7=B3=E8=BF=87-=20=E5=8F=91=E9=80=81=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E5=90=8E=E6=9B=B4=E6=96=B0Redis=E7=BC=93=E5=AD=98=E5=B9=B6?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E8=BF=87=E6=9C=9F=E6=97=B6=E9=97=B4=20-=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9B=B8=E5=85=B3=E6=97=A5=E5=BF=97=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E4=BB=A5=E6=96=B9=E4=BE=BF=E8=BF=BD=E8=B8=AA=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E5=8F=91=E9=80=81=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/task/impl/TaskTaskServiceImpl.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 ce47643f..56cce4c6 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 @@ -81,7 +81,9 @@ import java.util.stream.Collectors; @Service public class TaskTaskServiceImpl implements TaskService { private static final String WORKER_SELF_HOSTED_CACHE_KEY = "worker_self_hosted_scenic:%s"; + private static final String VIDEO_NOTIFICATION_CACHE_KEY = "video_notification_member:%s"; private static final int CACHE_EXPIRE_MINUTES = 3; + private static final int NOTIFICATION_CACHE_EXPIRE_MINUTES = 2; @Autowired private TaskMapper taskMapper; @Autowired @@ -621,6 +623,15 @@ public class TaskTaskServiceImpl implements TaskService { @Override public void sendVideoGeneratedServiceNotification(Long taskId, Long memberId) { + // 检查Redis中该memberId是否在3分钟内已发送过通知 + String notificationCacheKey = String.format(VIDEO_NOTIFICATION_CACHE_KEY, memberId); + String cachedValue = redisTemplate.opsForValue().get(notificationCacheKey); + + if (cachedValue != null) { + log.info("memberId:{} 在3分钟内已发送过通知,跳过本次发送", memberId); + return; + } + MemberVideoEntity item = videoMapper.queryRelationByMemberTask(memberId, taskId); MemberRespVO member = memberMapper.getById(memberId); String openId = member.getOpenId(); @@ -673,6 +684,10 @@ public class TaskTaskServiceImpl implements TaskService { msg.setSendReason("视频生成通知"); msg.setSendBiz("视频生成"); ztMessageProducerService.send(msg); + + // 发送成功后,设置Redis缓存,2分钟过期 + redisTemplate.opsForValue().set(notificationCacheKey, String.valueOf(System.currentTimeMillis()), NOTIFICATION_CACHE_EXPIRE_MINUTES, TimeUnit.MINUTES); + log.debug("memberId:{} 通知发送成功,已设置{}分钟缓存", memberId, NOTIFICATION_CACHE_EXPIRE_MINUTES); } }