diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/family/FamilyMessageHandleExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/family/FamilyMessageHandleExe.java index 5a066265..48f38c7c 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/family/FamilyMessageHandleExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/family/FamilyMessageHandleExe.java @@ -75,6 +75,7 @@ public class FamilyMessageHandleExe { Integer familyCurrentMemberCount = getMemberCount(levelConfig); if (familyCurrentMemberCount >= levelConfig.getMaxMember()) { + familyMessageService.rejectFamilyPendingMessages(msg.getFamilyId()); ResponseAssert.failure(FamilyErrorCode.FAMILY_MEMBER_MAX); return; } @@ -82,9 +83,13 @@ public class FamilyMessageHandleExe { updateMsg(cmd, msg, FamilyMessageStatusEnum.APPROVED); userJoinFamily(cmd, msg, levelConfig); - //取消其他申请记录 familyMessageService.cancelUserPendingMessages(msg.getSenderUser()); + Integer newMemberCount = getMemberCount(levelConfig); + if (newMemberCount >= levelConfig.getMaxMember()) { + familyMessageService.rejectFamilyPendingMessages(msg.getFamilyId()); + } + sendNotification(msg.getSenderUser(), true); } diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/family/FamilyMessageService.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/family/FamilyMessageService.java index bdd161e8..cfa58cfa 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/family/FamilyMessageService.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/family/FamilyMessageService.java @@ -26,4 +26,6 @@ public interface FamilyMessageService extends BaseService { void cancelUserPendingMessages(Long userId); void cancelMessageIfUserJoined(Long messageId, Long userId); + + void rejectFamilyPendingMessages(Long familyId); } diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/family/impl/FamilyMessageServiceImpl.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/family/impl/FamilyMessageServiceImpl.java index 71e15cc3..48f32f09 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/family/impl/FamilyMessageServiceImpl.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/family/impl/FamilyMessageServiceImpl.java @@ -88,4 +88,16 @@ public class FamilyMessageServiceImpl extends .eq(FamilyMessage::getSenderUser, userId) .execute(); } + + @Override + public void rejectFamilyPendingMessages(Long familyId) { + if (Objects.isNull(familyId)) { + return; + } + update() + .set(FamilyMessage::getStatus, FamilyMessageStatusEnum.REJECTED.getCode()) + .eq(FamilyMessage::getFamilyId, familyId) + .eq(FamilyMessage::getStatus, FamilyMessageStatusEnum.PENDING.getCode()) + .execute(); + } }