This commit is contained in:
heavyrain.lee
2019-05-25 07:55:30 +08:00
parent fbd1a7f5dc
commit 331c38cc98
5 changed files with 10 additions and 8 deletions
@@ -42,7 +42,7 @@ public class DismissGroupAction extends AdminAction {
if (request.getNettyRequest() instanceof FullHttpRequest) { if (request.getNettyRequest() instanceof FullHttpRequest) {
InputDismissGroup inputDismissGroup = getRequestBody(request.getNettyRequest(), InputDismissGroup.class); InputDismissGroup inputDismissGroup = getRequestBody(request.getNettyRequest(), InputDismissGroup.class);
if (inputDismissGroup.isValide()) { if (inputDismissGroup.isValide()) {
RPCCenter.getInstance().sendRequest(inputDismissGroup.getOperator(), null, IMTopic.AddGroupMemberTopic, inputDismissGroup.toProtoGroupRequest().toByteArray(), inputDismissGroup.getOperator(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() { RPCCenter.getInstance().sendRequest(inputDismissGroup.getOperator(), null, IMTopic.DismissGroupTopic, inputDismissGroup.toProtoGroupRequest().toByteArray(), inputDismissGroup.getOperator(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() {
@Override @Override
public void onSuccess(byte[] result) { public void onSuccess(byte[] result) {
ByteBuf byteBuf = Unpooled.buffer(); ByteBuf byteBuf = Unpooled.buffer();
@@ -24,9 +24,9 @@ public class DismissGroupHandler extends GroupHandler<WFCMessage.DismissGroupReq
WFCMessage.GroupInfo groupInfo = m_messagesStore.getGroupInfo(request.getGroupId()); WFCMessage.GroupInfo groupInfo = m_messagesStore.getGroupInfo(request.getGroupId());
ErrorCode errorCode; ErrorCode errorCode;
if (groupInfo == null) { if (groupInfo == null) {
errorCode = m_messagesStore.dismissGroup(fromUser, request.getGroupId()); errorCode = m_messagesStore.dismissGroup(fromUser, request.getGroupId(), isAdmin);
} else if ((groupInfo.getType() == ProtoConstants.GroupType.GroupType_Normal || groupInfo.getType() == ProtoConstants.GroupType.GroupType_Restricted) } else if (isAdmin || (groupInfo.getType() == ProtoConstants.GroupType.GroupType_Normal || groupInfo.getType() == ProtoConstants.GroupType.GroupType_Restricted)
&& groupInfo.getOwner() != null && groupInfo.getOwner().equals(fromUser)) { && groupInfo.getOwner() != null && groupInfo.getOwner().equals(fromUser)) {
//send notify message first, then dismiss group //send notify message first, then dismiss group
@@ -36,7 +36,7 @@ public class DismissGroupHandler extends GroupHandler<WFCMessage.DismissGroupReq
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(groupInfo.getTargetId(), fromUser, null, "").getDismissGroupNotifyContent(); WFCMessage.MessageContent content = new GroupNotificationBinaryContent(groupInfo.getTargetId(), fromUser, null, "").getDismissGroupNotifyContent();
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), content); sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), content);
} }
errorCode = m_messagesStore.dismissGroup(fromUser, request.getGroupId()); errorCode = m_messagesStore.dismissGroup(fromUser, request.getGroupId(), isAdmin);
} else { } else {
errorCode = ErrorCode.ERROR_CODE_NOT_RIGHT; errorCode = ErrorCode.ERROR_CODE_NOT_RIGHT;
} }
@@ -749,7 +749,7 @@ public class MemoryMessagesStore implements IMessagesStore {
} }
@Override @Override
public ErrorCode dismissGroup(String operator, String groupId) { public ErrorCode dismissGroup(String operator, String groupId, boolean isAdmin) {
HazelcastInstance hzInstance = m_Server.getHazelcastInstance(); HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
IMap<String, WFCMessage.GroupInfo> mIMap = hzInstance.getMap(GROUPS_MAP); IMap<String, WFCMessage.GroupInfo> mIMap = hzInstance.getMap(GROUPS_MAP);
@@ -762,9 +762,9 @@ public class MemoryMessagesStore implements IMessagesStore {
return ErrorCode.ERROR_CODE_NOT_EXIST; return ErrorCode.ERROR_CODE_NOT_EXIST;
} }
if (groupInfo.getType() == ProtoConstants.GroupType.GroupType_Free || if (!isAdmin && (groupInfo.getType() == ProtoConstants.GroupType.GroupType_Free ||
(groupInfo.getType() == ProtoConstants.GroupType.GroupType_Restricted || groupInfo.getType() == ProtoConstants.GroupType.GroupType_Normal) (groupInfo.getType() == ProtoConstants.GroupType.GroupType_Restricted || groupInfo.getType() == ProtoConstants.GroupType.GroupType_Normal)
&& (groupInfo.getOwner() == null || !groupInfo.getOwner().equals(operator))) { && (groupInfo.getOwner() == null || !groupInfo.getOwner().equals(operator)))) {
return ErrorCode.ERROR_CODE_NOT_RIGHT; return ErrorCode.ERROR_CODE_NOT_RIGHT;
} }
@@ -104,7 +104,7 @@ public interface IMessagesStore {
ErrorCode addGroupMembers(String operator, String groupId, List<WFCMessage.GroupMember> memberList); ErrorCode addGroupMembers(String operator, String groupId, List<WFCMessage.GroupMember> memberList);
ErrorCode kickoffGroupMembers(String operator, String groupId, List<String> memberList); ErrorCode kickoffGroupMembers(String operator, String groupId, List<String> memberList);
ErrorCode quitGroup(String operator, String groupId); ErrorCode quitGroup(String operator, String groupId);
ErrorCode dismissGroup(String operator, String groupId); ErrorCode dismissGroup(String operator, String groupId, boolean isAdmin);
ErrorCode modifyGroupInfo(String operator, String groupId, int modifyType, String value); ErrorCode modifyGroupInfo(String operator, String groupId, int modifyType, String value);
ErrorCode modifyGroupAlias(String operator, String groupId, String alias); ErrorCode modifyGroupAlias(String operator, String groupId, String alias);
List<WFCMessage.GroupInfo> getGroupInfos(List<WFCMessage.UserRequest> requests); List<WFCMessage.GroupInfo> getGroupInfos(List<WFCMessage.UserRequest> requests);
@@ -130,6 +130,8 @@ public class Main {
//*********************************************** //***********************************************
//**** 群组相关API //**** 群组相关API
//*********************************************** //***********************************************
IMResult<Void> voidIMResult1 = GroupAdmin.dismissGroup("user1", "groupId1", null, null);
PojoGroupInfo groupInfo = new PojoGroupInfo(); PojoGroupInfo groupInfo = new PojoGroupInfo();
groupInfo.setTarget_id("groupId1"); groupInfo.setTarget_id("groupId1");
groupInfo.setOwner("user1"); groupInfo.setOwner("user1");