Browse Source

在线统计处理

yeshijie 3 years ago
parent
commit
7432da58bc

+ 1 - 1
src/server/app.js

@ -128,7 +128,7 @@ if(!server.address()){
    log.info('Configuration profile: ' + configFile.split('.')[1]);
    log.info('Configuration profile: ' + configFile.split('.')[1]);
}
}
//JobInitializer.init();
JobInitializer.init();
pubSub.registerHandlers(config.subChannel,msg=> console.log(msg));
pubSub.registerHandlers(config.subChannel,msg=> console.log(msg));
pubSub.subscribe(config.subChannel);
pubSub.subscribe(config.subChannel);

+ 1 - 5
src/server/models/schedule/job.initializer.js

@ -3,10 +3,6 @@
let Scheduler = require('./scheduler');
let Scheduler = require('./scheduler');
let TopicTerminatingJob = require('./jobs/topic.terminating.job');
let TopicTerminatingJob = require('./jobs/topic.terminating.job');
let configFile = require('../../include/commons').CONFIG_FILE;
let config = require('../../resources/config/' + configFile);
const TOPIC_TERMINATING_CRON = config.topicConfig.TERMINATING_CRON;
class JobInitializer {
class JobInitializer {
    constructor() {
    constructor() {
@ -14,7 +10,7 @@ class JobInitializer {
    // schedule jobs
    // schedule jobs
    static init() {
    static init() {
        Scheduler.cronSchedule(TOPIC_TERMINATING_CRON, TopicTerminatingJob.exec);
        Scheduler.cronSchedule("0 0 3 * * *", TopicTerminatingJob.exec);
    }
    }
}
}

+ 2 - 24
src/server/models/schedule/jobs/topic.terminating.job.js

@ -6,39 +6,17 @@
 */
 */
"use strict";
"use strict";
let TopicRepo = require('../../../repository/mysql/topics.repo');
let ModelUtil = require("../../../util/model.util.js");
let WlyySDK = require("../../../util/wlyy.sdk");
let onlineCache = require('../../socket.io/onlineCache').onlineCache();
let log = require("../../../util/log.js");
let log = require("../../../util/log.js");
let configFile = require('../../../include/commons').CONFIG_FILE;
let configFile = require('../../../include/commons').CONFIG_FILE;
let config = require('../../../resources/config/' + configFile);
let config = require('../../../resources/config/' + configFile);
const TOPIC_TTL = config.topicConfig.TTL;
class TopicTerminatingJob {
class TopicTerminatingJob {
    constructor() {
    constructor() {
    }
    }
    static exec() {
    static exec() {
        TopicRepo.findAllBySessionLastActiveTime(TOPIC_TTL, function (err, topics) {
            if (err) {
                return ModelUtil.logError("Find topics without activity over " + TOPIC_TTL + " hour(s) failed", err);
            }
            topics.forEach(function (topic) {
                let topicId = topic.topic_id;
                let topicName = topic.topic_name;
                WlyySDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/consult/finish_consult?consult=' + topicId, 'GET', function (err, res) {
                    log.info("Got topic to terminate, " + topicId + ": " + topicName + ", last active time: " + topic.last_message_time);
                    if (err) return log.error("Terminating topic failed, try next time, error: ", err);
                    log.info("Terminating topic " + topicId + " succeed");
                });
            });
        });
        onlineCache.init();
    }
    }
}
}

+ 1 - 3
src/server/models/sessions/participants.js

@ -263,9 +263,7 @@ class Participants extends RedisModel {
     */
     */
    changUserRedisLoginStatus(userid,clientType,status,sessionId){
    changUserRedisLoginStatus(userid,clientType,status,sessionId){
        let participants = new Participants();
        let participants = new Participants();
        log.info("changUserRedisLoginStatus,userid:"+userid)
        log.info("changUserRedisLoginStatus,userid:"+userid)
        log.info("changUserRedisLoginStatus,userid:"+userid)
        log.info("changUserRedisLoginStatus,userid:"+userid);
        if(sessionId != "system"){
        if(sessionId != "system"){
            if(status==1){
            if(status==1){

+ 11 - 1
src/server/models/socket.io/onlineCache.js

@ -23,10 +23,20 @@ class OnlineCache{
        if (onlineCache === null) {
        if (onlineCache === null) {
            onlineCache = new OnlineCache();
            onlineCache = new OnlineCache();
        }
        }
        return onlineCache;
        return onlineCache;
    }
    }
    /**
     * 清空数据,
     */
    init(){
        this._helperMap = new Map();
        this._teacherMap = new Map();
        this._childMap = new Map();
        this._olderWxMap = new Map();
        this._olderPadMap = new Map();
    }
    getListByType(type){
    getListByType(type){
        if("helper" == type){
        if("helper" == type){
            return this.mapToJson(this._helperMap);
            return this.mapToJson(this._helperMap);