From 2f45f23bd7fdf7c22a2e273d5a93e87bc91fb378 Mon Sep 17 00:00:00 2001 From: hy001 Date: Mon, 11 May 2026 18:47:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=8F=E7=90=86=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../team/manager/TeamManagerServiceImpl.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/team/manager/TeamManagerServiceImpl.java b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/team/manager/TeamManagerServiceImpl.java index 834b3f3d..08098609 100644 --- a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/team/manager/TeamManagerServiceImpl.java +++ b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/team/manager/TeamManagerServiceImpl.java @@ -9,11 +9,16 @@ import com.red.circle.console.inner.error.ConsoleErrorCode; import com.red.circle.framework.core.asserts.ResponseAssert; import com.red.circle.framework.core.response.CommonErrorCode; import com.red.circle.framework.dto.PageResult; +import com.red.circle.other.inner.endpoint.sys.AdministratorClient; import com.red.circle.other.inner.endpoint.team.manager.TeamManagerClient; import com.red.circle.other.inner.endpoint.team.target.UserHistoryIdentityClient; import com.red.circle.other.inner.endpoint.user.region.RegionConfigClient; import com.red.circle.other.inner.endpoint.user.user.UserProfileClient; +import com.red.circle.other.inner.enums.sys.appmanager.RoomRolesEnum; +import com.red.circle.other.inner.model.cmd.sys.AddSysAdministratorCmd; +import com.red.circle.other.inner.model.cmd.sys.SysAdministratorChangeStatusCmd; import com.red.circle.other.inner.model.cmd.team.manager.TeamManagerOpsPageQryCmd; +import com.red.circle.other.inner.model.dto.sys.AdministratorDTO; import com.red.circle.other.inner.model.dto.agency.manager.TeamManagerDTO; import com.red.circle.other.inner.model.dto.user.UserProfileDTO; import com.red.circle.tool.core.sequence.IdWorkerUtils; @@ -36,6 +41,7 @@ public class TeamManagerServiceImpl implements TeamManagerService { private final UserService userService; private final TeamManagerClient teamManagerClient; + private final AdministratorClient administratorClient; private final UserProfileClient userProfileClient; private final RegionConfigClient regionConfigClient; private final UserHistoryIdentityClient userHistoryIdentityClient; @@ -112,6 +118,7 @@ public class TeamManagerServiceImpl implements TeamManagerService { ResponseAssert.requiredSuccess(teamManagerClient.add(addCmd)); ResponseAssert.requiredSuccess(userHistoryIdentityClient.saveManager(cmd.getUserId())); + ensureAppManager(cmd.getUserId(), cmd.getCreateUser()); } @Override @@ -128,6 +135,46 @@ public class TeamManagerServiceImpl implements TeamManagerService { TeamManagerDTO db = ResponseAssert.requiredSuccess(teamManagerClient.getById(id)); ResponseAssert.notNull(CommonErrorCode.DATA_ERROR, db); ResponseAssert.requiredSuccess(teamManagerClient.deleteById(id)); + removeAppManagerIfOnlyManagerRole(db.getUserId()); + } + + private void ensureAppManager(Long userId, Long operatorUserId) { + AdministratorDTO administrator = ResponseAssert.requiredSuccess( + administratorClient.getByUserId(userId)); + + if (Objects.isNull(administrator)) { + AddSysAdministratorCmd addCmd = new AddSysAdministratorCmd(); + addCmd.setUserId(userId); + addCmd.setRoles(RoomRolesEnum.MANAGER.name()); + addCmd.setReqUserId(operatorUserId); + ResponseAssert.requiredSuccess(administratorClient.addSysAdministrator(addCmd)); + administrator = ResponseAssert.requiredSuccess(administratorClient.getByUserId(userId)); + } + + ResponseAssert.notNull(CommonErrorCode.DATA_ERROR, administrator); + + if (StringUtils.isBlank(administrator.getRoles()) + || !Boolean.TRUE.equals(administrator.getStatus())) { + ResponseAssert.requiredSuccess( + administratorClient.changeRoles(administrator.getId(), RoomRolesEnum.MANAGER.name())); + } + + if (!Boolean.TRUE.equals(administrator.getStatus())) { + SysAdministratorChangeStatusCmd statusCmd = new SysAdministratorChangeStatusCmd() + .setId(administrator.getId()) + .setStatus(1); + statusCmd.setReqUserId(operatorUserId); + ResponseAssert.requiredSuccess(administratorClient.changeStatusAdministrator(statusCmd)); + } + } + + private void removeAppManagerIfOnlyManagerRole(Long userId) { + AdministratorDTO administrator = ResponseAssert.requiredSuccess( + administratorClient.getByUserId(userId)); + if (Objects.isNull(administrator) || !RoomRolesEnum.MANAGER.eq(administrator.getRoles())) { + return; + } + ResponseAssert.requiredSuccess(administratorClient.deleteSysAdministrator(administrator.getId())); } }