Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1627515c1d | ||
|
|
d8670a0f66 | ||
|
|
40e9d108ad | ||
|
|
cdc7f0893c | ||
|
|
953342747d |
@@ -12,7 +12,7 @@
|
|||||||
#服务器的接入IP。给客户端提供是${server.ip}和${http_port}。
|
#服务器的接入IP。给客户端提供是${server.ip}和${http_port}。
|
||||||
#客户端会从${http_port}端口获取到长链接端口。这个地址一定要改成客户端可以访问到的IP地址
|
#客户端会从${http_port}端口获取到长链接端口。这个地址一定要改成客户端可以访问到的IP地址
|
||||||
# (如果您部署云服务器上或者具有独立公网出口的服务器上,请改为对应的公网IP;如果您部署在在内网环境下,在内网使用,这个地方改成内网地址)
|
# (如果您部署云服务器上或者具有独立公网出口的服务器上,请改为对应的公网IP;如果您部署在在内网环境下,在内网使用,这个地方改成内网地址)
|
||||||
server.ip 0.0.0.0
|
server.ip 192.168.3.124
|
||||||
|
|
||||||
##原生客户端长链接端口
|
##原生客户端长链接端口
|
||||||
port 1883
|
port 1883
|
||||||
@@ -115,7 +115,7 @@ friend.request_expiration_duration 604800000
|
|||||||
##旧的方式会发送notification消息(contenttype是80),内容会根据好友接收者的语言选择对应的语言,如果双方语言不一致会导致另外一方看到的不是本地语言。
|
##旧的方式会发送notification消息(contenttype是80),内容会根据好友接收者的语言选择对应的语言,如果双方语言不一致会导致另外一方看到的不是本地语言。
|
||||||
##新的方式会发送添加好友消息(contenttype是93)和欢迎消息(contenttype是92),需要客户端实现这两种消息。
|
##新的方式会发送添加好友消息(contenttype是93)和欢迎消息(contenttype是92),需要客户端实现这两种消息。
|
||||||
##如果客户端已经实现这两种消息可以打开这个开关
|
##如果客户端已经实现这两种消息可以打开这个开关
|
||||||
friend.new_welcome_message false
|
friend.new_welcome_message true
|
||||||
|
|
||||||
## 聊天室观众空闲退出时间,单位为毫秒,默认为15分钟,0为永远不退出
|
## 聊天室观众空闲退出时间,单位为毫秒,默认为15分钟,0为永远不退出
|
||||||
chatroom.participant_idle_time 900000
|
chatroom.participant_idle_time 900000
|
||||||
|
|||||||
@@ -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;
|
||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
<relativePath>../</relativePath>
|
<relativePath>../</relativePath>
|
||||||
<artifactId>wildfirechat-parent</artifactId>
|
<artifactId>wildfirechat-parent</artifactId>
|
||||||
<groupId>cn.wildfirechat</groupId>
|
<groupId>cn.wildfirechat</groupId>
|
||||||
<version>0.62</version>
|
<version>0.63</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>moquette-broker</artifactId>
|
<artifactId>moquette-broker</artifactId>
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ public class GetGroupMembersAction extends AdminAction {
|
|||||||
pm.setMember_id(member.getMemberId());
|
pm.setMember_id(member.getMemberId());
|
||||||
pm.setAlias(member.getAlias());
|
pm.setAlias(member.getAlias());
|
||||||
pm.setType(member.getType());
|
pm.setType(member.getType());
|
||||||
|
pm.setExtra(member.getExtra());
|
||||||
out.getMembers().add(pm);
|
out.getMembers().add(pm);
|
||||||
}
|
}
|
||||||
result = RestResult.ok(out);
|
result = RestResult.ok(out);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ package com.xiaoleilu.loServer.action.channel;
|
|||||||
|
|
||||||
import cn.wildfirechat.common.APIPath;
|
import cn.wildfirechat.common.APIPath;
|
||||||
import cn.wildfirechat.pojos.SendChannelMessageData;
|
import cn.wildfirechat.pojos.SendChannelMessageData;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.xiaoleilu.loServer.RestResult;
|
import com.xiaoleilu.loServer.RestResult;
|
||||||
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
||||||
@@ -42,6 +43,17 @@ public class SendMessageAction extends ChannelAction {
|
|||||||
public boolean action(Request request) {
|
public boolean action(Request request) {
|
||||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||||
SendChannelMessageData sendChannelMessageData = getRequestBody(request.getNettyRequest(), SendChannelMessageData.class);
|
SendChannelMessageData sendChannelMessageData = getRequestBody(request.getNettyRequest(), SendChannelMessageData.class);
|
||||||
|
if(sendChannelMessageData.getTargets() != null && !sendChannelMessageData.getTargets().isEmpty()) {
|
||||||
|
if((channelInfo.getStatus() & ProtoConstants.ChannelState.Channel_State_Mask_Message_Unsubscribed) == 0 && (channelInfo.getStatus() & ProtoConstants.ChannelState.Channel_State_Mask_Global) == 0) {
|
||||||
|
for (String target:sendChannelMessageData.getTargets()) {
|
||||||
|
if(!messagesStore.checkUserInChannel(target, channelInfo.getTargetId())) {
|
||||||
|
setResponseContent(RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_RIGHT, "User " + target + " not in channel"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SendMessageData sendMessageData = new SendMessageData();
|
SendMessageData sendMessageData = new SendMessageData();
|
||||||
sendMessageData.setConv(new Conversation());
|
sendMessageData.setConv(new Conversation());
|
||||||
sendMessageData.getConv().setType(ConversationType_Channel);
|
sendMessageData.getConv().setType(ConversationType_Channel);
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ public class GetGroupMembersAction extends RobotAction {
|
|||||||
pm.setMember_id(member.getMemberId());
|
pm.setMember_id(member.getMemberId());
|
||||||
pm.setAlias(member.getAlias());
|
pm.setAlias(member.getAlias());
|
||||||
pm.setType(member.getType());
|
pm.setType(member.getType());
|
||||||
|
pm.setExtra(member.getExtra());
|
||||||
out.getMembers().add(pm);
|
out.getMembers().add(pm);
|
||||||
}
|
}
|
||||||
if(!isInGroup) {
|
if(!isInGroup) {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public class AddGroupMember extends GroupHandler<WFCMessage.AddGroupMemberReques
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.AddGroupMemberRequest request, Qos1PublishHandler.IMCallback callback) {
|
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 (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
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());
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class CreateGroupHandler extends GroupHandler<WFCMessage.CreateGroupReque
|
|||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
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 (groupInfo != null) {
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
public class PutUserSettingHandler extends IMHandler<WFCMessage.ModifyUserSettingReq> {
|
public class PutUserSettingHandler extends IMHandler<WFCMessage.ModifyUserSettingReq> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ModifyUserSettingReq request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ModifyUserSettingReq request, Qos1PublishHandler.IMCallback callback) {
|
||||||
m_messagesStore.updateUserSettings(fromUser, request);
|
m_messagesStore.updateUserSettings(fromUser, request, clientID);
|
||||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -332,7 +332,7 @@ public class DatabaseStore {
|
|||||||
String sql = "select `_mid`" +
|
String sql = "select `_mid`" +
|
||||||
", `_alias`" +
|
", `_alias`" +
|
||||||
", `_type`" +
|
", `_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 = connection.prepareStatement(sql);
|
||||||
|
|
||||||
statement.setString(1, groupId);
|
statement.setString(1, groupId);
|
||||||
@@ -362,6 +362,10 @@ public class DatabaseStore {
|
|||||||
longValue = rs.getLong(index++);
|
longValue = rs.getLong(index++);
|
||||||
builder.setCreateDt(longValue);
|
builder.setCreateDt(longValue);
|
||||||
|
|
||||||
|
value = rs.getString(index++);
|
||||||
|
value = (value == null ? "" : value);
|
||||||
|
builder.setExtra(value);
|
||||||
|
|
||||||
WFCMessage.GroupMember member = builder.build();
|
WFCMessage.GroupMember member = builder.build();
|
||||||
groupMembers.put(groupId, member);
|
groupMembers.put(groupId, member);
|
||||||
}
|
}
|
||||||
@@ -442,7 +446,7 @@ public class DatabaseStore {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
connection = DBUtil.getConnection();
|
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);
|
statement = connection.prepareStatement(sql);
|
||||||
|
|
||||||
int index;
|
int index;
|
||||||
@@ -476,6 +480,9 @@ public class DatabaseStore {
|
|||||||
intvalue = rs.getInt(index++);
|
intvalue = rs.getInt(index++);
|
||||||
builder.setToReadStatus(intvalue > 0);
|
builder.setToReadStatus(intvalue > 0);
|
||||||
|
|
||||||
|
value = rs.getString(index++);
|
||||||
|
value = (value == null ? "" : value);
|
||||||
|
builder.setExtra(value);
|
||||||
|
|
||||||
WFCMessage.FriendRequest request = builder.build();
|
WFCMessage.FriendRequest request = builder.build();
|
||||||
requestMap.put(request.getFromUid(), request);
|
requestMap.put(request.getFromUid(), request);
|
||||||
@@ -1713,11 +1720,12 @@ public class DatabaseStore {
|
|||||||
", `_mid`" +
|
", `_mid`" +
|
||||||
", `_alias`" +
|
", `_alias`" +
|
||||||
", `_type`" +
|
", `_type`" +
|
||||||
", `_dt`, `_create_dt`) values(?, ?, ?, ?, ?, ?)" +
|
", `_dt`, `_create_dt`, `_extra`) values(?, ?, ?, ?, ?, ?,?)" +
|
||||||
" ON DUPLICATE KEY UPDATE " +
|
" ON DUPLICATE KEY UPDATE " +
|
||||||
"`_alias` = ?," +
|
"`_alias` = ?," +
|
||||||
"`_type` = ?," +
|
"`_type` = ?," +
|
||||||
"`_dt` = ?";
|
"`_dt` = ?," +
|
||||||
|
"`_extra` = ?";
|
||||||
if(updateCreateTime) {
|
if(updateCreateTime) {
|
||||||
sql += ", `_create_dt` = ?";
|
sql += ", `_create_dt` = ?";
|
||||||
}
|
}
|
||||||
@@ -1738,9 +1746,11 @@ public class DatabaseStore {
|
|||||||
statement.setInt(index++, member.getType());
|
statement.setInt(index++, member.getType());
|
||||||
statement.setLong(index++, dt);
|
statement.setLong(index++, dt);
|
||||||
statement.setLong(index++, member.getCreateDt());
|
statement.setLong(index++, member.getCreateDt());
|
||||||
|
statement.setString(index++, member.getExtra());
|
||||||
statement.setString(index++, member.getAlias());
|
statement.setString(index++, member.getAlias());
|
||||||
statement.setInt(index++, member.getType());
|
statement.setInt(index++, member.getType());
|
||||||
statement.setLong(index++, dt);
|
statement.setLong(index++, dt);
|
||||||
|
statement.setString(index++, member.getExtra());
|
||||||
if(updateCreateTime) {
|
if(updateCreateTime) {
|
||||||
statement.setLong(index++, dt);
|
statement.setLong(index++, dt);
|
||||||
}
|
}
|
||||||
@@ -2680,14 +2690,14 @@ public class DatabaseStore {
|
|||||||
", `_status`" +
|
", `_status`" +
|
||||||
", `_dt`" +
|
", `_dt`" +
|
||||||
", `_from_read_status`" +
|
", `_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`" +
|
"select `_uid`" +
|
||||||
", `_friend_uid`" +
|
", `_friend_uid`" +
|
||||||
", `_reason`" +
|
", `_reason`" +
|
||||||
", `_status`" +
|
", `_status`" +
|
||||||
", `_dt`" +
|
", `_dt`" +
|
||||||
", `_from_read_status`" +
|
", `_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);
|
statement = connection.prepareStatement(sql);
|
||||||
|
|
||||||
int index = 1;
|
int index = 1;
|
||||||
@@ -2725,6 +2735,10 @@ public class DatabaseStore {
|
|||||||
b = rs.getBoolean(index++);
|
b = rs.getBoolean(index++);
|
||||||
builder.setToReadStatus(b);
|
builder.setToReadStatus(b);
|
||||||
|
|
||||||
|
value = rs.getString(index++);
|
||||||
|
value = (value == null ? "" : value);
|
||||||
|
builder.setExtra(value);
|
||||||
|
|
||||||
out.add(builder.build());
|
out.add(builder.build());
|
||||||
}
|
}
|
||||||
return out;
|
return out;
|
||||||
@@ -2772,13 +2786,14 @@ public class DatabaseStore {
|
|||||||
PreparedStatement statement = null;
|
PreparedStatement statement = null;
|
||||||
try {
|
try {
|
||||||
connection = DBUtil.getConnection();
|
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 " +
|
" ON DUPLICATE KEY UPDATE " +
|
||||||
"`_reason` = ?," +
|
"`_reason` = ?," +
|
||||||
"`_status` = ?," +
|
"`_status` = ?," +
|
||||||
"`_dt` = ?," +
|
"`_dt` = ?," +
|
||||||
"`_from_read_status` = ?," +
|
"`_from_read_status` = ?," +
|
||||||
"`_to_read_status` = ?";
|
"`_to_read_status` = ?," +
|
||||||
|
"`_extra` = ?";
|
||||||
|
|
||||||
statement = connection.prepareStatement(sql);
|
statement = connection.prepareStatement(sql);
|
||||||
int index = 1;
|
int index = 1;
|
||||||
@@ -2789,12 +2804,14 @@ public class DatabaseStore {
|
|||||||
statement.setLong(index++, request.getUpdateDt());
|
statement.setLong(index++, request.getUpdateDt());
|
||||||
statement.setInt(index++, request.getFromReadStatus() ? 1 : 0);
|
statement.setInt(index++, request.getFromReadStatus() ? 1 : 0);
|
||||||
statement.setInt(index++, request.getToReadStatus() ? 1 : 0);
|
statement.setInt(index++, request.getToReadStatus() ? 1 : 0);
|
||||||
|
statement.setString(index++, request.getExtra());
|
||||||
|
|
||||||
statement.setString(index++, request.getReason());
|
statement.setString(index++, request.getReason());
|
||||||
statement.setInt(index++, request.getStatus());
|
statement.setInt(index++, request.getStatus());
|
||||||
statement.setLong(index++, request.getUpdateDt());
|
statement.setLong(index++, request.getUpdateDt());
|
||||||
statement.setInt(index++, request.getFromReadStatus() ? 1 : 0);
|
statement.setInt(index++, request.getFromReadStatus() ? 1 : 0);
|
||||||
statement.setInt(index++, request.getToReadStatus() ? 1 : 0);
|
statement.setInt(index++, request.getToReadStatus() ? 1 : 0);
|
||||||
|
statement.setString(index++, request.getExtra());
|
||||||
int count = statement.executeUpdate();
|
int count = statement.executeUpdate();
|
||||||
LOG.info("Update rows {}", count);
|
LOG.info("Update rows {}", count);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
private long mFriendRequestDuration = 7 * 24 * 60 * 60 * 1000;
|
private long mFriendRequestDuration = 7 * 24 * 60 * 60 * 1000;
|
||||||
private long mFriendRejectDuration = 30 * 24 * 60 * 60 * 1000;
|
private long mFriendRejectDuration = 30 * 24 * 60 * 60 * 1000;
|
||||||
private long mFriendRequestExpiration = 7 * 24 * 60 * 60 * 1000;
|
private long mFriendRequestExpiration = 7 * 24 * 60 * 60 * 1000;
|
||||||
private boolean mFriendNewWelcomeMessage = false;
|
private boolean mFriendNewWelcomeMessage = true;
|
||||||
|
|
||||||
private boolean mMultiPlatformNotification = false;
|
private boolean mMultiPlatformNotification = false;
|
||||||
private boolean mDisableStrangerChat = false;
|
private boolean mDisableStrangerChat = false;
|
||||||
@@ -178,7 +178,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
Utility.printExecption(LOG, e);
|
Utility.printExecption(LOG, e);
|
||||||
printMissConfigLog(SERVER_MULTI_PLATFROM_NOTIFICATION, mDisableStrangerChat + "");
|
printMissConfigLog(SERVER_MULTI_PLATFROM_NOTIFICATION, mMultiPlatformNotification + "");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -519,19 +519,27 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
if (channelInfo != null) {
|
if (channelInfo != null) {
|
||||||
notifyReceivers.add(fromUser);
|
notifyReceivers.add(fromUser);
|
||||||
if (channelInfo.getOwner().equals(fromUser)) {
|
if (channelInfo.getOwner().equals(fromUser)) {
|
||||||
Collection<String> listeners = getChannelListener(message.getConversation().getTarget());
|
if((channelInfo.getStatus() & ProtoConstants.ChannelState.Channel_State_Mask_Global) > 0) {
|
||||||
if (!StringUtil.isNullOrEmpty(message.getToUser())) {
|
if((message.getToList() != null && !message.getToList().isEmpty())) {
|
||||||
if (listeners.contains(message.getToUser())) {
|
notifyReceivers.addAll(message.getToList());
|
||||||
notifyReceivers.add(message.getToUser());
|
} else {
|
||||||
}
|
notifyReceivers.addAll(getAllEnds());
|
||||||
} else if(message.getToList() != null && !message.getToList().isEmpty()) {
|
|
||||||
for (String to:message.getToList()) {
|
|
||||||
if (listeners.contains(to)) {
|
|
||||||
notifyReceivers.add(to);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
notifyReceivers.addAll(listeners);
|
Collection<String> listeners = getChannelListener(message.getConversation().getTarget());
|
||||||
|
if (!StringUtil.isNullOrEmpty(message.getToUser())) {
|
||||||
|
if (listeners.contains(message.getToUser()) || (channelInfo.getStatus() & ProtoConstants.ChannelState.Channel_State_Mask_Message_Unsubscribed) > 0) {
|
||||||
|
notifyReceivers.add(message.getToUser());
|
||||||
|
}
|
||||||
|
} else if (message.getToList() != null && !message.getToList().isEmpty()) {
|
||||||
|
for (String to : message.getToList()) {
|
||||||
|
if (listeners.contains(to) || (channelInfo.getStatus() & ProtoConstants.ChannelState.Channel_State_Mask_Message_Unsubscribed) > 0) {
|
||||||
|
notifyReceivers.add(to);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
notifyReceivers.addAll(listeners);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (StringUtil.isNullOrEmpty(channelInfo.getCallback()) || channelInfo.getAutomatic() == 0) {
|
if (StringUtil.isNullOrEmpty(channelInfo.getCallback()) || channelInfo.getAutomatic() == 0) {
|
||||||
@@ -926,7 +934,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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();
|
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||||
IMap<String, WFCMessage.GroupInfo> mIMap = hzInstance.getMap(GROUPS_MAP);
|
IMap<String, WFCMessage.GroupInfo> mIMap = hzInstance.getMap(GROUPS_MAP);
|
||||||
|
|
||||||
@@ -948,19 +956,39 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
List<WFCMessage.GroupMember> updatedMemberList = new ArrayList<>();
|
List<WFCMessage.GroupMember> updatedMemberList = new ArrayList<>();
|
||||||
boolean hasOwnerMember = false;
|
boolean hasOwnerMember = false;
|
||||||
for (WFCMessage.GroupMember member : memberList) {
|
for (WFCMessage.GroupMember member : memberList) {
|
||||||
|
WFCMessage.GroupMember.Builder builder = member.toBuilder();
|
||||||
|
builder.setUpdateDt(dt).setCreateDt(dt);
|
||||||
if (member.getMemberId().equals(owner)) {
|
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;
|
hasOwnerMember = true;
|
||||||
} else {
|
} 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);
|
groupMembers.put(groupId, member);
|
||||||
updatedMemberList.add(member);
|
updatedMemberList.add(member);
|
||||||
dt++;
|
dt++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!hasOwnerMember && !StringUtil.isNullOrEmpty(owner)) {
|
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);
|
groupMembers.put(groupId, member);
|
||||||
updatedMemberList.add(member);
|
updatedMemberList.add(member);
|
||||||
}
|
}
|
||||||
@@ -1104,7 +1132,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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();
|
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||||
IMap<String, WFCMessage.GroupInfo> mIMap = hzInstance.getMap(GROUPS_MAP);
|
IMap<String, WFCMessage.GroupInfo> mIMap = hzInstance.getMap(GROUPS_MAP);
|
||||||
|
|
||||||
@@ -1161,18 +1189,24 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
List<WFCMessage.GroupMember> tmp = new ArrayList<>();
|
List<WFCMessage.GroupMember> tmp = new ArrayList<>();
|
||||||
ArrayList<String> newInviteUsers = new ArrayList<>();
|
ArrayList<String> newInviteUsers = new ArrayList<>();
|
||||||
for (WFCMessage.GroupMember member : memberList) {
|
for (WFCMessage.GroupMember member : memberList) {
|
||||||
|
WFCMessage.GroupMember.Builder builder = member.toBuilder();
|
||||||
|
builder.setUpdateDt(updateDt).setCreateDt(updateDt);
|
||||||
if (member.getMemberId().equals(groupInfo.getOwner())) {
|
if (member.getMemberId().equals(groupInfo.getOwner())) {
|
||||||
member = member.toBuilder().setType(GroupMemberType_Owner).setUpdateDt(updateDt).setCreateDt(updateDt).build();
|
builder.setType(GroupMemberType_Owner).build();
|
||||||
} else {
|
} else {
|
||||||
if (isAdmin) {
|
if (isAdmin) {
|
||||||
if (member.getType() != GroupMemberType_Owner)
|
if (member.getType() == GroupMemberType_Owner) {
|
||||||
member = member.toBuilder().setUpdateDt(updateDt).setCreateDt(updateDt).build();
|
builder.setType(GroupMemberType_Normal);
|
||||||
else
|
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());
|
||||||
return ErrorCode.INVALID_PARAMETER;
|
}
|
||||||
} else {
|
} 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);
|
tmp.add(member);
|
||||||
newInviteUsers.add(member.getMemberId());
|
newInviteUsers.add(member.getMemberId());
|
||||||
updateDt++;
|
updateDt++;
|
||||||
@@ -2104,7 +2138,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (session.getPlatform() == Platform_LINUX || session.getPlatform() == Platform_Windows || session.getPlatform() == Platform_OSX) {
|
if (session.getPlatform() == Platform_LINUX || session.getPlatform() == Platform_Windows || session.getPlatform() == Platform_OSX) {
|
||||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue(online ? (System.currentTimeMillis() + "|" + session.getPlatform() + "|" + session.getClientID() + "|" + session.getPhoneName()) : "").build());
|
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue(online ? (System.currentTimeMillis() + "|" + session.getPlatform() + "|" + session.getClientID() + "|" + session.getPhoneName()) : "").build(), session.clientID);
|
||||||
} else {
|
} else {
|
||||||
String value = null;
|
String value = null;
|
||||||
for (MemorySessionStore.Session s : m_Server.getStore().sessionsStore().sessionForUser(session.username)) {
|
for (MemorySessionStore.Session s : m_Server.getStore().sessionsStore().sessionForUser(session.username)) {
|
||||||
@@ -2130,11 +2164,11 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
WFCMessage.UserSettingEntry pcentry = getUserSetting(session.getUsername(), kUserSettingPCOnline, "PC");
|
WFCMessage.UserSettingEntry pcentry = getUserSetting(session.getUsername(), kUserSettingPCOnline, "PC");
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
if (pcentry == null || StringUtil.isNullOrEmpty(pcentry.getValue())) {
|
if (pcentry == null || StringUtil.isNullOrEmpty(pcentry.getValue())) {
|
||||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue(value).build());
|
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue(value).build(), session.clientID);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (pcentry != null && !StringUtil.isNullOrEmpty(pcentry.getValue())) {
|
if (pcentry != null && !StringUtil.isNullOrEmpty(pcentry.getValue())) {
|
||||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue("").build());
|
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue("").build(), session.clientID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2458,6 +2492,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (mDisableStrangerChat) {
|
if (mDisableStrangerChat) {
|
||||||
//在禁止私聊时,允许机器人,物联网设备及管理员进行私聊。
|
//在禁止私聊时,允许机器人,物联网设备及管理员进行私聊。
|
||||||
IMap<String, WFCMessage.User> mUserMap = hzInstance.getMap(USERS);
|
IMap<String, WFCMessage.User> mUserMap = hzInstance.getMap(USERS);
|
||||||
@@ -2641,6 +2676,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
.setFromUid(userId)
|
.setFromUid(userId)
|
||||||
.setToUid(request.getTargetUid())
|
.setToUid(request.getTargetUid())
|
||||||
.setReason(request.getReason())
|
.setReason(request.getReason())
|
||||||
|
.setExtra(request.getExtra())
|
||||||
.setStatus(ProtoConstants.FriendRequestStatus.RequestStatus_Sent)
|
.setStatus(ProtoConstants.FriendRequestStatus.RequestStatus_Sent)
|
||||||
.setToReadStatus(false)
|
.setToReadStatus(false)
|
||||||
.setUpdateDt(System.currentTimeMillis())
|
.setUpdateDt(System.currentTimeMillis())
|
||||||
@@ -3134,7 +3170,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long updateUserSettings(String userId, WFCMessage.ModifyUserSettingReq request) {
|
public long updateUserSettings(String userId, WFCMessage.ModifyUserSettingReq request, String clientId) {
|
||||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||||
MultiMap<String, WFCMessage.UserSettingEntry> userSettingMap = hzInstance.getMultiMap(USER_SETTING);
|
MultiMap<String, WFCMessage.UserSettingEntry> userSettingMap = hzInstance.getMultiMap(USER_SETTING);
|
||||||
|
|
||||||
@@ -3174,7 +3210,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
} else if(request.getScope() == UserSettingScope.kUserSettingHiddenNotificationDetail) {
|
} else if(request.getScope() == UserSettingScope.kUserSettingHiddenNotificationDetail) {
|
||||||
userPushHiddenDetail.remove(userId);
|
userPushHiddenDetail.remove(userId);
|
||||||
}
|
}
|
||||||
IMHandler.getPublisher().publishNotification(IMTopic.NotifyUserSettingTopic, userId, updateDt);
|
IMHandler.getPublisher().publishNotification(IMTopic.NotifyUserSettingTopic, userId, updateDt, clientId);
|
||||||
return updateDt;
|
return updateDt;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3406,6 +3442,11 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
public ErrorCode listenChannel(String operator, String channelId, boolean listen) {
|
public ErrorCode listenChannel(String operator, String channelId, boolean listen) {
|
||||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||||
MultiMap<String, String> listeners = hzInstance.getMultiMap(CHANNEL_LISTENERS);
|
MultiMap<String, String> listeners = hzInstance.getMultiMap(CHANNEL_LISTENERS);
|
||||||
|
IMap<String, WFCMessage.ChannelInfo> mIMap = hzInstance.getMap(CHANNELS);
|
||||||
|
WFCMessage.ChannelInfo channelInfo = mIMap.get(channelId);
|
||||||
|
if(channelInfo != null && (channelInfo.getStatus() & ProtoConstants.ChannelState.Channel_State_Mask_Private) > 0) {
|
||||||
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
getChannelListener(channelId);
|
getChannelListener(channelId);
|
||||||
|
|
||||||
@@ -3441,12 +3482,12 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean checkUserInChannel(String user, String channelId) {
|
public boolean checkUserInChannel(String user, String channelId) {
|
||||||
Collection<String> chatroomMembers = getChannelListener(channelId);
|
Collection<String> channelMembers = getChannelListener(channelId);
|
||||||
if (chatroomMembers == null) {
|
if (channelMembers == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!chatroomMembers.contains(user)) {
|
if(!channelMembers.contains(user)) {
|
||||||
IMap<String, WFCMessage.ChannelInfo> mIMap = m_Server.getHazelcastInstance().getMap(CHANNELS);
|
IMap<String, WFCMessage.ChannelInfo> mIMap = m_Server.getHazelcastInstance().getMap(CHANNELS);
|
||||||
WFCMessage.ChannelInfo info = mIMap.get(channelId);
|
WFCMessage.ChannelInfo info = mIMap.get(channelId);
|
||||||
if (info == null || !info.getOwner().equals(user)) {
|
if (info == null || !info.getOwner().equals(user)) {
|
||||||
|
|||||||
@@ -106,8 +106,8 @@ public interface IMessagesStore {
|
|||||||
WFCMessage.PullMessageResult fetchMessage(String user, String exceptClientId, long fromMessageId, int pullType);
|
WFCMessage.PullMessageResult fetchMessage(String user, String exceptClientId, long fromMessageId, int pullType);
|
||||||
WFCMessage.PullMessageResult loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count);
|
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);
|
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);
|
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);
|
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 kickoffGroupMembers(String operator, boolean isAdmin, String groupId, List<String> memberList);
|
||||||
ErrorCode quitGroup(String operator, String groupId);
|
ErrorCode quitGroup(String operator, String groupId);
|
||||||
void clearUserGroups(String userId);
|
void clearUserGroups(String userId);
|
||||||
@@ -190,7 +190,7 @@ public interface IMessagesStore {
|
|||||||
ErrorCode getUserSettings(String userId, long version, WFCMessage.GetUserSettingResult.Builder builder);
|
ErrorCode getUserSettings(String userId, long version, WFCMessage.GetUserSettingResult.Builder builder);
|
||||||
WFCMessage.UserSettingEntry getUserSetting(String userId, int scope, String key);
|
WFCMessage.UserSettingEntry getUserSetting(String userId, int scope, String key);
|
||||||
List<WFCMessage.UserSettingEntry> getUserSetting(String userId, int scope);
|
List<WFCMessage.UserSettingEntry> getUserSetting(String userId, int scope);
|
||||||
long updateUserSettings(String userId, WFCMessage.ModifyUserSettingReq request);
|
long updateUserSettings(String userId, WFCMessage.ModifyUserSettingReq request, String clientId);
|
||||||
void clearUserSettings(String userId);
|
void clearUserSettings(String userId);
|
||||||
boolean getUserGlobalSilent(String userId);
|
boolean getUserGlobalSilent(String userId);
|
||||||
|
|
||||||
|
|||||||
@@ -465,14 +465,21 @@ public class MessagesPublisher {
|
|||||||
publishNotification(topic, receiver, head, null, null);
|
publishNotification(topic, receiver, head, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void publishNotification(String topic, String receiver, long head, String fromUser, String pushContent) {
|
public void publishNotification(String topic, String receiver, long head, String exceptClientId) {
|
||||||
publishNotificationLocal(topic, receiver, head, fromUser, pushContent);
|
publishNotification(topic, receiver, head, null, null, exceptClientId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void publishNotificationLocal(String topic, String receiver, long head, String fromUser, String pushContent) {
|
public void publishNotification(String topic, String receiver, long head, String fromUser, String pushContent) {
|
||||||
|
publishNotification(topic, receiver, head, fromUser, pushContent, null);
|
||||||
|
}
|
||||||
|
public void publishNotification(String topic, String receiver, long head, String fromUser, String pushContent, String exceptClientId) {
|
||||||
Collection<Session> sessions = m_sessionsStore.sessionForUser(receiver);
|
Collection<Session> sessions = m_sessionsStore.sessionForUser(receiver);
|
||||||
String fromUserName = null;
|
String fromUserName = null;
|
||||||
for (Session targetSession : sessions) {
|
for (Session targetSession : sessions) {
|
||||||
|
if(targetSession.getClientID().equals(exceptClientId)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
boolean needPush = !StringUtil.isNullOrEmpty(pushContent);
|
boolean needPush = !StringUtil.isNullOrEmpty(pushContent);
|
||||||
boolean targetIsActive = this.connectionDescriptors.isConnected(targetSession.getClientSession().clientID);
|
boolean targetIsActive = this.connectionDescriptors.isConnected(targetSession.getClientSession().clientID);
|
||||||
if (targetIsActive) {
|
if (targetIsActive) {
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>wildfirechat-parent</artifactId>
|
<artifactId>wildfirechat-parent</artifactId>
|
||||||
<groupId>cn.wildfirechat</groupId>
|
<groupId>cn.wildfirechat</groupId>
|
||||||
<version>0.62</version>
|
<version>0.63</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,8 @@ public enum ErrorCode {
|
|||||||
|
|
||||||
ERROR_CODE_ALREADY_FRIENDS(23, "already friends"),
|
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_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"),
|
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.setAlias(pojoGroupMember.getAlias());
|
||||||
}
|
}
|
||||||
groupMemberBuilder.setType(pojoGroupMember.getType());
|
groupMemberBuilder.setType(pojoGroupMember.getType());
|
||||||
|
if(!StringUtil.isNullOrEmpty(pojoGroupMember.getExtra())) {
|
||||||
|
groupMemberBuilder.setExtra(pojoGroupMember.getExtra());
|
||||||
|
}
|
||||||
addGroupBuilder.addAddedMember(groupMemberBuilder);
|
addGroupBuilder.addAddedMember(groupMemberBuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,9 @@ public class InputCreateGroup extends InputGroupBase {
|
|||||||
groupMemberBuilder.setAlias(pojoGroupMember.getAlias());
|
groupMemberBuilder.setAlias(pojoGroupMember.getAlias());
|
||||||
}
|
}
|
||||||
groupMemberBuilder.setType(pojoGroupMember.getType());
|
groupMemberBuilder.setType(pojoGroupMember.getType());
|
||||||
|
if(!StringUtil.isNullOrEmpty(pojoGroupMember.getExtra())) {
|
||||||
|
groupMemberBuilder.setExtra(pojoGroupMember.extra);
|
||||||
|
}
|
||||||
groupBuilder.addMembers(groupMemberBuilder);
|
groupBuilder.addMembers(groupMemberBuilder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public class PojoGroupMember {
|
|||||||
String member_id;
|
String member_id;
|
||||||
String alias;
|
String alias;
|
||||||
int type;
|
int type;
|
||||||
|
String extra;
|
||||||
|
|
||||||
public String getMember_id() {
|
public String getMember_id() {
|
||||||
return member_id;
|
return member_id;
|
||||||
@@ -36,4 +37,12 @@ public class PojoGroupMember {
|
|||||||
public void setType(int type) {
|
public void setType(int type) {
|
||||||
this.type = 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_JoinType = 4;
|
||||||
int Modify_Group_PrivateChat = 5;
|
int Modify_Group_PrivateChat = 5;
|
||||||
int Modify_Group_Searchable = 6;
|
int Modify_Group_Searchable = 6;
|
||||||
|
//仅专业版支持
|
||||||
|
int Modify_Group_History_Message = 7;
|
||||||
|
//仅专业版的server api支持
|
||||||
|
int Modify_Group_Max_Member_Count = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
//ModifyGroupInfoRequest -> type
|
//ModifyGroupInfoRequest -> type
|
||||||
@@ -121,8 +125,9 @@ public class ProtoConstants {
|
|||||||
//第1位表示是否允许查看非订阅用户信息
|
//第1位表示是否允许查看非订阅用户信息
|
||||||
//第2位表示是否允许主动添加用户订阅关系
|
//第2位表示是否允许主动添加用户订阅关系
|
||||||
//第3位表示是否允许给非订阅用户发送消息
|
//第3位表示是否允许给非订阅用户发送消息
|
||||||
//第4位表示是否私有
|
//第4位表示是否私有,不可以被用户搜索和主动订阅
|
||||||
//第6位表示是否删除
|
//第6位表示是否删除
|
||||||
|
//第8位表示是否是全局频道,全局频道没有订阅关系,会发送给系统内所有成员。
|
||||||
public interface ChannelState {
|
public interface ChannelState {
|
||||||
int Channel_State_Mask_FullInfo = 0x01;
|
int Channel_State_Mask_FullInfo = 0x01;
|
||||||
int Channel_State_Mask_Unsubscribed_User_Access = 0x02;
|
int Channel_State_Mask_Unsubscribed_User_Access = 0x02;
|
||||||
@@ -130,6 +135,7 @@ public class ProtoConstants {
|
|||||||
int Channel_State_Mask_Message_Unsubscribed = 0x08;
|
int Channel_State_Mask_Message_Unsubscribed = 0x08;
|
||||||
int Channel_State_Mask_Private = 0x10;
|
int Channel_State_Mask_Private = 0x10;
|
||||||
int Channel_State_Mask_Deleted = 0x40;
|
int Channel_State_Mask_Deleted = 0x40;
|
||||||
|
int Channel_State_Mask_Global = 0x80;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@
|
|||||||
<!--<relativePath>../pom.xml</relativePath>-->
|
<!--<relativePath>../pom.xml</relativePath>-->
|
||||||
<artifactId>wildfirechat-parent</artifactId>
|
<artifactId>wildfirechat-parent</artifactId>
|
||||||
<groupId>cn.wildfirechat</groupId>
|
<groupId>cn.wildfirechat</groupId>
|
||||||
<version>0.62</version>
|
<version>0.63</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>distribution</artifactId>
|
<artifactId>distribution</artifactId>
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ friend.request_expiration_duration 604800000
|
|||||||
##旧的方式会发送notification消息(contenttype是80),内容会根据好友接收者的语言选择对应的语言,如果双方语言不一致会导致另外一方看到的不是本地语言。
|
##旧的方式会发送notification消息(contenttype是80),内容会根据好友接收者的语言选择对应的语言,如果双方语言不一致会导致另外一方看到的不是本地语言。
|
||||||
##新的方式会发送添加好友消息(contenttype是93)和欢迎消息(contenttype是92),需要客户端实现这两种消息。
|
##新的方式会发送添加好友消息(contenttype是93)和欢迎消息(contenttype是92),需要客户端实现这两种消息。
|
||||||
##如果客户端已经实现这两种消息可以打开这个开关
|
##如果客户端已经实现这两种消息可以打开这个开关
|
||||||
friend.new_welcome_message false
|
friend.new_welcome_message true
|
||||||
|
|
||||||
## 聊天室观众空闲退出时间,单位为毫秒,默认为15分钟,0为永远不退出
|
## 聊天室观众空闲退出时间,单位为毫秒,默认为15分钟,0为永远不退出
|
||||||
chatroom.participant_idle_time 900000
|
chatroom.participant_idle_time 900000
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<artifactId>wildfirechat-parent</artifactId>
|
<artifactId>wildfirechat-parent</artifactId>
|
||||||
|
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>0.62</version>
|
<version>0.63</version>
|
||||||
<name>Wildfire Chat</name>
|
<name>Wildfire Chat</name>
|
||||||
<description>Wildfire Chat Server</description>
|
<description>Wildfire Chat Server</description>
|
||||||
<inceptionYear>2019</inceptionYear>
|
<inceptionYear>2019</inceptionYear>
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>wildfirechat-parent</artifactId>
|
<artifactId>wildfirechat-parent</artifactId>
|
||||||
<groupId>cn.wildfirechat</groupId>
|
<groupId>cn.wildfirechat</groupId>
|
||||||
<version>0.62</version>
|
<version>0.63</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user