From c44062855b9bc689bb8efd5d6f6459e9a83b2c41 Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Tue, 26 Apr 2022 20:05:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96=E5=8D=95?= =?UTF-8?q?=E6=9D=A1=E6=B6=88=E6=81=AF=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/admin/GetMessageAction.java | 56 +++++++++++++++++++ .../java/cn/wildfirechat/common/APIPath.java | 1 + .../wildfirechat/pojos/InputMessageUid.java | 12 ++++ .../main/java/cn/wildfirechat/sdk/Main.java | 35 +++++++----- .../cn/wildfirechat/sdk/MessageAdmin.java | 12 +++- 5 files changed, 101 insertions(+), 15 deletions(-) create mode 100755 broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetMessageAction.java create mode 100644 common/src/main/java/cn/wildfirechat/pojos/InputMessageUid.java diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetMessageAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetMessageAction.java new file mode 100755 index 00000000..49f4a93f --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetMessageAction.java @@ -0,0 +1,56 @@ +/* + * 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.InputMessageUid; +import cn.wildfirechat.pojos.OutputMessageData; +import cn.wildfirechat.pojos.RecallMessageData; +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.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import io.netty.handler.codec.http.FullHttpRequest; +import io.netty.util.internal.StringUtil; +import win.liyufan.im.IMTopic; + +@Route(APIPath.Msg_GetOne) +@HttpMethod("POST") +public class GetMessageAction extends AdminAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputMessageUid inputMessageUid = getRequestBody(request.getNettyRequest(), InputMessageUid.class); + if (inputMessageUid != null && inputMessageUid.messageUid > 0) { + RestResult result; + WFCMessage.Message msg = messagesStore.getMessage(inputMessageUid.messageUid); + if(msg == null) { + result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST); + } else { + result = RestResult.ok(OutputMessageData.fromProtoMessage(msg)); + } + 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 7f88cefe..9411c435 100644 --- a/common/src/main/java/cn/wildfirechat/common/APIPath.java +++ b/common/src/main/java/cn/wildfirechat/common/APIPath.java @@ -50,6 +50,7 @@ public interface APIPath { String Msg_Recall = "/admin/message/recall"; String Msg_Delete = "/admin/message/delete"; String Msg_Update = "/admin/message/update"; + String Msg_GetOne = "/admin/message/get_one"; String Msg_Broadcast = "/admin/message/broadcast"; String Msg_Multicast = "/admin/message/multicast"; String Msg_RecallBroadCast = "/admin/message/recall_broadcast"; diff --git a/common/src/main/java/cn/wildfirechat/pojos/InputMessageUid.java b/common/src/main/java/cn/wildfirechat/pojos/InputMessageUid.java new file mode 100644 index 00000000..b26e6fea --- /dev/null +++ b/common/src/main/java/cn/wildfirechat/pojos/InputMessageUid.java @@ -0,0 +1,12 @@ +package cn.wildfirechat.pojos; + +public class InputMessageUid { + public long messageUid; + + public InputMessageUid() { + } + + public InputMessageUid(long messageUid) { + this.messageUid = messageUid; + } +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java index 909ee6e4..c1fe50a7 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -34,8 +34,8 @@ public class Main { testAdmin(); //Robot和Channel都是使用的80端口,第三方可以创建或者为第三方创建,第三方可以使用robot或者channel与IM系统进行对接。 - testRobot(); - testChannel(); +// testRobot(); +// testChannel(); } @@ -43,19 +43,19 @@ public class Main { //初始化服务API AdminConfig.initAdmin(AdminUrl, AdminSecret); - testUser(); - testUserRelation(); - testGroup(); - testChatroom(); +// testUser(); +// testUserRelation(); +// testGroup(); +// testChatroom(); testMessage(); - testGeneralApi(); - testSensitiveApi(); - if (commercialServer) { - testDevice(); - } - if(advanceVoip) { - testConference(); - } +// testGeneralApi(); +// testSensitiveApi(); +// if (commercialServer) { +// testDevice(); +// } +// if(advanceVoip) { +// testConference(); +// } System.out.println("Congratulation, all admin test case passed!!!!!!!"); } @@ -667,6 +667,13 @@ public class Main { System.exit(-1); } + IMResult outputMessageDataIMResult = MessageAdmin.getMessage(resultSendMessage.result.getMessageUid()); + if(outputMessageDataIMResult != null && outputMessageDataIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && outputMessageDataIMResult.getResult().getMessageId() == resultSendMessage.getResult().getMessageUid()) { + System.out.println("get message success"); + } else { + System.out.println("get message failure"); + System.exit(-1); + } IMResult voidIMResult = MessageAdmin.recallMessage("user1", resultSendMessage.getResult().getMessageUid()); if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/MessageAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/MessageAdmin.java index 5a5fbdcf..6b27d9ef 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/MessageAdmin.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/MessageAdmin.java @@ -48,7 +48,17 @@ public class MessageAdmin { return AdminHttpUtils.httpJsonPost(path, updateMessageContentData, Void.class); } - + /** + * 获取单条消息。如果想要更多消息的读取,可以直接读取IM服务的数据库。 + * @param messageUid + * @return + * @throws Exception + */ + public static IMResult getMessage(long messageUid) throws Exception { + String path = APIPath.Msg_GetOne; + InputMessageUid inputMessageUid = new InputMessageUid(messageUid); + return AdminHttpUtils.httpJsonPost(path, inputMessageUid, OutputMessageData.class); + } /** * 撤回群发或者广播的消息