|
@ -92,6 +92,61 @@ class AppClient extends RedisModel {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
static sendNotice(targetId, message, sessionType,badge,userStatus){
|
|
|
//调用接口推送医生助手微信模板
|
|
|
let param = {
|
|
|
sessionId:message.session_id||'',
|
|
|
sessionType:sessionType,
|
|
|
from:message.sender_id|| '',
|
|
|
content:message.content,
|
|
|
contentType:message.content_type,
|
|
|
businessType:message.businessType || 1,
|
|
|
doctorCode:targetId
|
|
|
}
|
|
|
// let params = 'sessionId='+(message.session_id||'')+'&sessionType='+sessionType+"&from="+(message.sender_id|| '')+'&content='+message.content+'&businessType='+(message.business_type || 1)+'&doctorCode='+targetId;
|
|
|
WlyyAssistantSDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/feldsher/sendDoctorTemplate', param, function (err, res) {
|
|
|
// WlyySDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/feldsher/sendDoctorTemplate?' + params, 'GET', function (err, res) {
|
|
|
if(err){
|
|
|
log.error(err);
|
|
|
}else {
|
|
|
log.info(res);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
if (!userStatus) {
|
|
|
log.warn("User's app status is not found, user id: " + targetId + ", maybe user never login yet or logout?");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
let tipMessage = CONTENT_TYPES.typeToDescription(parseInt(message.content_type), "您有一条新消息") || message.content;
|
|
|
let customData = {
|
|
|
session_id: message.session_id||'',
|
|
|
session_type: sessionType,
|
|
|
from: message.sender_id|| '',
|
|
|
data: message.content,
|
|
|
business_type: message.business_type || 1
|
|
|
};
|
|
|
|
|
|
if (userStatus.platform == PLATFORMS.iOS) {
|
|
|
pusher.pushToSingleViaAPN(tipMessage, customData, message.content_type, userStatus.device_token,badge, function (err, res) {
|
|
|
if (err) {
|
|
|
ModelUtil.logError("Send notification via APN failed:"+userStatus.device_token, err);
|
|
|
} else {
|
|
|
log.info("Send notification via APN succeed: ", JSON.stringify(res));
|
|
|
}
|
|
|
});
|
|
|
} else if (userStatus.platform == PLATFORMS.Android) {
|
|
|
let title = '新消息';
|
|
|
pusher.pushToSingleViaAndroid(title, tipMessage, customData, userStatus.client_id, userStatus.app_in_bg, function (err, res) {
|
|
|
if (err) {
|
|
|
ModelUtil.logError("Send notification via Android failed", err);
|
|
|
} else {
|
|
|
log.info("Send notification via Android succeed: ", JSON.stringify(res));
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 向App端推送消息。指令性消息不推。
|
|
|
*
|
|
@ -112,13 +167,14 @@ class AppClient extends RedisModel {
|
|
|
ModelUtil.logError("Get user app status failed", err);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if(sessionType==SESSION_TYPES.SYSTEM||
|
|
|
sessionType==SESSION_TYPES.MUC||
|
|
|
sessionType==SESSION_TYPES.P2P||
|
|
|
sessionType==SESSION_TYPES.GROUP||
|
|
|
sessionType==SESSION_TYPES.DISCUSSION||
|
|
|
sessionType==SESSION_TYPES.PRESCRIPTION){
|
|
|
var isSend = true;
|
|
|
var session_type = isNaN(Number(sessionType))?sessionType:Number(sessionType);
|
|
|
if(session_type==SESSION_TYPES.SYSTEM||
|
|
|
session_type==SESSION_TYPES.MUC||
|
|
|
session_type==SESSION_TYPES.P2P||
|
|
|
session_type==SESSION_TYPES.GROUP||
|
|
|
session_type==SESSION_TYPES.DISCUSSION||
|
|
|
session_type==SESSION_TYPES.PRESCRIPTION){
|
|
|
//是否发送消息
|
|
|
MessageNoticeSettingRepo.findOne(targetId,'1',function (err,res) {
|
|
|
if(res&&res.length>0){
|
|
@ -127,17 +183,21 @@ class AppClient extends RedisModel {
|
|
|
let family_topic_switch = res[0].family_topic_switch;
|
|
|
if(master_switch==0||im_switch==0){
|
|
|
ModelUtil.logError(targetId+"-关闭im消息,消息id", message.id);
|
|
|
return;
|
|
|
}else if(sessionType==SESSION_TYPES.MUC&&family_topic_switch==0){
|
|
|
}else if(session_type==SESSION_TYPES.MUC&&family_topic_switch==1){
|
|
|
SignFamilyRepo.isHealthDoctor(message.session_id,targetId,function (err,res) {
|
|
|
if(res&&res.length==0){
|
|
|
ModelUtil.logError("全科医生:"+targetId+"-关闭im消息,消息id", message.id);
|
|
|
return;
|
|
|
}else{
|
|
|
AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
|
|
|
}
|
|
|
})
|
|
|
}else{
|
|
|
AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
}else{
|
|
|
AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
|
|
|
}
|
|
|
|
|
|
// let pc_doctorClient = clientCache.findByIdAndType("pc_"+targetId,SOCKET_TYPES.PC_DOCTOR);
|
|
@ -145,61 +205,12 @@ class AppClient extends RedisModel {
|
|
|
// log.warn("User's pc is online, user id: " + targetId + ", we cannot send getui.");
|
|
|
// return;
|
|
|
// }
|
|
|
//调用接口推送医生助手微信模板
|
|
|
let param = {
|
|
|
sessionId:message.session_id||'',
|
|
|
sessionType:sessionType,
|
|
|
from:message.sender_id|| '',
|
|
|
content:message.content,
|
|
|
contentType:message.content_type,
|
|
|
businessType:message.businessType || 1,
|
|
|
doctorCode:targetId
|
|
|
}
|
|
|
// let params = 'sessionId='+(message.session_id||'')+'&sessionType='+sessionType+"&from="+(message.sender_id|| '')+'&content='+message.content+'&businessType='+(message.business_type || 1)+'&doctorCode='+targetId;
|
|
|
WlyyAssistantSDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/feldsher/sendDoctorTemplate', param, function (err, res) {
|
|
|
// WlyySDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/feldsher/sendDoctorTemplate?' + params, 'GET', function (err, res) {
|
|
|
if(err){
|
|
|
log.error(err);
|
|
|
}else {
|
|
|
log.info(res);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
if (!userStatus) {
|
|
|
log.warn("User's app status is not found, user id: " + targetId + ", maybe user never login yet or logout?");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
let tipMessage = CONTENT_TYPES.typeToDescription(parseInt(message.content_type), "您有一条新消息") || message.content;
|
|
|
let customData = {
|
|
|
session_id: message.session_id||'',
|
|
|
session_type: sessionType,
|
|
|
from: message.sender_id|| '',
|
|
|
data: message.content,
|
|
|
business_type: message.business_type || 1
|
|
|
};
|
|
|
|
|
|
if (userStatus.platform == PLATFORMS.iOS) {
|
|
|
pusher.pushToSingleViaAPN(tipMessage, customData, message.content_type, userStatus.device_token,badge, function (err, res) {
|
|
|
if (err) {
|
|
|
ModelUtil.logError("Send notification via APN failed:"+userStatus.device_token, err);
|
|
|
} else {
|
|
|
log.info("Send notification via APN succeed: ", JSON.stringify(res));
|
|
|
}
|
|
|
});
|
|
|
} else if (userStatus.platform == PLATFORMS.Android) {
|
|
|
let title = '新消息';
|
|
|
pusher.pushToSingleViaAndroid(title, tipMessage, customData, userStatus.client_id, userStatus.app_in_bg, function (err, res) {
|
|
|
if (err) {
|
|
|
ModelUtil.logError("Send notification via Android failed", err);
|
|
|
} else {
|
|
|
log.info("Send notification via Android succeed: ", JSON.stringify(res));
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
// Expose class
|