diff --git a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/user/UserDataViolationServiceImpl.java b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/user/UserDataViolationServiceImpl.java index 68955ada..17fbba22 100644 --- a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/user/UserDataViolationServiceImpl.java +++ b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/user/UserDataViolationServiceImpl.java @@ -69,6 +69,7 @@ public class UserDataViolationServiceImpl implements UserDataViolationService { }*/ public void processUpdateAccountStatus(ApprovalAccountCmd param) { + boolean realtimeKicked = false; // 警告 if (ConsoleAccountStatusEnum.WARNING.eq(param.getAccountStatusEnum())) { @@ -112,8 +113,8 @@ public class UserDataViolationServiceImpl implements UserDataViolationService { redisService .delete(SecurityConstant.getAccessTokenCacheKeyMd5(param.getBeApprovalUserId())); - imAccountClient.kick(param.getBeApprovalUserId()); - authClient.removeToken(param.getBeApprovalUserId()); + kickUserAndRemoveAuthToken(param.getBeApprovalUserId()); + realtimeKicked = true; } // 封禁+设备 else if (ConsoleAccountStatusEnum.ARCHIVE_DEVICE.eq(param.getAccountStatusEnum())) { @@ -137,9 +138,8 @@ public class UserDataViolationServiceImpl implements UserDataViolationService { redisService .delete(SecurityConstant.getAccessTokenCacheKeyMd5(relationUser.getUserId())); - imAccountClient.kick(relationUser.getUserId()); - authClient.removeToken(relationUser.getUserId()); - ResponseAssert.requiredSuccess(newsletterClient.send( + kickUserAndRemoveAuthToken(relationUser.getUserId()); + ResponseAssert.requiredSuccess(newsletterClient.send( new NewsletterResultCmd() .setUserIds(List.of(relationUser.getUserId())) .setEvent(NewsletterEvent.ARCHIVE_DEVICE) @@ -215,7 +215,9 @@ public class UserDataViolationServiceImpl implements UserDataViolationService { return; } - removeTrtcRoom(param); + if (!realtimeKicked) { + removeTrtcRoom(param.getBeApprovalUserId()); + } addLog(param, param.getBeApprovalUserId()); @@ -223,9 +225,15 @@ public class UserDataViolationServiceImpl implements UserDataViolationService { } - private void removeTrtcRoom(ApprovalAccountCmd param) { + private void kickUserAndRemoveAuthToken(Long userId) { + imAccountClient.kick(userId); + authClient.removeToken(userId); + removeTrtcRoom(userId); + } + + private void removeTrtcRoom(Long userId) { String sessionId = ResponseAssert.requiredSuccess( - userOnlineClient.getSessionId(param.getBeApprovalUserId())); + userOnlineClient.getSessionId(userId)); if (Objects.nonNull(sessionId)) { RoomProfileDTO roomProfile = ResponseAssert.requiredSuccess( roomManagerClient.getProfileById(Long.valueOf(sessionId))); @@ -233,7 +241,7 @@ public class UserDataViolationServiceImpl implements UserDataViolationService { trtcClient.removeUser( new TrtcRemoveUserCmd() .setRoomId(Long.parseLong(roomProfile.getRoomAccount())) - .setUserIds(List.of(param.getBeApprovalUserId())) + .setUserIds(List.of(userId)) ); } }