فهرست منبع

咨询回复修改

yeshijie 8 سال پیش
والد
کامیت
e583faf7db
3فایلهای تغییر یافته به همراه33 افزوده شده و 20 حذف شده
  1. 4 1
      src/server/include/commons.js
  2. 6 6
      src/server/models/sessions/sessions.js
  3. 23 13
      src/server/models/sessions/topics.js

+ 4 - 1
src/server/include/commons.js

@ -31,7 +31,8 @@ const SESSION_TYPES = {
    MUC: 1,             // MUC会话
    P2P: 2,             // P2P
    GROUP: 3,           // 固定组
    DISCUSSION: 4       // 临时讨论组
    DISCUSSION: 4,       // 临时讨论组
    PRESCRIPTION: 5       // 续方
};
exports.SESSION_TYPES = SESSION_TYPES;
@ -217,6 +218,8 @@ const DB_TABLES = {
            return DB_TABLES.GroupMessages;
        else if (sessionType == SESSION_TYPES.DISCUSSION)
            return DB_TABLES.DiscussionMessages;
        else if (sessionType == SESSION_TYPES.PRESCRIPTION)
            return DB_TABLES.MucMessages;
        else throw {message: "Unknown session type"};
    }
};

+ 6 - 6
src/server/models/sessions/sessions.js

@ -125,7 +125,7 @@ class Sessions extends RedisModel {
        }
        function callBusinessType(sessionId) {
            if(type == SESSION_TYPES.MUC){
            if(type == SESSION_TYPES.MUC||type == SESSION_TYPES.PRESCRIPTION){
                callCreate(sessionId, SESSION_BUSINESS_TYPE.PATIENT);
            }else {
                ParticipantRepo.getBusinessType(participantIdArray, function (err, businessType) {
@ -138,7 +138,7 @@ class Sessions extends RedisModel {
            let createDate = new Date();
            Participants.saveParticipantsToRedis(sessionId, participantArray, createDate, function (res) {
                let sessionKey = RedisModel.makeRedisKey(REDIS_KEYS.Session, sessionId);
                if (type == SESSION_TYPES.MUC) {
                if (type == SESSION_TYPES.MUC||type == SESSION_TYPES.PRESCRIPTION) {
                    businessType = 2;
                }
                let session = {
@ -192,7 +192,7 @@ class Sessions extends RedisModel {
        //流程2-判断session的业务类型;
        function callBusinessType() {
            if(type==SESSION_TYPES.MUC){
            if(type==SESSION_TYPES.MUC||type==SESSION_TYPES.PRESCRIPTION){
                callCreateSession(SESSION_BUSINESS_TYPE.PATIENT);
            }else{
                ParticipantRepo.getBusinessType(participantIdArray, function (err, businessType) {
@ -824,7 +824,7 @@ class Sessions extends RedisModel {
                                                if(users[j]==userId)continue;
                                                 WechatClient.sendAllRead(users[j],sessionId);
                                            }
                                        }else if(session.type == SESSION_TYPES.MUC){
                                        }else if(session.type == SESSION_TYPES.MUC || session.type == SESSION_TYPES.PRESCRIPTION){
                                            for(var j in users){
                                                if(users[j]==userId)continue;
                                                WechatClient.sendMucAllRead(users[j],userId,sessionId);
@ -857,7 +857,7 @@ class Sessions extends RedisModel {
                                                //通知对方自己已经读取数据
                                                WechatClient.sendAllRead(users[j],sessionId);
                                            }
                                        }else if(session.type == SESSION_TYPES.MUC){
                                        }else if(session.type == SESSION_TYPES.MUC || session.type == SESSION_TYPES.PRESCRIPTION){
                                            for(var j in users){
                                                if(users[j]==userId)continue;
                                                //如果是患者拉取数据告诉在线的医生患者已经读取数据
@ -1076,7 +1076,7 @@ class Sessions extends RedisModel {
                        ModelUtil.emitError(self.eventEmitter, "Session " + sessionId + " is not found.");
                        return;
                    }
                    if(sessionType == SESSION_TYPES.MUC){
                    if(sessionType == SESSION_TYPES.MUC || sessionType == SESSION_TYPES.PRESCRIPTION){
                        if(message.content_type == CONTENT_TYPES.PlainText ||
                           message.content_type == CONTENT_TYPES.Image ||
                           message.content_type == CONTENT_TYPES.Audio||

+ 23 - 13
src/server/models/sessions/topics.js

@ -6,6 +6,7 @@
let RedisClient = require('../../repository/redis/redis.client.js');
let TopicsRepo = require('../../repository/mysql/topics.repo');
let SessionRepo = require('../../repository/mysql/session.repo');
let TopicRepo = require('../../repository/mysql/topics.repo');
let ParticipantRepo = require('../../repository/mysql/participant.repo');
let RedisModel = require('./../redis.model.js');
let ModelUtil = require('../../util/model.util');
@ -225,7 +226,7 @@ class Topics extends RedisModel {
     */
    createTopic(topicName, topicId, sessionId, users, messages, sessionType) {
        let self = this;
        if (!sessionId && sessionType == SESSION_TYPES.MUC) {
        if (!sessionId && (sessionType == SESSION_TYPES.MUC|| sessionType == SESSION_TYPES.PRESCRIPTION)) {
            ModelUtil.emitOK(self.eventEmitter, {status: -1, message: "会话ID为空,请先生成会话ID"});
            return;
        }
@ -241,21 +242,30 @@ class Topics extends RedisModel {
        sessions.createSession(sessionId, messages.sender_name, sessionType, pars, function (err, session) {
            sessionId = session.id;
            let datetime  = session.create_date;
            self.saveTopicToRedis(topicName, topicId, sessionId, messages, datetime, function (err, startMsgId) {
                if (err) {
                    ModelUtil.emitOK(self.eventEmitter, {status: -1, message: "议题创建失败!"});
            //新增判断是否有未结束的咨询,用户网络差,会多次点击造成同时存在多个咨询
            TopicRepo.findLastBySessionId(sessionId,function(err,res){
                if(res&&res.length>0&&res[0].status!=10){
                    ModelUtil.emitOK(self.eventEmitter, {status: -1, message: "还有咨询未结束,不允许再次提交咨询!"});
                    return;
                }else{
                    self.saveTopicToRedis(topicName, topicId, sessionId, messages, datetime, function (err, startMsgId) {
                        if (err) {
                            ModelUtil.emitOK(self.eventEmitter, {status: -1, message: "议题创建失败!"});
                            return;
                        }
                        //返回给前端
                        ModelUtil.emitOK(self.eventEmitter, {status: 200, message: "议题创建成功!", start_msg_id: startMsgId});
                        sessions.updateSessionStatus(sessionId,SESSION_STATUS.PROCEEDINGS,function(err,res){});
                        //执行数据库操作
                        self.saveTopicToMySQL(topicName, topicId, sessionId, startMsgId,  new Date(datetime), messages.description, TOPIC_STATUS.NEW, messages.agent, function (err, res) {
                            if (err) {
                                ModelUtil.logError("Save topic to mysql failed", err);
                            }
                        })
                    })
                }
                //返回给前端
                ModelUtil.emitOK(self.eventEmitter, {status: 200, message: "议题创建成功!", start_msg_id: startMsgId});
                sessions.updateSessionStatus(sessionId,SESSION_STATUS.PROCEEDINGS,function(err,res){});
                //执行数据库操作
                self.saveTopicToMySQL(topicName, topicId, sessionId, startMsgId,  new Date(datetime), messages.description, TOPIC_STATUS.NEW, messages.agent, function (err, res) {
                    if (err) {
                        ModelUtil.logError("Save topic to mysql failed", err);
                    }
                })
            })
        });
    }