|
@ -191,10 +191,10 @@ class Users extends RedisModel {
|
|
|
if (loginFromApp) {
|
|
|
// cache app status
|
|
|
multi = multi.hmset(userStatusKey, 'platform', platform, 'app_in_bg', false, 'client_id', clientId,
|
|
|
'token', token, 'last_login_time', lastLoginTime);
|
|
|
'token', token, 'last_login_time', lastLoginTime.getTime());
|
|
|
} else {
|
|
|
// cache wechat status
|
|
|
multi = multi.hmset(userKey, 'open_id', userInfo.open_id);
|
|
|
multi = multi.hmset(userKey, 'open_id', userInfo.open_id, 'last_login_time', lastLoginTime.getTime());
|
|
|
}
|
|
|
|
|
|
multi.execAsync().then(function (res) {
|
|
@ -222,14 +222,19 @@ class Users extends RedisModel {
|
|
|
let sessionParticipantsKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipants, sessionId);
|
|
|
let sessionParticipantsRoleKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipantsRole, sessionId);
|
|
|
ParticipantRepo.findParticipants(sessionId, function (err, participants) {
|
|
|
if(err){
|
|
|
ModelUtil.emitError(self.eventEmitter, err.message);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
participants.forEach(function (participant) {
|
|
|
let participantId = participant.participant_id;
|
|
|
let participantRole = participant.participant_role;
|
|
|
let score = new Date().getTime();
|
|
|
|
|
|
redisConn.multi()
|
|
|
.zadd(sessionParticipantsKey, participantId, score)
|
|
|
.hset(sessionParticipantsRoleKey, participantId, participantRole)
|
|
|
.zadd(sessionParticipantsKey, score, participantId)
|
|
|
.hset(sessionParticipantsRoleKey, participantRole, participantId)
|
|
|
.execAsync().then(function (res) {
|
|
|
});
|
|
|
});
|
|
@ -239,20 +244,24 @@ class Users extends RedisModel {
|
|
|
let messagesKey = RedisModel.makeRedisKey(REDIS_KEYS.Messages, sessionId);
|
|
|
let messagesByTimestampKey = RedisModel.makeRedisKey(REDIS_KEYS.MessagesByTimestamp, sessionId);
|
|
|
MessageRepo.findBySessionId(sessionId, 0, config.sessionConfig.maxMessageCount, function (err, messages) {
|
|
|
if(err){
|
|
|
ModelUtil.emitError(self.eventEmitter, err.message);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
messages.forEach(function (message) {
|
|
|
let id = message.id;
|
|
|
let msgJson = {
|
|
|
sessionId: message.session_id,
|
|
|
senderId: message.sender_id,
|
|
|
senderName: message.sender_name,
|
|
|
contentType: message.content_type,
|
|
|
content: message.content,
|
|
|
timestamp: message.timestamp
|
|
|
id: message.id,
|
|
|
sender_id: message.sender_id,
|
|
|
sender_name: message.sender_name,
|
|
|
timestamp: ObjectUtil.timestampToLong(message.timestamp),
|
|
|
content_type: message.content_type,
|
|
|
content: message.content
|
|
|
};
|
|
|
|
|
|
redisConn.multi()
|
|
|
.hset(messagesKey, id, msgJson)
|
|
|
.zadd(messagesByTimestampKey, id)
|
|
|
.hset(messagesKey, message.id, JSON.stringify(msgJson))
|
|
|
.zadd(messagesByTimestampKey, ObjectUtil.timestampToLong(message.timestamp), message.id)
|
|
|
.execAsync()
|
|
|
.then(function (res) {
|
|
|
});
|
|
@ -262,6 +271,11 @@ class Users extends RedisModel {
|
|
|
// cache topics for MUC
|
|
|
let topicsKey = RedisModel.makeRedisKey(REDIS_KEYS.Topics, sessionId);
|
|
|
TopicRepo.findAll(sessionId, function (err, topics) {
|
|
|
if(err){
|
|
|
ModelUtil.emitError(self.eventEmitter, err.message);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
topics.forEach(function (topic) {
|
|
|
let topicKey = RedisModel.makeRedisKey(REDIS_KEYS.Topic, topic.id);
|
|
|
let topicId = topic.id;
|