/** * 消息业务逻辑 * * @author CaiAoLin * @date 2017/9/21 * @version */ import BaseModel from "../../common/base/base_model"; import MessageSchema from "../models/schemas/message"; class MessageModel extends BaseModel { /** * 用户通知类型 * * @var {Number} */ USER = 1; /** * 内部通知类型 * * @var {Number} */ SYSTEM = 2; /** * 构造函数 * * @return {void} */ constructor() { let parent = super(); parent.model = MessageSchema; parent.init(); } /** * 设置场景 * * @param {string} scene * @return {void} */ setScene(scene = '') { switch (scene) { // 新增 case 'add': this.model.schema.path('message_type').required(true); this.model.schema.path('title').required(true); this.model.schema.path('content').required(true); break; // 修改 case 'modify': this.model.schema.path('title').required(true); this.model.schema.path('content').required(true); break; } } /** * 获取列表 * * @param {object} condition * @param {number} page * @param {Number} pageSize * @return {promise} */ async getList(condition = null, page = 1, pageSize = 30) { page = parseInt(page); page = page <= 1 ? 1 : page; let option = {pageSize: pageSize, offset: parseInt((page - 1) * pageSize)}; let userList = await this.db.find(condition, null, option); userList = userList.length > 0 ? userList : []; return userList; } /** * 新增消息 * * @param {Object} data * @param {String} creator * @return {Promise} */ async addData(data, creator) { let result = false; if (Object.keys(data).length <= 0 || creator === '') { return result; } // 设置场景 this.setScene('add'); data.create_time = new Date().getTime(); data.creator = creator; result = await this.db.create(data); return result; } /** * 修改消息 * * @param {Number} id * @param {Object} data * @return {Promise} */ async modifyData(id, data) { let messageData = await this.findDataByCondition({_id: id}); if (messageData === null) { throw '不存在对应数据'; } this.setScene('modify'); data.update_time = new Date().getTime(); return await this.updateById(id, data); } /** * 发布消息 * * @param {Number} id * @return {Promise} */ async release(id) { let data = { status: 1, release_time: new Date().getTime() }; return await this.updateById(id, data); } } export default MessageModel;