chenjunkai 6 years ago
parent
commit
5d079bebcf
3 changed files with 40 additions and 6 deletions
  1. 16 1
      Controller/AdminManage.py
  2. 17 2
      Object/RedisObject.py
  3. 7 3
      Object/TokenObject.py

+ 16 - 1
Controller/AdminManage.py

@@ -13,6 +13,7 @@ from Object.TokenObject import TokenObject
 from Ansjer.config import OFF_LINE_TIME_DELTA
 import datetime, simplejson as json
 from Service.CommonService import CommonService
+from Object.RedisObject import RedisObject
 
 '''
 http://192.168.136.40:8077/adminManage/manage?operation=getAllDeviceArea&token=debug
@@ -53,6 +54,7 @@ class AdminManage(TemplateView):
         if operation == 'getAllOnLine':
             return self.getAllOnLine(userID, response)
         if operation == 'getOnLine':
+            return self.getRedisOnline(userID, response)
             return self.getOnLine(userID, response)
         if operation == 'getAllUserName':
             return self.getAllUserName(userID, response)
@@ -141,6 +143,19 @@ class AdminManage(TemplateView):
         else:
             return response.json(404)
 
+    #    获取全部用户的在线人数
+
+    def getRedisOnline(self, userID, response):
+        # 权限固定为30
+        own_perm = ModelService.check_own_device(userID, 30)
+        if own_perm:
+            count = int(Device_Info.objects.count())
+            redisObj = RedisObject(db=3)
+            onlines = int(redisObj.get_size())
+            return response.json(0, {"onlinenum": onlines, "no_onlinenum": count - onlines})
+        else:
+            return response.json(404)
+
     # 获取所有设备地区
     def getAllDeviceArea(self, userID, response):
         own_permission = ModelService.check_perm(userID=userID, permID=30)
@@ -194,7 +209,7 @@ class AdminManage(TemplateView):
         uid_list = Device_Info.objects.all().values_list('UID', flat=True)
         res = {}
         if uid_list:
-            res = {'count':uid_list.count(), 'uid_list': list(uid_list)}
+            res = {'count': uid_list.count(), 'uid_list': list(uid_list)}
         return response.json(0, res)
 
 

+ 17 - 2
Object/RedisObject.py

@@ -12,12 +12,19 @@
 @Contact: chanjunkai@163.com
 """
 import redis
+
 from Ansjer.config import SERVER_HOST
 
+
+# SERVER_HOST = '192.168.136.45'
+
+'''
+db=3  -> 统计在线人数用
+'''
 class RedisObject:
 
-    def __init__(self):
-        self.POOL = redis.ConnectionPool(host=SERVER_HOST, port=6379)
+    def __init__(self, db=0):
+        self.POOL = redis.ConnectionPool(host=SERVER_HOST, port=6379, db=db)
         self.CONN = redis.Redis(connection_pool=self.POOL)
 
     def set_data(self, key, val, expire=0):
@@ -50,3 +57,11 @@ class RedisObject:
             return False
         else:
             return True
+
+    def get_size(self):
+        return self.CONN.dbsize()
+
+
+redisObj = RedisObject()
+size = redisObj.get_size()
+print(size)

+ 7 - 3
Object/TokenObject.py

@@ -15,6 +15,7 @@ from Ansjer.config import OAUTH_ACCESS_TOKEN_SECRET, OAUTH_REFRESH_TOKEN_SECRET,
     OAUTH_REFRESH_TOKEN_TIME
 import jwt, time
 from Model.models import Device_User
+from Object.RedisObject import RedisObject
 
 
 class TokenObject:
@@ -43,9 +44,12 @@ class TokenObject:
             self.user = res.get('user', '')
             # 刷新登录时间
             if self.userID:
-                device_user = Device_User.objects.get(userID=self.userID)
-                device_user.online = True
-                device_user.save()
+                # device_user = Device_User.objects.get(userID=self.userID)
+                # device_user.online = True
+                # device_user.save()
+                redisObj = RedisObject(db=3)
+                redisObj.set_data(key=self.userID, val='user', expire=300)
+
         except jwt.ExpiredSignatureError as e:
             print('过期')
             print(repr(e))