/** * 系统消息。 */ "use strict"; let PLATFORMS = require('../include/commons').PLATFORM; let BaseModel = require('./base.model'); let log = require("../util/log.js"); let modelUtil = require('../util/modelUtil'); let getui = require('getui'); let userRepo = require('../repository/doctor.repo.js'); let smRepo = require("../repository/system.msg.repo.js"); let nmRepo = require("../repository/notify.msg.repo.js"); class SystemMessage extends BaseModel{ constructor() { super(); } /** * 发送消息。 * * @param message */ send(message) { let self = this; userRepo.getUserStatus(message.to, function (err, rows) { if (err) { console.log("Lookup system message receiver failed: ", err); modelUtil.emitDbError(self.eventEmitter, "Lookup system message receiver failed.", err); return; } if (rows.length == 0) { modelUtil.emitDataNotFound(self.eventEmitter, "User not found: " + message.to); return; } let userStatus = rows[0]; let isOnline = userStatus.is_online; let notifyMessage = JSON.stringify({type: 'system_msg', data: message.content}); // 保存该条推送信息 smRepo.save(message.to, message.contentType, message.title, message.summary, message.content, function (err, result) { if (err) { modelUtil.emitDbError(self.eventEmitter, "Save system notify message failed.", err); return; } // 先通知外层操作已经完成,再处理后续操作。客户可先结束网络连接,减少客户端等待。 modelUtil.emitData(self.eventEmitter, {}); // 保存通知到数据库中 nmRepo.save(message.to, message.contentType, message.title, message.summary, notifyMessage, isOnline, function (err, result) { if (err) { modelUtil.logError("Save system notify message failed", err); return; } if (!isOnline) return; if (userStatus.platform === PLATFORMS.iOS) { getui.pushAPN(message.to, userStatus.token, message.contentType, message.title, message.content, notifyMessage, function (err, result) { err != null ? console.log(err) : console.log(result); }); } else if (userStatus.platform === PLATFORMS.Android) { getui.pushAndroid(userStatus.client_id, message.contentType, message.title, message.content, notifyMessage, userStatus.status, function (err, result) { err != null ? console.log(err) : console.log(result); }); } }); }); }); } } module.exports = SystemMessage;