优化部分逻辑
This commit is contained in:
@@ -112,6 +112,9 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
private SensitiveFilter mSensitiveFilter;
|
||||
private volatile long lastUpdateSensitiveTime = 0;
|
||||
|
||||
private ConcurrentHashMap<String, Boolean> userGlobalSlientMap = new ConcurrentHashMap<>();
|
||||
private ConcurrentHashMap<String, Boolean> userPushHiddenDetail = new ConcurrentHashMap<>();
|
||||
private ConcurrentHashMap<String, Boolean> userConvSlientMap = new ConcurrentHashMap<>();
|
||||
|
||||
MemoryMessagesStore(Server server, DatabaseStore databaseStore) {
|
||||
m_Server = server;
|
||||
@@ -1684,6 +1687,28 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
return datas;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public WFCMessage.UserSettingEntry getUserSetting(String userId, int scope, String key) {
|
||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||
MultiMap<String, WFCMessage.UserSettingEntry> userSettingMap = hzInstance.getMultiMap(USER_SETTING);
|
||||
|
||||
Collection<WFCMessage.UserSettingEntry> entries = userSettingMap.get(userId);
|
||||
if (entries == null || entries.size() == 0) {
|
||||
entries = loadPersistedUserSettings(userId, userSettingMap);
|
||||
}
|
||||
|
||||
if (entries != null) {
|
||||
for (WFCMessage.UserSettingEntry entry : entries) {
|
||||
if (entry.getScope() == scope && (key== null || key.equals(entry.getKey()))) {
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WFCMessage.UserSettingEntry> getUserSetting(String userId, int scope) {
|
||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||
@@ -1720,29 +1745,6 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
}
|
||||
}
|
||||
|
||||
if (request.getScope() == UserSettingScope.kUserSettingConversationSilent || request.getScope() == UserSettingScope.kUserSettingGlobalSilent || request.getScope() == UserSettingScope.kUserSettingHiddenNotificationDetail) {
|
||||
Collection<MemorySessionStore.Session> sessions = m_Server.getStore().sessionsStore().sessionForUser(userId);
|
||||
for (MemorySessionStore.Session targetSession : sessions) {
|
||||
if (StringUtil.isNullOrEmpty(request.getValue()) || request.getValue().equals("0")) {
|
||||
if(request.getScope() == UserSettingScope.kUserSettingConversationSilent) {
|
||||
targetSession.getSlientConvs().remove(request.getKey());
|
||||
} else if(request.getScope() == UserSettingScope.kUserSettingGlobalSilent) {
|
||||
targetSession.setGlobalSlient(false);
|
||||
} else if(request.getScope() == UserSettingScope.kUserSettingHiddenNotificationDetail) {
|
||||
targetSession.setHiddenNotifyDetail(false);
|
||||
}
|
||||
} else {
|
||||
if(request.getScope() == UserSettingScope.kUserSettingConversationSilent) {
|
||||
targetSession.getSlientConvs().put(request.getKey(), request.getValue());
|
||||
} else if(request.getScope() == UserSettingScope.kUserSettingGlobalSilent) {
|
||||
targetSession.setGlobalSlient(true);
|
||||
} else if(request.getScope() == UserSettingScope.kUserSettingHiddenNotificationDetail) {
|
||||
targetSession.setHiddenNotifyDetail(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
long updateDt = System.currentTimeMillis();
|
||||
WFCMessage.UserSettingEntry settingEntry = WFCMessage.UserSettingEntry.newBuilder().setScope(request.getScope()).setKey(request.getKey()).setValue(request.getValue()).setUpdateDt(updateDt).build();
|
||||
databaseStore.persistUserSetting(userId, settingEntry);
|
||||
@@ -1757,9 +1759,58 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
}
|
||||
|
||||
userSettingMap.put(userId, settingEntry);
|
||||
userGlobalSlientMap.remove(userId);
|
||||
userConvSlientMap.remove(userId);
|
||||
return updateDt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getUserGlobalSlient(String userId) {
|
||||
Boolean slient = userGlobalSlientMap.get(userId);
|
||||
if (slient == null) {
|
||||
WFCMessage.UserSettingEntry entry = getUserSetting(userId, UserSettingScope.kUserSettingGlobalSilent, null);
|
||||
if (entry == null || !entry.getValue().equals("1")) {
|
||||
slient = false;
|
||||
} else {
|
||||
slient = true;
|
||||
}
|
||||
userGlobalSlientMap.put(userId, slient);
|
||||
}
|
||||
return slient;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getUserPushHiddenDetail(String userId) {
|
||||
Boolean hidden = userPushHiddenDetail.get(userId);
|
||||
if (hidden == null) {
|
||||
WFCMessage.UserSettingEntry entry = getUserSetting(userId, UserSettingScope.kUserSettingGlobalSilent, null);
|
||||
if (entry == null || !entry.getValue().equals("1")) {
|
||||
hidden = false;
|
||||
} else {
|
||||
hidden = true;
|
||||
}
|
||||
userPushHiddenDetail.put(userId, hidden);
|
||||
}
|
||||
return hidden;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getUserConversationSlient(String userId, WFCMessage.Conversation conversation) {
|
||||
String key = userId + "|" + conversation.getType() + "|" + conversation.getTarget() + "|" + conversation.getLine();
|
||||
Boolean slient = userConvSlientMap.get(key);
|
||||
if (slient == null) {
|
||||
String convSlientKey = conversation.getType() + "-" + conversation.getLine() + "-" + conversation.getTarget();
|
||||
WFCMessage.UserSettingEntry entry = getUserSetting(userId, UserSettingScope.kUserSettingConversationSilent, convSlientKey);
|
||||
if (entry == null || !entry.getValue().equals("1")) {
|
||||
slient = false;
|
||||
} else {
|
||||
slient = true;
|
||||
}
|
||||
userConvSlientMap.put(userId, slient);
|
||||
}
|
||||
return slient;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ErrorCode createChannel(String operator, WFCMessage.ChannelInfo channelInfo) {
|
||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||
|
||||
@@ -46,10 +46,6 @@ public class MemorySessionStore implements ISessionsStore {
|
||||
private String secret;
|
||||
private String dbSecret;
|
||||
|
||||
private Map<String, String> slientConvs = new ConcurrentHashMap<>();
|
||||
private boolean globalSlient = false;
|
||||
private boolean hiddenNotifyDetail = false;
|
||||
|
||||
private long lastActiveTime;
|
||||
|
||||
private long lastChatroomActiveTime;
|
||||
@@ -159,26 +155,6 @@ public class MemorySessionStore implements ISessionsStore {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public boolean isHiddenNotifyDetail() {
|
||||
return hiddenNotifyDetail;
|
||||
}
|
||||
|
||||
public void setHiddenNotifyDetail(boolean hiddenNotifyDetail) {
|
||||
this.hiddenNotifyDetail = hiddenNotifyDetail;
|
||||
}
|
||||
|
||||
public Map<String, String> getSlientConvs() {
|
||||
return slientConvs;
|
||||
}
|
||||
|
||||
public boolean isGlobalSlient() {
|
||||
return globalSlient;
|
||||
}
|
||||
|
||||
public void setGlobalSlient(boolean globalSlient) {
|
||||
this.globalSlient = globalSlient;
|
||||
}
|
||||
|
||||
public String getAppName() {
|
||||
return appName;
|
||||
}
|
||||
@@ -326,21 +302,6 @@ public class MemorySessionStore implements ISessionsStore {
|
||||
session = databaseStore.createSession(username, clientID, clientSession);
|
||||
}
|
||||
|
||||
List<WFCMessage.UserSettingEntry> settings = mServer.getStore().messagesStore().getUserSetting(username, UserSettingScope.kUserSettingConversationSilent);
|
||||
for (WFCMessage.UserSettingEntry entry : settings) {
|
||||
if (!StringUtil.isNullOrEmpty(entry.getValue()) && !entry.getValue().equals("0")) {
|
||||
session.slientConvs.put(entry.getKey(), entry.getValue());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
List<WFCMessage.UserSettingEntry> settings2 = mServer.getStore().messagesStore().getUserSetting(username, UserSettingScope.kUserSettingGlobalSilent);
|
||||
for (WFCMessage.UserSettingEntry entry : settings2) {
|
||||
if (!StringUtil.isNullOrEmpty(entry.getValue()) && !entry.getValue().equals("0")) {
|
||||
session.globalSlient = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
sessions.put(clientID, session);
|
||||
ConcurrentSkipListSet<String> sessionSet = userSessions.get(username);
|
||||
if (sessionSet == null) {
|
||||
|
||||
Reference in New Issue
Block a user