1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /**
- * 消息库。
- */
- "use strict";
- let configFile = require('../../include/commons').CONFIG_FILE;
- let config = require('../../resources/config/' + configFile);
- let log = require('../../util/log.js');
- let SessionRepo = require('../../repository/mysql/session.repo');
- let ImDb = require('../mysql/db/im.db');
- const DB_TABLES = require('../../include/commons').DB_TABLES;
- class MessageRepo {
- constructor() {
- }
- /**
- * 分页获取消息
- *
- * @param sessionId
- * @param page
- * @param size
- * @param handler
- */
- static findBySessionId(sessionId, page, size, messageType, handler) {
- if (page < 0) {
- page = 0;
- }
- SessionRepo.findOne(sessionId, function (err, res) {
- if (!err) {
- if (res.length == 0) {
- handler(null, null);
- return;
- }
- var params = [];
- let type = res[0].type;
- let MessageTable = "";
- if (type == 1) {
- MessageTable = DB_TABLES.MucMessages;
- } else if (type == 2) {
- MessageTable = DB_TABLES.P2pMessages;
- } else {
- MessageTable = DB_TABLES.GroupMessages;
- }
- let where = " w.session_id = ? ";
- params.push(sessionId);
- if (messageType) {
- where += " and content_type=? ";
- params.push(messageType);
- }
- let sql = "select id, session_id, sender_id, sender_name, content_type, content, timestamp from " +
- MessageTable + " w where " + where + " order by w.id limit ?, ?";
- params.push(page);
- params.push(size);
- ImDb.execQuery({
- "sql": sql,
- "args": params,
- "handler": handler
- });
- }
- });
- }
- /**
- * 保存消息
- *
- * @param message 消息对象
- * @param sessionType 会话类型,1表示MUC会话,2表示P2P,3表示群会话,4表示临时讨论组
- * @param messageId
- * @param sessionId
- */
- static save(message, sessionType, messageId, sessionId, handler) {
- var sql = "INSERT INTO " + DB_TABLES.sessionTypeToTableName(sessionType) +
- " (id, session_id, sender_id, sender_name,content_type, content, timestamp) VALUES (?,?,?,?,?,?,?)";
- ImDb.execQuery({
- "sql": sql,
- "args": [messageId, sessionId, message.sender_id, message.sender_name, message.content_type, message.content, message.timestamp],
- "handler": handler || function (err, res) {
- log.info(res);
- }
- });
- }
- }
- module.exports = MessageRepo;
|