diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetGroupMemberAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetGroupMemberAction.java new file mode 100755 index 00000000..6982cfab --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetGroupMemberAction.java @@ -0,0 +1,69 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.admin; + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputGetGroup; +import cn.wildfirechat.pojos.InputGetGroupMember; +import cn.wildfirechat.pojos.OutputGroupMemberList; +import cn.wildfirechat.pojos.PojoGroupMember; +import cn.wildfirechat.proto.ProtoConstants; +import cn.wildfirechat.proto.WFCMessage; +import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.annotation.HttpMethod; +import com.xiaoleilu.loServer.annotation.Route; +import com.xiaoleilu.loServer.handler.Request; +import com.xiaoleilu.loServer.handler.Response; +import io.netty.handler.codec.http.FullHttpRequest; +import io.netty.util.internal.StringUtil; + +import java.util.ArrayList; +import java.util.List; + +@Route(APIPath.Group_Member_Get) +@HttpMethod("POST") +public class GetGroupMemberAction extends AdminAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputGetGroupMember input = getRequestBody(request.getNettyRequest(), InputGetGroupMember.class); + if (input != null + && (!StringUtil.isNullOrEmpty(input.getGroupId())) + && (!StringUtil.isNullOrEmpty(input.getMemberId()))) { + + WFCMessage.GroupMember groupMember = messagesStore.getGroupMember(input.getGroupId(), input.getMemberId()); + + RestResult result; + if (groupMember == null || StringUtil.isNullOrEmpty(groupMember.getMemberId()) || groupMember.getType() == ProtoConstants.GroupMemberType.GroupMemberType_Removed) { + result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST); + } else { + PojoGroupMember pm = new PojoGroupMember(); + pm.setMember_id(groupMember.getMemberId()); + pm.setAlias(groupMember.getAlias()); + pm.setType(groupMember.getType()); + pm.setExtra(groupMember.getExtra()); + pm.setCreateDt(groupMember.getCreateDt()); + result = RestResult.ok(pm); + } + setResponseContent(result, response); + } else { + setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response); + } + + } + return true; + } +} diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetGroupMemberAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetGroupMemberAction.java new file mode 100755 index 00000000..9c328018 --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetGroupMemberAction.java @@ -0,0 +1,98 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.robot; + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputGetGroup; +import cn.wildfirechat.pojos.InputGetGroupMember; +import cn.wildfirechat.pojos.OutputGroupMemberList; +import cn.wildfirechat.pojos.PojoGroupMember; +import cn.wildfirechat.proto.ProtoConstants; +import cn.wildfirechat.proto.WFCMessage; +import com.xiaoleilu.loServer.RestResult; +import com.xiaoleilu.loServer.annotation.HttpMethod; +import com.xiaoleilu.loServer.annotation.Route; +import com.xiaoleilu.loServer.handler.Request; +import com.xiaoleilu.loServer.handler.Response; +import io.netty.handler.codec.http.FullHttpRequest; +import io.netty.util.internal.StringUtil; + +import java.util.ArrayList; +import java.util.List; + +@Route(APIPath.Robot_Group_Member_Get) +@HttpMethod("POST") +public class GetGroupMemberAction extends RobotAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputGetGroupMember input = getRequestBody(request.getNettyRequest(), InputGetGroupMember.class); + String robotId = robot.getUid(); + if (input != null + && (!StringUtil.isNullOrEmpty(input.getGroupId())) + && (!StringUtil.isNullOrEmpty(input.getMemberId()))) { + + List members = new ArrayList<>(); + ErrorCode errorCode = messagesStore.getGroupMembers(null, input.getGroupId(), 0, members); + RestResult result; + if (errorCode != ErrorCode.ERROR_CODE_SUCCESS) { + result = RestResult.resultOf(errorCode); + } else { + WFCMessage.GroupMember groupMember = null; + boolean isInGroup = false; + for (WFCMessage.GroupMember member : members) { + if (member.getType() == ProtoConstants.GroupMemberType.GroupMemberType_Removed) { + continue; + } + if(member.getMemberId().equals(robotId)) { + isInGroup = true; + if(groupMember != null) { + break; + } + } + if(member.getMemberId().equals(input.getMemberId())) { + groupMember = member; + if(isInGroup) { + break; + } + } + } + if(!isInGroup) { + result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_IN_GROUP); + } else { + if(groupMember == null) { + result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST); + } else { + PojoGroupMember pm = new PojoGroupMember(); + pm.setMember_id(groupMember.getMemberId()); + pm.setAlias(groupMember.getAlias()); + pm.setType(groupMember.getType()); + pm.setExtra(groupMember.getExtra()); + pm.setCreateDt(groupMember.getCreateDt()); + result = RestResult.ok(pm); + } + } + } + + setResponseContent(result, response); + } else { + setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response); + } + + } + return true; + } +} diff --git a/common/src/main/java/cn/wildfirechat/common/APIPath.java b/common/src/main/java/cn/wildfirechat/common/APIPath.java index 12b4bf69..973793d4 100644 --- a/common/src/main/java/cn/wildfirechat/common/APIPath.java +++ b/common/src/main/java/cn/wildfirechat/common/APIPath.java @@ -68,6 +68,7 @@ public interface APIPath { String Group_Get_Info = "/admin/group/get_info"; String Group_Modify_Info = "/admin/group/modify"; String Group_Member_List = "/admin/group/member/list"; + String Group_Member_Get = "/admin/group/member/get"; String Group_Member_Add = "/admin/group/member/add"; String Group_Member_Kickoff = "/admin/group/member/del"; String Group_Member_Quit = "/admin/group/member/quit"; @@ -122,6 +123,7 @@ public interface APIPath { String Robot_Group_Dismiss = "/robot/group/del"; String Robot_Group_Get_Info = "/robot/group/get_info"; String Robot_Group_Member_List = "/robot/group/member/list"; + String Robot_Group_Member_Get = "/robot/group/member/get"; String Robot_Group_Member_Kickoff = "/robot/group/member/del"; String Robot_Group_Modify_Info = "/robot/group/modify"; String Robot_Group_Set_Member_Alias = "/robot/group/member/set_alias"; diff --git a/common/src/main/java/cn/wildfirechat/common/ErrorCode.java b/common/src/main/java/cn/wildfirechat/common/ErrorCode.java index bf06db7e..47a35e15 100755 --- a/common/src/main/java/cn/wildfirechat/common/ErrorCode.java +++ b/common/src/main/java/cn/wildfirechat/common/ErrorCode.java @@ -48,9 +48,7 @@ public enum ErrorCode { ERROR_CODE_NOT_YOUR_LOCKED(26, "unload failure, not your lock"), ERROR_CODE_ROBOT_NO_TOKEN(27, "robot no token"), ERROR_CODE_WS_NOT_CONFIGURED_CORRECTLY(28, "ws not configured correctly"), - ERROR_CODE_TIME_INCONSISTENT(30, "time inconsistent"), - ERROR_CODE_CONFERENCE_ROOM_NOT_EXIST(60, "conference room not exist"), ERROR_CODE_CONFERENCE_SERVICE_NOT_AVAILABLE(61, "conference service not available"), diff --git a/common/src/main/java/cn/wildfirechat/pojos/InputGetGroupMember.java b/common/src/main/java/cn/wildfirechat/pojos/InputGetGroupMember.java new file mode 100755 index 00000000..5f4f60d6 --- /dev/null +++ b/common/src/main/java/cn/wildfirechat/pojos/InputGetGroupMember.java @@ -0,0 +1,30 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package cn.wildfirechat.pojos; + +public class InputGetGroupMember { + private String groupId; + private String memberId; + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getMemberId() { + return memberId; + } + + public void setMemberId(String memberId) { + this.memberId = memberId; + } +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java index 5d4997a7..2ec2a2fb 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java @@ -71,6 +71,14 @@ public class GroupAdmin { return AdminHttpUtils.httpJsonPost(path, input, OutputGroupMemberList.class); } + public static IMResult getGroupMember(String groupId, String memberId) throws Exception { + String path = APIPath.Group_Member_Get; + InputGetGroupMember input = new InputGetGroupMember(); + input.setGroupId(groupId); + input.setMemberId(memberId); + return AdminHttpUtils.httpJsonPost(path, input, PojoGroupMember.class); + } + public static IMResult addGroupMembers(String operator, String groupId, List groupMembers, List to_lines, MessagePayload notify_message) throws Exception { String path = APIPath.Group_Member_Add; InputAddGroupMember addGroupMember = new InputAddGroupMember(); diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java index 8576dcb4..272c2c2e 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -572,6 +572,14 @@ public class Main { System.exit(-1); } + IMResult groupMemberIMResult = GroupAdmin.getGroupMember(groupInfo.getTarget_id(), "user1"); + if (groupMemberIMResult != null && groupMemberIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("get group member success"); + } else { + System.out.println("get group member failure"); + System.exit(-1); + } + voidIMResult = GroupAdmin.kickoffGroupMembers("user1", groupInfo.getTarget_id(), Arrays.asList("user3"), null, null); if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("kickoff group member success"); @@ -1215,7 +1223,7 @@ public class Main { if (resultGetMembers != null && resultGetMembers.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("get group member success"); } else { - System.out.println("create group failure"); + System.out.println("get group member failure"); System.exit(-1); } @@ -1231,6 +1239,14 @@ public class Main { System.exit(-1); } + IMResult groupMemberIMResult = robotService.getGroupMember(groupInfo.getTarget_id(), "user0"); + if (groupMemberIMResult != null && groupMemberIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("get group member success"); + } else { + System.out.println("get group member failure"); + System.exit(-1); + } + voidIMResult = robotService.kickoffGroupMembers(groupInfo.getTarget_id(), Arrays.asList("user3"), null, null); if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("kickoff group member success"); diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java b/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java index 96a7ca3e..69e008e0 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java @@ -134,6 +134,14 @@ public class RobotService { return robotHttpUtils.httpJsonPost(path, input, OutputGroupMemberList.class); } + public IMResult getGroupMember(String groupId, String memberId) throws Exception { + String path = APIPath.Robot_Group_Member_Get; + InputGetGroupMember input = new InputGetGroupMember(); + input.setGroupId(groupId); + input.setMemberId(memberId); + return robotHttpUtils.httpJsonPost(path, input, PojoGroupMember.class); + } + public IMResult addGroupMembers(String groupId, List groupMembers, List to_lines, MessagePayload notify_message) throws Exception { String path = APIPath.Robot_Group_Member_Add; InputAddGroupMember addGroupMember = new InputAddGroupMember();