当用户获取群组信息时,如果不在群中返回-1,如果已经离开群了返回离开时间的负数

This commit is contained in:
heavyrian2012
2023-02-20 19:27:30 +08:00
parent 6e1ba9440e
commit 23871487e4
3 changed files with 11 additions and 3 deletions
@@ -21,7 +21,7 @@ import java.util.List;
public class GetGroupInfoHandler extends IMHandler<WFCMessage.PullUserRequest> {
@Override
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.PullUserRequest request, Qos1PublishHandler.IMCallback callback) {
List<WFCMessage.GroupInfo> infos = m_messagesStore.getGroupInfos(request.getRequestList());
List<WFCMessage.GroupInfo> infos = m_messagesStore.getGroupInfos(request.getRequestList(), fromUser, requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin);
WFCMessage.PullGroupInfoResult result = WFCMessage.PullGroupInfoResult.newBuilder().addAllInfo(infos).build();
byte[] data = result.toByteArray();
@@ -1886,7 +1886,7 @@ public class MemoryMessagesStore implements IMessagesStore {
}
@Override
public List<WFCMessage.GroupInfo> getGroupInfos(List<WFCMessage.UserRequest> requests) {
public List<WFCMessage.GroupInfo> getGroupInfos(List<WFCMessage.UserRequest> requests, String fromUser, boolean isAdmin) {
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
IMap<String, WFCMessage.GroupInfo> mIMap = hzInstance.getMap(GROUPS_MAP);
ArrayList<WFCMessage.GroupInfo> out = new ArrayList<>();
@@ -1900,6 +1900,14 @@ public class MemoryMessagesStore implements IMessagesStore {
}
if (groupInfo != null && groupInfo.getUpdateDt() > request.getUpdateDt()) {
if(!isAdmin && !StringUtil.isNullOrEmpty(fromUser)) {
WFCMessage.GroupMember gm = getGroupMember(groupInfo.getTargetId(), fromUser);
if(gm == null) {
groupInfo = groupInfo.toBuilder().setMemberUpdateDt(-1).build();
} else if(gm.getType() == GroupMemberType_Removed) {
groupInfo = groupInfo.toBuilder().setMemberUpdateDt(-groupInfo.getMemberUpdateDt()).build();
}
}
out.add(groupInfo);
}
}
@@ -116,7 +116,7 @@ public interface IMessagesStore {
ErrorCode modifyGroupInfo(String operator, String groupId, int modifyType, String value, boolean isAdmin);
ErrorCode modifyGroupMemberAlias(String operator, String groupId, String alias, String memberId, boolean isAdmin);
ErrorCode modifyGroupMemberExtra(String operator, String groupId, String extra, String memberId, boolean isAdmin);
List<WFCMessage.GroupInfo> getGroupInfos(List<WFCMessage.UserRequest> requests);
List<WFCMessage.GroupInfo> getGroupInfos(List<WFCMessage.UserRequest> requests, String fromUser, boolean isAdmin);
WFCMessage.GroupInfo getGroupInfo(String groupId);
Set<String> getUserGroupIds(String userId);
Set<String> getCommonGroupIds(String userId1, String userId2);