Skip to content

Commit

Permalink
创建群组或者添加群组成员时,群组成员的Extra会放到通知消息的extra中,这样便于业务处理通知消息
Browse files Browse the repository at this point in the history
  • Loading branch information
heavyrian2012 committed Sep 25, 2024
1 parent d100bd5 commit 6d91f38
Show file tree
Hide file tree
Showing 8 changed files with 89 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, Pr
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 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);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, Pr
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 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);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
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;

Expand All @@ -32,6 +33,8 @@ public class GroupNotificationBinaryContent {
//value2(member or something)
private String m;

private String extra;

public GroupNotificationBinaryContent() {
}

Expand Down Expand Up @@ -89,8 +92,18 @@ public void setMs(List<String> ms) {
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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
public class InputAddGroupMember extends InputGroupBase {
private String group_id;
private List<PojoGroupMember> members;
private String member_extra;

public String getGroup_id() {
return group_id;
Expand All @@ -34,13 +35,24 @@ public void setMembers(List<PojoGroupMember> members) {
this.members = members;
}

public String getMember_extra() {
return member_extra;
}

public void setMemberExtra(String extra) {
this.member_extra = extra;
}

public boolean isValide() {
return true;
}

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())) {
Expand Down
12 changes: 12 additions & 0 deletions common/src/main/java/cn/wildfirechat/pojos/InputCreateGroup.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

public class InputCreateGroup extends InputGroupBase {
private PojoGroup group;
private String member_extra;

public boolean isValide() {
return true;
Expand Down Expand Up @@ -87,6 +88,9 @@ public WFCMessage.CreateGroupRequest toProtoGroupRequest() {

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
) {
Expand All @@ -107,4 +111,12 @@ public PojoGroup getGroup() {
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;
}
}
7 changes: 4 additions & 3 deletions sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@

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<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;
PojoGroup pojoGroup = new PojoGroup();
pojoGroup.setGroup_info(group_info);
pojoGroup.setMembers(members);
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);

Expand Down Expand Up @@ -85,12 +85,13 @@ public static IMResult<PojoGroupMember> getGroupMember(String groupId, String me
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;
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);
Expand Down
46 changes: 41 additions & 5 deletions sdk/src/main/java/cn/wildfirechat/sdk/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ static void testGroup() throws Exception {
member3.setMember_id("user3");
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) {
System.out.println("create group success");
} else {
Expand Down Expand Up @@ -575,7 +575,7 @@ static void testGroup() throws Exception {
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 {
Expand Down Expand Up @@ -1065,7 +1065,43 @@ static void testChannelApi() throws Exception {
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) {
System.out.println("success");
} else {
Expand Down Expand Up @@ -1442,7 +1478,7 @@ static void testRobot() throws Exception {
member3.setMember_id("user3");
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) {
System.out.println("create group success");
} else {
Expand Down Expand Up @@ -1486,7 +1522,7 @@ static void testRobot() throws Exception {
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 {
Expand Down
6 changes: 4 additions & 2 deletions sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,14 @@ public IMResult<Void> updateProfile(int/*MyInfoType*/ type, String value) throws
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;
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);

Expand Down Expand Up @@ -163,11 +164,12 @@ public IMResult<PojoGroupMember> getGroupMember(String groupId, String memberId)
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;
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);
Expand Down

0 comments on commit 6d91f38

Please sign in to comment.