Просмотр исходного кода

增加议题保存出错日志

Sand 8 лет назад
Родитель
Сommit
3fce67d981

+ 34 - 34
src/server/endpoints/v2/application.endpoint.js

@ -24,48 +24,48 @@ const APIv2 = require('../../include/endpoints').APIv2;
 */
router.get(APIv2.Application.BadgeNo, function (req, response) {
    let userId = req.query.user_id;
        ImDb.execQuery({
            "sql": "SELECT imei,token from wlyy.wlyy_token WHERE user=?",
            "args": [userId],
            "handler": function (err, result) {
                if (err || result.length == 0) {
                    return;
                }
    ImDb.execQuery({
        "sql": "SELECT imei,token from wlyy.wlyy_token WHERE user=?",
        "args": [userId],
        "handler": function (err, result) {
            if (err || result.length == 0) {
                return;
            }
                let options = {
                    hostname: config.wlyyServerConfig.host,
                    port: config.wlyyServerConfig.port,
                    path: '/wlyy/doctor/message/messages',
                    method: 'POST',
                    headers: {
                        'userAgent': '{"token":"' + result[0].token + '","uid":"' + userId + '","imei":"' + result[0].imei + '"}'
                    }
                };
            let options = {
                hostname: config.wlyyServerConfig.host,
                port: config.wlyyServerConfig.port,
                path: '/wlyy/doctor/message/messages',
                method: 'POST',
                headers: {
                    'userAgent': '{"token":"' + result[0].token + '","uid":"' + userId + '","imei":"' + result[0].imei + '"}'
                }
            };
                let req = http.request(options, function (res) {
                    log.info('家庭医生平台->开始请求: http://', options.hostname + ":" + options.port + options.path);
            let req = http.request(options, function (res) {
                log.info('家庭医生平台->开始请求: http://', options.hostname + ":" + options.port + options.path);
                    res.setEncoding('utf8');
                    res.on('data', function (chunk) {
                        log.info('家庭医生平台->请求成功: ', chunk);
                res.setEncoding('utf8');
                res.on('data', function (chunk) {
                    log.info('家庭医生平台->请求成功:', chunk);
                        let count = 0;
                        if(chunk.status==200){
                            let data =JSON.parse(chunk).data;
                            count = JSON.parse(data.imMsgCount).count+data.system.amount+data.healthIndex.amount+data.sign.amount;
                        }
                    let count = 0;
                    if (chunk.status == 200) {
                        let data = JSON.parse(chunk).data;
                        count = JSON.parse(data.imMsgCount).count + data.system.amount + data.healthIndex.amount + data.sign.amount;
                    }
                        response.status(200).send({"count":count});
                    });
                    response.status(200).send({"count": count});
                });
            });
                req.on('error', function (e) {
                    log.error('家庭医生平台->请求失败: ', e.message);
                });
            req.on('error', function (e) {
                log.error('家庭医生平台->请求失败: ', e.message);
            });
                req.end();
            }
        });
            req.end();
        }
    });
});
module.exports = router;

+ 75 - 71
src/server/models/sessions/sessions.js

@ -356,76 +356,80 @@ class Sessions extends RedisModel {
            // 遍历会话
            function (sessionIds) {
                let sessionList = [];
                let functionList =[];
                for(var j = 0 ;j<sessionIds.length;j++){
                    let fun = function(index,callback){
                            if(!callback) {callback =index,index=0};
                            let sessionId = sessionIds[index]
                            let sessionKey = RedisModel.makeRedisKey(REDIS_KEYS.Session, sessionId);
                            let participantsRoleKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipantsRole, sessionId);
                            let sessionParticipantsKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipants, sessionId);
                            let participantsKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipants,sessionId);
                            redis.multi()
                                .hgetall(sessionKey)                       // 会话实体
                                .hget(participantsRoleKey, userId)         // 用户在此会话中的角色
                                .zscore(sessionParticipantsKey, userId)    // 用户在此会话中最后一次获取未读消息的时间
                                .zrange(participantsKey,0,-1)
                                .execAsync()
                                .then(function (res) {
                                    let session = res[0];
                                    let role = res[1];
                                    let lastFetchTime = res[2];
                                    let users = res[3];
                                    let sessionName="";
                                    let otheruserId ="";
                                    if(session.type==SESSION_TYPES.P2P){
                                        for(var j in users){
                                            if(users[j]!=userId){
                                                otheruserId = users[j];
                                            }
                let functionList = [];
                for (var j = 0; j < sessionIds.length; j++) {
                    let fun = function (index, callback) {
                        if (!callback) {
                            callback = index, index = 0
                        }
                        ;
                        let sessionId = sessionIds[index]
                        let sessionKey = RedisModel.makeRedisKey(REDIS_KEYS.Session, sessionId);
                        let participantsRoleKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipantsRole, sessionId);
                        let sessionParticipantsKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipants, sessionId);
                        let participantsKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipants, sessionId);
                        redis.multi()
                            .hgetall(sessionKey)                       // 会话实体
                            .hget(participantsRoleKey, userId)         // 用户在此会话中的角色
                            .zscore(sessionParticipantsKey, userId)    // 用户在此会话中最后一次获取未读消息的时间
                            .zrange(participantsKey, 0, -1)
                            .execAsync()
                            .then(function (res) {
                                let session = res[0];
                                let role = res[1];
                                let lastFetchTime = res[2];
                                let users = res[3];
                                let sessionName = "";
                                let otheruserId = "";
                                if (session.type == SESSION_TYPES.P2P) {
                                    for (var j in users) {
                                        if (users[j] != userId) {
                                            otheruserId = users[j];
                                        }
                                    }
                                    if(!role)role =0;
                                    if(!lastFetchTime)lastFetchTime=new Date().getTime();
                                    // 计算未读消息数
                                    let messagesByTimestampKey = RedisModel.makeRedisKey(REDIS_KEYS.MessagesByTimestamp, sessionId);
                                    redis.zcountAsync(messagesByTimestampKey, lastFetchTime, new Date().getTime())
                                        .then(function (count) {
                                            if(!otheruserId)otheruserId=userId;
                                            ParticipantRepo.findNameById(otheruserId, function (err, res) {
                                                if((res&&res.length==0)||session.type!=SESSION_TYPES.P2P){
                                                    sessionName = session.name;
                                                }else{
                                                    sessionName = res[0].name;
                                                }
                                                sessionList.push({
                                                    id: sessionId,
                                                    name: sessionName,
                                                    create_date: session.create_date,
                                                    last_content_type: session.last_content_type,
                                                    last_content: session.last_content,
                                                    sender_id: session.sender_id,
                                                    type: session.type,
                                                    sender_name: session.sender_name,
                                                    unread_count: count,
                                                    business_type: session.business_type,
                                                    my_role: role
                                                });
                                                index=(parseInt(index)+1);
                                                if(index==sessionIds.length){
                                                    ModelUtil.emitOK(self.eventEmitter, sessionList);
                                                }else{
                                                    callback(null,index);
                                                }
                                            })
                                }
                                if (!role) role = 0;
                                if (!lastFetchTime) lastFetchTime = new Date().getTime();
                                // 计算未读消息数
                                let messagesByTimestampKey = RedisModel.makeRedisKey(REDIS_KEYS.MessagesByTimestamp, sessionId);
                                redis.zcountAsync(messagesByTimestampKey, lastFetchTime, new Date().getTime())
                                    .then(function (count) {
                                        if (!otheruserId) otheruserId = userId;
                                        ParticipantRepo.findNameById(otheruserId, function (err, res) {
                                            if ((res && res.length == 0) || session.type != SESSION_TYPES.P2P) {
                                                sessionName = session.name;
                                            } else {
                                                sessionName = res[0].name;
                                            }
                                            sessionList.push({
                                                id: sessionId,
                                                name: sessionName,
                                                create_date: session.create_date,
                                                last_content_type: session.last_content_type,
                                                last_content: session.last_content,
                                                sender_id: session.sender_id,
                                                type: session.type,
                                                sender_name: session.sender_name,
                                                unread_count: count,
                                                business_type: session.business_type,
                                                my_role: role
                                            });
                                            index = (parseInt(index) + 1);
                                            if (index == sessionIds.length) {
                                                ModelUtil.emitOK(self.eventEmitter, sessionList);
                                            } else {
                                                callback(null, index);
                                            }
                                        })
                                }).catch(function (err) {
                                logger.error("Get sessions failed: ", err);
                            });
                                    })
                            }).catch(function (err) {
                            logger.error("Get sessions failed: ", err);
                        });
                    }
                    functionList.push(fun);
                };
                }
                ;
                async.waterfall(functionList);
            }
        ]);
@ -870,8 +874,8 @@ class Sessions extends RedisModel {
                    sessionType = res[0];
                    sessionName = res[1];
                    if (!sessionType || !sessionName) {
                        logger.error("session is error for key " + session_key);
                        throw "session is not found";
                        logger.error("Unknown session key " + session_key);
                        if(handler) return handler(new Error("Unknown session key " + session_key));
                    }
                }).then(function (res) {
                    // 更新消息存储REDIS
@ -885,12 +889,12 @@ class Sessions extends RedisModel {
                    //更新session实体的最后一条消息
                    SessionRepo.updateSessionLastStatus(message.sender_id, message.sender_name, message.timestamp, message.content, message.content_type, sessionId);
                    handler(null, messageId);
                    if(handler) handler(null, messageId);
                }).then(function (res) {
                    // 推送消息
                    ParticipantRepo.findIds(sessionId, function (err, res) {
                        if (err) {
                            handler(err, messageId)
                            if(handler) handler(err, messageId)
                        } else {
                            message.session_id = sessionId;
                            res.forEach(function (participant) {
@ -901,10 +905,10 @@ class Sessions extends RedisModel {
                        }
                    })
                }).catch(function (err) {
                    handler(err, messageId)
                    if(handler) handler(err, messageId)
                })
            } else {
                handler("用户不在此会话当中!", messageId);
                if(handler) handler("用户不在此会话当中!", messageId);
            }
        })
    }

+ 97 - 89
src/server/models/sessions/topics.js

@ -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});
                }
            });

+ 11 - 10
src/server/repository/mysql/message.repo.js

@ -21,12 +21,11 @@ class MessageRepo {
     * @param sessionId
     * @param page
     * @param size
     * @param messageType
     * @param handler
     */
    static findBySessionId(sessionId, page, size, messageType, handler) {
        if (page < 0) {
            page = 0;
        }
        page = page < 0 ? 0 : page;
        SessionRepo.findOne(sessionId, function (err, res) {
            if (!err) {
@ -34,7 +33,8 @@ class MessageRepo {
                    handler(null, null);
                    return;
                }
                var params = [];
                let params = [];
                let type = res[0].type;
                let MessageTable = "";
                if (type == 1) {
@ -44,12 +44,14 @@ class MessageRepo {
                } else {
                    MessageTable = DB_TABLES.GroupMessages;
                }
                let where = " w.session_id = ? ";
                params.push(sessionId);
                if (messageType) {
                    where += " and content_type=? ";
                    params.push(messageType);
                }
                let sql = "select id, session_id, sender_id, sender_name, content_type, content, timestamp from " +
                    MessageTable + " w where " + where + " order by w.id limit ?, ?";
                params.push(page);
@ -67,19 +69,18 @@ class MessageRepo {
     * 保存消息
     *
     * @param message 消息对象
     * @param sessionType 会话类型,1表示MUC会话,2表示P2P,3表示群会话,4表示临时讨论组
     * @param sessionType 会话类型,参见 SESSIONS_TYPES
     * @param messageId
     * @param sessionId
     * @param handler
     */
    static save(message, sessionType, messageId, sessionId, handler) {
        var sql = "INSERT INTO " + DB_TABLES.sessionTypeToTableName(sessionType) +
        let sql = "INSERT INTO " + DB_TABLES.sessionTypeToTableName(sessionType) +
            " (id, session_id, sender_id, sender_name,content_type, content, timestamp,business_type) VALUES (?,?,?,?,?,?,?,?)";
        ImDb.execQuery({
            "sql": sql,
            "args": [messageId, sessionId, message.sender_id, message.sender_name, message.content_type, message.content, message.timestamp,message.business_type||1],
            "handler": handler || function (err, res) {
                log.info(res);
            }
            "args": [messageId, sessionId, message.sender_id, message.sender_name, message.content_type, message.content, message.timestamp, message.business_type || 1],
            "handler": handler
        });
    }

+ 6 - 6
src/server/resources/config/config.prod.js

@ -16,6 +16,12 @@ let redisConfig = {
    db: 1
};
// 三师后台
let wlyyServerConfig = {
    host: '120.41.252.108',
    port: 9660
};
// 个推AppStore版参数
let getTuiConfig = {
    HOST: 'https://api.getui.com/apiex.htm',
@ -24,12 +30,6 @@ let getTuiConfig = {
    MASTERSECRET: 'pvjCGtRZJx9SRVODkxc816'
};
// 三师后台
let wlyyServerConfig = {
    host: '120.41.252.108',
    port: 9660
};
// 微信配置
let wechatConfig = {
    appId: 'wxad04e9c4c5255acf',

+ 3 - 3
src/server/resources/config/config.test.js

@ -1,6 +1,6 @@
"use strict";
var imDbConfig = {
let imDbConfig = {
    host: '172.17.110.160',
    user: 'ssgg',
    password: 'ssgg',
@ -17,13 +17,13 @@ let redisConfig = {
};
// 三师后台
var wlyyServerConfig = {
let wlyyServerConfig = {
    host: '172.19.103.88',
    port: 9092
};
// 个推AppStore版参数
var getTuiConfig = {
let getTuiConfig = {
    HOST : 'https://api.getui.com/apiex.htm',
    APPID : 'H6FYbDejks6VjMmW3uH7V6',
    APPKEY : '0PFWlKmLBN9YzhCfFWVgYA',

+ 2 - 2
src/server/resources/schema/ichat_1.2.8_table_schema.sql

@ -100,8 +100,8 @@ CREATE TABLE `topics`
	`create_time` TIMESTAMP(0) COMMENT '创建时间',
	`end_by` VARCHAR(50) COMMENT '结束人ID',
	`end_time` TIMESTAMP(0) COMMENT '结束时间',
	`start_message_id` INTEGER COMMENT '消息起始ID',
	`end_message_id` INTEGER COMMENT '消息结束ID',
	`start_message_id` VARCHAR(50) COMMENT '消息起始ID',
	`end_message_id` VARCHAR(50) COMMENT '消息结束ID',
	`status` INT COMMENT '议题状态,0新建,1已回复未结束,10结束',
	`description` VARCHAR(1024) COMMENT '议题描述',
	CONSTRAINT `PK_topics` PRIMARY KEY (`id`)

+ 6 - 1
src/server/resources/schema/ichat_1.2.8_view_schema.sql

@ -10,4 +10,9 @@ from wlyy.wlyy_patient;
create or replace view wechat_status as
select code user_id, openid open_id
from wlyy.wlyy_patient
;
;
/*三师后台咨询消息ID字段类型修改*/
ALTER TABLE wlyy.wlyy_consult_team
  MODIFY COLUMN `end_msg_id`  varchar(50) NULL DEFAULT NULL AFTER `guidance`,
  MODIFY COLUMN `start_msg_id`  varchar(50) NULL DEFAULT NULL AFTER `end_msg_id`;