messages.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /**
  2. * 消息模型。
  3. */
  4. "use strict";
  5. let RedisClient = require('../../repository/redis/redis.client.js');
  6. let redisClient = RedisClient.redisClient();
  7. let redis = redisClient.connection;
  8. let RedisModel = require('./../redis.model.js');
  9. let modelUtil = require('../../util/model.util');
  10. var imDb = require('../../repository/mysql/db/im.db');
  11. let log = require('../../util/log.js');
  12. let Sessions = require('../sessions/sessions');
  13. let MessageRepo = require('../../repository/mysql/message.repo');
  14. let configFile = require('../../include/commons').CONFIG_FILE;
  15. let config = require('../../resources/config/' + configFile);
  16. const RedisKey = require('../../include/commons').REDIS_KEYS;
  17. const IMTABLE = require('../../include/commons').IM_DB;
  18. class Messages extends RedisModel {
  19. constructor() {
  20. super();
  21. }
  22. /**
  23. * 根据topicId获取对应的议题的信息列表
  24. * @param topicId
  25. */
  26. getMessagesByTopicId(topicId){
  27. }
  28. /**
  29. * 分页
  30. * 根据topicId获取对应的议题的成员信息
  31. * @param topicId
  32. */
  33. getMessagesByTopicIdForPage(topicId,page,pagesize){
  34. }
  35. /**
  36. * 根据sessionId获取对应的会话的信息列表mysql
  37. * @param sessionId
  38. */
  39. getMessagesBySession(sessionId,handler){
  40. MessageRepo.getMessagesBySession(sessionId,handler);
  41. }
  42. /**
  43. * 分页获取消息MySQL
  44. * @param sessionId
  45. * @param page
  46. * @param pagesize
  47. */
  48. getMessageByPage(sessionId,page,pagesize,handler){
  49. MessageRepo.getMessageByPage(sessionId,page,pagesize,handler);
  50. }
  51. /**
  52. * 根据消息ID获取单条消息
  53. * @param messageId
  54. */
  55. getMessagesByid(messageId){
  56. }
  57. saveMessageForRedis(message_id,sessionId,message){
  58. let message_key = super.makeRedisKey(RedisKey.Messages,sessionId);
  59. let message_timestamp_key = super.makeRedisKey(RedisKey.MessagesByTimestamp,sessionId);
  60. redis.hsetAsync(message_key, message_id, JSON.stringify(message)).then(function (res) {
  61. log.info("success save redis message by session :"+sessionId);
  62. //保存message_timestamp_key redis
  63. return redis.zaddAsync(message_timestamp_key, message.timestamp.getTime(), message_id);
  64. });
  65. }
  66. /**
  67. * 保存Message 到mysql
  68. * @param messages 消息对象
  69. * @type type 会话类型,1表示MUC会话,2表示P2P,3表示群会话,4表示临时讨论组
  70. */
  71. saveMessageForMysql(messages,type,messageid,sessionId){
  72. MessageRepo.saveMessageForMysql(messages,type,messageid,sessionId);
  73. }
  74. }
  75. // Expose class
  76. module.exports = Messages;