8 роки тому
батько
коміт
6d23988cfa

+ 2 - 1
src/server/endpoints/v2/session.endpoint.js

@ -71,6 +71,7 @@ router.get("/", function (req, res) {
    let page = req.query.page;
    let size = req.query.size;
    let userId = req.query.user_id;
    let businessType = req.query.business_type;
    if (!page) {
        throw {httpStatus: 406, message: 'Missing page.'};
    }
@ -84,7 +85,7 @@ router.get("/", function (req, res) {
    let sessions = new Sessions();
    ControllerUtil.regModelEventHandler(sessions, res);
    sessions.getUserSessions(userId, page, size);
    sessions.getUserSessions(userId, page, size,businessType);
});
/**

+ 5 - 2
src/server/models/messages/messages.js

@ -6,7 +6,7 @@
let MessageRepo = require('../../repository/mysql/message.repo');
let RedisModel = require('./../redis.model.js');
let RedisClient = require('../../repository/redis/redis.client.js');
let ModelUtil = require('../../util/model.util');
let redis = RedisClient.redisClient().connection;
let log = require('../../util/log.js');
let configFile = require('../../include/commons').CONFIG_FILE;
@ -56,6 +56,9 @@ class Messages extends RedisModel {
     * @param handler
     */
    getMessageByType(sessionId, page, pagesize,messageType) {
        let self = this;
        page = parseInt(page);
        pagesize = parseInt(pagesize);
        MessageRepo.findBySessionId(sessionId, page, pagesize,messageType,function(err,res){
                if(err){
                    ModelUtil.emitError(self.eventEmitter, {message: "Error get message by session and type : " + err});
@ -92,7 +95,7 @@ class Messages extends RedisModel {
            id: message.id,
            sender_id: message.sender_id,
            sender_name: message.sender_name,
            timestamp: ObjectUtil.timestampToLong(message.timestamp),
            timestamp: message.timestamp.getTime(),
            content_type: message.content_type,
            content: message.content
        };

+ 12 - 9
src/server/models/sessions/sessions.js

@ -63,14 +63,13 @@ class Sessions extends RedisModel {
        } else {
            callBusinessType(sessionId);
        }
        var businessType = SESSION_BUSINESS_TYPE.DOCTOR;
        function callBusinessType(sessionId) {
            var businessType = SESSION_BUSINESS_TYPE.DOCTOR;
            for (var j = 0; j < participantArray.length; j++)
                callIsPatient(j, businessType, participantArray.length);
                callIsPatient(j, participantArray.length);
        }
        function callIsPatient(j, businessType, length) {
        function callIsPatient(j, length) {
            Users.isPatientId(participantArray[j], function (isPatient) {
                if (isPatient) {
                    businessType = SESSION_BUSINESS_TYPE.PATIENT
@ -167,7 +166,7 @@ class Sessions extends RedisModel {
     * @param page
     * @param size
     */
    getUserSessions(userId, page, size) {
    getUserSessions(userId, page, size,businessType) {
        let userSessionKey = RedisModel.makeRedisKey(REDIS_KEYS.UserSessions, userId);
        let self = this;
        if (page > 0) {
@ -205,7 +204,9 @@ class Sessions extends RedisModel {
                            let session = res[0];
                            let role = res[1];
                            let lastFetchTime = res[2];
                            if(businessType&&businessType!=session.business_type){
                                logger.info("businessType:"+businessType+"<>"+session.business_type);
                            }else{
                            // 计算未读消息数
                            let messagesByTimestampKey = RedisModel.makeRedisKey(REDIS_KEYS.MessagesByTimestamp, sessionId);
                            redis.zcountAsync(messagesByTimestampKey, lastFetchTime, new Date().getTime())
@ -219,13 +220,15 @@ class Sessions extends RedisModel {
                                        sender_id: session.sender_id,
                                        sender_name: session.sender_name,
                                        unread_count: count,
                                        business_type:session.business_type,
                                        my_role: role
                                    });
                                    if (sessionId === sessionIds[sessionIds.length - 1]) {
                                        ModelUtil.emitOK(self.eventEmitter, sessionList);
                                    }
                                });
                                })
                            };
                        })
                        .catch(function (err) {
                            ModelUtil.emitError(self.eventEmitter, "Get sessions failed: " + err);
@ -349,7 +352,7 @@ class Sessions extends RedisModel {
                        let startMsgScore = res[1];
                        let endMsgScore = res[0];
                        if (startMsgScore == null || endMsgScore == null) {
                        if (startMsgScore == null || endMsgScore == null||startMsgScore==endMsgScore) {
                            handler(null, []);
                            return;
                        }
@ -514,7 +517,7 @@ class Sessions extends RedisModel {
                    });
                }).then(function (res) {
                    // TODO: 消息推送
                    pusher.pushTo
                   //pusher.pushTo
                }).catch(function (err) {
                    ModelUtil.emitError(self.eventEmitter, {message: "Error occurred while save message to session: " + err});
                })