|
@ -5,13 +5,15 @@
|
|
|
|
|
|
let RedisClient = require('../../repository/redis/redis.client');
|
|
|
let RedisModel = require('./../redis.model');
|
|
|
let AppStatusRepo = require('../../repository/mysql/app.status.repo');
|
|
|
let MessageNoticeSettingRepo = require('../../repository/mysql/message.noticeSetting.repo');
|
|
|
let SignFamilyRepo = require('../../repository/mysql/sign.family.repo');
|
|
|
let AppStatusRepo = require('../../repository/oracle/app.status.repo');
|
|
|
let MessageNoticeSettingRepo = require('../../repository/oracle/message.noticeSetting.repo');
|
|
|
let SignFamilyRepo = require('../../repository/oracle/sign.family.repo');
|
|
|
let ModelUtil = require('../../util/model.util');
|
|
|
let clientCache = require('../socket.io/client.cache').clientCache();
|
|
|
let WlyyAssistantSDK = require("../../util/wlyyAssistant.sdk");
|
|
|
let HlwyyAssistantSDK = require("../../util/hlwyyAssistant.sdk");
|
|
|
let WlyySDK = require("../../util/wlyy.sdk");
|
|
|
let DoctorRepo = require('../../repository/oracle/doctor.repo');
|
|
|
|
|
|
let log = require("../../util/log.js");
|
|
|
let pusher = require('../push/pusher');
|
|
@ -23,6 +25,9 @@ const MESSAGE_BUSSINESS_TYPE = require('../../include/commons').MESSAGE_BUSSINES
|
|
|
const REDIS_KEYS = require('../../include/commons').REDIS_KEYS;
|
|
|
const PLATFORMS = require('../../include/commons').PLATFORM;
|
|
|
|
|
|
let configFile = require('../../include/commons').CONFIG_FILE;
|
|
|
let config = require('../../resources/config/' + configFile);
|
|
|
|
|
|
class AppClient extends RedisModel {
|
|
|
constructor() {
|
|
|
super();
|
|
@ -95,58 +100,64 @@ 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;
|
|
|
// 医生助手有自己的模板消息,不需要通过im发送
|
|
|
// 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));
|
|
|
}
|
|
|
let url = config.imClientType.url+"/hlwyy/ims-app-web/#/onlineChat/chatroom?rstitle="+message.sender_name+"%20专家咨询&type=1&sessionId="+message.session_id;
|
|
|
let messageContent = tipMessage;
|
|
|
log.info("发送提醒消息给医生--START")
|
|
|
if("xmijk" == config.imClientType.id){
|
|
|
log.info("发送提醒消息给医生--xmijk")
|
|
|
//区域互联网医院
|
|
|
DoctorRepo.findOne(targetId, function (err, res){
|
|
|
res.forEach(function (doctorObj) {
|
|
|
log.info("doctoridcar:"+doctorObj.idcard)
|
|
|
|
|
|
let params = 'sessionId='+(message.session_id||'')+'&sessionType='+sessionType+"&from="+(message.sender_id|| '')+'&content='+encodeURIComponent(message.content)+'&businessType='+(message.business_type || 1)+
|
|
|
'&doctor_idcard='+doctorObj.idcard+'&patientName='+encodeURIComponent(message.sender_name)+"&url="+url;
|
|
|
//医生助手有自己的模板消息,不需要通过im发送
|
|
|
log.info("params"+params);
|
|
|
// 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', '/im/common/message/sendDoctorTemplateByDoctorIdcard?' + params, 'GET', function (err, res) {
|
|
|
if(err){
|
|
|
log.error(err);
|
|
|
}else {
|
|
|
log.info(res);
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
}else if("zsyy" == config.imClientType.id){
|
|
|
log.info("发送提醒消息给医生--zsyy")
|
|
|
//中山医院
|
|
|
|
|
|
//调用接口推送医生助手微信模板
|
|
|
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 = 'enterpriseId=zsyy&doctor='+targetId+'&content='+encodeURIComponent(messageContent+'[查看详情]('+url+')');
|
|
|
|
|
|
if(message.type ==1 && message.content.indexOf("relation") >0){
|
|
|
log.info("该消息是系统提醒消息,不做推送,:消息内容"+message.content)
|
|
|
}else{
|
|
|
HlwyyAssistantSDK.request("zsyy",tipMessage,targetId,message.content,url,params, function (err, res) {
|
|
|
// 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);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
@ -192,31 +203,33 @@ class AppClient extends RedisModel {
|
|
|
message.business_type == MESSAGE_BUSSINESS_TYPE.D_CT_06||
|
|
|
message.business_type == MESSAGE_BUSSINESS_TYPE.D_CT_07){
|
|
|
//是否发送消息
|
|
|
MessageNoticeSettingRepo.findOne(targetId,'1',function (err,res) {
|
|
|
if(res&&res.length>0){
|
|
|
let master_switch = res[0].master_switch;
|
|
|
let im_switch = res[0].im_switch;
|
|
|
let family_topic_switch = res[0].family_topic_switch;
|
|
|
if(master_switch==0||im_switch==0){
|
|
|
ModelUtil.logError(targetId+"-关闭im消息,消息id", message.id);
|
|
|
}
|
|
|
// 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);
|
|
|
// }else{
|
|
|
// AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
|
|
|
// }
|
|
|
// })
|
|
|
// }
|
|
|
else{
|
|
|
AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
}else{
|
|
|
// MessageNoticeSettingRepo.findOne(targetId,'1',function (err,res) {
|
|
|
// if(res&&res.length>0){
|
|
|
// let master_switch = res[0].master_switch;
|
|
|
// let im_switch = res[0].im_switch;
|
|
|
// let family_topic_switch = res[0].family_topic_switch;
|
|
|
// if(master_switch==0||im_switch==0){
|
|
|
// ModelUtil.logError(targetId+"-关闭im消息,消息id", message.id);
|
|
|
// }
|
|
|
// // 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);
|
|
|
// // }else{
|
|
|
// // AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
|
|
|
// // }
|
|
|
// // })
|
|
|
// // }
|
|
|
// else{
|
|
|
// AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
|
|
|
// }
|
|
|
// }
|
|
|
// });
|
|
|
AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
|
|
|
}
|
|
|
// else{
|
|
|
// AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
|
|
|
// }
|
|
|
|
|
|
});
|
|
|
}
|