|
@ -7,6 +7,8 @@ let log = require("../util/log.js");
|
|
let getui = require('getui');
|
|
let getui = require('getui');
|
|
|
|
|
|
let BaseModel = require('./base.model');
|
|
let BaseModel = require('./base.model');
|
|
|
|
let Schedule = require("./schedule/schedule.js");
|
|
|
|
|
|
let doctorRepo = require('../repository/doctor.repo.js');
|
|
let doctorRepo = require('../repository/doctor.repo.js');
|
|
let gmRepo = require('../repository/group.msg.repo');
|
|
let gmRepo = require('../repository/group.msg.repo');
|
|
let pmRepo = require('../repository/private.msg.repo');
|
|
let pmRepo = require('../repository/private.msg.repo');
|
|
@ -96,7 +98,7 @@ class Doctor extends BaseModel {
|
|
* @param message
|
|
* @param message
|
|
* @param channel
|
|
* @param channel
|
|
*/
|
|
*/
|
|
static pushMessage(message, channel){
|
|
|
|
|
|
static pushMessage(message, channel) {
|
|
doctorRepo.getUserStatus(message.to, function (err, result) {
|
|
doctorRepo.getUserStatus(message.to, function (err, result) {
|
|
if (err) {
|
|
if (err) {
|
|
log.error('Lookup notify message receiver failed: ' + message.to);
|
|
log.error('Lookup notify message receiver failed: ' + message.to);
|
|
@ -110,11 +112,13 @@ class Doctor extends BaseModel {
|
|
|
|
|
|
let userStatus = result[0];
|
|
let userStatus = result[0];
|
|
let isOnline = result.length > 0 && userStatus.is_online === 1;
|
|
let isOnline = result.length > 0 && userStatus.is_online === 1;
|
|
|
|
let delay = null;
|
|
|
|
|
|
// 构建通知消息
|
|
// 构建通知消息
|
|
let notifyMessage = {type: channel, data: message.content};
|
|
let notifyMessage = {type: channel, data: message.content};
|
|
if(message.from) notifyMessage.from_uid = message.from;
|
|
|
|
if(message.gid) notifyMessage.gid = message.gid;
|
|
|
|
|
|
if (message.from) notifyMessage.from_uid = message.from;
|
|
|
|
if (message.gid) notifyMessage.gid = message.gid;
|
|
|
|
if (message.delay && message.delay !== "null") delay = new Date(Date.parse(message.delay));
|
|
|
|
|
|
let title = '新消息';
|
|
let title = '新消息';
|
|
let content = message.content;
|
|
let content = message.content;
|
|
@ -122,27 +126,38 @@ class Doctor extends BaseModel {
|
|
content = '[图片]';
|
|
content = '[图片]';
|
|
} else if (message.contentType === CONTENT_TYPES.Audio) {
|
|
} else if (message.contentType === CONTENT_TYPES.Audio) {
|
|
content = '[语音]';
|
|
content = '[语音]';
|
|
} else if(message.contentType > 3) {
|
|
|
|
|
|
} else if (message.contentType > 3) {
|
|
content = '您有一条新消息';
|
|
content = '您有一条新消息';
|
|
}
|
|
}
|
|
|
|
|
|
// 保存通知消息到数据库中,并根据用户在线状态推送此消息
|
|
// 保存通知消息到数据库中,并根据用户在线状态推送此消息
|
|
nmRepo.save(message.to, message.contentType, title, content, JSON.stringify(notifyMessage), isOnline, function (err, result) {
|
|
|
|
|
|
nmRepo.save(message.to, message.contentType, title, content, JSON.stringify(notifyMessage), isOnline, delay, function (err, result) {
|
|
if (err) {
|
|
if (err) {
|
|
log.error('Save notify message failed, ', err);
|
|
log.error('Save notify message failed, ', err);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
if (!isOnline) return;
|
|
|
|
|
|
|
|
Doctor.pushToClient(message.to, userStatus.client_id, userStatus.status, userStatus.token, message.contentType,
|
|
|
|
title, content, notifyMessage, userStatus.platform, function (err, result) {
|
|
|
|
if (err != null) {
|
|
|
|
console.log(err);
|
|
|
|
} else {
|
|
|
|
console.log(result);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
if (delay) {
|
|
|
|
Schedule.dateSchedule(delay, function (message, client_id, status, token, title, content, notifyMessage, platform) {
|
|
|
|
Doctor.pushToClient(message.to, client_id, status, token, message.contentType,
|
|
|
|
title, content, notifyMessage, platform, function (err, result) {
|
|
|
|
if (err != null) {
|
|
|
|
log.error(err);
|
|
|
|
} else {
|
|
|
|
log.info(result);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}.bind(null, message, userStatus.client_id, userStatus.status, userStatus.token, title, content, notifyMessage, userStatus.platform));
|
|
|
|
} else if (isOnline) {
|
|
|
|
Doctor.pushToClient(message.to, userStatus.client_id, userStatus.status, userStatus.token, message.contentType,
|
|
|
|
title, content, notifyMessage, userStatus.platform, function (err, result) {
|
|
|
|
if (err != null) {
|
|
|
|
log.error(err);
|
|
|
|
} else {
|
|
|
|
log.info(result);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@ -452,7 +467,7 @@ class Doctor extends BaseModel {
|
|
|
|
|
|
// 清空统计信息
|
|
// 清空统计信息
|
|
statsRepo.clearPrivateChatSummary(userId, peerId, function (err, result) {
|
|
statsRepo.clearPrivateChatSummary(userId, peerId, function (err, result) {
|
|
if (err) console.log(err);
|
|
|
|
|
|
if (err) log.error(err);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
}
|