UIDPreview.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: AnsjerFormal
  7. @software: PyCharm
  8. @DATE: 2019/5/13 17:35
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: UIDPreview.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. # !/usr/bin/env python3
  15. # -*- coding: utf-8 -*-
  16. """
  17. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  18. @AUTHOR: ASJRD018
  19. @NAME: AnsjerFormal
  20. @software: PyCharm
  21. @DATE: 2018/12/6 10:53
  22. @Version: python3.6
  23. @MODIFY DECORD:ansjer dev
  24. @file: OrderContrller.py
  25. @Contact: chanjunkai@163.com
  26. """
  27. import time
  28. import oss2
  29. from django.views.generic.base import View
  30. from Model.models import UID_Preview, Device_Info
  31. from Object.ResponseObject import ResponseObject
  32. from Service.ModelService import ModelService
  33. from Object.TokenObject import TokenObject
  34. from django.conf import settings
  35. OSS_STS_ACCESS_KEY = settings.OSS_STS_ACCESS_KEY
  36. OSS_STS_ACCESS_SECRET = settings.OSS_STS_ACCESS_SECRET
  37. # 设备信息添加
  38. class UIDPreview(View):
  39. def get(self, request, *args, **kwargs):
  40. request.encoding = 'utf-8'
  41. operation = kwargs.get('operation')
  42. return self.validation(request.GET, request, operation)
  43. def post(self, request, *args, **kwargs):
  44. request.encoding = 'utf-8'
  45. operation = kwargs.get('operation')
  46. return self.validation(request.POST, request, operation)
  47. def validation(self, request_dict, request, operation):
  48. response = ResponseObject()
  49. token = request_dict.get('token', None)
  50. # 设备主键uid
  51. tko = TokenObject(token)
  52. if tko.code == 0:
  53. response.lang = tko.lang
  54. userID = tko.userID
  55. if operation == 'add':
  56. return self.do_add(userID, request_dict, response)
  57. if operation == 'adminQuery':
  58. return self.do_admin_query(request_dict, userID, response)
  59. if operation == 'adminDelete':
  60. return self.do_admin_delete(request_dict, userID, response)
  61. else:
  62. return response.json(414)
  63. else:
  64. return response.json(tko.code)
  65. def do_add(self, userID, request_dict, response):
  66. nowTime = int(time.time())
  67. uid = request_dict.get('uid', None)
  68. channel = request_dict.get('channel', None)
  69. if all([uid, channel]):
  70. # auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  71. # bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
  72. auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  73. bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
  74. dvqs = Device_Info.objects.filter(UID=uid, userID_id=userID)
  75. upqs = UID_Preview.objects.filter(uid=uid, channel=channel)
  76. if dvqs.exists():
  77. if upqs.exists():
  78. try:
  79. is_update = upqs.update(updTime=nowTime)
  80. except Exception as e:
  81. print(repr(e))
  82. return response.json(177)
  83. else:
  84. if is_update:
  85. obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=uid, channel=channel)
  86. # 设置此签名URL在60秒内有效。
  87. url = bucket.sign_url('PUT', obj, 7200)
  88. return response.json(0, url)
  89. else:
  90. return response.json(177)
  91. else:
  92. create_data = {
  93. 'addTime': nowTime,
  94. 'updTime': nowTime,
  95. 'uid': uid,
  96. 'channel': channel
  97. }
  98. try:
  99. UID_Preview.objects.create(**create_data)
  100. except Exception as e:
  101. print(repr(e))
  102. return response.json(178)
  103. else:
  104. obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=uid, channel=channel)
  105. # 设置此签名URL在60秒内有效。
  106. url = bucket.sign_url('PUT', obj, 7200)
  107. return response.json(0, url)
  108. else:
  109. return response.json(14)
  110. else:
  111. return response.json(444, 'uid,channel')
  112. # 管理员查询接口
  113. def do_admin_query(self, request_dict, userID, response):
  114. own_perm = ModelService.check_perm(userID, 20)
  115. if own_perm is True:
  116. page = request_dict.get('page', None)
  117. line = request_dict.get('line', None)
  118. uid = request_dict.get('uid', None)
  119. channel = request_dict.get('channel', None)
  120. page = int(page)
  121. line = int(line)
  122. omqs = UID_Preview.objects.filter()
  123. # 筛选指定设备id的订单
  124. if uid:
  125. omqs = omqs.filter(uid=uid)
  126. if channel:
  127. omqs = omqs.filter(channel=channel)
  128. if not omqs.exists():
  129. return response.json(0, [])
  130. count = omqs.count()
  131. order_ql = omqs[(page - 1) * line:page * line].values("id", "uid", "channel", "addTime", "updTime")
  132. order_list = list(order_ql)
  133. return response.json(0, {'data': order_list, 'count': count})
  134. else:
  135. return response.json(404)
  136. def do_admin_delete(self, request_dict, userID, response):
  137. own_perm = ModelService.check_perm(userID, 20)
  138. if own_perm is True:
  139. id = request_dict.get('id')
  140. UID_Preview.objects.filter(id=id).delete()
  141. return response.json(0)
  142. else:
  143. return response.json(404)