From e1cb4c61ce38998f5122b57f46e3c1bc58eee59a Mon Sep 17 00:00:00 2001 From: yanglin Date: Tue, 18 Feb 2025 16:37:27 +0800 Subject: [PATCH] =?UTF-8?q?REQ-3345:=20=E8=A7=A3=E5=86=B3=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=B8=8D=E5=88=B0=E8=B4=A6=E5=8F=B7=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/axzo/im/group/GroupManager.java | 8 ++++---- .../src/main/java/cn/axzo/im/service/AccountService.java | 8 +++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/im-center-server/src/main/java/cn/axzo/im/group/GroupManager.java b/im-center-server/src/main/java/cn/axzo/im/group/GroupManager.java index cfce088..740ad92 100644 --- a/im-center-server/src/main/java/cn/axzo/im/group/GroupManager.java +++ b/im-center-server/src/main/java/cn/axzo/im/group/GroupManager.java @@ -64,13 +64,13 @@ public class GroupManager { BizAssertions.assertTrue(request.getPeople().size() > 1, "群成员数量(含群主)不能少于2"); groupSupport.log(0L, "create-group:preparing", request); // DON'T delete this line - accountService.getOrCreateImAccounts(request.getPeople()); + accountService.maybeCreateImAccounts(request.getPeople()); return transactionTemplate.execute(unused -> { Group savedGroup = groupDao.findByBizCode(request.getBizCode(), request.getGroupType(), true) .orElse(null); BizAssertions.assertTrue(savedGroup == null || savedGroup.isDismissed(), String.format("群已经存在: %s", request.getName())); - ImAccounts imAccounts = accountService.getOrCreateImAccounts(request.getPeople()); + ImAccounts imAccounts = accountService.getAccountsByPersons(request.getPeople()); String owner = imAccounts.findAccount(request.getOwner()).orElse(null); BizAssertions.assertNotNull(owner, "群主没有IM账号, 无法创建群. {}", request.getOwner()); Group group = groupSupport.buildNewGroup(request, imAccounts); @@ -119,7 +119,7 @@ public class GroupManager { public GroupAddMembersResponse addMembers(GroupAddMembersRequest request) { // DON'T delete this line - accountService.getOrCreateImAccounts(request.getMembers()); + accountService.maybeCreateImAccounts(request.getMembers()); return transactionTemplate.execute(unused -> { Group group = getGroupForUpdateOrThrow(request.getTid()); groupSupport.log(group.getTid(), "add-members", request); @@ -135,7 +135,7 @@ public class GroupManager { return new GroupAddMembersResponse(); BizAssertions.assertTrue(group.addMoreMembers(prePersons.size() + addPersons.size()), "群聊人数上限{}人, 请删除部分已选人员", group.getMemberLimit()); - ImAccounts imAccounts = accountService.getOrCreateImAccounts(addPersons); + ImAccounts imAccounts = accountService.getAccountsByPersons(addPersons); if (imAccounts.isAccountEmpty()) { notification.send("添加群成员[{},{}], 有效群成员IM账号列表为空. 请求成员信息: {}", group.getTid(), group.getName(), JSON.toJSONString(request.getMembers())); diff --git a/im-center-server/src/main/java/cn/axzo/im/service/AccountService.java b/im-center-server/src/main/java/cn/axzo/im/service/AccountService.java index 88b3f2c..51d9901 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/AccountService.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/AccountService.java @@ -393,12 +393,10 @@ public class AccountService { /** * 无法保证所有账号创建成功,可能的原因是因为人员的信息不全,或者是人员信息不正确 */ - public ImAccounts getOrCreateImAccounts(Set persons) { + public void maybeCreateImAccounts(Set persons) { ImAccounts imAccounts = getAccountsByPersons(persons); - if (imAccounts.getAccountSize() == persons.size()) - return imAccounts; - registerAccountIfAbsent(persons); - return getAccountsByPersons(persons); + if (imAccounts.getAccountSize() != persons.size()) + registerAccountIfAbsent(persons); } public void registerAccountIfAbsent(Collection persons) {