Pārlūkot izejas kodu

增加用户状态redis key

sand 8 gadi atpakaļ
vecāks
revīzija
1f792aaef5
2 mainītis faili ar 25 papildinājumiem un 6 dzēšanām
  1. 5 2
      src/server/include/commons.js
  2. 20 4
      src/server/models/user/users.js

+ 5 - 2
src/server/include/commons.js

@ -43,7 +43,8 @@ exports.CONTENT_TYPE = {
 */
exports.PLATFORM = {
    iOS: 0,
    Android: 1
    Android: 1,
    Wechat: 10
};
/**
@ -88,7 +89,9 @@ exports.REDIS_KEY_REPLACER = REDIS_KEY_REPLACER;
exports.REDIS_KEYS = {
    Users: "users:",
    User: "users:" + REDIS_KEY_REPLACER,
    UserStatus: "users:" + REDIS_KEY_REPLACER + ":status",
    UserAppStatus: "users:" + REDIS_KEY_REPLACER + ":app_status",
    UserWechatStatus: "users:" + REDIS_KEY_REPLACER + ":wechat_status",
    UsersSessions: "users:"+REDIS_KEY_REPLACER+":sessions",
    Participants:"participants:"+REDIS_KEY_REPLACER,

+ 20 - 4
src/server/models/user/users.js

@ -6,11 +6,13 @@
 */
"use strict";
const RedisKeys = require('../../include/commons').REDIS_KEYS;
const REDIS_KEYS = require('../../include/commons').REDIS_KEYS;
const PLATFORMS = require('../../include/commons').PLATFORM;
let RedisModel = require('../redis.model');
let Doctor = require('./doctor');
let Patient = require('./patient');
let Sessions = require('../sessions/sessions');
let ImDb = require('../../repository/mysql/db/im.db');
let DoctorRepo = require('../../repository/mysql/doctor.repo');
@ -26,7 +28,7 @@ class Users extends RedisModel {
    constructor() {
        super();
        this._key = RedisKeys.Users;
        this._key = REDIS_KEYS.Users;
    }
    /**
@ -73,7 +75,7 @@ class Users extends RedisModel {
        async.waterfall([
            // get from redis
            function (callback) {
                let userStatusKey = self.makeRedisKey(RedisKeys.UserStatus, userId);
                let userStatusKey = self.makeRedisKey(REDIS_KEYS.UserStatus, userId);
                redisConn.hgetallAsync(userStatusKey).then(function (res) {
                   if(res === null){
                       callback(null);  // get from mysql
@ -137,15 +139,29 @@ class Users extends RedisModel {
     * 用户登录时会加载与之相关的会话列表,会话消息,用户自身信息:App状态与微信状态。
     *
     * @param userId
     * @param platform
     * @param token
     * @param clientId
     * @param outCallback
     *
     * @return 用户token
     */
    login(userId, platform, token, clientId, outCallback){
        let self = this;
        let usersKey = REDIS_KEYS.Users;
        let userKey = self.makeRedisKey(REDIS_KEYS.User, userId);
        let userStatusKey = platform === PLATFORMS.Wechat ? REDIS_KEYS.UserWechatStatus : REDIS_KEYS.UserWechatStatus;
        userStatusKey = self.makeRedisKey(userStatusKey, userId);
        async.waterfall([
            // save user info and app status
            function (callback) {
                let
            },
            // load sessions
            function (callback) {
                let sessions = new Sessions();
                sessions.getUserSessionsFromMysql();
            }
        ]);
        DoctorRepo.deleteToken(token, function (err, result) {