UserExController.py 7.7 KB

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