|
@ -4,21 +4,22 @@
|
|
|
"use strict";
|
|
|
|
|
|
let RedisClient = require('../../repository/redis/redis.client.js');
|
|
|
let redisClient = RedisClient.redisClient();
|
|
|
let redis = redisClient.connection;
|
|
|
let RedisModel = require('./../redis.model.js');
|
|
|
let modelUtil = require('../../util/model.util');
|
|
|
let ModelUtil = require('../../util/model.util');
|
|
|
let Messages = require('../messages/messages');
|
|
|
let Participants = require('./Participants');
|
|
|
let log = require('../../util/log.js');
|
|
|
const RedisKeys = require('../../include/commons').REDIS_KEYS;
|
|
|
const Commons = require('../../include/commons');
|
|
|
let configFile = require('../../include/commons').CONFIG_FILE;
|
|
|
let config = require('../../resources/config/' + configFile);
|
|
|
let SessionRepo = require('../../repository/mysql/session.repo');
|
|
|
let ParticipantRepo = require('../../repository/mysql/participant.repo');
|
|
|
|
|
|
let configFile = require('../../include/commons').CONFIG_FILE;
|
|
|
let config = require('../../resources/config/' + configFile);
|
|
|
let redis = RedisClient.redisClient().connection;
|
|
|
let log = require('../../util/log.js');
|
|
|
let mongoose = require('mongoose');
|
|
|
|
|
|
const RedisKeys = require('../../include/commons').REDIS_KEYS;
|
|
|
const Commons = require('../../include/commons');
|
|
|
|
|
|
class Sessions extends RedisModel {
|
|
|
constructor() {
|
|
|
super();
|
|
@ -45,13 +46,13 @@ class Sessions extends RedisModel {
|
|
|
userArray.push(key);
|
|
|
}
|
|
|
if(userArray.length>2){
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": -1, "msg": "会话人数超过2个无法创建P2P会话!"});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": -1, "msg": "会话人数超过2个无法创建P2P会话!"});
|
|
|
return false;
|
|
|
}
|
|
|
ParticipantRepo.findSessionIdByParticipantIds(userArray[0],userArray[0],function(err,res){
|
|
|
sessionId = res;
|
|
|
callcreate(sessionId);
|
|
|
})
|
|
|
});
|
|
|
}else{
|
|
|
callcreate();
|
|
|
}
|
|
@ -63,7 +64,7 @@ class Sessions extends RedisModel {
|
|
|
// 将session加入redis
|
|
|
participants.saveParticipantsToRedis(sessionId, users, createDate, function (res) {
|
|
|
if (!res) {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": -1, "msg": res});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": -1, "msg": res});
|
|
|
} else {
|
|
|
let messages = {};
|
|
|
messages.senderId = "system";
|
|
@ -72,7 +73,7 @@ class Sessions extends RedisModel {
|
|
|
messages.content = "";
|
|
|
messages.contentType = "1";
|
|
|
self.updateLastContent(session_key, type, name, messages);
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "session create success!"});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "session create success!"});
|
|
|
self.saveSessionToMysql(sessionId, name, type, createDate);
|
|
|
participants.saveParticipantsToMysql(sessionId, users); //创建session成员到数据库
|
|
|
}
|
|
@ -128,7 +129,7 @@ class Sessions extends RedisModel {
|
|
|
redis.zrevrangeAsync(user_session_key, page, pagesize).then(function (res) {
|
|
|
let sessionlist = [];
|
|
|
if (res.length == 0) {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "data": res});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": 200, "data": res});
|
|
|
} else {
|
|
|
for (var j in res) {
|
|
|
calllist(res[j], j, res.length);
|
|
@ -189,11 +190,11 @@ class Sessions extends RedisModel {
|
|
|
function callback(res, j, _len) {
|
|
|
sessionlist.push(res);
|
|
|
if (j == (_len - 1)) {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "data": sessionlist});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": 200, "data": sessionlist});
|
|
|
}
|
|
|
}
|
|
|
}).catch(function (res) {
|
|
|
modelUtil.emitData(self.eventEmitter, "get list error " + res + ",user:" + userId);
|
|
|
ModelUtil.emitData(self.eventEmitter, "get list error " + res + ",user:" + userId);
|
|
|
})
|
|
|
}
|
|
|
|
|
@ -212,12 +213,11 @@ class Sessions extends RedisModel {
|
|
|
let participants_key = super.makeRedisKey(RedisKeys.Participants, sessionId);
|
|
|
//超过最大限制后从mysql获取数据
|
|
|
if (page * pagesize >= config.sessionConfig.maxMessageCount) {
|
|
|
let message = new Messages();
|
|
|
message.getMessageByPage(sessionId, page, pagesize, function (err, res) {
|
|
|
self.getMessageFromMySQL(sessionId, page, pagesize, function (err, res) {
|
|
|
if (!err) {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "data": res});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": 200, "data": res});
|
|
|
} else {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": -1, "data": err});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": -1, "data": err});
|
|
|
}
|
|
|
})
|
|
|
} else {
|
|
@ -228,19 +228,19 @@ class Sessions extends RedisModel {
|
|
|
let participants = new Participants();
|
|
|
participants.existsParticipant(sessionId, user, function (res) {
|
|
|
if (!res) {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": -1, "msg": "用户不在此会话中!"});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": -1, "msg": "用户不在此会话中!"});
|
|
|
} else {
|
|
|
//倒序取出最后N条消息
|
|
|
redis.zrevrangeAsync(message_timestamp_key, page, pagesize).then(function (res) {
|
|
|
//取出消息实体
|
|
|
if (res.length == 0) {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "data": []});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": 200, "data": []});
|
|
|
return;
|
|
|
}
|
|
|
redis.hmgetAsync(message_key, res).then(function (messages) {
|
|
|
console.log(messages)
|
|
|
//将取到的消息返回给前端
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "data": messages});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": 200, "data": messages});
|
|
|
}).then(function () {
|
|
|
//更新患者最后一次获取消息的日期
|
|
|
redis.zaddAsync(participants_key, (new Date().getTime()), user).then(function (res) {
|
|
@ -250,7 +250,7 @@ class Sessions extends RedisModel {
|
|
|
})
|
|
|
})
|
|
|
}).catch(function (res) {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": -1, "msg": res});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": -1, "msg": res});
|
|
|
})
|
|
|
}
|
|
|
})
|
|
@ -304,7 +304,7 @@ class Sessions extends RedisModel {
|
|
|
}
|
|
|
}).then(function (res) {
|
|
|
//更新消息相关
|
|
|
return messages.saveMessageForRedis(message_id, sessionId, message);
|
|
|
return messages.saveMessageToRedis(message_id, sessionId, message);
|
|
|
}).then(function (res) {
|
|
|
//更新session的最后一条聊天记录
|
|
|
return self.updateLastContent(session_key, session_type, name, message);
|
|
@ -312,13 +312,13 @@ class Sessions extends RedisModel {
|
|
|
//操作mysql数据库
|
|
|
messages.saveMessageToMysql(message, session_type, message_id, sessionId);
|
|
|
//返回数据给前端。
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "发送成功!"});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "发送成功!"});
|
|
|
//消息推送
|
|
|
}).catch(function (res) {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": -1, "msg": res});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": -1, "msg": res});
|
|
|
})
|
|
|
} else {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": -1, "msg": "用户不在此会话当中!"});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": -1, "msg": "用户不在此会话当中!"});
|
|
|
}
|
|
|
})
|
|
|
}
|
|
@ -339,7 +339,7 @@ class Sessions extends RedisModel {
|
|
|
//初始化置顶
|
|
|
redis.zaddAsync(user_session_key, Commons.STICKY_SESSION_BASE_SCORE, sessionId).then(function (res) {
|
|
|
log.info("stickSession:" + sessionId + ",res:" + res);
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "置顶成功!"});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "置顶成功!"});
|
|
|
}).then(function () {
|
|
|
SessionRepo.saveStickySession(sessionId, user, Commons.STICKY_SESSION_BASE_SCORE);
|
|
|
})
|
|
@ -348,7 +348,7 @@ class Sessions extends RedisModel {
|
|
|
scoreres = Number(scoreres) + 1;
|
|
|
redis.zaddAsync(user_session_key, scoreres, sessionId).then(function () {
|
|
|
log.info("stickSession:" + sessionId + ",res:" + res);
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "置顶成功!"});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "置顶成功!"});
|
|
|
}).then(function () {
|
|
|
SessionRepo.saveStickySession(sessionId, user, scoreres);
|
|
|
})
|
|
@ -370,7 +370,7 @@ class Sessions extends RedisModel {
|
|
|
}
|
|
|
redis.zaddAsync(user_session_key, res, sessionId).then(function (res) {
|
|
|
log.info("cancelStickSession:" + sessionId);
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "取消置顶成功!"});
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "取消置顶成功!"});
|
|
|
}).then(function () {
|
|
|
SessionRepo.unstickSession(sessionId, user);
|
|
|
});
|