|
@ -73,8 +73,11 @@ class WechatClient extends RedisModel {
|
|
|
let pc_patientClient = clientCache.findById("pcpatient_"+targetUserId);
|
|
|
let doctorClient = clientCache.findByIdAndType(message.sender_id,SOCKET_TYPES.DOCTOR);
|
|
|
let pc_doctorClient = clientCache.findByIdAndType("pc_"+message.sender_id,SOCKET_TYPES.PC_DOCTOR);
|
|
|
|
|
|
let pc_patient_system_Client = clientCache.findByIdAndType("pcpatient_system_"+targetUserId,SOCKET_TYPES.PC_PATIENT_SYSTEM);
|
|
|
|
|
|
var count = 0;
|
|
|
if (patientClient || pc_patientClient) {
|
|
|
if (patientClient || pc_patientClient || pc_patient_system_Client) {
|
|
|
|
|
|
if(patientClient){
|
|
|
log.warn("User's wechat endpoint is online, sending via web socket. User id: ", targetUserId);
|
|
@ -86,8 +89,12 @@ class WechatClient extends RedisModel {
|
|
|
WechatClient.sendViaWebSocket(pc_patientClient.socket, message);
|
|
|
}
|
|
|
|
|
|
if(pc_patient_system_Client){
|
|
|
log.warn("User's pc systme endpoint is online, sending via web socket. User id: ", targetUserId);
|
|
|
WechatClient.sendViaWebSocket(pc_patient_system_Client.socket, message);
|
|
|
}
|
|
|
|
|
|
if(doctorClient){
|
|
|
if(doctorClient && (patientClient || pc_patientClient) ){
|
|
|
log.error("doctor sessionid "+doctorClient.sessionId);
|
|
|
|
|
|
if(patientClient && patientClient.sessionId==doctorClient.sessionId){
|
|
@ -356,6 +363,58 @@ class WechatClient extends RedisModel {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 推送MDT,医生外层新消息
|
|
|
* @param doctorId
|
|
|
* @param message
|
|
|
*/
|
|
|
static sendMDTSocketMessageToDoctor(doctorId, message) {
|
|
|
// let doctorMDTClient = clientCache.findByIdAndType("pcim_"+doctorId,SOCKET_TYPES.PCIM_DOCTOR);
|
|
|
let doctorSYSTEMClient = clientCache.findByIdAndType("pc_system_"+doctorId,SOCKET_TYPES.PC_DOCTOR_SYSTEM);
|
|
|
let doctorAPPSYSTEMClient = clientCache.findByIdAndType("doctor_system_"+doctorId,SOCKET_TYPES.DOCTOR_SYSTEM);
|
|
|
|
|
|
//外层
|
|
|
if(!doctorSYSTEMClient){
|
|
|
log.warn("target system doctor is not online!");
|
|
|
}else{
|
|
|
doctorSYSTEMClient.socket.emit('message', {
|
|
|
id: message.id,
|
|
|
session_id: message.session_id,
|
|
|
sender_id: message.sender_id,
|
|
|
sender_name: message.sender_name,
|
|
|
content_type: 1,
|
|
|
content: {"socket_sms_type":4},
|
|
|
timestamp: ObjectUtil.timestampToLong(message.timestamp),
|
|
|
type: message.content_type, // legacy support
|
|
|
name: message.sender_name,
|
|
|
patient_name:message.patient_name,
|
|
|
patient_age:message.patient_age,
|
|
|
patient_sex:message.patient_sex
|
|
|
});
|
|
|
}
|
|
|
|
|
|
if(!doctorAPPSYSTEMClient){
|
|
|
log.warn("target system app doctor is not online!");
|
|
|
}else{
|
|
|
doctorAPPSYSTEMClient.socket.emit('message', {
|
|
|
id: message.id,
|
|
|
session_id: message.session_id,
|
|
|
sender_id: message.sender_id,
|
|
|
sender_name: message.sender_name,
|
|
|
content_type: 1,
|
|
|
content: {"socket_sms_type":4},
|
|
|
timestamp: ObjectUtil.timestampToLong(message.timestamp),
|
|
|
type: message.content_type, // legacy support
|
|
|
name: message.sender_name,
|
|
|
patient_name:message.patient_name,
|
|
|
patient_age:message.patient_age,
|
|
|
patient_sex:message.patient_sex
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
static sendPcImSocket(targetId, message, sessionType) {
|
|
|
if (message.content_type == CONTENT_TYPES.PlainText ||
|
|
|
message.content_type == CONTENT_TYPES.Image ||
|
|
@ -378,9 +437,19 @@ class WechatClient extends RedisModel {
|
|
|
session_type: sessionType,
|
|
|
from: message.sender_id|| '',
|
|
|
data: message.content,
|
|
|
business_type: message.business_type || 1
|
|
|
business_type: message.business_type || 1,
|
|
|
sender_name: message.sender_name,
|
|
|
content_type: message.content_type,
|
|
|
content: message.content,
|
|
|
timestamp: ObjectUtil.timestampToLong(message.timestamp),
|
|
|
type: message.content_type, // legacy support
|
|
|
name: message.sender_name,
|
|
|
patient_name:message.patient_name,
|
|
|
patient_age:message.patient_age,
|
|
|
patient_sex:message.patient_sex
|
|
|
});
|
|
|
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@ -548,6 +617,41 @@ class WechatClient extends RedisModel {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//推送托盘消息
|
|
|
static sendMDTSystemSocketMessage(targetUserId, message) {
|
|
|
|
|
|
//居民外层消息推送
|
|
|
|
|
|
let mdtDcotorClient = clientCache.findByIdAndType("pcim_"+targetUserId,SOCKET_TYPES.PCIM_DOCTOR);
|
|
|
if(!mdtDcotorClient){
|
|
|
log.warn("target mdt doctor is not online!");
|
|
|
}
|
|
|
|
|
|
var mdtDoctorCount = 0;
|
|
|
|
|
|
|
|
|
if(mdtDcotorClient&&message.session_id==mdtDcotorClient.sessionId){
|
|
|
WechatClient.updateParticipantLastFetchTime(mdtDcotorClient.sessionId, targetUserId, ObjectUtil.timestampToLong(message.timestamp));
|
|
|
mdtDcotorClient.socket.emit('message', {
|
|
|
id: message.id,
|
|
|
session_id: message.session_id,
|
|
|
sender_id: message.sender_id,
|
|
|
sender_name: message.sender_name,
|
|
|
content_type: message.content_type,
|
|
|
content: message.content,
|
|
|
timestamp: ObjectUtil.timestampToLong(message.timestamp),
|
|
|
type: message.content_type, // legacy support
|
|
|
name: message.sender_name,
|
|
|
});
|
|
|
}else{
|
|
|
mdtDoctorCount++;
|
|
|
}
|
|
|
|
|
|
if(mdtDoctorCount==2){
|
|
|
log.warn("doctor system is not in the same session or is not online");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
* 发送微信模板消息给居民
|