1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /**
- * 推送消息加载器。应用启动时使用此加载器将将来需要推送的消息加入消息调度中。
- *
- * author: Sand
- * since: 2016/11/28
- */
- "use strict";
- let Schedule = require('./schedule');
- let Doctor = require("../user/doctor.js");
- const nmRepo = require('../../repository/mysql/notify.msg.repo');
- const doctorRepo = require('../../repository/mysql/doctor.repo');
- const log = require("../../util/log.js");
- class PushJobLoader{
- constructor(){}
- static load(){
- nmRepo.findUnpushedMessages(function (err, rows) {
- if(err){
- log.error('Load schedule jobs failed: ', err);
- return;
- }
- for(let i = 0; i < rows.length; ++i){
- let row = rows[i];
- let delay = new Date(Date.parse(row.delay));
- let userId = row.to_uid;
- let title = row.title;
- let contentType = row.type;
- let content = row.content;
- let notifyMessage = row.data;
- Schedule.dateSchedule(delay, function (userId, title, contentType, content, notifyMessage) {
- doctorRepo.getUserStatus(userId, function (err, result) {
- if(err) {
- log.error('Get user status failed in schedule: ', err);
- return;
- }
- if(result.length > 0){
- let userStatus = result[0];
- Doctor.pushToClient(userId, userStatus.client_id, userStatus.status, userStatus.token, contentType,
- title, content, notifyMessage, userStatus.platform, function (err, result) {
- if (err != null) {
- log.error(err);
- } else {
- log.info(result);
- }
- });
- } else {
- log.warn('User is not online, scheduled pushing job omitted.');
- }
- })
- }.bind(null, userId, title, contentType, content, notifyMessage));
- }
- });
- }
- }
- module.exports = PushJobLoader;
|