123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /**
- * 系统消息。
- */
- "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;
|