From 4533c2aac6bdd95843cffd761e138da7e6e7a2b9 Mon Sep 17 00:00:00 2001 From: "heavyrain.lee" Date: Mon, 9 Mar 2020 16:17:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E5=AE=A4=E6=88=90=E5=91=98API=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/GetChatroomMembersAction.java | 74 +++++++++++++++++++ .../java/cn/wildfirechat/common/APIPath.java | 1 + .../cn/wildfirechat/sdk/ChatroomAdmin.java | 8 ++ .../main/java/cn/wildfirechat/sdk/Main.java | 7 ++ 4 files changed, 90 insertions(+) create mode 100755 broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetChatroomMembersAction.java diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetChatroomMembersAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetChatroomMembersAction.java new file mode 100755 index 00000000..385eef2e --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetChatroomMembersAction.java @@ -0,0 +1,74 @@ +/* + * 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.InputGetChatroomInfo; +import cn.wildfirechat.pojos.OutputGetChatroomInfo; +import cn.wildfirechat.pojos.OutputStringList; +import cn.wildfirechat.proto.WFCMessage; +import com.google.gson.Gson; +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.moquette.persistence.UserClientEntry; +import io.netty.handler.codec.http.FullHttpRequest; +import io.netty.handler.codec.http.HttpResponseStatus; +import io.netty.util.internal.StringUtil; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +@Route(APIPath.Chatroom_GetMembers) +@HttpMethod("POST") +public class GetChatroomMembersAction extends AdminAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputGetChatroomInfo getChatroomInfo = getRequestBody(request.getNettyRequest(), InputGetChatroomInfo.class); + String chatroomid = getChatroomInfo.getChatroomId(); + if (!StringUtil.isNullOrEmpty(chatroomid)) { + + Collection members = messagesStore.getChatroomMembers(chatroomid); + + List list = new ArrayList<>(); + for (UserClientEntry entry : members) { + list.add(entry.userId); + } + + RestResult result; + if (!list.isEmpty()) { + result = RestResult.ok(new OutputStringList(list)); + } else { + result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST); + } + response.setStatus(HttpResponseStatus.OK); + + response.setContent(new Gson().toJson(result)); + + } else { + response.setStatus(HttpResponseStatus.OK); + RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER); + response.setContent(new Gson().toJson(result)); + } + + } + 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 bb8548ef..a068fd97 100644 --- a/common/src/main/java/cn/wildfirechat/common/APIPath.java +++ b/common/src/main/java/cn/wildfirechat/common/APIPath.java @@ -4,6 +4,7 @@ public interface APIPath { String Create_Chatroom = "/admin/chatroom/create"; String Chatroom_Destroy = "/admin/chatroom/del"; String Chatroom_Info = "/admin/chatroom/info"; + String Chatroom_GetMembers = "/admin/chatroom/members"; String Sensitive_Add = "/admin/sensitive/add"; diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/ChatroomAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/ChatroomAdmin.java index 36f3d26f..9e6bf161 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/ChatroomAdmin.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/ChatroomAdmin.java @@ -30,5 +30,13 @@ public class ChatroomAdmin { InputGetChatroomInfo input = new InputGetChatroomInfo(chatroomId); return AdminHttpUtils.httpJsonPost(path, input, OutputGetChatroomInfo.class); } + + public static IMResult getChatroomMembers(String chatroomId) throws Exception { + String path = APIPath.Chatroom_GetMembers; + InputGetChatroomInfo input = new InputGetChatroomInfo(chatroomId); + return AdminHttpUtils.httpJsonPost(path, input, OutputStringList.class); + } + + } diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java index abb53558..b8b632fe 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -545,6 +545,13 @@ public class Main { System.exit(-1); } + IMResult memberList = ChatroomAdmin.getChatroomMembers(chatroomId); + if (memberList != null && memberList.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("get chatroom member success"); + } else { + System.out.println("get chatroom member failure: " + memberList.getErrorCode().msg); + } + IMResult voidIMResult = ChatroomAdmin.destroyChatroom(chatroomId); if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("destroy chatroom done!");