|  | @ -7,6 +7,7 @@ let RedisClient = require('../../repository/redis/redis.client.js');
 | 
	
		
			
				|  |  | let RedisModel = require('./../redis.model.js');
 | 
	
		
			
				|  |  | let ModelUtil = require('../../util/model.util');
 | 
	
		
			
				|  |  | let Messages = require('../messages/messages');
 | 
	
		
			
				|  |  | let Users = require('../user/users');
 | 
	
		
			
				|  |  | let Participants = require('./Participants');
 | 
	
		
			
				|  |  | let SessionRepo = require('../../repository/mysql/session.repo');
 | 
	
		
			
				|  |  | let ParticipantRepo = require('../../repository/mysql/participant.repo');
 | 
	
	
		
			
				|  | @ -22,6 +23,7 @@ let MessageRepo = require('../../repository/mysql/message.repo');
 | 
	
		
			
				|  |  | const REDIS_KEYS = require('../../include/commons').REDIS_KEYS;
 | 
	
		
			
				|  |  | const SESSION_TYPES = require('../../include/commons').SESSION_TYPES;
 | 
	
		
			
				|  |  | const STICKY_SESSION_BASE_SCORE = require('../../include/commons').STICKY_SESSION_BASE_SCORE;
 | 
	
		
			
				|  |  | const  SESSION_BUSINESS_TYPE = require('../../include/commons').SESSION_BUSINESS_TYPE;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | class Sessions extends RedisModel {
 | 
	
		
			
				|  |  |     constructor() {
 | 
	
	
		
			
				|  | @ -54,13 +56,31 @@ class Sessions extends RedisModel {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             ParticipantRepo.findSessionIdByParticipantIds(participantIdArray[0], participantIdArray[1], function (err, res) {
 | 
	
		
			
				|  |  |                 sessionId = res;
 | 
	
		
			
				|  |  |                 callCreate(sessionId);
 | 
	
		
			
				|  |  |                 callBusinessType(sessionId);
 | 
	
		
			
				|  |  |             });
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             callCreate(sessionId);
 | 
	
		
			
				|  |  |             callBusinessType(sessionId);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         function callCreate(sessionId) {
 | 
	
		
			
				|  |  |         function callBusinessType(sessionId) {
 | 
	
		
			
				|  |  |             var businessType = SESSION_BUSINESS_TYPE.DOCTOR;
 | 
	
		
			
				|  |  |             for(var j = 0 ;j<participantArray.length;j++)
 | 
	
		
			
				|  |  |                 callIsPatient(j,businessType,participantArray.length);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         function callIsPatient(j,businessType,length){
 | 
	
		
			
				|  |  |             Users.isPatientId(participantArray[j], function (isPatient) {
 | 
	
		
			
				|  |  |                 if (isPatient) {
 | 
	
		
			
				|  |  |                     businessType = SESSION_BUSINESS_TYPE.PATIENT
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 if (length-1 == j||businessType==SESSION_BUSINESS_TYPE.PATIENT) {
 | 
	
		
			
				|  |  |                     callCreate(sessionId, businessType);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             })
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         function callCreate(sessionId,businessType) {
 | 
	
		
			
				|  |  |             SessionRepo.findOne(sessionId, function (err, res) {
 | 
	
		
			
				|  |  |                 if (res.length > 0) {
 | 
	
		
			
				|  |  |                     let session = res[0];
 | 
	
	
		
			
				|  | @ -68,6 +88,7 @@ class Sessions extends RedisModel {
 | 
	
		
			
				|  |  |                         id: session.id,
 | 
	
		
			
				|  |  |                         name: session.name,
 | 
	
		
			
				|  |  |                         type: session.type,
 | 
	
		
			
				|  |  |                         business_type:session.business_type||businessType,
 | 
	
		
			
				|  |  |                         create_date: session.create_date
 | 
	
		
			
				|  |  |                     });
 | 
	
		
			
				|  |  |                     return;
 | 
	
	
		
			
				|  | @ -77,7 +98,7 @@ class Sessions extends RedisModel {
 | 
	
		
			
				|  |  |                 let sessionKey = RedisModel.makeRedisKey(REDIS_KEYS.Session, sessionId);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 // 保存会话及成员至MySQL中
 | 
	
		
			
				|  |  |                 self.saveSessionToMysql(sessionId, name, type, createDate, function (err, res) {
 | 
	
		
			
				|  |  |                 self.saveSessionToMysql(sessionId, name, type, createDate,businessType, function (err, res) {
 | 
	
		
			
				|  |  |                     Participants.saveParticipantsToMysql(sessionId, participantArray, function (err, res) {
 | 
	
		
			
				|  |  |                         if (err) {
 | 
	
		
			
				|  |  |                             ModelUtil.emitError(self.eventEmitter, err.message);
 | 
	
	
		
			
				|  | @ -116,8 +137,8 @@ class Sessions extends RedisModel {
 | 
	
		
			
				|  |  |      * @param createDate
 | 
	
		
			
				|  |  |      * @param handler
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     saveSessionToMysql(sessionId, name, type, createDate, handler) {
 | 
	
		
			
				|  |  |         SessionRepo.saveSession(sessionId, name, type, createDate, handler);
 | 
	
		
			
				|  |  |     saveSessionToMysql(sessionId, name, type, createDate,businessType, handler) {
 | 
	
		
			
				|  |  |         SessionRepo.saveSession(sessionId, name, type, createDate,businessType, handler);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
	
		
			
				|  | @ -219,6 +240,8 @@ class Sessions extends RedisModel {
 | 
	
		
			
				|  |  |      * @param userId 拉取消息的人
 | 
	
		
			
				|  |  |      * @param page 第几页
 | 
	
		
			
				|  |  |      * @param pagesize 分页数量
 | 
	
		
			
				|  |  |      * @param start_msg_id 消息会话最新的一条消息的ID
 | 
	
		
			
				|  |  |      * @param end_msg_id 消息会话刚开始的消息ID
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     getMessages(sessionId, user, start_msg_id, end_msg_id, page, pagesize) {
 | 
	
		
			
				|  |  |         let self = this;
 | 
	
	
		
			
				|  | @ -236,7 +259,7 @@ class Sessions extends RedisModel {
 | 
	
		
			
				|  |  |                         return;
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     end_msg_id = res[0];
 | 
	
		
			
				|  |  |                     self.getMessagesByPage(sessionId, user, start_msg_id, end_msg_id, page, pagesize, function (err, res) {
 | 
	
		
			
				|  |  |                     self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize, function (err, res) {
 | 
	
		
			
				|  |  |                         if (err) {
 | 
	
		
			
				|  |  |                             logger.error("getMessagesByPage error" + err);
 | 
	
		
			
				|  |  |                             ModelUtil.emitError(self.eventEmitter, err, err);
 | 
	
	
		
			
				|  | @ -253,7 +276,7 @@ class Sessions extends RedisModel {
 | 
	
		
			
				|  |  |                     return;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 start_msg_id = res[0];
 | 
	
		
			
				|  |  |                 self.getMessagesByPage(sessionId, user, start_msg_id, end_msg_id, page, pagesize, function (err, res) {
 | 
	
		
			
				|  |  |                 self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize, function (err, res) {
 | 
	
		
			
				|  |  |                     if (err) {
 | 
	
		
			
				|  |  |                         logger.error("getMessagesByPage error" + err);
 | 
	
		
			
				|  |  |                         ModelUtil.emitError(self.eventEmitter, err, err);
 | 
	
	
		
			
				|  | @ -279,7 +302,7 @@ class Sessions extends RedisModel {
 | 
	
		
			
				|  |  |                 })
 | 
	
		
			
				|  |  |             })
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             self.getMessagesByPage(sessionId, user, start_msg_id, end_msg_id, page, pagesize, function (err, res) {
 | 
	
		
			
				|  |  |             self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize, function (err, res) {
 | 
	
		
			
				|  |  |                 if (err) {
 | 
	
		
			
				|  |  |                     logger.error("getMessagesByPage error" + err);
 | 
	
		
			
				|  |  |                     ModelUtil.emitError(self.eventEmitter, err, err);
 | 
	
	
		
			
				|  | @ -612,6 +635,7 @@ class Sessions extends RedisModel {
 | 
	
		
			
				|  |  |         redis.zaddAsync(participantsKey, score, userId)
 | 
	
		
			
				|  |  |             .then(function (res) {
 | 
	
		
			
				|  |  |                 logger.info("update participant last fetch time success.");
 | 
	
		
			
				|  |  |                 ParticipantRepo.updateLastTime(new Date(score),sessionId,userId);
 | 
	
		
			
				|  |  |             })
 | 
	
		
			
				|  |  |             .catch(function (err) {
 | 
	
		
			
				|  |  |                 logger.error("Update participant last fetch time error: ", err);
 |