From ddb70a599a2d0dae793156566ad98bea619291a6 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Tue, 3 Feb 2026 11:13:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=96=B0=E5=A2=9E=E5=88=86=E5=B8=83=E5=BC=8F=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/dynamic/DynamicServiceImpl.java | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/dynamic/DynamicServiceImpl.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/dynamic/DynamicServiceImpl.java index 5cb5b9cf..270b6424 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/dynamic/DynamicServiceImpl.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/dynamic/DynamicServiceImpl.java @@ -34,6 +34,8 @@ import com.red.circle.other.app.dto.clientobject.dynamic.*; import com.red.circle.other.app.dto.cmd.dynamic.*; import java.util.List; + +import com.red.circle.other.app.util.DistributedLockUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -75,15 +77,26 @@ public class DynamicServiceImpl implements DynamicService { private final DynamicCheckSendPermissionCmdExe dynamicCheckSendPermissionCmdExe; private final DynamicBlacklistAddCmdExe dynamicBlacklistAddCmdExe; private final DynamicBlacklistDelCmdExe dynamicBlacklistDelCmdExe; + private final DistributedLockUtil distributedLockUtil; + + private static final String LIKE_LOCK_PREFIX = "dynamic:like:lock"; + private static final String COMMENT_LIKE_LOCK_PREFIX = "dynamic:comment:like:lock"; + private static final String COMMENT_LOCK_PREFIX = "dynamic:comment:lock"; + private static final String CREATE_LOCK_PREFIX = "dynamic:create:lock"; + private static final String DELETE_LOCK_PREFIX = "dynamic:delete:lock"; + private static final String DELETE_COMMENT_LOCK_PREFIX = "dynamic:comment:delete:lock"; + private static final String REPORT_LOCK_PREFIX = "dynamic:report:lock"; @Override public DynamicListCO createDynamic(DynamicContentAddCmd cmd) { - return dynamicContentAddCmdExe.execute(cmd); + String lockKey = DistributedLockUtil.buildLockKey(CREATE_LOCK_PREFIX, cmd.getReqUserId()); + return distributedLockUtil.executeWithLock(lockKey, () -> dynamicContentAddCmdExe.execute(cmd)); } @Override public void deleteDynamic(IdLongCmd cmd) { - dynamicContentDelExe.execute(cmd); + String lockKey = DistributedLockUtil.buildLockKey(DELETE_LOCK_PREFIX, cmd.getReqUserId(), cmd.getId()); + distributedLockUtil.executeWithLock(lockKey, () -> dynamicContentDelExe.execute(cmd)); } @Override @@ -143,22 +156,26 @@ public class DynamicServiceImpl implements DynamicService { @Override public Long deleteComment(AppIdLongCmd cmd) { - return dynamicCommentDelExe.execute(cmd); + String lockKey = DistributedLockUtil.buildLockKey(DELETE_COMMENT_LOCK_PREFIX, cmd.getReqUserId(), cmd.getId()); + return distributedLockUtil.executeWithLock(lockKey, () -> dynamicCommentDelExe.execute(cmd)); } @Override public DynamicCommentListCO comment(DynamicCommentCmd cmd) { - return dynamicCommentExe.execute(cmd); + String lockKey = DistributedLockUtil.buildLockKey(COMMENT_LOCK_PREFIX, cmd.getReqUserId(), cmd.getId()); + return distributedLockUtil.executeWithLock(lockKey, () -> dynamicCommentExe.execute(cmd)); } @Override public Long likeComment(DynamicLikeCmd cmd) { - return dynamicCommentLikeExe.execute(cmd); + String lockKey = DistributedLockUtil.buildLockKey(COMMENT_LIKE_LOCK_PREFIX, cmd.getReqUserId(), cmd.getCommentId()); + return distributedLockUtil.executeWithLock(lockKey, () -> dynamicCommentLikeExe.execute(cmd)); } @Override public Long likeDynamic(DynamicLikeCmd cmd) { - return dynamicLikeExe.execute(cmd); + String lockKey = DistributedLockUtil.buildLockKey(LIKE_LOCK_PREFIX, cmd.getReqUserId(), cmd.getDynamicId()); + return distributedLockUtil.executeWithLock(lockKey, () -> dynamicLikeExe.execute(cmd)); } @Override @@ -188,7 +205,8 @@ public class DynamicServiceImpl implements DynamicService { @Override public void report(DynamicReportCmd cmd) { - dynamicReportCmdExe.execute(cmd); + String lockKey = DistributedLockUtil.buildLockKey(REPORT_LOCK_PREFIX, cmd.getReqUserId(), cmd.getDynamicContentId()); + distributedLockUtil.executeWithLock(lockKey, () -> dynamicReportCmdExe.execute(cmd)); } @Override