group member和friend request中添加extra字段
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
alter table `t_group_member` add column `_extra` TEXT DEFAULT NULL;
|
||||
alter table `t_friend_request` add column `_extra` TEXT DEFAULT NULL;
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table `t_group_member` add column `_extra` TEXT DEFAULT NULL;
|
||||
alter table `t_friend_request` add column `_extra` TEXT DEFAULT NULL;
|
||||
@@ -62,6 +62,7 @@ public class GetGroupMembersAction extends AdminAction {
|
||||
pm.setMember_id(member.getMemberId());
|
||||
pm.setAlias(member.getAlias());
|
||||
pm.setType(member.getType());
|
||||
pm.setExtra(member.getExtra());
|
||||
out.getMembers().add(pm);
|
||||
}
|
||||
result = RestResult.ok(out);
|
||||
|
||||
@@ -66,6 +66,7 @@ public class GetGroupMembersAction extends RobotAction {
|
||||
pm.setMember_id(member.getMemberId());
|
||||
pm.setAlias(member.getAlias());
|
||||
pm.setType(member.getType());
|
||||
pm.setExtra(member.getExtra());
|
||||
out.getMembers().add(pm);
|
||||
}
|
||||
if(!isInGroup) {
|
||||
|
||||
@@ -22,7 +22,7 @@ public class AddGroupMember extends GroupHandler<WFCMessage.AddGroupMemberReques
|
||||
|
||||
@Override
|
||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.AddGroupMemberRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||
ErrorCode errorCode = m_messagesStore.addGroupMembers(fromUser, isAdmin, request.getGroupId(), request.getAddedMemberList());
|
||||
ErrorCode errorCode = m_messagesStore.addGroupMembers(fromUser, isAdmin, request.getGroupId(), request.getAddedMemberList(), request.getExtra());
|
||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
|
||||
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
||||
|
||||
@@ -32,7 +32,7 @@ public class CreateGroupHandler extends GroupHandler<WFCMessage.CreateGroupReque
|
||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||
}
|
||||
|
||||
WFCMessage.GroupInfo groupInfo = m_messagesStore.createGroup(fromUser, request.getGroup().getGroupInfo(), request.getGroup().getMembersList(), isAdmin);
|
||||
WFCMessage.GroupInfo groupInfo = m_messagesStore.createGroup(fromUser, request.getGroup().getGroupInfo(), request.getGroup().getMembersList(), request.getMemberExtra(), isAdmin);
|
||||
|
||||
if (groupInfo != null) {
|
||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
||||
|
||||
@@ -332,7 +332,7 @@ public class DatabaseStore {
|
||||
String sql = "select `_mid`" +
|
||||
", `_alias`" +
|
||||
", `_type`" +
|
||||
", `_dt`, `_create_dt` from t_group_member where _gid = ?";
|
||||
", `_dt`, `_create_dt`, `_extra` from t_group_member where _gid = ?";
|
||||
statement = connection.prepareStatement(sql);
|
||||
|
||||
statement.setString(1, groupId);
|
||||
@@ -362,6 +362,10 @@ public class DatabaseStore {
|
||||
longValue = rs.getLong(index++);
|
||||
builder.setCreateDt(longValue);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setExtra(value);
|
||||
|
||||
WFCMessage.GroupMember member = builder.build();
|
||||
groupMembers.put(groupId, member);
|
||||
}
|
||||
@@ -442,7 +446,7 @@ public class DatabaseStore {
|
||||
|
||||
try {
|
||||
connection = DBUtil.getConnection();
|
||||
String sql = "select `_uid`, `_friend_uid`, `_reason`, `_status`, `_dt`, `_from_read_status`, `_to_read_status` from t_friend_request";
|
||||
String sql = "select `_uid`, `_friend_uid`, `_reason`, `_status`, `_dt`, `_from_read_status`, `_to_read_status`, `_extra` from t_friend_request";
|
||||
statement = connection.prepareStatement(sql);
|
||||
|
||||
int index;
|
||||
@@ -476,6 +480,9 @@ public class DatabaseStore {
|
||||
intvalue = rs.getInt(index++);
|
||||
builder.setToReadStatus(intvalue > 0);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setExtra(value);
|
||||
|
||||
WFCMessage.FriendRequest request = builder.build();
|
||||
requestMap.put(request.getFromUid(), request);
|
||||
@@ -1713,11 +1720,12 @@ public class DatabaseStore {
|
||||
", `_mid`" +
|
||||
", `_alias`" +
|
||||
", `_type`" +
|
||||
", `_dt`, `_create_dt`) values(?, ?, ?, ?, ?, ?)" +
|
||||
", `_dt`, `_create_dt`, `_extra`) values(?, ?, ?, ?, ?, ?,?)" +
|
||||
" ON DUPLICATE KEY UPDATE " +
|
||||
"`_alias` = ?," +
|
||||
"`_type` = ?," +
|
||||
"`_dt` = ?";
|
||||
"`_dt` = ?," +
|
||||
"`_extra` = ?";
|
||||
if(updateCreateTime) {
|
||||
sql += ", `_create_dt` = ?";
|
||||
}
|
||||
@@ -1738,9 +1746,11 @@ public class DatabaseStore {
|
||||
statement.setInt(index++, member.getType());
|
||||
statement.setLong(index++, dt);
|
||||
statement.setLong(index++, member.getCreateDt());
|
||||
statement.setString(index++, member.getExtra());
|
||||
statement.setString(index++, member.getAlias());
|
||||
statement.setInt(index++, member.getType());
|
||||
statement.setLong(index++, dt);
|
||||
statement.setString(index++, member.getExtra());
|
||||
if(updateCreateTime) {
|
||||
statement.setLong(index++, dt);
|
||||
}
|
||||
@@ -2680,14 +2690,14 @@ public class DatabaseStore {
|
||||
", `_status`" +
|
||||
", `_dt`" +
|
||||
", `_from_read_status`" +
|
||||
", `_to_read_status` from t_friend_request where `_uid` = ? UNION ALL " +
|
||||
", `_to_read_status`, `_extra` from t_friend_request where `_uid` = ? UNION ALL " +
|
||||
"select `_uid`" +
|
||||
", `_friend_uid`" +
|
||||
", `_reason`" +
|
||||
", `_status`" +
|
||||
", `_dt`" +
|
||||
", `_from_read_status`" +
|
||||
", `_to_read_status` from t_friend_request where `_friend_uid` = ?";
|
||||
", `_to_read_status`, `_extra` from t_friend_request where `_friend_uid` = ?";
|
||||
statement = connection.prepareStatement(sql);
|
||||
|
||||
int index = 1;
|
||||
@@ -2725,6 +2735,10 @@ public class DatabaseStore {
|
||||
b = rs.getBoolean(index++);
|
||||
builder.setToReadStatus(b);
|
||||
|
||||
value = rs.getString(index++);
|
||||
value = (value == null ? "" : value);
|
||||
builder.setExtra(value);
|
||||
|
||||
out.add(builder.build());
|
||||
}
|
||||
return out;
|
||||
@@ -2772,13 +2786,14 @@ public class DatabaseStore {
|
||||
PreparedStatement statement = null;
|
||||
try {
|
||||
connection = DBUtil.getConnection();
|
||||
String sql = "insert into t_friend_request (`_uid`, `_friend_uid`, `_reason`, `_status`, `_dt`, `_from_read_status`, `_to_read_status`) values(?, ?, ?, ?, ?, ?, ?)" +
|
||||
String sql = "insert into t_friend_request (`_uid`, `_friend_uid`, `_reason`, `_status`, `_dt`, `_from_read_status`, `_to_read_status`, `_extra`) values(?, ?, ?, ?, ?, ?, ?, ?)" +
|
||||
" ON DUPLICATE KEY UPDATE " +
|
||||
"`_reason` = ?," +
|
||||
"`_status` = ?," +
|
||||
"`_dt` = ?," +
|
||||
"`_from_read_status` = ?," +
|
||||
"`_to_read_status` = ?";
|
||||
"`_to_read_status` = ?," +
|
||||
"`_extra` = ?";
|
||||
|
||||
statement = connection.prepareStatement(sql);
|
||||
int index = 1;
|
||||
@@ -2789,12 +2804,14 @@ public class DatabaseStore {
|
||||
statement.setLong(index++, request.getUpdateDt());
|
||||
statement.setInt(index++, request.getFromReadStatus() ? 1 : 0);
|
||||
statement.setInt(index++, request.getToReadStatus() ? 1 : 0);
|
||||
statement.setString(index++, request.getExtra());
|
||||
|
||||
statement.setString(index++, request.getReason());
|
||||
statement.setInt(index++, request.getStatus());
|
||||
statement.setLong(index++, request.getUpdateDt());
|
||||
statement.setInt(index++, request.getFromReadStatus() ? 1 : 0);
|
||||
statement.setInt(index++, request.getToReadStatus() ? 1 : 0);
|
||||
statement.setString(index++, request.getExtra());
|
||||
int count = statement.executeUpdate();
|
||||
LOG.info("Update rows {}", count);
|
||||
} catch (SQLException e) {
|
||||
|
||||
@@ -934,7 +934,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
}
|
||||
|
||||
@Override
|
||||
public WFCMessage.GroupInfo createGroup(String fromUser, WFCMessage.GroupInfo groupInfo, List<WFCMessage.GroupMember> memberList, boolean isAdmin) {
|
||||
public WFCMessage.GroupInfo createGroup(String fromUser, WFCMessage.GroupInfo groupInfo, List<WFCMessage.GroupMember> memberList, String memberExtra, boolean isAdmin) {
|
||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||
IMap<String, WFCMessage.GroupInfo> mIMap = hzInstance.getMap(GROUPS_MAP);
|
||||
|
||||
@@ -956,19 +956,39 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
List<WFCMessage.GroupMember> updatedMemberList = new ArrayList<>();
|
||||
boolean hasOwnerMember = false;
|
||||
for (WFCMessage.GroupMember member : memberList) {
|
||||
WFCMessage.GroupMember.Builder builder = member.toBuilder();
|
||||
builder.setUpdateDt(dt).setCreateDt(dt);
|
||||
if (member.getMemberId().equals(owner)) {
|
||||
member = member.toBuilder().setUpdateDt(dt).setCreateDt(dt).setType(ProtoConstants.GroupMemberType.GroupMemberType_Owner).build();
|
||||
builder.setType(ProtoConstants.GroupMemberType.GroupMemberType_Owner);
|
||||
hasOwnerMember = true;
|
||||
} else {
|
||||
member = member.toBuilder().setUpdateDt(dt).setCreateDt(dt).build();
|
||||
if (isAdmin) {
|
||||
if (member.getType() == GroupMemberType_Owner) {
|
||||
builder.setType(GroupMemberType_Normal);
|
||||
LOG.error("group member conflicted, group info owner is {}, and group member {} type is owner, set the member to normal member", owner, member.getMemberId());
|
||||
}
|
||||
} else {
|
||||
builder.setType(GroupMemberType_Normal);
|
||||
}
|
||||
}
|
||||
|
||||
if(!StringUtil.isNullOrEmpty(memberExtra)) {
|
||||
builder.setExtra(memberExtra);
|
||||
}
|
||||
|
||||
member = builder.build();
|
||||
groupMembers.put(groupId, member);
|
||||
updatedMemberList.add(member);
|
||||
dt++;
|
||||
}
|
||||
|
||||
if(!hasOwnerMember && !StringUtil.isNullOrEmpty(owner)) {
|
||||
WFCMessage.GroupMember member = WFCMessage.GroupMember.newBuilder().setMemberId(owner).setUpdateDt(dt).setCreateDt(dt).setType(ProtoConstants.GroupMemberType.GroupMemberType_Owner).build();
|
||||
WFCMessage.GroupMember member;
|
||||
if(!StringUtil.isNullOrEmpty(memberExtra)) {
|
||||
member = WFCMessage.GroupMember.newBuilder().setMemberId(owner).setExtra(memberExtra).setUpdateDt(dt).setCreateDt(dt).setType(ProtoConstants.GroupMemberType.GroupMemberType_Owner).build();
|
||||
} else {
|
||||
member = WFCMessage.GroupMember.newBuilder().setMemberId(owner).setUpdateDt(dt).setCreateDt(dt).setType(ProtoConstants.GroupMemberType.GroupMemberType_Owner).build();
|
||||
}
|
||||
groupMembers.put(groupId, member);
|
||||
updatedMemberList.add(member);
|
||||
}
|
||||
@@ -1112,7 +1132,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ErrorCode addGroupMembers(String operator, boolean isAdmin, String groupId, List<WFCMessage.GroupMember> memberList) {
|
||||
public ErrorCode addGroupMembers(String operator, boolean isAdmin, String groupId, List<WFCMessage.GroupMember> memberList, String extra) {
|
||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||
IMap<String, WFCMessage.GroupInfo> mIMap = hzInstance.getMap(GROUPS_MAP);
|
||||
|
||||
@@ -1169,18 +1189,24 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
List<WFCMessage.GroupMember> tmp = new ArrayList<>();
|
||||
ArrayList<String> newInviteUsers = new ArrayList<>();
|
||||
for (WFCMessage.GroupMember member : memberList) {
|
||||
WFCMessage.GroupMember.Builder builder = member.toBuilder();
|
||||
builder.setUpdateDt(updateDt).setCreateDt(updateDt);
|
||||
if (member.getMemberId().equals(groupInfo.getOwner())) {
|
||||
member = member.toBuilder().setType(GroupMemberType_Owner).setUpdateDt(updateDt).setCreateDt(updateDt).build();
|
||||
builder.setType(GroupMemberType_Owner).build();
|
||||
} else {
|
||||
if (isAdmin) {
|
||||
if (member.getType() != GroupMemberType_Owner)
|
||||
member = member.toBuilder().setUpdateDt(updateDt).setCreateDt(updateDt).build();
|
||||
else
|
||||
return ErrorCode.INVALID_PARAMETER;
|
||||
if (member.getType() == GroupMemberType_Owner) {
|
||||
builder.setType(GroupMemberType_Normal);
|
||||
LOG.error("group member conflicted, group info owner is {}, and group member {} type is owner, set the member to normal member", groupInfo.getOwner(), member.getMemberId());
|
||||
}
|
||||
} else {
|
||||
member = member.toBuilder().setType(GroupMemberType_Normal).setUpdateDt(updateDt).setCreateDt(updateDt).build();
|
||||
builder.setType(GroupMemberType_Normal);
|
||||
}
|
||||
}
|
||||
if(!StringUtil.isNullOrEmpty(extra)) {
|
||||
builder.setExtra(extra);
|
||||
}
|
||||
member = builder.build();
|
||||
tmp.add(member);
|
||||
newInviteUsers.add(member.getMemberId());
|
||||
updateDt++;
|
||||
@@ -2650,6 +2676,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
.setFromUid(userId)
|
||||
.setToUid(request.getTargetUid())
|
||||
.setReason(request.getReason())
|
||||
.setExtra(request.getExtra())
|
||||
.setStatus(ProtoConstants.FriendRequestStatus.RequestStatus_Sent)
|
||||
.setToReadStatus(false)
|
||||
.setUpdateDt(System.currentTimeMillis())
|
||||
|
||||
@@ -106,8 +106,8 @@ public interface IMessagesStore {
|
||||
WFCMessage.PullMessageResult fetchMessage(String user, String exceptClientId, long fromMessageId, int pullType);
|
||||
WFCMessage.PullMessageResult loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count);
|
||||
long insertUserMessages(String sender, int conversationType, String target, int line, int messageContentType, String userId, long messageId);
|
||||
WFCMessage.GroupInfo createGroup(String operator, WFCMessage.GroupInfo groupInfo, List<WFCMessage.GroupMember> memberList, boolean isAdmin);
|
||||
ErrorCode addGroupMembers(String operator, boolean isAdmin, String groupId, List<WFCMessage.GroupMember> memberList);
|
||||
WFCMessage.GroupInfo createGroup(String operator, WFCMessage.GroupInfo groupInfo, List<WFCMessage.GroupMember> memberList, String memberExtra, boolean isAdmin);
|
||||
ErrorCode addGroupMembers(String operator, boolean isAdmin, String groupId, List<WFCMessage.GroupMember> memberList, String extra);
|
||||
ErrorCode kickoffGroupMembers(String operator, boolean isAdmin, String groupId, List<String> memberList);
|
||||
ErrorCode quitGroup(String operator, String groupId);
|
||||
void clearUserGroups(String userId);
|
||||
|
||||
@@ -40,7 +40,8 @@ public enum ErrorCode {
|
||||
|
||||
ERROR_CODE_ALREADY_FRIENDS(23, "already friends"),
|
||||
|
||||
ERROR_CODE_RECALL_TIME_EXPIRED(24, "recall time expired"),
|
||||
ERROR_CODE_RECALL_TIME_EXPIRED(24, "time expired"),
|
||||
ERROR_CODE_CONFERENCE_ROOM_NOT_EXIST(60, "conference room not exist"),
|
||||
|
||||
ERROR_CODE_API_NOT_SIGNED(239, "api not signed or sign parameter not completion"),
|
||||
ERROR_CODE_GROUP_EXCEED_MAX_MEMBER_COUNT(240, "group exceed max member count"),
|
||||
|
||||
@@ -47,6 +47,9 @@ public class InputAddGroupMember extends InputGroupBase {
|
||||
groupMemberBuilder.setAlias(pojoGroupMember.getAlias());
|
||||
}
|
||||
groupMemberBuilder.setType(pojoGroupMember.getType());
|
||||
if(!StringUtil.isNullOrEmpty(pojoGroupMember.getExtra())) {
|
||||
groupMemberBuilder.setExtra(pojoGroupMember.getExtra());
|
||||
}
|
||||
addGroupBuilder.addAddedMember(groupMemberBuilder);
|
||||
}
|
||||
|
||||
|
||||
@@ -67,6 +67,9 @@ public class InputCreateGroup extends InputGroupBase {
|
||||
groupMemberBuilder.setAlias(pojoGroupMember.getAlias());
|
||||
}
|
||||
groupMemberBuilder.setType(pojoGroupMember.getType());
|
||||
if(!StringUtil.isNullOrEmpty(pojoGroupMember.getExtra())) {
|
||||
groupMemberBuilder.setExtra(pojoGroupMember.extra);
|
||||
}
|
||||
groupBuilder.addMembers(groupMemberBuilder);
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ public class PojoGroupMember {
|
||||
String member_id;
|
||||
String alias;
|
||||
int type;
|
||||
String extra;
|
||||
|
||||
public String getMember_id() {
|
||||
return member_id;
|
||||
@@ -36,4 +37,12 @@ public class PojoGroupMember {
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getExtra() {
|
||||
return extra;
|
||||
}
|
||||
|
||||
public void setExtra(String extra) {
|
||||
this.extra = extra;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,6 +94,10 @@ public class ProtoConstants {
|
||||
int Modify_Group_JoinType = 4;
|
||||
int Modify_Group_PrivateChat = 5;
|
||||
int Modify_Group_Searchable = 6;
|
||||
//仅专业版支持
|
||||
int Modify_Group_History_Message = 7;
|
||||
//仅专业版的server api支持
|
||||
int Modify_Group_Max_Member_Count = 8;
|
||||
}
|
||||
|
||||
//ModifyGroupInfoRequest -> type
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user