创建群组或者添加群组成员时,群组成员的Extra会放到通知消息的extra中,这样便于业务处理通知消息

This commit is contained in:
heavyrian2012
2024-09-25 11:07:12 +08:00
parent d100bd5fb1
commit 6d91f3869e
8 changed files with 89 additions and 13 deletions
@@ -43,7 +43,7 @@ public class AddGroupMember extends GroupHandler<WFCMessage.AddGroupMemberReques
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) { if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent()); sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
} else { } 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); sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), content);
} }
} }
@@ -63,7 +63,7 @@ public class CreateGroupHandler extends GroupHandler<WFCMessage.CreateGroupReque
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0) { if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent()); sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent());
} else { } 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); sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), content);
} }
} }
@@ -13,6 +13,7 @@ import cn.wildfirechat.proto.WFCMessage;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.protobuf.ByteString; import com.google.protobuf.ByteString;
import io.netty.util.internal.StringUtil;
import java.util.List; import java.util.List;
@@ -32,6 +33,8 @@ public class GroupNotificationBinaryContent {
//value2(member or something) //value2(member or something)
private String m; private String m;
private String extra;
public GroupNotificationBinaryContent() { public GroupNotificationBinaryContent() {
} }
@@ -89,8 +92,18 @@ public class GroupNotificationBinaryContent {
this.ms = ms; this.ms = ms;
} }
public GroupNotificationBinaryContent setExtra(String extra) {
this.extra = extra;
return this;
}
public WFCMessage.MessageContent getGroupNotifyContent(int groupContentType) { 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() { public WFCMessage.MessageContent getAddGroupNotifyContent() {
@@ -17,6 +17,7 @@ import java.util.List;
public class InputAddGroupMember extends InputGroupBase { public class InputAddGroupMember extends InputGroupBase {
private String group_id; private String group_id;
private List<PojoGroupMember> members; private List<PojoGroupMember> members;
private String member_extra;
public String getGroup_id() { public String getGroup_id() {
return group_id; return group_id;
@@ -34,6 +35,14 @@ public class InputAddGroupMember extends InputGroupBase {
this.members = members; this.members = members;
} }
public String getMember_extra() {
return member_extra;
}
public void setMemberExtra(String extra) {
this.member_extra = extra;
}
public boolean isValide() { public boolean isValide() {
return true; return true;
} }
@@ -41,6 +50,9 @@ public class InputAddGroupMember extends InputGroupBase {
public WFCMessage.AddGroupMemberRequest toProtoGroupRequest() { public WFCMessage.AddGroupMemberRequest toProtoGroupRequest() {
WFCMessage.AddGroupMemberRequest.Builder addGroupBuilder = WFCMessage.AddGroupMemberRequest.newBuilder(); WFCMessage.AddGroupMemberRequest.Builder addGroupBuilder = WFCMessage.AddGroupMemberRequest.newBuilder();
addGroupBuilder.setGroupId(group_id); addGroupBuilder.setGroupId(group_id);
if(!StringUtil.isNullOrEmpty(member_extra)) {
addGroupBuilder.setExtra(member_extra);
}
for (PojoGroupMember pojoGroupMember : getMembers()) { for (PojoGroupMember pojoGroupMember : getMembers()) {
WFCMessage.GroupMember.Builder groupMemberBuilder = WFCMessage.GroupMember.newBuilder().setMemberId(pojoGroupMember.getMember_id()); WFCMessage.GroupMember.Builder groupMemberBuilder = WFCMessage.GroupMember.newBuilder().setMemberId(pojoGroupMember.getMember_id());
if (!StringUtil.isNullOrEmpty(pojoGroupMember.getAlias())) { if (!StringUtil.isNullOrEmpty(pojoGroupMember.getAlias())) {
@@ -16,6 +16,7 @@ import java.util.List;
public class InputCreateGroup extends InputGroupBase { public class InputCreateGroup extends InputGroupBase {
private PojoGroup group; private PojoGroup group;
private String member_extra;
public boolean isValide() { public boolean isValide() {
return true; return true;
@@ -87,6 +88,9 @@ public class InputCreateGroup extends InputGroupBase {
WFCMessage.CreateGroupRequest.Builder createGroupReqBuilder = WFCMessage.CreateGroupRequest.newBuilder(); WFCMessage.CreateGroupRequest.Builder createGroupReqBuilder = WFCMessage.CreateGroupRequest.newBuilder();
createGroupReqBuilder.setGroup(groupBuilder); createGroupReqBuilder.setGroup(groupBuilder);
if(!StringUtil.isNullOrEmpty(member_extra)) {
createGroupReqBuilder.setMemberExtra(member_extra);
}
if (to_lines != null) { if (to_lines != null) {
for (Integer line : to_lines for (Integer line : to_lines
) { ) {
@@ -107,4 +111,12 @@ public class InputCreateGroup extends InputGroupBase {
public void setGroup(PojoGroup group) { public void setGroup(PojoGroup group) {
this.group = group; this.group = group;
} }
public String getMember_extra() {
return member_extra;
}
public void setMember_extra(String member_extra) {
this.member_extra = member_extra;
}
} }
@@ -2,14 +2,13 @@ package cn.wildfirechat.sdk;
import cn.wildfirechat.common.APIPath; import cn.wildfirechat.common.APIPath;
import cn.wildfirechat.pojos.*; import cn.wildfirechat.pojos.*;
import cn.wildfirechat.proto.ProtoConstants;
import cn.wildfirechat.sdk.model.IMResult; import cn.wildfirechat.sdk.model.IMResult;
import cn.wildfirechat.sdk.utilities.AdminHttpUtils; import cn.wildfirechat.sdk.utilities.AdminHttpUtils;
import java.util.List; import java.util.List;
public class GroupAdmin { public class GroupAdmin {
public static IMResult<OutputCreateGroupResult> createGroup(String operator, PojoGroupInfo group_info, List<PojoGroupMember> members, List<Integer> to_lines, MessagePayload notify_message) throws Exception { public static IMResult<OutputCreateGroupResult> createGroup(String operator, PojoGroupInfo group_info, List<PojoGroupMember> members, String member_extra, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
String path = APIPath.Create_Group; String path = APIPath.Create_Group;
PojoGroup pojoGroup = new PojoGroup(); PojoGroup pojoGroup = new PojoGroup();
pojoGroup.setGroup_info(group_info); pojoGroup.setGroup_info(group_info);
@@ -17,6 +16,7 @@ public class GroupAdmin {
InputCreateGroup createGroup = new InputCreateGroup(); InputCreateGroup createGroup = new InputCreateGroup();
createGroup.setGroup(pojoGroup); createGroup.setGroup(pojoGroup);
createGroup.setOperator(operator); createGroup.setOperator(operator);
createGroup.setMember_extra(member_extra);
createGroup.setTo_lines(to_lines); createGroup.setTo_lines(to_lines);
createGroup.setNotify_message(notify_message); createGroup.setNotify_message(notify_message);
@@ -85,12 +85,13 @@ public class GroupAdmin {
return AdminHttpUtils.httpJsonPost(path, input, PojoGroupMember.class); 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, String member_extra, 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();
addGroupMember.setGroup_id(groupId); addGroupMember.setGroup_id(groupId);
addGroupMember.setMembers(groupMembers); addGroupMember.setMembers(groupMembers);
addGroupMember.setOperator(operator); addGroupMember.setOperator(operator);
addGroupMember.setMemberExtra(member_extra);
addGroupMember.setTo_lines(to_lines); addGroupMember.setTo_lines(to_lines);
addGroupMember.setNotify_message(notify_message); addGroupMember.setNotify_message(notify_message);
return AdminHttpUtils.httpJsonPost(path, addGroupMember, Void.class); return AdminHttpUtils.httpJsonPost(path, addGroupMember, Void.class);
@@ -503,7 +503,7 @@ public class Main {
member3.setMember_id("user3"); member3.setMember_id("user3");
members.add(member3); members.add(member3);
IMResult<OutputCreateGroupResult> resultCreateGroup = GroupAdmin.createGroup(groupInfo.getOwner(), groupInfo, members, null, null); IMResult<OutputCreateGroupResult> resultCreateGroup = GroupAdmin.createGroup(groupInfo.getOwner(), groupInfo, members, null, null, null);
if (resultCreateGroup != null && resultCreateGroup.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { if (resultCreateGroup != null && resultCreateGroup.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) {
System.out.println("create group success"); System.out.println("create group success");
} else { } else {
@@ -575,7 +575,7 @@ public class Main {
m.setMember_id("user1"); m.setMember_id("user1");
m.setAlias("hello 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) { if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) {
System.out.println("add group member success"); System.out.println("add group member success");
} else { } else {
@@ -1065,7 +1065,43 @@ public class Main {
System.exit(-1); System.exit(-1);
} }
IMResult<Void> voidIMResult = ChannelAdmin.destroyChannel(inputCreateChannel.getTargetId()); String subscriber = "aaa";
IMResult<Void> 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<OutputBooleanValue> 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) { if(voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) {
System.out.println("success"); System.out.println("success");
} else { } else {
@@ -1442,7 +1478,7 @@ public class Main {
member3.setMember_id("user3"); member3.setMember_id("user3");
members.add(member3); members.add(member3);
IMResult<OutputCreateGroupResult> resultCreateGroup = robotService.createGroup(groupInfo, members, null, null); IMResult<OutputCreateGroupResult> resultCreateGroup = robotService.createGroup(groupInfo, members, null, null, null);
if (resultCreateGroup != null && resultCreateGroup.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { if (resultCreateGroup != null && resultCreateGroup.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) {
System.out.println("create group success"); System.out.println("create group success");
} else { } else {
@@ -1486,7 +1522,7 @@ public class Main {
m.setMember_id("user0"); m.setMember_id("user0");
m.setAlias("hello 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) { if (voidIMResult != null && voidIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) {
System.out.println("add group member success"); System.out.println("add group member success");
} else { } else {
@@ -96,13 +96,14 @@ public class RobotService {
return robotHttpUtils.httpJsonPost(path, pojo, Void.class); return robotHttpUtils.httpJsonPost(path, pojo, Void.class);
} }
public IMResult<OutputCreateGroupResult> createGroup(PojoGroupInfo group_info, List<PojoGroupMember> members, List<Integer> to_lines, MessagePayload notify_message) throws Exception { public IMResult<OutputCreateGroupResult> createGroup(PojoGroupInfo group_info, List<PojoGroupMember> members, String member_extra, List<Integer> to_lines, MessagePayload notify_message) throws Exception {
String path = APIPath.Robot_Create_Group; String path = APIPath.Robot_Create_Group;
PojoGroup pojoGroup = new PojoGroup(); PojoGroup pojoGroup = new PojoGroup();
pojoGroup.setGroup_info(group_info); pojoGroup.setGroup_info(group_info);
pojoGroup.setMembers(members); pojoGroup.setMembers(members);
InputCreateGroup createGroup = new InputCreateGroup(); InputCreateGroup createGroup = new InputCreateGroup();
createGroup.setGroup(pojoGroup); createGroup.setGroup(pojoGroup);
createGroup.setMember_extra(member_extra);
createGroup.setTo_lines(to_lines); createGroup.setTo_lines(to_lines);
createGroup.setNotify_message(notify_message); createGroup.setNotify_message(notify_message);
@@ -163,11 +164,12 @@ public class RobotService {
return robotHttpUtils.httpJsonPost(path, input, PojoGroupMember.class); 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, String member_extra, 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();
addGroupMember.setGroup_id(groupId); addGroupMember.setGroup_id(groupId);
addGroupMember.setMembers(groupMembers); addGroupMember.setMembers(groupMembers);
addGroupMember.setMemberExtra(member_extra);
addGroupMember.setTo_lines(to_lines); addGroupMember.setTo_lines(to_lines);
addGroupMember.setNotify_message(notify_message); addGroupMember.setNotify_message(notify_message);
return robotHttpUtils.httpJsonPost(path, addGroupMember, Void.class); return robotHttpUtils.httpJsonPost(path, addGroupMember, Void.class);