user_message_model.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /**
  2. * 用户消息业务逻辑
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/9/22
  6. * @version
  7. */
  8. import BaseModel from "../../common/base/base_model";
  9. import UserMessageSchema from "./schema/user_message";
  10. import MessageModel from "./message_model";
  11. import mongoose from "mongoose";
  12. class UserMessageModel extends BaseModel {
  13. /**
  14. * 构造函数
  15. *
  16. * @return {void}
  17. */
  18. constructor() {
  19. let parent = super();
  20. parent.model = mongoose.model('user_message');
  21. parent.init();
  22. }
  23. /**
  24. * 初始化用户消息
  25. *
  26. * @param {String} userId
  27. * @return {boolean}
  28. */
  29. async initMessage(userId) {
  30. userId = userId.toString();
  31. let result = true;
  32. // 获取最后一条消息的信息
  33. let option = {pageSize: 1, offset: 0};
  34. option.sort = {create_time: -1};
  35. let lastMessageData = await this.db.find({user_id: userId}, null, option);
  36. lastMessageData = lastMessageData === null || lastMessageData.length <= 0 ? null : lastMessageData[0];
  37. let lastTime = lastMessageData === null ? 0 : lastMessageData.create_time;
  38. // 查找已发布的数据
  39. let messageModel = new MessageModel();
  40. let messageData = await messageModel.getListByTime(lastTime);
  41. if (messageData === null) {
  42. return result;
  43. }
  44. // 组合新增数据
  45. let insertData = [];
  46. let currentTime = new Date().getTime();
  47. for(let message of messageData) {
  48. let tmp = {
  49. message: message._id,
  50. user_id: userId,
  51. create_time: currentTime
  52. };
  53. insertData.push(tmp);
  54. }
  55. result = await this.db.create(insertData);
  56. return result;
  57. }
  58. /**
  59. * 获取列表
  60. *
  61. * @param {String} userId
  62. * @param {Number} pageSize
  63. * @param {Object} sort
  64. * @return {promise}
  65. */
  66. async getList(userId, pageSize = 15, sort = {}) {
  67. let option = {pageSize: pageSize, offset: 0};
  68. option.sort = sort;
  69. let messageList = await this.db.findWithPopulate({user_id: userId, is_delete: 0}, null, option, 'message');
  70. messageList = messageList.length > 0 ? messageList : [];
  71. return messageList;
  72. }
  73. /**
  74. * 获取详细数据
  75. *
  76. * @param {String} userId
  77. * @param {String} id
  78. * @return {Promise}
  79. */
  80. async getDetail(userId, id) {
  81. let result = {};
  82. let messageList = await this.db.findWithPopulate({user_id: userId, is_delete: 0, _id: id}, null, null, 'message');
  83. if (messageList === null) {
  84. return result;
  85. }
  86. result = messageList.length > 0 ? messageList[0] : result;
  87. // 如果是未读数据则更改状态
  88. if (result.is_read === 0) {
  89. let updateData = {is_read: 1};
  90. await this.db.update({_id: id}, updateData);
  91. }
  92. return result;
  93. }
  94. /**
  95. * 设置全部已读
  96. *
  97. * @param {String} userId
  98. * @return {Promise}
  99. */
  100. async setAllRead(userId) {
  101. let updateData = {is_read: 1};
  102. return await this.db.update({user_id: userId}, updateData)
  103. }
  104. }
  105. export default UserMessageModel;