| 
					
				 | 
			
			
				@ -7,6 +7,8 @@ let log = require("../util/log.js"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let getui = require('getui'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let BaseModel = require('./base.model'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let Schedule = require("./schedule/schedule.js"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let doctorRepo = require('../repository/doctor.repo.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let gmRepo = require('../repository/group.msg.repo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let pmRepo = require('../repository/private.msg.repo'); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -96,7 +98,7 @@ class Doctor extends BaseModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param channel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    static pushMessage(message, channel){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    static pushMessage(message, channel) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        doctorRepo.getUserStatus(message.to, function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                log.error('Lookup notify message receiver failed: ' + message.to); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -110,11 +112,13 @@ class Doctor extends BaseModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            let userStatus = result[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            let isOnline = result.length > 0 && userStatus.is_online === 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            let delay = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 构建通知消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            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 content = message.content; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -122,27 +126,38 @@ class Doctor extends BaseModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                content = '[图片]'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (message.contentType === CONTENT_TYPES.Audio) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                content = '[语音]'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if(message.contentType > 3) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (message.contentType > 3) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    log.error('Save notify message failed, ', err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (err) console.log(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (err) log.error(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 |