server api添加获取单个群成员信息的接口

This commit is contained in:
heavyrian2012
2023-05-04 19:00:08 +08:00
parent 3c11c368a3
commit ca50872913
8 changed files with 232 additions and 3 deletions
@@ -0,0 +1,69 @@
/*
* This file is part of the Wildfire Chat package.
* (c) Heavyrain2012 <[email protected]>
*
* 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;
}
}
@@ -0,0 +1,98 @@
/*
* This file is part of the Wildfire Chat package.
* (c) Heavyrain2012 <[email protected]>
*
* 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<WFCMessage.GroupMember> 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;
}
}
@@ -68,6 +68,7 @@ public interface APIPath {
String Group_Get_Info = "/admin/group/get_info"; String Group_Get_Info = "/admin/group/get_info";
String Group_Modify_Info = "/admin/group/modify"; String Group_Modify_Info = "/admin/group/modify";
String Group_Member_List = "/admin/group/member/list"; 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_Add = "/admin/group/member/add";
String Group_Member_Kickoff = "/admin/group/member/del"; String Group_Member_Kickoff = "/admin/group/member/del";
String Group_Member_Quit = "/admin/group/member/quit"; 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_Dismiss = "/robot/group/del";
String Robot_Group_Get_Info = "/robot/group/get_info"; String Robot_Group_Get_Info = "/robot/group/get_info";
String Robot_Group_Member_List = "/robot/group/member/list"; 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_Member_Kickoff = "/robot/group/member/del";
String Robot_Group_Modify_Info = "/robot/group/modify"; String Robot_Group_Modify_Info = "/robot/group/modify";
String Robot_Group_Set_Member_Alias = "/robot/group/member/set_alias"; String Robot_Group_Set_Member_Alias = "/robot/group/member/set_alias";
@@ -48,9 +48,7 @@ public enum ErrorCode {
ERROR_CODE_NOT_YOUR_LOCKED(26, "unload failure, not your lock"), ERROR_CODE_NOT_YOUR_LOCKED(26, "unload failure, not your lock"),
ERROR_CODE_ROBOT_NO_TOKEN(27, "robot no token"), ERROR_CODE_ROBOT_NO_TOKEN(27, "robot no token"),
ERROR_CODE_WS_NOT_CONFIGURED_CORRECTLY(28, "ws not configured correctly"), ERROR_CODE_WS_NOT_CONFIGURED_CORRECTLY(28, "ws not configured correctly"),
ERROR_CODE_TIME_INCONSISTENT(30, "time inconsistent"), ERROR_CODE_TIME_INCONSISTENT(30, "time inconsistent"),
ERROR_CODE_CONFERENCE_ROOM_NOT_EXIST(60, "conference room not exist"), ERROR_CODE_CONFERENCE_ROOM_NOT_EXIST(60, "conference room not exist"),
ERROR_CODE_CONFERENCE_SERVICE_NOT_AVAILABLE(61, "conference service not available"), ERROR_CODE_CONFERENCE_SERVICE_NOT_AVAILABLE(61, "conference service not available"),
@@ -0,0 +1,30 @@
/*
* This file is part of the Wildfire Chat package.
* (c) Heavyrain2012 <[email protected]>
*
* 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;
}
}
@@ -71,6 +71,14 @@ public class GroupAdmin {
return AdminHttpUtils.httpJsonPost(path, input, OutputGroupMemberList.class); return AdminHttpUtils.httpJsonPost(path, input, OutputGroupMemberList.class);
} }
public static IMResult<PojoGroupMember> 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<Void> addGroupMembers(String operator, String groupId, List<PojoGroupMember> groupMembers, List<Integer> to_lines, MessagePayload notify_message) throws Exception { public static IMResult<Void> addGroupMembers(String operator, String groupId, List<PojoGroupMember> groupMembers, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
String path = APIPath.Group_Member_Add; String path = APIPath.Group_Member_Add;
InputAddGroupMember addGroupMember = new InputAddGroupMember(); InputAddGroupMember addGroupMember = new InputAddGroupMember();
@@ -572,6 +572,14 @@ public class Main {
System.exit(-1); System.exit(-1);
} }
IMResult<PojoGroupMember> 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); voidIMResult = GroupAdmin.kickoffGroupMembers("user1", groupInfo.getTarget_id(), Arrays.asList("user3"), null, null);
if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) {
System.out.println("kickoff group member success"); System.out.println("kickoff group member success");
@@ -1215,7 +1223,7 @@ public class Main {
if (resultGetMembers != null && resultGetMembers.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { if (resultGetMembers != null && resultGetMembers.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) {
System.out.println("get group member success"); System.out.println("get group member success");
} else { } else {
System.out.println("create group failure"); System.out.println("get group member failure");
System.exit(-1); System.exit(-1);
} }
@@ -1231,6 +1239,14 @@ public class Main {
System.exit(-1); System.exit(-1);
} }
IMResult<PojoGroupMember> 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); voidIMResult = robotService.kickoffGroupMembers(groupInfo.getTarget_id(), Arrays.asList("user3"), null, null);
if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) {
System.out.println("kickoff group member success"); System.out.println("kickoff group member success");
@@ -134,6 +134,14 @@ public class RobotService {
return robotHttpUtils.httpJsonPost(path, input, OutputGroupMemberList.class); return robotHttpUtils.httpJsonPost(path, input, OutputGroupMemberList.class);
} }
public IMResult<PojoGroupMember> 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<Void> addGroupMembers(String groupId, List<PojoGroupMember> groupMembers, List<Integer> to_lines, MessagePayload notify_message) throws Exception { public IMResult<Void> addGroupMembers(String groupId, List<PojoGroupMember> groupMembers, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
String path = APIPath.Robot_Group_Member_Add; String path = APIPath.Robot_Group_Member_Add;
InputAddGroupMember addGroupMember = new InputAddGroupMember(); InputAddGroupMember addGroupMember = new InputAddGroupMember();