| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 | /** * 消息业务逻辑 * * @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     * @param {Object} sort     * @return {promise}     */    async getList(condition = null, page = 1, pageSize = 30, sort = {}) {        page = parseInt(page);        page = page <= 1 ? 1 : page;        let option = {pageSize: pageSize, offset: parseInt((page - 1) * pageSize)};        option.sort = sort;        let messageList = await this.db.find(condition, null, option);        messageList = messageList.length > 0 ? messageList : [];        return messageList;    }    /**     * 新增消息     *     * @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 {String} id     * @param {String} releaseUser     * @return {Promise}     */    async release(id, releaseUser) {        let data = {            status: 1,            release_time: new Date().getTime(),            release_user: releaseUser        };        return await this.updateById(id, data);    }    /**     * 获取过滤条件     *     * @return {Object}     */    getFilterCondition(request) {        let condition = {};        let status = request.query.status;        status = status !== '' && status !== undefined ? parseInt(status) : '';        if (status !== '') {            condition.status = status;        }        let year = request.query.year;        let month = request.query.month;        let startMonth = 1;        let endMonth = 12;        let lastDate = 31;        if (month !== undefined && month !== '') {            year = year !== undefined && year !== '' ? year : new Date().getYear();            let datetime = new Date(year, month, 0);            lastDate = datetime.getDate();            startMonth = month;            endMonth = month;        }        if (year !== undefined || month !== undefined) {            let startTime = Date.parse(new Date(year + '-'+ startMonth +'-1 00:00:00'));            let endTime =  Date.parse(new Date(year + '-'+ endMonth +'-'+ lastDate +' 23:59:59'));            condition.create_time = {'$gte': startTime, '$lt': endTime};        }        let keyword = request.query.keyword;        if (keyword !== '' && keyword !== undefined) {            condition.title = keyword;        }        return condition;    }}export default MessageModel;
 |