user_message_model.js 3.0 KB

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