| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | /** * 用户消息业务逻辑 * * @author CaiAoLin * @date 2017/9/22 * @version */import BaseModel from "../../common/base/base_model";import MessageModel from "./message_model";import mongoose from "mongoose";class UserMessageModel extends BaseModel {    /**     * 构造函数     *     * @return {void}     */    constructor() {        let parent = super();        parent.model = mongoose.model('user_message');        parent.init();    }    /**     * 初始化用户消息     *     * @param {String} userId     * @return {boolean}     */    async initMessage(userId) {        userId = userId.toString();        let result = true;        // 获取最后一条消息的信息        let option = {pageSize: 1, offset: 0};        option.sort = {create_time: -1};        let lastMessageData = await this.db.find({user_id: userId}, null, option);        lastMessageData = lastMessageData === null || lastMessageData.length <= 0 ? null : lastMessageData[0];        let lastTime = lastMessageData === null ? 0 : lastMessageData.create_time;        // 查找已发布的数据        let messageModel = new MessageModel();        let messageData = await messageModel.getListByTime(lastTime);        if (messageData === null) {            return result;        }        // 组合新增数据        let insertData = [];        let currentTime = new Date().getTime();        for(let message of messageData) {            let tmp = {                message: message._id,                user_id: userId,                create_time: currentTime            };            insertData.push(tmp);        }        result = await this.db.create(insertData);        return result;    }    /**     * 获取列表     *     * @param {String} userId     * @param {Number} pageSize     * @param {Object} sort     * @return {promise}     */    async getList(userId, pageSize = 15, sort = {}) {        let option = {pageSize: pageSize, offset: 0};        option.sort = sort;        let messageList = await this.db.findWithPopulate({user_id: userId, is_delete: 0}, null, option, 'message');        messageList = messageList.length > 0 ? messageList : [];        return messageList;    }    /**     * 获取详细数据     *     * @param {String} userId     * @param {String} id     * @return {Promise}     */    async getDetail(userId, id) {        let result = {};        let messageList = await this.db.findWithPopulate({user_id: userId, is_delete: 0, _id: id}, null, null, 'message');        if (messageList === null) {            return result;        }        result = messageList.length > 0 ? messageList[0] : result;        // 如果是未读数据则更改状态        if (result.is_read === 0) {            let updateData = {is_read: 1};            await this.db.update({_id: id}, updateData);        }        return result;    }    /**     * 设置全部已读     *     * @param {String} userId     * @return {Promise}     */    async setAllRead(userId) {        let updateData = {is_read: 1};        return await this.db.update({user_id: userId}, updateData)    }}export default UserMessageModel;
 |