REQ-3345: 添加限流

This commit is contained in:
yanglin 2025-02-06 17:22:32 +08:00
parent 6f85a26679
commit 598523e43f
2 changed files with 4 additions and 5 deletions

View File

@ -42,9 +42,8 @@ public class Group {
@TableField(typeHandler = FastjsonTypeHandler.class) @TableField(typeHandler = FastjsonTypeHandler.class)
private RecordExt recordExt; private RecordExt recordExt;
public boolean isMemberLimitReached(int memberCount) { public boolean addMoreMembers(int memberCount) {
if (memberLimit <= 0) return false; return memberLimit <= 0 || memberCount <= memberLimit;
return memberCount > memberLimit;
} }
public boolean isDismissed() { public boolean isDismissed() {

View File

@ -65,7 +65,7 @@ public class GroupManager {
String owner = imAccounts.findAccount(request.getOwner()).orElse(null); String owner = imAccounts.findAccount(request.getOwner()).orElse(null);
BizAssertions.assertNotNull(owner, "群主没有IM账号, 无法创建群. {}", request.getOwner()); BizAssertions.assertNotNull(owner, "群主没有IM账号, 无法创建群. {}", request.getOwner());
Group group = groupSupport.buildNewGroup(request, imAccounts); Group group = groupSupport.buildNewGroup(request, imAccounts);
BizAssertions.assertFalse(group.isMemberLimitReached( BizAssertions.assertTrue(group.addMoreMembers(
request.getOwnerAndMembers().size()), "无法创建群, 群成员数量超过上限" + group.getMemberLimit()); request.getOwnerAndMembers().size()), "无法创建群, 群成员数量超过上限" + group.getMemberLimit());
try { try {
groupDao.save(group); groupDao.save(group);
@ -122,7 +122,7 @@ public class GroupManager {
.collect(toSet()); .collect(toSet());
if (toAddMembers.isEmpty()) if (toAddMembers.isEmpty())
return new GroupAddMembersResponse(); return new GroupAddMembersResponse();
if (group.isMemberLimitReached(preMembers.size() + toAddMembers.size())) if (!group.addMoreMembers(preMembers.size() + toAddMembers.size()))
throw new ServiceException("群聊人数上限" + group.getMemberLimit() + "人, 请删除部分已选人员"); throw new ServiceException("群聊人数上限" + group.getMemberLimit() + "人, 请删除部分已选人员");
ImAccounts imAccounts = accountService.getOrCreateImAccounts(toAddMembers); ImAccounts imAccounts = accountService.getOrCreateImAccounts(toAddMembers);
if (imAccounts.isAccountEmpty()) { if (imAccounts.isAccountEmpty()) {