|
@@ -4,18 +4,20 @@ from django.views.generic import TemplateView
|
|
|
from django.utils.decorators import method_decorator
|
|
|
from django.contrib.auth.hashers import make_password # 对密码加密模块
|
|
|
from Service.TokenManager import JSONTokenManager
|
|
|
-from Model.models import Device_User, Device_Info
|
|
|
-from Service.CommonService import CommonService
|
|
|
+from Model.models import Device_Info,Role
|
|
|
from Service.ModelService import ModelService
|
|
|
+from django.utils import timezone
|
|
|
import datetime
|
|
|
from Model.models import Access_Log
|
|
|
from Service.ResponseService import *
|
|
|
from django.views.decorators.http import require_http_methods
|
|
|
+from Ansjer.config import *
|
|
|
'''
|
|
|
http://13.56.215.252:8222/adminManage/manage?operation=getAllDeviceArea&token=test
|
|
|
http://13.56.215.252:8222/adminManage/manage?operation=getAllUserName&token=test
|
|
|
http://13.56.215.252:8222/adminManage/manage?operation=getAllUID&token=test
|
|
|
-
|
|
|
+http://127.0.0.1:8000/adminManage/manage?operation=getAllOnLine&token=stest
|
|
|
+http://127.0.0.1:8000/adminManage/manage?operation=getOnLine&token=stest
|
|
|
'''
|
|
|
|
|
|
|
|
@@ -33,6 +35,7 @@ class AdminManage(TemplateView):
|
|
|
return self.validation(request_dict=request.POST)
|
|
|
|
|
|
def validation(self, request_dict, *args, **kwargs):
|
|
|
+
|
|
|
token = request_dict.get('token', None)
|
|
|
if token is not None:
|
|
|
tokenManager = JSONTokenManager()
|
|
@@ -44,6 +47,10 @@ class AdminManage(TemplateView):
|
|
|
if param_flag is True:
|
|
|
if operation == 'resetUserPwd':
|
|
|
return self.resetUserPwd(request_dict=request_dict, userID=userID)
|
|
|
+ if operation == 'getAllOnLine':
|
|
|
+ return self.getAllOnLine(userID=userID)
|
|
|
+ if operation == 'getOnLine':
|
|
|
+ return self.getOnLine(userID=userID)
|
|
|
if operation == 'getAllUserName':
|
|
|
return self.getAllUserName(userID=userID)
|
|
|
if operation == 'getStatisAccess':
|
|
@@ -81,6 +88,7 @@ class AdminManage(TemplateView):
|
|
|
return ResponseJSON(404)
|
|
|
|
|
|
def getAllUserName(self, userID):
|
|
|
+ # 权限固定为30
|
|
|
own_permission = ModelService.check_permission(userID=userID, permID=30)
|
|
|
if own_permission is True:
|
|
|
username_list = Device_User.objects.all().values_list('username', flat=True)
|
|
@@ -90,7 +98,52 @@ class AdminManage(TemplateView):
|
|
|
return ResponseJSON(0)
|
|
|
else:
|
|
|
return ResponseJSON(404)
|
|
|
-
|
|
|
+ # 获取全部用户的在线个数
|
|
|
+ def getAllOnLine(self, userID):
|
|
|
+ # 权限固定为30
|
|
|
+ own_permission = ModelService.check_permission(userID=userID, permID=30)
|
|
|
+ if own_permission is True:
|
|
|
+ allonline = Device_User.objects.all().values('online')
|
|
|
+ # 两个变量,分别是在线,离线
|
|
|
+ onlinenum = 0
|
|
|
+ noonlinenum=0
|
|
|
+ for q in allonline:
|
|
|
+ if q['online'] ==True:
|
|
|
+ onlinenum+=1
|
|
|
+ else:
|
|
|
+ noonlinenum+=1
|
|
|
+ print("在线人数:")
|
|
|
+ print(onlinenum)
|
|
|
+ return ResponseJSON(0, {"onlinenum": onlinenum, "no_onlinenum": noonlinenum})
|
|
|
+ else:
|
|
|
+ return ResponseJSON(404)
|
|
|
+ # 获取全部用户的在线人数
|
|
|
+ def getOnLine(self, userID):
|
|
|
+ # 权限固定为30
|
|
|
+ own_permission = ModelService.check_permission(userID=userID, permID=30)
|
|
|
+ if own_permission is True:
|
|
|
+ online_list = Device_User.objects.all().values('online', 'last_login')
|
|
|
+ # 两个变量,分别是在线,离线
|
|
|
+ onlinenum=0
|
|
|
+ noonlinenum=0
|
|
|
+ for q in online_list:
|
|
|
+ # print(q['last_login'] )
|
|
|
+ # 最后访问时间加5分种
|
|
|
+ dl_time = q['last_login'] + datetime.timedelta(minutes=OFF_LINE_TIME_DELTA)
|
|
|
+ # print(dl_time)
|
|
|
+ # 当前时间
|
|
|
+ now_time = timezone.localtime(timezone.now())
|
|
|
+ # print(now_time)
|
|
|
+ # 如果当前时间大于最后访问的时间
|
|
|
+ if now_time < dl_time:
|
|
|
+ onlinenum += 1
|
|
|
+ else:
|
|
|
+ noonlinenum += 1
|
|
|
+ print("在线人")
|
|
|
+ print(onlinenum)
|
|
|
+ return ResponseJSON(0, {"onlinenum": onlinenum,"no_onlinenum": noonlinenum})
|
|
|
+ else:
|
|
|
+ return ResponseJSON(404)
|
|
|
|
|
|
# 获取所有设备地区
|
|
|
def getAllDeviceArea(self, userID):
|
|
@@ -166,4 +219,82 @@ def getUserIds(request):
|
|
|
else:
|
|
|
return HttpResponse(tokenManager.errorCodeInfo(error_code))
|
|
|
else:
|
|
|
- return ResponseJSON(311)
|
|
|
+ return ResponseJSON(311)
|
|
|
+
|
|
|
+@csrf_exempt
|
|
|
+# @require_http_methods(['GET'])
|
|
|
+def search_user_by_content(request):
|
|
|
+ if request.method == 'GET':
|
|
|
+ request_dict = request.GET
|
|
|
+ if request.method == 'POST':
|
|
|
+ request_dict = request.POST
|
|
|
+ token = request_dict.get('token', None)
|
|
|
+ page = request_dict.get('page', None)
|
|
|
+ line = request_dict.get('line', None)
|
|
|
+ content = request_dict.get('content', None)
|
|
|
+ rstime = request_dict.get('rstime', None)
|
|
|
+ retime = request_dict.get('retime', None)
|
|
|
+ if page is not None and line is not None:
|
|
|
+ page = int(page)
|
|
|
+ line = int(line)
|
|
|
+ else:
|
|
|
+ return ResponseJSON(10,'page,line is none')
|
|
|
+ if token is not None:
|
|
|
+ tokenManager = JSONTokenManager()
|
|
|
+ error_code = tokenManager.verify_AToken(token)
|
|
|
+ if error_code == 0:
|
|
|
+ userID = tokenManager.accessDict.get('userID', None)
|
|
|
+ own_perm = ModelService.check_permission(userID,30)
|
|
|
+ if own_perm is True:
|
|
|
+ check_perm = ModelService.check_permission(userID=userID, permID=20)
|
|
|
+ if check_perm is True:
|
|
|
+ try:
|
|
|
+ content = json.loads(content)
|
|
|
+ search_kwargs = CommonService.get_kwargs(data=content)
|
|
|
+ queryset = Device_User.objects.filter(**search_kwargs)
|
|
|
+ except Exception as e:
|
|
|
+ return ResponseJSON(444,repr(e))
|
|
|
+ if rstime is not None and rstime != '' and retime is not None and retime != '':
|
|
|
+ startt = datetime.datetime.fromtimestamp(int(rstime))
|
|
|
+ rstime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
|
|
|
+ endt = datetime.datetime.fromtimestamp(int(retime))
|
|
|
+ retime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
|
|
|
+ queryset = queryset.filter(data_joined__range=(rstime, retime))
|
|
|
+ elif rstime is not None and rstime != '':
|
|
|
+ startt = datetime.datetime.fromtimestamp(int(rstime))
|
|
|
+ rstime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
|
|
|
+ queryset = queryset.filter(data_joined__gte=rstime)
|
|
|
+ elif retime is not None and retime != '':
|
|
|
+ endt = datetime.datetime.fromtimestamp(int(retime))
|
|
|
+ retime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
|
|
|
+ queryset = queryset.filter(data_joined__lte=retime)
|
|
|
+ if queryset.exists():
|
|
|
+ count = queryset.count()
|
|
|
+ res = queryset[(page - 1) * line:page * line]
|
|
|
+ sqlDict = CommonService.query_set_to_dict(res)
|
|
|
+ for k, v in enumerate(sqlDict["datas"]):
|
|
|
+ if len(v['fields']['role']) > 0:
|
|
|
+ role_query_set = Role.objects.get(rid=v['fields']['role'][0])
|
|
|
+ sqlDict["datas"][k]['fields']['role'].append(role_query_set.roleName)
|
|
|
+ for val in res:
|
|
|
+ if v['pk'] == val.userID:
|
|
|
+ if sqlDict["datas"][k]['fields']['online'] is True:
|
|
|
+ dl_time = val.last_login + datetime.timedelta(minutes=5)
|
|
|
+ now_time = timezone.localtime(timezone.now())
|
|
|
+ if now_time > dl_time:
|
|
|
+ sqlDict["datas"][k]['fields']['online'] = False
|
|
|
+ sqlDict['count'] = count
|
|
|
+ return ResponseJSON(0, sqlDict)
|
|
|
+ return ResponseJSON(0, {'datas': [], 'count': 0})
|
|
|
+ else:
|
|
|
+ return ResponseJSON(404)
|
|
|
+ else:
|
|
|
+ return ResponseJSON(404)
|
|
|
+ else:
|
|
|
+ return HttpResponse(tokenManager.errorCodeInfo(error_code))
|
|
|
+ else:
|
|
|
+ return ResponseJSON(311)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|