From 6d91f3869eea34f2019a149f88b9bdcfa3e078c8 Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Wed, 25 Sep 2024 11:07:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E7=BE=A4=E7=BB=84=E6=88=96?= =?UTF-8?q?=E8=80=85=E6=B7=BB=E5=8A=A0=E7=BE=A4=E7=BB=84=E6=88=90=E5=91=98?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E7=BE=A4=E7=BB=84=E6=88=90=E5=91=98=E7=9A=84?= =?UTF-8?q?Extra=E4=BC=9A=E6=94=BE=E5=88=B0=E9=80=9A=E7=9F=A5=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E7=9A=84extra=E4=B8=AD=EF=BC=8C=E8=BF=99=E6=A0=B7?= =?UTF-8?q?=E4=BE=BF=E4=BA=8E=E4=B8=9A=E5=8A=A1=E5=A4=84=E7=90=86=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/moquette/imhandler/AddGroupMember.java | 2 +- .../imhandler/CreateGroupHandler.java | 2 +- .../pojos/GroupNotificationBinaryContent.java | 15 +++++- .../pojos/InputAddGroupMember.java | 12 +++++ .../wildfirechat/pojos/InputCreateGroup.java | 12 +++++ .../java/cn/wildfirechat/sdk/GroupAdmin.java | 7 +-- .../main/java/cn/wildfirechat/sdk/Main.java | 46 +++++++++++++++++-- .../cn/wildfirechat/sdk/RobotService.java | 6 ++- 8 files changed, 89 insertions(+), 13 deletions(-) diff --git a/broker/src/main/java/io/moquette/imhandler/AddGroupMember.java b/broker/src/main/java/io/moquette/imhandler/AddGroupMember.java index 65042524..51c80884 100644 --- a/broker/src/main/java/io/moquette/imhandler/AddGroupMember.java +++ b/broker/src/main/java/io/moquette/imhandler/AddGroupMember.java @@ -43,7 +43,7 @@ public class AddGroupMember extends GroupHandler 0) { sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent()); } else { - WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, null, getMemberIdList(request.getAddedMemberList())).getAddGroupNotifyContent(); + WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, null, getMemberIdList(request.getAddedMemberList())).setExtra(request.getExtra()).getAddGroupNotifyContent(); sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), content); } } diff --git a/broker/src/main/java/io/moquette/imhandler/CreateGroupHandler.java b/broker/src/main/java/io/moquette/imhandler/CreateGroupHandler.java index a4e5ecf8..5d98e639 100644 --- a/broker/src/main/java/io/moquette/imhandler/CreateGroupHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/CreateGroupHandler.java @@ -63,7 +63,7 @@ public class CreateGroupHandler extends GroupHandler 0) { sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent()); } else { - WFCMessage.MessageContent content = new GroupNotificationBinaryContent(groupInfo.getTargetId(), fromUser, groupInfo.getName(), "").getCreateGroupNotifyContent(); + WFCMessage.MessageContent content = new GroupNotificationBinaryContent(groupInfo.getTargetId(), fromUser, groupInfo.getName(), "").setExtra(request.getMemberExtra()).getCreateGroupNotifyContent(); sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), content); } } diff --git a/common/src/main/java/cn/wildfirechat/pojos/GroupNotificationBinaryContent.java b/common/src/main/java/cn/wildfirechat/pojos/GroupNotificationBinaryContent.java index a5e7e6fc..7d9d1f9b 100644 --- a/common/src/main/java/cn/wildfirechat/pojos/GroupNotificationBinaryContent.java +++ b/common/src/main/java/cn/wildfirechat/pojos/GroupNotificationBinaryContent.java @@ -13,6 +13,7 @@ import cn.wildfirechat.proto.WFCMessage; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.protobuf.ByteString; +import io.netty.util.internal.StringUtil; import java.util.List; @@ -32,6 +33,8 @@ public class GroupNotificationBinaryContent { //value2(member or something) private String m; + private String extra; + public GroupNotificationBinaryContent() { } @@ -89,8 +92,18 @@ public class GroupNotificationBinaryContent { this.ms = ms; } + public GroupNotificationBinaryContent setExtra(String extra) { + this.extra = extra; + return this; + } + public WFCMessage.MessageContent getGroupNotifyContent(int groupContentType) { - return WFCMessage.MessageContent.newBuilder().setType(groupContentType).setData(ByteString.copyFromUtf8(new GsonBuilder().disableHtmlEscaping().create().toJson(this))).build(); + WFCMessage.MessageContent.Builder builder = WFCMessage.MessageContent.newBuilder().setType(groupContentType).setData(ByteString.copyFromUtf8(new GsonBuilder().disableHtmlEscaping().create().toJson(this))); + if(!StringUtil.isNullOrEmpty(extra)) { + builder.setExtra(extra); + } + return builder.build(); + } public WFCMessage.MessageContent getAddGroupNotifyContent() { diff --git a/common/src/main/java/cn/wildfirechat/pojos/InputAddGroupMember.java b/common/src/main/java/cn/wildfirechat/pojos/InputAddGroupMember.java index 4b39f262..92202ef0 100755 --- a/common/src/main/java/cn/wildfirechat/pojos/InputAddGroupMember.java +++ b/common/src/main/java/cn/wildfirechat/pojos/InputAddGroupMember.java @@ -17,6 +17,7 @@ import java.util.List; public class InputAddGroupMember extends InputGroupBase { private String group_id; private List members; + private String member_extra; public String getGroup_id() { return group_id; @@ -34,6 +35,14 @@ public class InputAddGroupMember extends InputGroupBase { this.members = members; } + public String getMember_extra() { + return member_extra; + } + + public void setMemberExtra(String extra) { + this.member_extra = extra; + } + public boolean isValide() { return true; } @@ -41,6 +50,9 @@ public class InputAddGroupMember extends InputGroupBase { public WFCMessage.AddGroupMemberRequest toProtoGroupRequest() { WFCMessage.AddGroupMemberRequest.Builder addGroupBuilder = WFCMessage.AddGroupMemberRequest.newBuilder(); addGroupBuilder.setGroupId(group_id); + if(!StringUtil.isNullOrEmpty(member_extra)) { + addGroupBuilder.setExtra(member_extra); + } for (PojoGroupMember pojoGroupMember : getMembers()) { WFCMessage.GroupMember.Builder groupMemberBuilder = WFCMessage.GroupMember.newBuilder().setMemberId(pojoGroupMember.getMember_id()); if (!StringUtil.isNullOrEmpty(pojoGroupMember.getAlias())) { diff --git a/common/src/main/java/cn/wildfirechat/pojos/InputCreateGroup.java b/common/src/main/java/cn/wildfirechat/pojos/InputCreateGroup.java index 4c669748..39cae453 100755 --- a/common/src/main/java/cn/wildfirechat/pojos/InputCreateGroup.java +++ b/common/src/main/java/cn/wildfirechat/pojos/InputCreateGroup.java @@ -16,6 +16,7 @@ import java.util.List; public class InputCreateGroup extends InputGroupBase { private PojoGroup group; + private String member_extra; public boolean isValide() { return true; @@ -87,6 +88,9 @@ public class InputCreateGroup extends InputGroupBase { WFCMessage.CreateGroupRequest.Builder createGroupReqBuilder = WFCMessage.CreateGroupRequest.newBuilder(); createGroupReqBuilder.setGroup(groupBuilder); + if(!StringUtil.isNullOrEmpty(member_extra)) { + createGroupReqBuilder.setMemberExtra(member_extra); + } if (to_lines != null) { for (Integer line : to_lines ) { @@ -107,4 +111,12 @@ public class InputCreateGroup extends InputGroupBase { public void setGroup(PojoGroup group) { this.group = group; } + + public String getMember_extra() { + return member_extra; + } + + public void setMember_extra(String member_extra) { + this.member_extra = member_extra; + } } diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java index 35d1205b..decb8a4d 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java @@ -2,14 +2,13 @@ package cn.wildfirechat.sdk; import cn.wildfirechat.common.APIPath; import cn.wildfirechat.pojos.*; -import cn.wildfirechat.proto.ProtoConstants; import cn.wildfirechat.sdk.model.IMResult; import cn.wildfirechat.sdk.utilities.AdminHttpUtils; import java.util.List; public class GroupAdmin { - public static IMResult createGroup(String operator, PojoGroupInfo group_info, List members, List to_lines, MessagePayload notify_message) throws Exception { + public static IMResult createGroup(String operator, PojoGroupInfo group_info, List members, String member_extra, List to_lines, MessagePayload notify_message) throws Exception { String path = APIPath.Create_Group; PojoGroup pojoGroup = new PojoGroup(); pojoGroup.setGroup_info(group_info); @@ -17,6 +16,7 @@ public class GroupAdmin { InputCreateGroup createGroup = new InputCreateGroup(); createGroup.setGroup(pojoGroup); createGroup.setOperator(operator); + createGroup.setMember_extra(member_extra); createGroup.setTo_lines(to_lines); createGroup.setNotify_message(notify_message); @@ -85,12 +85,13 @@ public class GroupAdmin { 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 { + public static IMResult addGroupMembers(String operator, String groupId, List groupMembers, String member_extra, List to_lines, MessagePayload notify_message) throws Exception { String path = APIPath.Group_Member_Add; InputAddGroupMember addGroupMember = new InputAddGroupMember(); addGroupMember.setGroup_id(groupId); addGroupMember.setMembers(groupMembers); addGroupMember.setOperator(operator); + addGroupMember.setMemberExtra(member_extra); addGroupMember.setTo_lines(to_lines); addGroupMember.setNotify_message(notify_message); return AdminHttpUtils.httpJsonPost(path, addGroupMember, Void.class); diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java index 743de5b1..a0f7778c 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -503,7 +503,7 @@ public class Main { member3.setMember_id("user3"); members.add(member3); - IMResult resultCreateGroup = GroupAdmin.createGroup(groupInfo.getOwner(), groupInfo, members, null, null); + IMResult resultCreateGroup = GroupAdmin.createGroup(groupInfo.getOwner(), groupInfo, members, null, null, null); if (resultCreateGroup != null && resultCreateGroup.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("create group success"); } else { @@ -575,7 +575,7 @@ public class Main { m.setMember_id("user1"); m.setAlias("hello user1"); - voidIMResult = GroupAdmin.addGroupMembers("user1", groupInfo.getTarget_id(), Arrays.asList(m), null, null); + voidIMResult = GroupAdmin.addGroupMembers("user1", groupInfo.getTarget_id(), Arrays.asList(m), null, null, null); if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("add group member success"); } else { @@ -1065,7 +1065,43 @@ public class Main { System.exit(-1); } - IMResult voidIMResult = ChannelAdmin.destroyChannel(inputCreateChannel.getTargetId()); + String subscriber = "aaa"; + IMResult voidIMResult = ChannelAdmin.subscribeChannel(inputCreateChannel.getTargetId(), subscriber); + if(voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("subscribeChannel success"); + } else { + System.out.println("subscriber channel failure"); + System.exit(-1); + } + + Thread.sleep(100); + IMResult booleanIMResult = ChannelAdmin.isUserSubscribedChannel(subscriber, inputCreateChannel.getTargetId()); + if(booleanIMResult != null && booleanIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && booleanIMResult.getResult().value) { + System.out.println("subscribe status is correct"); + } else { + System.out.println("subscribe status is incorrect"); + System.exit(-1); + } + + + voidIMResult = ChannelAdmin.unsubscribeChannel(inputCreateChannel.getTargetId(), subscriber); + if(voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("unsubscribeChannel success"); + } else { + System.out.println("unsubscriber channel failure"); + System.exit(-1); + } + Thread.sleep(100); + + booleanIMResult = ChannelAdmin.isUserSubscribedChannel(subscriber, inputCreateChannel.getTargetId()); + if(booleanIMResult != null && booleanIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && !booleanIMResult.getResult().value) { + System.out.println("subscribe status is correct"); + } else { + System.out.println("subscribe status is incorrect"); + System.exit(-1); + } + + voidIMResult = ChannelAdmin.destroyChannel(inputCreateChannel.getTargetId()); if(voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("success"); } else { @@ -1442,7 +1478,7 @@ public class Main { member3.setMember_id("user3"); members.add(member3); - IMResult resultCreateGroup = robotService.createGroup(groupInfo, members, null, null); + IMResult resultCreateGroup = robotService.createGroup(groupInfo, members, null, null, null); if (resultCreateGroup != null && resultCreateGroup.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("create group success"); } else { @@ -1486,7 +1522,7 @@ public class Main { m.setMember_id("user0"); m.setAlias("hello user0"); - voidIMResult = robotService.addGroupMembers(groupInfo.getTarget_id(), Arrays.asList(m), null, null); + voidIMResult = robotService.addGroupMembers(groupInfo.getTarget_id(), Arrays.asList(m), null, null, null); if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("add group member success"); } else { diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java b/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java index ad8898e0..1fccc074 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java @@ -96,13 +96,14 @@ public class RobotService { return robotHttpUtils.httpJsonPost(path, pojo, Void.class); } - public IMResult createGroup(PojoGroupInfo group_info, List members, List to_lines, MessagePayload notify_message) throws Exception { + public IMResult createGroup(PojoGroupInfo group_info, List members, String member_extra, List to_lines, MessagePayload notify_message) throws Exception { String path = APIPath.Robot_Create_Group; PojoGroup pojoGroup = new PojoGroup(); pojoGroup.setGroup_info(group_info); pojoGroup.setMembers(members); InputCreateGroup createGroup = new InputCreateGroup(); createGroup.setGroup(pojoGroup); + createGroup.setMember_extra(member_extra); createGroup.setTo_lines(to_lines); createGroup.setNotify_message(notify_message); @@ -163,11 +164,12 @@ public class RobotService { return robotHttpUtils.httpJsonPost(path, input, PojoGroupMember.class); } - public IMResult addGroupMembers(String groupId, List groupMembers, List to_lines, MessagePayload notify_message) throws Exception { + public IMResult addGroupMembers(String groupId, List groupMembers, String member_extra, List to_lines, MessagePayload notify_message) throws Exception { String path = APIPath.Robot_Group_Member_Add; InputAddGroupMember addGroupMember = new InputAddGroupMember(); addGroupMember.setGroup_id(groupId); addGroupMember.setMembers(groupMembers); + addGroupMember.setMemberExtra(member_extra); addGroupMember.setTo_lines(to_lines); addGroupMember.setNotify_message(notify_message); return robotHttpUtils.httpJsonPost(path, addGroupMember, Void.class);