UserExController.py 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD019
  6. @NAME: AnsjerFormal
  7. @software: PyCharm
  8. @DATE: 2019/12/17 15:50
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: AliPayObject.py
  12. @Contact: pzb3076@163.com
  13. """
  14. import re
  15. import time
  16. from django.utils.decorators import method_decorator
  17. from django.views.decorators.csrf import csrf_exempt
  18. from django.utils import timezone
  19. from django.views.generic.base import View
  20. import datetime, simplejson as json
  21. from Model.models import Device_Info, Role, UserExModel, Device_User
  22. from Object.RedisObject import RedisObject
  23. from Object.ResponseObject import ResponseObject
  24. from Object.TokenObject import TokenObject
  25. from Service.CommonService import CommonService
  26. from Service.ModelService import ModelService
  27. from django.conf import settings
  28. OSS_STS_ACCESS_KEY = settings.OSS_STS_ACCESS_KEY
  29. OSS_STS_ACCESS_SECRET = settings.OSS_STS_ACCESS_SECRET
  30. class UserExView(View):
  31. @method_decorator(csrf_exempt)
  32. def dispatch(self, *args, **kwargs):
  33. return super(UserExView, self).dispatch(*args, **kwargs)
  34. def get(self, request, *args, **kwargs):
  35. request.encoding = 'utf-8'
  36. operation = kwargs.get('operation')
  37. return self.validation(request.GET, request, operation)
  38. def post(self, request, *args, **kwargs):
  39. request.encoding = 'utf-8'
  40. operation = kwargs.get('operation')
  41. return self.validation(request.POST, request, operation)
  42. def validation(self, request_dict, request, operation):
  43. response = ResponseObject()
  44. if operation is None:
  45. return response.json(444, 'error path')
  46. token = request_dict.get('token', None)
  47. # 设备主键uid
  48. tko = TokenObject(token)
  49. response.lang = tko.lang
  50. if tko.code != 0:
  51. return response.json(tko.code)
  52. userID = tko.userID
  53. if operation == 'adminDelete':
  54. return self.do_admin_delete(request_dict, userID, response)
  55. elif operation == 'adminQuery':
  56. return self.do_admin_query(request_dict, userID, response)
  57. else:
  58. return response.json(444, 'error path')
  59. # 管理员删除
  60. def do_admin_delete(self, request_dict, userID, response):
  61. own_perm = ModelService.check_perm(userID, 10)
  62. if own_perm is True:
  63. id = request_dict.getlist('id', None)
  64. ue = UserExModel.objects.filter(id=id)
  65. if ue.exists():
  66. ue.delete()
  67. return response.json(0)
  68. else:
  69. return response.json(173)
  70. else:
  71. return response.json(404)
  72. # 管理员查询接口
  73. def do_admin_query(self, request_dict, userID, response):
  74. own_perm = ModelService.check_perm(userID, 20)
  75. if own_perm is not True:
  76. return response.json(404)
  77. page = request_dict.get('page', None)
  78. line = request_dict.get('line', None)
  79. content = request_dict.get('content', None)
  80. rstime = request_dict.get('rstime', None)
  81. retime = request_dict.get('retime', None)
  82. app_id = request_dict.get('app_id', '')
  83. response = ResponseObject()
  84. if page is not None and line is not None:
  85. page = int(page)
  86. line = int(line)
  87. else:
  88. return response.json(10, 'page,line is none')
  89. if app_id == "":
  90. if content is None:
  91. queryset = Device_User.objects.all().order_by('-data_joined')
  92. else:
  93. try:
  94. content = json.loads(content)
  95. search_kwargs = CommonService.get_kwargs(data=content)
  96. queryset = Device_User.objects.filter(**search_kwargs)
  97. except Exception as e:
  98. return response.json(444, repr(e))
  99. if rstime is not None and rstime != '' and retime is not None and retime != '':
  100. startt = datetime.datetime.fromtimestamp(int(rstime))
  101. rstime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
  102. endt = datetime.datetime.fromtimestamp(int(retime))
  103. retime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
  104. queryset = queryset.filter(data_joined__range=(rstime, retime))
  105. elif rstime is not None and rstime != '':
  106. startt = datetime.datetime.fromtimestamp(int(rstime))
  107. rstime = startt.strftime("%Y-%m-%d %H:%M:%S.%f")
  108. queryset = queryset.filter(data_joined__gte=rstime)
  109. elif retime is not None and retime != '':
  110. endt = datetime.datetime.fromtimestamp(int(retime))
  111. retime = endt.strftime("%Y-%m-%d %H:%M:%S.%f")
  112. queryset = queryset.filter(data_joined__lte=retime)
  113. if queryset.exists():
  114. count = queryset.count()
  115. res = queryset[(page - 1) * line:page * line]
  116. sqlDict = CommonService.qs_to_dict(res)
  117. for k, v in enumerate(sqlDict["datas"]):
  118. if len(v['fields']['role']) > 0:
  119. role_query_set = Role.objects.get(rid=v['fields']['role'][0])
  120. sqlDict["datas"][k]['fields']['role'].append(role_query_set.roleName)
  121. for val in res:
  122. if v['pk'] == val.userID:
  123. redisObj = RedisObject(db=3)
  124. if redisObj.get_data(key=val.userID):
  125. sqlDict["datas"][k]['fields']['online'] = True
  126. else:
  127. sqlDict["datas"][k]['fields']['online'] = False
  128. ue = UserExModel.objects.filter(userID=v['pk'])
  129. if ue.exists():
  130. sqlDict["datas"][k]['fields']['appBundleId'] = ue[0].appBundleId
  131. else:
  132. sqlDict["datas"][k]['fields']['appBundleId'] = ''
  133. sqlDict['count'] = count
  134. return response.json(0, sqlDict)
  135. return response.json(0, {'datas': [], 'count': 0})
  136. else:
  137. ue = UserExModel.objects.filter(appBundleId=app_id)
  138. if ue.exists():
  139. count = ue.count()
  140. res = ue[(page - 1) * line:page * line]
  141. sqlDict1 = CommonService.qs_to_dict(res)
  142. user_id=[]
  143. for k1, v1 in enumerate(sqlDict1["datas"]):
  144. user_id.extend([v1['fields']['userID']])
  145. print(user_id)
  146. queryset = Device_User.objects.filter(userID__in=user_id)
  147. sqlDict = CommonService.qs_to_dict(queryset)
  148. for k, v in enumerate(sqlDict["datas"]):
  149. if len(v['fields']['role']) > 0:
  150. role_query_set = Role.objects.get(rid=v['fields']['role'][0])
  151. sqlDict["datas"][k]['fields']['role'].append(role_query_set.roleName)
  152. for val in queryset:
  153. if v['pk'] == val.userID:
  154. redisObj = RedisObject(db=3)
  155. if redisObj.get_data(key=val.userID):
  156. sqlDict["datas"][k]['fields']['online'] = True
  157. else:
  158. sqlDict["datas"][k]['fields']['online'] = False
  159. ue = UserExModel.objects.filter(userID=v['pk'])
  160. if ue.exists():
  161. sqlDict["datas"][k]['fields']['appBundleId'] = ue[0].appBundleId
  162. else:
  163. sqlDict["datas"][k]['fields']['appBundleId'] = ''
  164. sqlDict['count'] = count
  165. return response.json(0, sqlDict)
  166. return response.json(0, {'datas': [], 'count': 0})