Jelajahi Sumber

在线统计处理

yeshijie 3 tahun lalu
induk
melakukan
1d1259994f

+ 3 - 0
src/server/models/schedule/jobs/topic.terminating.job.js

@ -10,6 +10,7 @@ let onlineCache = require('../../socket.io/onlineCache').onlineCache();
let log = require("../../../util/log.js");
let configFile = require('../../../include/commons').CONFIG_FILE;
let config = require('../../../resources/config/' + configFile);
let Users = require('../../user/users');
class TopicTerminatingJob {
    constructor() {
@ -17,6 +18,8 @@ class TopicTerminatingJob {
    static exec() {
        onlineCache.init();
        Users.updateDoctorStatus0();
        Users.updatePatientStatus0();
    }
}

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

@ -7,6 +7,7 @@
 */
"use strict";
let log = require('../../util/log');
let Users = require('../user/users');
var onlineCache = null;
class OnlineCache{
@ -81,6 +82,7 @@ class OnlineCache{
    //新增用户,判断用户是否在线,在线人数统计
    addUser(userId,type) {
        userId = this.repalceUserId(userId);
        this.updatePatientStatus(userId,type,1);
        let key = userId+":"+type;
        let count = this.findByIdAndType(userId,type);
        if(count&&count>0){
@ -92,6 +94,15 @@ class OnlineCache{
        }
    }
    updatePatientStatus(userId,type,status){
        log.info('updatePatientStatus '+userId+'=='+type+'=='+status);
        if("helper" == type||"teacher" == type){
            Users.updateDoctorStatus1(userId,status);
        }else{
            Users.updatePatientStatus1(userId,status);
        }
    }
    setUser(userId,type,count){
        if(count<=0){
            return;
@ -171,6 +182,7 @@ class OnlineCache{
            return;
        }
        userId = this.repalceUserId(userId);
        this.updatePatientStatus(userId,type,0);
        let key = userId+":"+type;
        let count = this.findByIdAndType(userId,type);
        if(count&&count>1){

+ 64 - 0
src/server/models/user/users.js

@ -421,6 +421,70 @@ class Users extends RedisModel {
        });
    }
    /**
     * 更新患者在线状态
     *
     * @param userId
     * @param callback
     */
    static updatePatientStatus1(userId,online, handler) {
        let sql = "update base.base_patient set on_line=? where id = ?";
        ImDb.execQuery({
            "sql": sql,
            "args": [online, userId],
            "handler": handler || function (err, res) {
                if(err) log.error(err);
            }
        });
    }
    /**
     * 更新医生在线状态
     * @param userId
     * @param online
     * @param handler
     */
    static updateDoctorStatus1(userId,online, handler) {
        let sql = "update base.base_doctor set on_line=? where id = ?";
        ImDb.execQuery({
            "sql": sql,
            "args": [online, userId],
            "handler": handler || function (err, res) {
                if(err) log.error(err);
            }
        });
    }
    /**
     * 更新医生在线状态
     * @param handler
     */
    static updateDoctorStatus0(handler) {
        let sql = "update " + DB_TABLES.Doctors + " set on_line=0 ";
        ImDb.execQuery({
            "sql": sql,
            "handler": handler || function (err, res) {
                if(err) log.error(err);
            }
        });
    }
    /**
     * 更新患者在线状态
     *
     * @param userId
     * @param callback
     */
    static updatePatientStatus0(handler) {
        let sql = "update " + DB_TABLES.Patients + " set on_line=0 ";
        ImDb.execQuery({
            "sql": sql,
            "handler": handler || function (err, res) {
                if(err) log.error(err);
            }
        });
    }
}