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;
- };
|