| 
					
				 | 
			
			
				@ -25,68 +25,69 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        super(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    getTopics(user,status,page,pagesize,sessionType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    getTopics(user, status, page, pagesize, sessionType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let self = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let session = new Sessions(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        page = (page - 1 < 0 ? 0 : page - 1) * pagesize; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!pagesize)pagesize =10; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!pagesize) pagesize = 10; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        pagesize = parseInt(pagesize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!sessionType) sessionType = SESSION_TYPES.MUC; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SessionRepo.findAllByType(user,sessionType,function(err,res){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ModelUtil.emitError(self.eventEmitter, "获取列表失败"+err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else if(res&&res.length==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!sessionType) sessionType = SESSION_TYPES.MUC; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SessionRepo.findAllByType(user, sessionType, function (err, res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ModelUtil.emitError(self.eventEmitter, "获取列表失败" + err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else if (res && res.length == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ModelUtil.emitOK(self.eventEmitter, []); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            var sessionIds=[]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(var j in res){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            var sessionIds = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (var j in res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sessionIds.push(res[j].id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            TopicsRepo.findAllBySessionIdsAndStatus(sessionIds,status,page,pagesize,function(err,res){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitError(self.eventEmitter, "获取列表失败"+err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            TopicsRepo.findAllBySessionIdsAndStatus(sessionIds, status, page, pagesize, function (err, res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitError(self.eventEmitter, "获取列表失败" + err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                else if(res&&res.length==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                else if (res && res.length == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitOK(self.eventEmitter, []); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    for(var j = 0;j<res.length;j++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        callAmount(j,res,res[j]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    for (var j = 0; j < res.length; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        callAmount(j, res, res[j]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                function callAmount(i,res,r){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    session.getSessionUnreadMessageCount(res[i].session_id,user,function(err,msgcount){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            log.error("getSessionUnreadMessageCount is error:"+err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            ModelUtil.emitError(self.eventEmitter, "获取未读消息失败!"+err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            callGetImg(i,res,r,msgcount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                function callAmount(i, res, r) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    session.getSessionUnreadMessageCount(res[i].session_id, user, function (err, msgcount) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            log.error("getSessionUnreadMessageCount is error:" + err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            ModelUtil.emitError(self.eventEmitter, "获取未读消息失败!" + err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            callGetImg(i, res, r, msgcount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                var result =[]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                function callGetImg(i,res,r,msgcount){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ParticipantRepo.findAll(res[i].session_id,function(err,p){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                              log.error("获取头像失败:"+err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            r.create_time =   r.create_time.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            for(var j in p){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                if(p[j].is_patient){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                var result = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                function callGetImg(i, res, r, msgcount) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ParticipantRepo.findAll(res[i].session_id, function (err, p) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            log.error("获取头像失败:" + err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            r.create_time = r.create_time.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            for (var j in p) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                if (p[j].is_patient) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    r.avatar = p[j].avatar; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    r.patient = p[j].id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    r.patient_name = p[j].name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    r.sex = p[j].sex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    r.birthdate = p[j].birthdate.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    if(r.status!=TOPIC_STATUS.ENDED){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    if (r.status != TOPIC_STATUS.ENDED) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        r.msg_count = msgcount; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            result.push(r); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            if(result.length==res.length){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            if (result.length == res.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                ModelUtil.emitOK(self.eventEmitter, res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -99,28 +100,34 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 根据topicId获取对应的消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param topicId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param user 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param startMsgId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endMsgId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param pagesize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    getTopicMessages(topicId,user,startMsgId,endMsgId,page,pagesize) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    getTopicMessages(topicId, user, startMsgId, endMsgId, page, pagesize) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let self = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        TopicsRepo.findAllByTopicId(topicId,function(err,res){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(err||res.length==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ModelUtil.emitOK(self.eventEmitter, {status:-1,message:"找不到对应的会话记录!"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        TopicsRepo.findAllByTopicId(topicId, function (err, res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (err || res.length == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ModelUtil.emitOK(self.eventEmitter, {status: -1, message: "找不到对应的会话记录!"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            let sessions = new Sessions(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sessions.getMessages(res[0].session_id,user,startMsgId,endMsgId,page,pagesize,0,function(err,messages){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitOK(self.eventEmitter, {status:-1,message:err}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if(messages&&messages.length>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        ParticipantRepo.findAll(res[0].session_id,function (err,users) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                ModelUtil.emitOK(self.eventEmitter, {status:-1,message:err}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                ModelUtil.emitOK(self.eventEmitter, {status:200,data:{"list":messages,"users":users}}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sessions.getMessages(res[0].session_id, user, startMsgId, endMsgId, page, pagesize, 0, function (err, messages) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitOK(self.eventEmitter, {status: -1, message: err}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (messages && messages.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        ParticipantRepo.findAll(res[0].session_id, function (err, users) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                ModelUtil.emitOK(self.eventEmitter, {status: -1, message: err}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                ModelUtil.emitOK(self.eventEmitter, {status: 200, data: {"list": messages, "users": users}}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        ModelUtil.emitOK(self.eventEmitter, {status:200,data:[]}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        ModelUtil.emitOK(self.eventEmitter, {status: 200, data: []}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -137,14 +144,14 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param users 发起议题的患者,格式:{"userId1:role", "userId2:role"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param messages 发送的消息对象,格式:{description:"",title:"",img:"image1,image2",sender_id:"",sender_name:""},多个图片用逗号隔开 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    createTopic(topicName, topicId, sessionId, users, messages,sessionType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    createTopic(topicName, topicId, sessionId, users, messages, sessionType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let self = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!sessionId&&sessionType==SESSION_TYPES.MUC) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ModelUtil.emitOK(self.eventEmitter, {status:-1,message:"会话ID为空,请先生成会话ID"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!sessionId && sessionType == SESSION_TYPES.MUC) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ModelUtil.emitOK(self.eventEmitter, {status: -1, message: "会话ID为空,请先生成会话ID"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!topicId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ModelUtil.emitOK(self.eventEmitter, {status:-1,message:"议题ID为空,请先生成议题ID"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!topicId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ModelUtil.emitOK(self.eventEmitter, {status: -1, message: "议题ID为空,请先生成议题ID"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        var pars = []; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -155,18 +162,18 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let date = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sessions.createSession(sessionId, messages.sender_name, sessionType, pars, function (err, res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sessionId = res.id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            self.saveTopicToRedis(topicName,topicId,sessionId,messages,date,function(err,res){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitOK(self.eventEmitter,{status:-1,message:"议题创建失败!"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            self.saveTopicToRedis(topicName, topicId, sessionId, messages, date, function (err, res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitOK(self.eventEmitter, {status: -1, message: "议题创建失败!"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //返回给前端 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ModelUtil.emitOK(self.eventEmitter,{status:200,message:"议题创建成功!",start_msg_id:res}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ModelUtil.emitOK(self.eventEmitter, {status: 200, message: "议题创建成功!", start_msg_id: res}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //执行数据库操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                self.saveTopicToMySQL(topicName,topicId,sessionId,res,date,messages.description,TOPIC_STATUS.NEW,function(err,res){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        log.info("save topic to mysql is error : "+err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                self.saveTopicToMySQL(topicName, topicId, sessionId, res, date, messages.description, TOPIC_STATUS.NEW, function (err, res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        ModelUtil.logError("Save topic to mysql failed", err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -174,7 +181,7 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    saveTopicToRedis(topicName, topicId, sessionId, messages,date,handler){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    saveTopicToRedis(topicName, topicId, sessionId, messages, date, handler) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let topics_key = RedisModel.makeRedisKey(REDIS_KEYS.Topics, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let topic_key = RedisModel.makeRedisKey(REDIS_KEYS.Topic, topicId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let sessions = new Sessions(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -182,17 +189,17 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //step1:创建topic到redis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        redis.zaddAsync(topics_key, date.getTime(), topicId).then(function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            redis.hmsetAsync(topic_key, "name", topicName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "session_id", sessionId,"create_time", date.getTime(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "description", messages.description,"status", TOPIC_STATUS.NEW, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "session_id", sessionId, "create_time", date.getTime(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "description", messages.description, "status", TOPIC_STATUS.NEW, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "end_time", "", "end_by", "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ).then(function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    sendBeginMsg(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }).catch(function(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                handler(err,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sendBeginMsg(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }).catch(function (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                handler(err, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }).catch(function(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            handler(err,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }).catch(function (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            handler(err, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -202,14 +209,14 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            msg.sender_id = messages.sender_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            msg.sender_name = messages.sender_name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            msg.content_type = 10; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            msg.content = messages.sender_name+"发起了咨询"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            msg.content = messages.sender_name + "发起了咨询"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            msg.timestamp = date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sessions.saveMessageByTopic(msg, sessionId, function (err, msgId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    handler(err,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    handler(err, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    sendQuesionMsg(msgId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    handler(null,msgId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    handler(null, msgId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -226,13 +233,14 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (messages.img) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    sendQuesionImg(startMsgId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    log.info("send create message error "+msg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    log.info("send create message error " + msg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //step4:发送求助内容的图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        function sendQuesionImg(startMsgId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        function sendQuesionImg(startMsgId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            let imgs = messages.img.split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (var j in imgs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                let msgimg = {}; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -242,8 +250,8 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                msgimg.content = imgs[j]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                msgimg.timestamp = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sessions.saveMessageByTopic(msgimg, sessionId, function (err, msgId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        log.info("send create img error "+imgs[j]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        log.info("send create img error " + imgs[j]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -251,8 +259,8 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    saveTopicToMySQL(topicName, topicId, sessionId, messageId, date, description,status,handler) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        TopicsRepo.saveTopic(topicName, topicId, sessionId, messageId, date, description,status,handler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    saveTopicToMySQL(topicName, topicId, sessionId, messageId, date, description, status, handler) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        TopicsRepo.saveTopic(topicName, topicId, sessionId, messageId, date, description, status, handler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -276,7 +284,7 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                handler != null ? handler(err, res) : ModelUtil.emitError(self.eventEmitter, err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (null == res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    handler != null ? handler(err, res) : ModelUtil.emitOK(self.eventEmitter,{}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    handler != null ? handler(err, res) : ModelUtil.emitOK(self.eventEmitter, {}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    let ended = res[0].status == TOPIC_STATUS.ENDED; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    handler != null ? handler(err, res) : ModelUtil.emitOK(self.eventEmitter, res[0]); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -316,17 +324,17 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            let sessions = new Sessions(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sessions.saveMessageByTopic(msg, sessionId, function (err, msgId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitOK(self.eventEmitter,{status:-1,"message": err} ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitOK(self.eventEmitter, {status: -1, "message": err}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitOK(self.eventEmitter, {status:200,"id": msgId,"message":"结束成功!"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    TopicsRepo.endTopic(topicId, endUser, msg.date, msgId,TOPIC_STATUS.ENDED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitOK(self.eventEmitter, {status: 200, "id": msgId, "message": "结束成功!"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    TopicsRepo.endTopic(topicId, endUser, msg.date, msgId, TOPIC_STATUS.ENDED); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    updateTopic(topicId, valueJson) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let  self = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let self = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let topickey = RedisModel.makeRedisKey(REDIS_KEYS.Topic, topicId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        var dataArray = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (var j in valueJson) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -335,10 +343,10 @@ class Topics extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        redis.hmsetAsync(topickey, dataArray).then(function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            TopicsRepo.updateTopics(topicId, valueJson,function (err,res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(!err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            TopicsRepo.updateTopics(topicId, valueJson, function (err, res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (!err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitOK(self.eventEmitter, {"status": 200}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ModelUtil.emitOK(self.eventEmitter, {"status": -1}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }); 
			 |