|
@ -11,6 +11,7 @@ let modelUtil = require('../../util/model.util');
|
|
|
var imDb = require('../../repository/mysql/db/im.db');
|
|
|
let log = require('../../util/log.js');
|
|
|
let Sessions = require('../sessions/sessions');
|
|
|
let MessageRepo = require('../../repository/mysql/message.repo');
|
|
|
let configFile = require('../../include/commons').CONFIG_FILE;
|
|
|
let config = require('../../resources/config/' + configFile);
|
|
|
const RedisKey = require('../../include/commons').REDIS_KEYS;
|
|
@ -46,40 +47,7 @@ class Messages extends RedisModel {
|
|
|
* @param sessionId
|
|
|
*/
|
|
|
getMessagesBySession(sessionId,handler){
|
|
|
let session = new Sessions();
|
|
|
session.getSessions(sessionId,function(err,res){
|
|
|
if(err){
|
|
|
return;
|
|
|
}else{
|
|
|
if(res.length==0){
|
|
|
log.warn("session is not found!");
|
|
|
return;
|
|
|
}
|
|
|
let type = res[0].type;
|
|
|
let db ="";
|
|
|
if(type==1){
|
|
|
db = IMTABLE.MUCMSG;
|
|
|
}else if(type==2){
|
|
|
db = IMTABLE.P2PMSG;
|
|
|
}else{
|
|
|
db = IMTABLE.GROUPMSG;
|
|
|
}
|
|
|
let sql = "select * from "+db+" w where w.session_id = ? limit 0,"+config.sessionConfig.maxMessageCount;
|
|
|
imDb.execQuery({
|
|
|
"sql": sessionsql,
|
|
|
"args": [sessionId],
|
|
|
"handler": function (err, res) {
|
|
|
if(err) {
|
|
|
log.error("sql:"+sql+"data:sessionId:"+sessionId);
|
|
|
}else{
|
|
|
log.info("getMessagesBySession success by sessionId :"+sessionId);
|
|
|
}
|
|
|
handler(err,res);
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
|
|
|
MessageRepo.getMessagesBySession(sessionId,handler);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@ -89,42 +57,7 @@ class Messages extends RedisModel {
|
|
|
* @param pagesize
|
|
|
*/
|
|
|
getMessageByPage(sessionId,page,pagesize,handler){
|
|
|
if(page>0){
|
|
|
page =page*pagesize;
|
|
|
}
|
|
|
let session = new Sessions();
|
|
|
session.getSessions(sessionId,function(err,res){
|
|
|
if(err){
|
|
|
return;
|
|
|
}else{
|
|
|
if(res.length==0){
|
|
|
log.warn("session is not found!");
|
|
|
return;
|
|
|
}
|
|
|
let type = res[0].type;
|
|
|
let db ="";
|
|
|
if(type==1){
|
|
|
db = IMTABLE.MUCMSG;
|
|
|
}else if(type==2){
|
|
|
db = IMTABLE.P2PMSG;
|
|
|
}else{
|
|
|
db = IMTABLE.GROUPMSG;
|
|
|
}
|
|
|
let sql = "select * from "+db+" w where w.session_id = ? limit ?,?";
|
|
|
imDb.execQuery({
|
|
|
"sql": sessionsql,
|
|
|
"args": [sessionId,page,pagesize],
|
|
|
"handler": function (err, res) {
|
|
|
if(err) {
|
|
|
log.error("sql:"+sql+"data:sessionId:"+sessionId);
|
|
|
}else{
|
|
|
log.info("getMessagesBySession success by sessionId :"+sessionId);
|
|
|
}
|
|
|
handler(err,res);
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
MessageRepo.getMessageByPage(sessionId,page,pagesize,handler);
|
|
|
}
|
|
|
|
|
|
|
|
@ -154,19 +87,7 @@ class Messages extends RedisModel {
|
|
|
* @type type 会话类型,1表示MUC会话,2表示P2P,3表示群会话,4表示临时讨论组
|
|
|
*/
|
|
|
saveMessageForMysql(messages,type,messageid,sessionId){
|
|
|
var sql = "INSERT INTO "+(type==1?IMTABLE.MUCMSG:type==2?IMTABLE.P2PMSG:IMTABLE.GROUPMSG)+" (id, session_id, sender_id, sender_name,content_type, content, timestamp) VALUES (?,?,?,?,?,?,?) ";
|
|
|
imDb.execQuery({
|
|
|
"sql": sql,
|
|
|
"args": [messageid,sessionId,messages.senderId,messages.senderName,messages.contentType,messages.content,messages.timestamp],
|
|
|
"handler": function (err, res) {
|
|
|
if(err) {
|
|
|
log.error("sql:"+sql+",error:"+err+",data:"+JSON.stringify(messages)+",messageid:"+messageid+",sessionId:"+sessionId);
|
|
|
}else{
|
|
|
log.info("save message to mysql is success by session :"+sessionId);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
MessageRepo.saveMessageForMysql(messages,type,messageid,sessionId);
|
|
|
}
|
|
|
|
|
|
}
|