From ac225b1541735a831ce8a9cd870cafab996876da Mon Sep 17 00:00:00 2001 From: imhao183 Date: Fri, 27 Dec 2019 09:41:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=80=80=E5=87=BA=E7=BE=A4?= =?UTF-8?q?=E7=BB=84api=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/admin/QuitGroupMemberAction.java | 85 +++++++++++++++++++ broker/src/main/resources/git.properties | 15 ++++ .../java/cn/wildfirechat/common/APIPath.java | 1 + .../cn/wildfirechat/pojos/InputQuitGroup.java | 48 +++++++++++ .../java/cn/wildfirechat/sdk/GroupAdmin.java | 10 +++ .../main/java/cn/wildfirechat/sdk/Main.java | 10 +++ 6 files changed, 169 insertions(+) create mode 100755 broker/src/main/java/com/xiaoleilu/loServer/action/admin/QuitGroupMemberAction.java create mode 100644 broker/src/main/resources/git.properties create mode 100755 common/src/main/java/cn/wildfirechat/pojos/InputQuitGroup.java diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/QuitGroupMemberAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/QuitGroupMemberAction.java new file mode 100755 index 00000000..873316c6 --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/QuitGroupMemberAction.java @@ -0,0 +1,85 @@ +/* + * 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.InputKickoffGroupMember; +import cn.wildfirechat.pojos.InputQuitGroup; +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.RPCCenter; +import io.moquette.persistence.TargetEntry; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import io.netty.handler.codec.http.FullHttpRequest; +import io.netty.handler.codec.http.HttpResponseStatus; +import win.liyufan.im.IMTopic; + +import java.util.concurrent.Executor; + +@Route(APIPath.Group_Member_Quit) +@HttpMethod("POST") +public class QuitGroupMemberAction extends AdminAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputQuitGroup inputQuitGroup = getRequestBody(request.getNettyRequest(), InputQuitGroup.class); + if (inputQuitGroup.isValide()) { + RPCCenter.getInstance().sendRequest(inputQuitGroup.getOperator(), null, IMTopic.QuitGroupTopic, inputQuitGroup.toProtoGroupRequest().toByteArray(), inputQuitGroup.getOperator(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() { + @Override + public void onSuccess(byte[] result) { + ByteBuf byteBuf = Unpooled.buffer(); + byteBuf.writeBytes(result); + ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); + if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { + sendResponse(response, null, null); + } else { + sendResponse(response, errorCode, null); + } + } + + @Override + public void onError(ErrorCode errorCode) { + sendResponse(response, errorCode, null); + } + + @Override + public void onTimeout() { + sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null); + } + + @Override + public Executor getResponseExecutor() { + return command -> { + ctx.executor().execute(command); + }; + } + }, true); + return false; + } else { + response.setStatus(HttpResponseStatus.OK); + RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER); + response.setContent(new Gson().toJson(result)); + } + } + return true; + } +} diff --git a/broker/src/main/resources/git.properties b/broker/src/main/resources/git.properties new file mode 100644 index 00000000..8423a062 --- /dev/null +++ b/broker/src/main/resources/git.properties @@ -0,0 +1,15 @@ +#Generated by Git-Commit-Id-Plugin +#Fri Dec 27 09:00:37 CST 2019 +git.commit.id.abbrev=c3f934e +git.commit.user.email=wildfirechat86@gmail.com +git.commit.message.full=禁止发送消息给被封禁用户\n +git.commit.id=c3f934e3f01fb25783475896a222c75316bbfbf9 +git.commit.message.short=禁止发送消息给被封禁用户 +git.commit.user.name=imhao183 +git.build.user.name=imhao183 +git.commit.id.describe=v0.20-309-gc3f934e-dirty +git.build.user.email=wildfirechat86@gmail.com +git.branch=wfmaster +git.commit.time=20191226211857 +git.build.time=20191227090037 +git.remote.origin.url=https\://github.com/wildfirechat/server.git diff --git a/common/src/main/java/cn/wildfirechat/common/APIPath.java b/common/src/main/java/cn/wildfirechat/common/APIPath.java index 79cfa501..2a155afa 100644 --- a/common/src/main/java/cn/wildfirechat/common/APIPath.java +++ b/common/src/main/java/cn/wildfirechat/common/APIPath.java @@ -37,6 +37,7 @@ public interface APIPath { String Group_Member_List = "/admin/group/member/list"; String Group_Member_Add = "/admin/group/member/add"; String Group_Member_Kickoff = "/admin/group/member/del"; + String Group_Member_Quit = "/admin/group/member/quit"; String Group_Set_Manager = "/admin/group/manager/set"; String Get_User_Groups = "/admin/group/of_user"; diff --git a/common/src/main/java/cn/wildfirechat/pojos/InputQuitGroup.java b/common/src/main/java/cn/wildfirechat/pojos/InputQuitGroup.java new file mode 100755 index 00000000..3806b643 --- /dev/null +++ b/common/src/main/java/cn/wildfirechat/pojos/InputQuitGroup.java @@ -0,0 +1,48 @@ +/* + * 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; + + +import cn.wildfirechat.proto.WFCMessage; + +import java.util.List; + +public class InputQuitGroup extends InputGroupBase { + private String group_id; + + public String getGroup_id() { + return group_id; + } + + public void setGroup_id(String group_id) { + this.group_id = group_id; + } + + public boolean isValide() { + return true; + } + + public WFCMessage.QuitGroupRequest toProtoGroupRequest() { + WFCMessage.QuitGroupRequest.Builder removedGroupBuilder = WFCMessage.QuitGroupRequest.newBuilder(); + removedGroupBuilder.setGroupId(group_id); + + if (to_lines != null) { + for (Integer line : to_lines + ) { + removedGroupBuilder.addToLine(line); + } + } + + if (notify_message != null) { + removedGroupBuilder.setNotifyContent(notify_message.toProtoMessageContent()); + } + return removedGroupBuilder.build(); + } + +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java index 732deb03..77848c8a 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java @@ -113,6 +113,16 @@ public class GroupAdmin { return AdminHttpUtils.httpJsonPost(path, kickoffGroupMember, Void.class); } + public static IMResult quitGroup(String operator, String groupId, List to_lines, MessagePayload notify_message) throws Exception { + String path = APIPath.Group_Member_Quit; + InputQuitGroup quitGroup = new InputQuitGroup(); + quitGroup.setGroup_id(groupId); + quitGroup.setOperator(operator); + quitGroup.setTo_lines(to_lines); + quitGroup.setNotify_message(notify_message); + return AdminHttpUtils.httpJsonPost(path, quitGroup, Void.class); + } + public static IMResult getUserGroups(String user) throws Exception { String path = APIPath.Get_User_Groups; InputUserId inputUserId = new InputUserId(); diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java index 7b69f984..9ee7c525 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -40,6 +40,7 @@ public class Main { createRobot.setUserId("robot1"); createRobot.setName("robot1"); createRobot.setDisplayName("机器人"); + createRobot.setOwner("userId1"); createRobot.setSecret("123456"); createRobot.setCallback("http://127.0.0.1:8883/robot/recvmsg"); IMResult resultCreateRobot = UserAdmin.createRobot(createRobot); @@ -284,6 +285,15 @@ public class Main { System.exit(-1); } + + voidIMResult = GroupAdmin.quitGroup("user4", groupInfo.getTarget_id(), null, null); + if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("quit group success"); + } else { + System.out.println("quit group failure"); + System.exit(-1); + } + IMResult groupIdsIMResult = GroupAdmin.getUserGroups("user1"); if (groupIdsIMResult != null && groupIdsIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { if (groupIdsIMResult.getResult().getGroupIds().contains(groupInfo.getTarget_id())) {