REQ-3345: 解决查询不到账号的问题

This commit is contained in:
yanglin 2025-02-18 14:41:49 +08:00
parent f5c3b8d4b1
commit bf304c8292

View File

@ -32,6 +32,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionTemplate;
import javax.validation.constraints.NotNull;
import java.util.Collections;
@ -57,8 +58,8 @@ public class GroupManager {
private final GroupMemberSyncer groupMemberSyncer;
private final GroupRateLimiter rateLimiter;
private final Notification notification;
private final TransactionTemplate transactionTemplate;
@Transactional
public GroupCreateResponse createGroup(GroupCreateRequest request) {
BizAssertions.assertTrue(request.getPeople().size() > 1, "群成员数量(含群主)不能少于2");
groupSupport.log(0L, "create-group:preparing", request);
@ -67,6 +68,7 @@ public class GroupManager {
BizAssertions.assertTrue(savedGroup == null || savedGroup.isDismissed(),
String.format("群已经存在: %s", request.getName()));
ImAccounts imAccounts = accountService.getOrCreateImAccounts(request.getPeople());
return transactionTemplate.execute(unused -> {
String owner = imAccounts.findAccount(request.getOwner()).orElse(null);
BizAssertions.assertNotNull(owner, "群主没有IM账号, 无法创建群. {}", request.getOwner());
Group group = groupSupport.buildNewGroup(request, imAccounts);
@ -93,6 +95,7 @@ public class GroupManager {
response.setAccountsNotFound(getAccountNotFoundPersons(
"创建群", imAccounts, group, request.getMembers()));
return response;
});
}
@Transactional
@ -112,7 +115,6 @@ public class GroupManager {
groupBroadcaster.fireGroupChanged(group, MqEventType.GROUP_DISMISSED);
}
@Transactional
public GroupAddMembersResponse addMembers(GroupAddMembersRequest request) {
Group group = getGroupForUpdateOrThrow(request.getTid());
BizAssertions.assertFalse(group.isDismissed(), "群已经解散");
@ -129,6 +131,7 @@ public class GroupManager {
BizAssertions.assertTrue(group.addMoreMembers(prePersons.size() + addPersons.size()),
"群聊人数上限{}人, 请删除部分已选人员", group.getMemberLimit());
ImAccounts imAccounts = accountService.getOrCreateImAccounts(addPersons);
return transactionTemplate.execute(unused -> {
if (imAccounts.isAccountEmpty()) {
notification.send("添加群成员[{},{}], 有效群成员IM账号列表为空. 请求成员信息: {}",
group.getTid(), group.getName(), JSON.toJSONString(request.getMembers()));
@ -150,6 +153,7 @@ public class GroupManager {
response.setAccountsNotFound(getAccountNotFoundPersons(
"添加群成员", imAccounts, group, addPersons));
return response;
});
}
@Transactional