| 
					
				 | 
			
			
				@ -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 
			 |