REQ-3345: 解散的群可以重复
This commit is contained in:
parent
ebcb1b3916
commit
1974e3952d
@ -1,5 +1,6 @@
|
||||
package cn.axzo.im.dao.repository;
|
||||
|
||||
import cn.axzo.im.center.common.enums.GroupType;
|
||||
import cn.axzo.im.center.common.enums.YesOrNo;
|
||||
import cn.axzo.im.dao.mapper.GroupMapper;
|
||||
import cn.axzo.im.entity.Group;
|
||||
@ -45,4 +46,12 @@ public class GroupDao extends ServiceImpl<GroupMapper, Group> {
|
||||
.update();
|
||||
}
|
||||
|
||||
public Optional<Group> findByBizCode(String bizCode, GroupType groupType, boolean forUpdate) {
|
||||
return lambdaQuery()
|
||||
.eq(Group::getBizCode, bizCode)
|
||||
.eq(Group::getType, groupType)
|
||||
.last(forUpdate, "FOR UPDATE")
|
||||
.oneOpt();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,6 +1,5 @@
|
||||
package cn.axzo.im.group;
|
||||
|
||||
import cn.axzo.basics.common.exception.ServiceException;
|
||||
import cn.axzo.im.center.api.enums.MqEventType;
|
||||
import cn.axzo.im.center.api.vo.PersonAccountAttribute;
|
||||
import cn.axzo.im.center.api.vo.req.GroupAddMembersRequest;
|
||||
@ -31,7 +30,6 @@ import com.alibaba.fastjson.JSON;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -64,18 +62,17 @@ public class GroupManager {
|
||||
public GroupCreateResponse createGroup(GroupCreateRequest request) {
|
||||
BizAssertions.assertTrue(request.getPeople().size() > 1, "群成员数量(含群主)不能少于2");
|
||||
groupSupport.log(0L, "create-group:preparing", request);
|
||||
Group savedGroup = groupDao.findByBizCode(request.getBizCode(), request.getGroupType(), true)
|
||||
.orElse(null);
|
||||
BizAssertions.assertNull(savedGroup == null || savedGroup.isDismissed(),
|
||||
String.format("群已经存在: %s", request.getName()));
|
||||
ImAccounts imAccounts = accountService.getOrCreateImAccounts(request.getPeople());
|
||||
String owner = imAccounts.findAccount(request.getOwner()).orElse(null);
|
||||
BizAssertions.assertNotNull(owner, "群主没有IM账号, 无法创建群. {}", request.getOwner());
|
||||
Group group = groupSupport.buildNewGroup(request, imAccounts);
|
||||
BizAssertions.assertTrue(group.addMoreMembers(
|
||||
request.getPeople().size()), "无法创建群, 群成员数量超过上限" + group.getMemberLimit());
|
||||
try {
|
||||
groupDao.save(group);
|
||||
} catch (DuplicateKeyException e) {
|
||||
log.warn("重复创建群, request={}", request, e);
|
||||
throw new ServiceException(403, String.format("群已经存在: %s", request.getName()));
|
||||
}
|
||||
NimGroupCreateRequest nimRequest = groupSupport
|
||||
.buildNimCreateGroupRequest(request, imAccounts);
|
||||
rateLimiter.requireCreateGroup();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user