diff --git a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/GroupAddMembersRequest.java b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/GroupAddMembersRequest.java index 6f4a330..7eb6fbc 100644 --- a/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/GroupAddMembersRequest.java +++ b/im-center-api/src/main/java/cn/axzo/im/center/api/vo/req/GroupAddMembersRequest.java @@ -20,6 +20,12 @@ public class GroupAddMembersRequest { @NotNull(message = "群ID不能为空") private Long tid; + /** + * 邀请者 + */ + @NotNull(message = "inviter不能为空") + private PersonAccountAttribute inviter; + /** * 群成员, 不包含群主. members数量不能超过199 */ diff --git a/im-center-server/src/main/java/cn/axzo/im/dao/repository/GroupMemberDao.java b/im-center-server/src/main/java/cn/axzo/im/dao/repository/GroupMemberDao.java index dbbc4e7..704cf32 100644 --- a/im-center-server/src/main/java/cn/axzo/im/dao/repository/GroupMemberDao.java +++ b/im-center-server/src/main/java/cn/axzo/im/dao/repository/GroupMemberDao.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Repository; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.Set; import static java.util.stream.Collectors.toSet; @@ -55,6 +56,11 @@ public class GroupMemberDao extends ServiceImpl .remove(); } + public Optional findByPerson(Long tid, PersonAccountAttribute person) { + List members = getByPersons(tid, Collections.singletonList(person)); + return CollectionUtils.isEmpty(members) ? Optional.empty() : Optional.of(members.get(0)); + } + public List getByPersons( Long tid, Collection persons) { if (CollectionUtils.isEmpty(persons)) 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 0b48def..0a07816 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 @@ -141,8 +141,12 @@ public class GroupManager { group.getTid(), group.getName(), JSON.toJSONString(request.getMembers())); return new GroupAddMembersResponse(); } + GroupMember inviter = groupMemberDao + .findByPerson(group.getTid(), request.getInviter()) + .orElse(null); + BizAssertions.assertNotNull(inviter, "邀请者不在群中"); NimGroupAddMembersRequest nimRequest = groupSupport - .buildAddMembersRequest(group, group.getOwnerAccount(), imAccounts); + .buildAddMembersRequest(group, inviter.getImAccount(), imAccounts); // add members rateLimiter.requireAddMember(); NimGroupAddMembersResponse nimResponse = nimClient.addGroupMembers(nimRequest);