UidSetController.py 6.4 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/5/27 15:50
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: AliPayObject.py
  12. @Contact: pzb3076@163.com
  13. """
  14. import time
  15. import traceback
  16. import simplejson as json
  17. from django.utils.decorators import method_decorator
  18. from django.views.decorators.csrf import csrf_exempt
  19. from django.views.generic.base import View
  20. from Model.models import UidSetModel, Device_User, Device_Info
  21. from Object.ResponseObject import ResponseObject
  22. from Object.TokenObject import TokenObject
  23. from Service.CommonService import CommonService
  24. from Service.ModelService import ModelService
  25. '''
  26. # 管理员获取信息
  27. http://192.168.136.39:8000/uidset/adminQuery?token=local&page=1&line=10
  28. 管理员删除信息
  29. http://192.168.136.39:8000/uidset/adminDelete?token=local&id=2
  30. 管理员添加信息
  31. http://192.168.136.39:8000/uidset/adminAdd?token=local&uid=JW3684H8BSHG9TTM111A
  32. 管理员编辑信息
  33. http://192.168.136.39:8000/uidset/adminUpdate?token=local&id=6&content={"uid":"9999"}
  34. '''
  35. # 设备信息添加
  36. class UidSetView(View):
  37. @method_decorator(csrf_exempt)
  38. def dispatch(self, *args, **kwargs):
  39. return super(UidSetView, self).dispatch(*args, **kwargs)
  40. def get(self, request, *args, **kwargs):
  41. request.encoding = 'utf-8'
  42. operation = kwargs.get('operation')
  43. return self.validation(request.GET, request, operation)
  44. def post(self, request, *args, **kwargs):
  45. request.encoding = 'utf-8'
  46. operation = kwargs.get('operation')
  47. return self.validation(request.POST, request, operation)
  48. def validation(self, request_dict, request, operation):
  49. response = ResponseObject()
  50. if operation is None:
  51. return response.json(444, 'error path')
  52. token = request_dict.get('token', None)
  53. # 设备主键uid
  54. tko = TokenObject(token)
  55. response.lang = tko.lang
  56. if tko.code != 0:
  57. return response.json(tko.code)
  58. userID = tko.userID
  59. if operation == 'queryAll':
  60. return self.do_queryAll(request_dict, userID, response)
  61. elif operation == 'adminDelete':
  62. return self.do_admin_delete(request_dict, userID, response)
  63. elif operation == 'adminQuery':
  64. return self.do_admin_query(request_dict, userID, response)
  65. elif operation == 'adminAdd':
  66. return self.do_admin_add(request_dict, userID, response)
  67. elif operation == 'adminUpdate':
  68. return self.do_admin_update(request_dict, userID, response)
  69. else:
  70. return response.json(444, 'error path')
  71. def do_queryAll(self, request_dict, userID, response):
  72. uid_list = Device_Info.objects.filter(userID_id=userID).values_list('UID', flat=True)
  73. uid_set_qs = UidSetModel.objects.filter(uid__in=uid_list).values('uid', 'detect_status', 'detect_interval',
  74. 'version', 'ucode', 'p2p_region', 'tz',
  75. 'video_code', 'channel', 'cloud_vod')
  76. if uid_set_qs.exists():
  77. return response.json(0, list(uid_set_qs))
  78. else:
  79. return response.json(0)
  80. # 管理员删除
  81. def do_admin_delete(self, request_dict, userID, response):
  82. own_perm = ModelService.check_perm(userID, 20)
  83. if own_perm is True:
  84. id = request_dict.get('id')
  85. try:
  86. list = UidSetModel.objects.filter(id=id)
  87. if list.exists():
  88. list.delete()
  89. return response.json(0)
  90. else:
  91. return response.json(173)
  92. except Exception as e:
  93. print(repr(e))
  94. return response.json(424, repr(e))
  95. else:
  96. return response.json(404)
  97. # 管理员查询接口
  98. def do_admin_query(self, request_dict, userID, response):
  99. own_perm = ModelService.check_perm(userID, 20)
  100. if own_perm is True:
  101. page = request_dict.get('page', None)
  102. line = request_dict.get('line', None)
  103. page = int(page)
  104. line = int(line)
  105. omqs = UidSetModel.objects.all().order_by('-id')
  106. if not omqs.exists():
  107. return response.json(0, [])
  108. count = omqs.count()
  109. order_ql = omqs[(page - 1) * line:page * line]
  110. uidset_json = CommonService.qs_to_dict(order_ql)
  111. uidset_json['count'] = count
  112. return response.json(0, uidset_json)
  113. else:
  114. return response.json(404)
  115. # 管理员的添加
  116. def do_admin_add(self, request_dict, userID, response):
  117. own_perm = ModelService.check_perm(userID=userID, permID=40)
  118. if own_perm is not True:
  119. return response.json(404)
  120. uid = request_dict.get('uid', None)
  121. timestamp = int(time.time())
  122. param_flag = CommonService.get_param_flag(
  123. data=[uid])
  124. if param_flag is not True:
  125. return response.json(444)
  126. try:
  127. uidset = UidSetModel(
  128. uid=uid,
  129. addTime=timestamp,
  130. updTime=timestamp)
  131. uidset.save()
  132. return response.json(0)
  133. except Exception:
  134. errorInfo = traceback.format_exc()
  135. print(errorInfo)
  136. return response.json(500, {'details': errorInfo})
  137. # 管理员的编辑
  138. def do_admin_update(self, request_dict, userID, response):
  139. own_perm = ModelService.check_perm(userID=userID, permID=50)
  140. if own_perm is not True:
  141. return response.json(404)
  142. deviceContent = request_dict.get('content', None)
  143. id = request_dict.get('id', None)
  144. if not deviceContent or not id:
  145. return response.json(444, 'content,id')
  146. try:
  147. timestamp = int(time.time())
  148. deviceData = json.loads(deviceContent)
  149. uid_set = UidSetModel.objects.filter(id=id)
  150. if uid_set.exists():
  151. uid_set.update(updTime=timestamp, **deviceData)
  152. return response.json(0)
  153. else:
  154. return response.json(173)
  155. except Exception:
  156. errorInfo = traceback.format_exc()
  157. print(errorInfo)
  158. return response.json(500, {'details': errorInfo})