|
@ -16,6 +16,7 @@ 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 mongoose = require('mongoose');
|
|
|
|
|
|
class Sessions extends RedisModel {
|
|
@ -26,39 +27,57 @@ class Sessions extends RedisModel {
|
|
|
/**
|
|
|
* 创建会话
|
|
|
*
|
|
|
* type = 1 sessionid = md5(patientId); MUC
|
|
|
* type = 2 sessionId = hash(user1,user2); P2P
|
|
|
* type = 3 sessionId = groupid; 团队群聊
|
|
|
* @param sessionId 会话ID
|
|
|
* @param name 会话名称
|
|
|
* @param type 会话类型
|
|
|
* @param users 会话成员
|
|
|
*/
|
|
|
createSession(sessionId, name, type, users) {
|
|
|
if (type == 2) {
|
|
|
|
|
|
}
|
|
|
|
|
|
let self = this;
|
|
|
let createDate = new Date();
|
|
|
let session_key = super.makeRedisKey(RedisKeys.Session, sessionId);
|
|
|
let participants = new Participants();
|
|
|
|
|
|
// 将session加入redis
|
|
|
participants.saveParticipantsToRedis(sessionId, users.split(","), createDate, function (res) {
|
|
|
if (!res) {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": -1, "msg": res});
|
|
|
} else {
|
|
|
let messages = {};
|
|
|
messages.senderId = "system";
|
|
|
messages.senderName = "系统消息";
|
|
|
messages.timestamp = createDate;
|
|
|
messages.content = "";
|
|
|
messages.contentType = "1";
|
|
|
self.updateLastContent(session_key, type, name, messages);
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "session create success!"});
|
|
|
|
|
|
self.saveSessionToMysql(sessionId, name, type, createDate);
|
|
|
participants.saveParticipantsToMysql(sessionId, users.split(",")); //创建session成员到数据库
|
|
|
let _super = super.makeRedisKey;
|
|
|
users = eval("["+users+"]")[0];
|
|
|
if (type == 2) {//P2P消息用hash校验
|
|
|
var userArray=[];
|
|
|
for(var key in users){
|
|
|
userArray.push(key);
|
|
|
}
|
|
|
})
|
|
|
if(userArray.length>2){
|
|
|
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();
|
|
|
}
|
|
|
function callcreate(){
|
|
|
let createDate = new Date();
|
|
|
let session_key = _super(RedisKeys.Session, sessionId);
|
|
|
let participants = new Participants();
|
|
|
|
|
|
// 将session加入redis
|
|
|
participants.saveParticipantsToRedis(sessionId, users, createDate, function (res) {
|
|
|
if (!res) {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": -1, "msg": res});
|
|
|
} else {
|
|
|
let messages = {};
|
|
|
messages.senderId = "system";
|
|
|
messages.senderName = "系统消息";
|
|
|
messages.timestamp = createDate;
|
|
|
messages.content = "";
|
|
|
messages.contentType = "1";
|
|
|
self.updateLastContent(session_key, type, name, messages);
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "session create success!"});
|
|
|
self.saveSessionToMysql(sessionId, name, type, createDate);
|
|
|
participants.saveParticipantsToMysql(sessionId, users); //创建session成员到数据库
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
@ -273,7 +292,7 @@ class Sessions extends RedisModel {
|
|
|
let message_id = mongoose.Types.ObjectId().toString();
|
|
|
let session_type = 0;
|
|
|
let name = "";
|
|
|
participants.existsParticipant(sessionId, messages.senderId, function (res) {
|
|
|
participants.existsParticipant(sessionId, message.senderId, function (res) {
|
|
|
//校验发送成员是都在讨论组
|
|
|
if (res) {
|
|
|
redis.hmgetAsync(session_key, ["type", "name"]).then(function (res) {
|