message_model.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. /**
  2. * 消息业务逻辑
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/9/21
  6. * @version
  7. */
  8. import BaseModel from "../../common/base/base_model";
  9. import MessageSchema from "../models/schemas/message";
  10. class MessageModel extends BaseModel {
  11. /**
  12. * 用户通知类型
  13. *
  14. * @var {Number}
  15. */
  16. USER = 1;
  17. /**
  18. * 内部通知类型
  19. *
  20. * @var {Number}
  21. */
  22. SYSTEM = 2;
  23. /**
  24. * 构造函数
  25. *
  26. * @return {void}
  27. */
  28. constructor() {
  29. let parent = super();
  30. parent.model = MessageSchema;
  31. parent.init();
  32. }
  33. /**
  34. * 设置场景
  35. *
  36. * @param {string} scene
  37. * @return {void}
  38. */
  39. setScene(scene = '') {
  40. switch (scene) {
  41. // 新增
  42. case 'add':
  43. this.model.schema.path('message_type').required(true);
  44. this.model.schema.path('title').required(true);
  45. this.model.schema.path('content').required(true);
  46. break;
  47. // 修改
  48. case 'modify':
  49. this.model.schema.path('title').required(true);
  50. this.model.schema.path('content').required(true);
  51. break;
  52. }
  53. }
  54. /**
  55. * 获取列表
  56. *
  57. * @param {object} condition
  58. * @param {number} page
  59. * @param {Number} pageSize
  60. * @return {promise}
  61. */
  62. async getList(condition = null, page = 1, pageSize = 30) {
  63. page = parseInt(page);
  64. page = page <= 1 ? 1 : page;
  65. let option = {pageSize: pageSize, offset: parseInt((page - 1) * pageSize)};
  66. let userList = await this.db.find(condition, null, option);
  67. userList = userList.length > 0 ? userList : [];
  68. return userList;
  69. }
  70. /**
  71. * 新增消息
  72. *
  73. * @param {Object} data
  74. * @param {String} creator
  75. * @return {Promise}
  76. */
  77. async addData(data, creator) {
  78. let result = false;
  79. if (Object.keys(data).length <= 0 || creator === '') {
  80. return result;
  81. }
  82. // 设置场景
  83. this.setScene('add');
  84. data.create_time = new Date().getTime();
  85. data.creator = creator;
  86. result = await this.db.create(data);
  87. return result;
  88. }
  89. /**
  90. * 修改消息
  91. *
  92. * @param {Number} id
  93. * @param {Object} data
  94. * @return {Promise}
  95. */
  96. async modifyData(id, data) {
  97. let messageData = await this.findDataByCondition({_id: id});
  98. if (messageData === null) {
  99. throw '不存在对应数据';
  100. }
  101. this.setScene('modify');
  102. data.update_time = new Date().getTime();
  103. return await this.updateById(id, data);
  104. }
  105. /**
  106. * 发布消息
  107. *
  108. * @param {Number} id
  109. * @return {Promise}
  110. */
  111. async release(id) {
  112. let data = {
  113. status: 1,
  114. release_time: new Date().getTime()
  115. };
  116. return await this.updateById(id, data);
  117. }
  118. }
  119. export default MessageModel;