UserExController.py 7.6 KB

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