| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | 'use strict';/** * 用户通知相关数据模型 * * @author CaiAoLin * @date 2017/11/22 * @version */module.exports = app => {    class Notify extends app.BaseService {        /**         * 构造函数         *         * @param {Object} ctx - egg全局变量         * @return {void}         */        constructor(ctx) {            super(ctx);            this.tableName = 'notify';        }        /**         * 同步当前用户的通知数据         *         * @return {Boolean}         */        async syncNotifyData() {            let result = false;            // 获取session中的数据            const sessionUser = this.ctx.session.sessionUser;            if (sessionUser === null || sessionUser === undefined) {                return result;            }            try {                // 获取当前用户最后一条数据                const condition = {                    where: { uid: sessionUser.accountId, type: sessionUser.loginType },                    orders: [['id', 'DESC']],                    limit: 1,                };                const lastData = await this.db.select(this.tableName, condition);                const lastMessageTime = lastData.length <= 0 ? 0 : lastData[0].create_time;                // 获取后台设置的消息数据                const messageData = await this.ctx.service.message.getMessage(lastMessageTime);                // 如果已经是最新的消息则直接返回                if (messageData.length <= 0) {                    return true;                }                // 新增通知数据                const currentTime = new Date().getTime() / 1000;                const insertData = [];                for (const message of messageData) {                    const tmp = {                        mid: message.id,                        create_time: currentTime,                        uid: sessionUser.accountId,                        type: sessionUser.loginType,                    };                    insertData.push(tmp);                }                const operate = this.db.insert(this.tableName, insertData);                result = operate.affectedRows > 0;            } catch (error) {                console.log(error);                result = false;            }            return result;        }    }    return Notify;};
 |