From 898d1e593ebc6906f6e789b12be012e229d7a82e Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Thu, 6 Nov 2025 20:10:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Ebdleader=20=E9=82=80=E8=AF=B7?= =?UTF-8?q?=20bdleader=20=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/message/OfficialNoticeTypeEnum.java | 7 +- .../inner/asserts/team/TeamErrorCode.java | 4 ++ .../team/TeamAppProcessApprovalReason.java | 6 ++ .../app/team/TeamBdRestController.java | 68 +++++++++++++++++++ .../app/command/team/BdLeaderInviteBdExe.java | 50 +++++++++++++- .../team/BdLeaderInviteMessageProcessExe.java | 63 ++++++++++------- .../app/service/team/TeamBdServiceImpl.java | 10 +++ .../other/app/service/team/TeamBdService.java | 10 +++ .../entity/team/bd/MessageInviteGroup.java | 5 ++ 9 files changed, 194 insertions(+), 29 deletions(-) diff --git a/rc-service/rc-inner-api/external-inner/external-inner-model/src/main/java/com/red/circle/external/inner/model/enums/message/OfficialNoticeTypeEnum.java b/rc-service/rc-inner-api/external-inner/external-inner-model/src/main/java/com/red/circle/external/inner/model/enums/message/OfficialNoticeTypeEnum.java index 654f21e2..67981364 100644 --- a/rc-service/rc-inner-api/external-inner/external-inner-model/src/main/java/com/red/circle/external/inner/model/enums/message/OfficialNoticeTypeEnum.java +++ b/rc-service/rc-inner-api/external-inner/external-inner-model/src/main/java/com/red/circle/external/inner/model/enums/message/OfficialNoticeTypeEnum.java @@ -165,7 +165,12 @@ public enum OfficialNoticeTypeEnum { /** * BD LEADER发出BD邀请. */ - BD_LEADER_SEND_INVITE_BD, + BD_LEADER_INVITE_BD, + + /** + * BD LEADER发出BDLEADER邀请. + */ + BD_LEADER_INVITE_BD_LEADER, /** * 用户拒绝BD LEADER成为BD邀请. diff --git a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/asserts/team/TeamErrorCode.java b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/asserts/team/TeamErrorCode.java index 9022fc67..58fd5d27 100644 --- a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/asserts/team/TeamErrorCode.java +++ b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/asserts/team/TeamErrorCode.java @@ -223,6 +223,10 @@ public enum TeamErrorCode implements IResponseErrorCode { */ QUIT_DATE_INVALID(6051, "The host can only leave the current agency on the 1st and 16th of each month"), + /** + * 用户不是BD Leader + */ + USER_NOT_BDLEADER(6052, "User is not BD Leader"), ; private final Integer code; diff --git a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/enums/team/TeamAppProcessApprovalReason.java b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/enums/team/TeamAppProcessApprovalReason.java index 728a57bc..2c6ef884 100644 --- a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/enums/team/TeamAppProcessApprovalReason.java +++ b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/enums/team/TeamAppProcessApprovalReason.java @@ -92,6 +92,12 @@ public enum TeamAppProcessApprovalReason { * 接受成为BD邀请. */ ACCEPT_BD_INVITE, + + /** + * 接受成为BDLEADER邀请. + */ + ACCEPT_BDLEADER_INVITE, + /** * 成员退出-后台. */ diff --git a/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/team/TeamBdRestController.java b/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/team/TeamBdRestController.java index 8f70e212..c0818654 100644 --- a/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/team/TeamBdRestController.java +++ b/rc-service/rc-service-other/other-adapter/src/main/java/com/red/circle/other/adapter/app/team/TeamBdRestController.java @@ -193,6 +193,74 @@ public class TeamBdRestController extends BaseController { teamBdService.processBdLeaderInviteMessage(cmd); } +// =================================================================================== + + + /** + * 邀请BDLEADER + * + * @eo.name 邀请成为BD-邀请BD. + * @eo.url /invite-bd + * @eo.method post + * @eo.request-type json + */ + @PostMapping("/invite-bdleader") + public void inviteBdLeader(@RequestBody @Validated DbLeaderInviteBdCmd cmd) { + teamBdService.inviteBdleader(cmd); + } + + /** + * 获取被BDLEADER邀请消息 + * + * @eo.name 获取被BDLEADER邀请消息-邀请BD. + * @eo.url /invite-bd-message + * @eo.method get + * @eo.request-type formdata + */ + @GetMapping("/invite-bdleader-message") + public List listInviteBdleaderMessage(BdInviteQryCmd cmd) { + cmd.setGroup(MessageInviteGroup.BD_LEADER_INVITE_BD_LEADER.name()); + return teamBdService.listBdInviteMessage(cmd); + } + + /** + * 获取邀请BDLEADER的消息 + * + * @eo.name 获取被BDLEADER邀请消息-邀请BD. + * @eo.url /invite-bd-message + * @eo.method get + * @eo.request-type formdata + */ + @GetMapping("/invite-bdleader-message-own") + public List listInviteBdleaderMessageOwn(BdInviteQryCmd cmd) { + cmd.setGroup(MessageInviteGroup.BD_LEADER_INVITE_BD_LEADER.name()); + return teamBdService.listBdInviteMessageOwn(cmd); + } + + /** + * 邀请BDLEADER-撤销 + */ + @PostMapping("/invite-bdleader-cancel/{id}") + public void inviteBdleaderCancel(@PathVariable("id") String id) { + teamBdService.inviteAgentCancel(id); + } + + + /** + * 处理邀请BDLEADER. + * + * @eo.name 处理邀请-邀请BD. + * @eo.url /invite-bd-message-process + * @eo.method post + * @eo.request-type json + */ + @PostMapping("/invite-bdleader-message-process") + public void processInviteBdleaderMessage(@RequestBody @Validated DbInviteMessageProcessCmd cmd) { + teamBdService.processBdLeaderInviteMessage2(cmd); + } + +// =================================================================================== + /** * Bd邀请成为代理-邀请代理. * diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/BdLeaderInviteBdExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/BdLeaderInviteBdExe.java index 30993bd5..e866eefd 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/BdLeaderInviteBdExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/BdLeaderInviteBdExe.java @@ -87,13 +87,57 @@ public class BdLeaderInviteBdExe { userProfileGateway.getByUserId(cmd.requiredReqUserId()) ); - /*officialNoticeClient.send(NoticeExtTemplateTypeCmd.builder() + officialNoticeClient.send(NoticeExtTemplateTypeCmd.builder() .toAccount(cmd.getInviteUserId()) - .noticeType(OfficialNoticeTypeEnum.BD_LEADER_SEND_INVITE_BD) + .noticeType(OfficialNoticeTypeEnum.BD_LEADER_INVITE_BD) .templateParam(OfficialNoticeUtils.buildUserProfile(userProfile)) .expand(messageId) .build() - );*/ + ); + + } + + public void executeBdleader(DbLeaderInviteBdCmd cmd) { + + // 权限不足 + ResponseAssert.isTrue(CommonErrorCode.INSUFFICIENT_PERMISSION, + roomBdLeadService.checkBdLeader(cmd.requiredReqUserId())); + + // 权限不足 + ResponseAssert.isTrue(CommonErrorCode.INSUFFICIENT_PERMISSION, + roomBdLeadService.checkBdLeader(cmd.getInviteUserId())); + + + // 消息已发送 + ResponseAssert.isFalse(TeamErrorCode.MESSAGE_PROCESSED, + bdInviteAgentMessageService.existsWaitMessage(cmd.requiredReqUserId(), + cmd.getInviteUserId(), MessageInviteGroup.BD_LEADER_INVITE_BD_LEADER.name())); + + String messageId = IdWorkerUtils.getIdStr(); + bdInviteAgentMessageService.add(new BdInviteAgentMessage() + .setId(messageId) + .setSysOrigin(cmd.requireReqSysOrigin()) + .setUserId(cmd.requiredReqUserId()) + .setInviteUserId(cmd.getInviteUserId()) + .setMessage(cmd.getMessage()) + .setGroup(MessageInviteGroup.BD_LEADER_INVITE_BD_LEADER.name()) + .setCreateTime(TimestampUtils.now()) + .setUpdateTime(TimestampUtils.now()) + .setStatus(0) + .setExpiredTime(TimestampUtils.nowPlusDays(2)) + ); + + UserProfileDTO userProfile = userProfileAppConvertor.toUserProfileDTO( + userProfileGateway.getByUserId(cmd.requiredReqUserId()) + ); + + officialNoticeClient.send(NoticeExtTemplateTypeCmd.builder() + .toAccount(cmd.getInviteUserId()) + .noticeType(OfficialNoticeTypeEnum.BD_LEADER_INVITE_BD_LEADER) + .templateParam(OfficialNoticeUtils.buildUserProfile(userProfile)) + .expand(messageId) + .build() + ); } diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/BdLeaderInviteMessageProcessExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/BdLeaderInviteMessageProcessExe.java index c7841205..fb6523f6 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/BdLeaderInviteMessageProcessExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/team/BdLeaderInviteMessageProcessExe.java @@ -101,34 +101,47 @@ public class BdLeaderInviteMessageProcessExe { ); userHistoryIdentityService.saveBd(cmd.requiredReqUserId()); - sendMessage(message, OfficialNoticeTypeEnum.AGREE_BD_LEADER_INVITE_AGENT); - return; } - - sendMessage(message, OfficialNoticeTypeEnum.REFUSE_BD_LEADER_INVITE_AGENT); } - private void sendMessage(BdInviteAgentMessage message, OfficialNoticeTypeEnum noticeTypeEnum) { - UserProfileDTO userProfile = userProfileAppConvertor.toUserProfileDTO( - userProfileGateway.getByUserId(message.getInviteUserId()) - ); - ResponseAssert.notNull(UserErrorCode.USER_INFO_NOT_FOUND, userProfile); - NoticeExtTemplateTypeCmd userProfile1 = NoticeExtTemplateTypeCmd.builder() - .toAccount(message.getUserId()) - .noticeType(noticeTypeEnum) - .templateParam(MapBuilder.builder() - .put("userProfile", String.format("%s(%s)", userProfile.getUserNickname(), - userProfile.actualAccount())) - .build()) - .build(); - /*officialNoticeClient.send(NoticeExtTemplateTypeCmd.builder() - .toAccount(message.getUserId()) - .noticeType(noticeTypeEnum) - .templateParam(MapBuilder.builder() - .put("userProfile", String.format("%s(%s)", userProfile.getUserNickname(), - userProfile.actualAccount())) - .build()) - .build());*/ + public void executeBdleader(DbInviteMessageProcessCmd cmd) { + ResponseAssert.isTrue(ResponseErrorCode.REQUEST_PARAMETER_ERROR, cmd.getStatus() > 0); + BdInviteAgentMessage message = bdInviteAgentMessageService.getById(cmd.getId()); + ResponseAssert.notNull(CommonErrorCode.NOT_FOUND_RECORD_INFO, message); + + ResponseAssert.isTrue(CommonErrorCode.NOT_FOUND_RECORD_INFO, + Objects.equals(message.getGroup(), MessageInviteGroup.BD_LEADER_INVITE_BD_LEADER.name())); + + ResponseAssert + .isTrue(TeamErrorCode.USER_NOT_BDLEADER, + roomBdLeadService.checkBdLeader(cmd.requiredReqUserId())); + + ResponseAssert.isTrue(CommonErrorCode.INSUFFICIENT_PERMISSION, + Objects.equals(message.getInviteUserId(), cmd.requiredReqUserId())); + ResponseAssert.isTrue(TeamErrorCode.MESSAGE_PROCESSED, Objects.equals(message.getStatus(), 0)); + + RoomBdLead roomBdLead = roomBdLeadService.getByUserId(message.getUserId()); + ResponseAssert.notNull(TeamErrorCode.USER_IS_NOT_BD, roomBdLead); + + ResponseAssert.isTrue(CommonErrorCode.OPERATING_FAILURE, bdInviteAgentMessageService. + updateStatus(cmd.getId(), message.getStatus(), cmd.getStatus(), + MessageInviteGroup.BD_LEADER_INVITE_BD.name())); + + if (Objects.equals(cmd.getStatus(), 1)) { + + teamApplicationProcessApprovalService.add(new TeamApplicationProcessApproval() + .setSysOrigin(cmd.requireReqSysOrigin()) + .setType(TeamApplicationType.BD) + .setReason(TeamAppProcessApprovalReason.ACCEPT_BDLEADER_INVITE) + .setAssociateId(message.getUserId()) + .setBeProcessUserId(message.getInviteUserId()) + .setCreateTime(TimestampUtils.now()) + .setCreateUser(cmd.requiredReqUserId()) + .setCreateUserOrigin(0) + ); + + } } + } diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/team/TeamBdServiceImpl.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/team/TeamBdServiceImpl.java index 956ac7ad..890f810c 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/team/TeamBdServiceImpl.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/service/team/TeamBdServiceImpl.java @@ -95,11 +95,21 @@ public class TeamBdServiceImpl implements TeamBdService { bdLeaderInviteBdCmdExe.execute(cmd); } + @Override + public void inviteBdleader(DbLeaderInviteBdCmd cmd) { + bdLeaderInviteBdCmdExe.executeBdleader(cmd); + } + @Override public void processBdLeaderInviteMessage(DbInviteMessageProcessCmd cmd) { bdLeaderInviteMessageProcessCmdExe.execute(cmd); } + @Override + public void processBdLeaderInviteMessage2(DbInviteMessageProcessCmd cmd) { + bdLeaderInviteMessageProcessCmdExe.executeBdleader(cmd); + } + @Override public void inviteAgent(DbInviteAgentCmd cmd) { bdAgentInviteCmdExe.execute(cmd); diff --git a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/team/TeamBdService.java b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/team/TeamBdService.java index 57d36d75..971cfd5d 100644 --- a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/team/TeamBdService.java +++ b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/service/team/TeamBdService.java @@ -71,11 +71,21 @@ public interface TeamBdService { */ void inviteBd(DbLeaderInviteBdCmd cmd); + /** + * 邀请成为BDLEADER-邀请BDLEADER. + */ + void inviteBdleader(DbLeaderInviteBdCmd cmd); + /** * 处理邀请消息-邀请BD. */ void processBdLeaderInviteMessage(DbInviteMessageProcessCmd cmd); + /** + * 处理BDLEADER邀请BDLEADER消息 + */ + void processBdLeaderInviteMessage2(DbInviteMessageProcessCmd cmd); + /** * 邀请成为代理-邀请代理. */ diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/team/bd/MessageInviteGroup.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/team/bd/MessageInviteGroup.java index f9de9aaf..58ec6673 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/team/bd/MessageInviteGroup.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/team/bd/MessageInviteGroup.java @@ -7,6 +7,11 @@ package com.red.circle.other.infra.database.mongo.entity.team.bd; */ public enum MessageInviteGroup { + /** + * bd leader 邀请 bdleader + */ + BD_LEADER_INVITE_BD_LEADER, + /** * bd 邀请代理. */