/** * 搜索功能。 */ "use strict"; let ImDb = require('../mysql/db/im.db'); let log = require('../../util/log.js'); const IMTABLE = require('../../include/commons').IM_DB; class MessageRepo { constructor() { } /** * 根据sessionId获取对应的会话的信息列表mysql * @param sessionId */ static 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); } }) } }) } /** * 分页获取消息MySQL * @param sessionId * @param page * @param pagesize */ static 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); } }) } }) } /** * 保存Message 到mysql * @param messages 消息对象 * @type type 会话类型,1表示MUC会话,2表示P2P,3表示群会话,4表示临时讨论组 */ static 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); } } }); } } module.exports = MessageRepo;