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