Przeglądaj źródła

在线统计处理

yeshijie 4 lat temu
rodzic
commit
7d202c9e3f

+ 16 - 0
src/server/endpoints/v2/session.endpoint.js

@ -209,6 +209,22 @@ router.get("/getOnlineListByType", function (req, res) {
    sessions.getOnlineListByType(type)
});
router.get("/findByUserIdAndType", function (req, res) {
    let type = req.query.type;
    let userId = req.query.userId;
    if (!type) {
        throw {httpStatus: 406, message: 'Missing type.'};
    }
    if (!userId) {
        throw {httpStatus: 406, message: 'Missing userId.'};
    }
    let sessions = new Sessions();
    ControllerUtil.regModelEventHandler(sessions, res);
    sessions.findByUserIdAndType(userId,type)
});
/**
 * 按会话类型获取会话列表
 * 请求URL /sessions/sessionListByType?user_id=3121&page=0&size=10&type=4

+ 16 - 5
src/server/models/sessions/sessions.js

@ -904,16 +904,27 @@ class Sessions extends RedisModel {
            return;
        }else{
            //默认返回所有
            var helper = onlineCache.getListByType("helper");
            var teacher = onlineCache.getListByType("teacher");
            var child = onlineCache.getListByType("child");
            var olderWx = onlineCache.getListByType("olderWx");
            var olderPad = onlineCache.getListByType("olderPad");
            let helper = onlineCache.getListByType("helper");
            let teacher = onlineCache.getListByType("teacher");
            let child = onlineCache.getListByType("child");
            let olderWx = onlineCache.getListByType("olderWx");
            let olderPad = onlineCache.getListByType("olderPad");
            ModelUtil.emitOK(self.eventEmitter,{status:200,data:{olderPad:olderPad,olderWx:olderWx,child:child,teacher:teacher,helper:helper}});
            return;
        }
    }
    findByUserIdAndType(userId,type,handler){
        let self = this;
        let res = onlineCache.findByUserIdAndType(userId,type);
        if(res){
            ModelUtil.emitOK(self.eventEmitter,{status:200,data:res});
        }else{
            ModelUtil.emitOK(self.eventEmitter,{status:200,data:0});
        }
        return;
    }
    /**
     * 根据用户类型获取用户的session列表
     * @param userId

+ 33 - 0
src/server/models/socket.io/onlineCache.js

@ -70,6 +70,7 @@ class OnlineCache{
    //新增用户,判断用户是否在线,在线人数统计
    addUser(userId,type) {
        userId = this.repalceUserId(userId);
        let key = userId+":"+type;
        let count = this.findByIdAndType(userId,type);
        if(count&&count>0){
@ -121,6 +122,37 @@ class OnlineCache{
        return null;
    }
    findByUserIdAndType(userId,type){
        if("helper" == type){
            return this._helperMap.get(userId);
        }
        if("teacher" == type){
            return this._teacherMap.get(userId);
        }
        if("child" == type){
            return this._childMap.get(userId);
        }
        if("older"==type){
            let older = this._olderWxMap.get(userId);
            if(older){
                return older
            }else{
                return this._olderPadMap.get(userId);
            }
        }
        return null;
    }
    repalceUserId(userId){
        if(userId == "" || userId == undefined || userId == null){
            return userId;
        }
        userId = userId.replace(/pc_system_/, "");
        userId = userId.replace(/pcpatient_system_/, "");
        userId = userId.replace(/patient_system_/, "");
        userId = userId.replace(/doctor_system_/, "");
        return userId;
    }
    //用户断线,判断用户是否在线,在线人数统计
    removeUser(userId,type){
@ -128,6 +160,7 @@ class OnlineCache{
            log.info(type+"--离线--");
            return;
        }
        userId = this.repalceUserId(userId);
        let key = userId+":"+type;
        let count = this.findByIdAndType(userId,type);
        if(count&&count>1){

+ 1 - 1
src/server/resources/config/config.hzprod.js

@ -56,7 +56,7 @@ let wechatConfig = {
    appSecret: '0dd9927e58125ad5f0efb9299860d145',
    token: '27eb3bb24f149a7760cf1bb154b08041',
    accId: 'gh_da06ed9e5751',
    baseUrl: 'http://hzijk.cityihealth.com',
    baseUrl: 'https://gongshu.hzxc.gov.cn/',
    template: {
        consultTemplate: 'VZkXgor2eD2fL3c6ZpImVSj92p7eCD1Wx2fXy91SE0M'  // 咨询回复模板
    }