UIDPreview.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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 Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
  31. from Model.models import UID_Preview, Device_Info
  32. from Object.ResponseObject import ResponseObject
  33. from Service.ModelService import ModelService
  34. from Object.TokenObject import TokenObject
  35. # 设备信息添加
  36. class UIDPreview(View):
  37. def get(self, request, *args, **kwargs):
  38. request.encoding = 'utf-8'
  39. operation = kwargs.get('operation')
  40. return self.validation(request.GET, request, operation)
  41. def post(self, request, *args, **kwargs):
  42. request.encoding = 'utf-8'
  43. operation = kwargs.get('operation')
  44. return self.validation(request.POST, request, operation)
  45. def validation(self, request_dict, request, operation):
  46. response = ResponseObject()
  47. token = request_dict.get('token', None)
  48. # 设备主键uid
  49. tko = TokenObject(token)
  50. if tko.code == 0:
  51. response.lang = tko.lang
  52. userID = tko.userID
  53. if operation == 'add':
  54. return self.do_add(userID, request_dict, response)
  55. if operation == 'adminQuery':
  56. return self.do_admin_query(request_dict, userID, response)
  57. if operation == 'adminDelete':
  58. return self.do_admin_delete(request_dict, userID, response)
  59. else:
  60. return response.json(414)
  61. else:
  62. return response.json(tko.code)
  63. def do_add(self, userID, request_dict, response):
  64. nowTime = int(time.time())
  65. uid = request_dict.get('uid', None)
  66. channel = request_dict.get('channel', None)
  67. if all([uid, channel]):
  68. # auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  69. # bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
  70. auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  71. bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
  72. dvqs = Device_Info.objects.filter(UID=uid, userID_id=userID)
  73. upqs = UID_Preview.objects.filter(uid=uid, channel=channel)
  74. if dvqs.exists():
  75. if upqs.exists():
  76. try:
  77. is_update = upqs.update(updTime=nowTime)
  78. except Exception as e:
  79. print(repr(e))
  80. return response.json(177)
  81. else:
  82. if is_update:
  83. obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=uid, channel=channel)
  84. # 设置此签名URL在60秒内有效。
  85. url = bucket.sign_url('PUT', obj, 7200)
  86. return response.json(0, url)
  87. else:
  88. return response.json(177)
  89. else:
  90. create_data = {
  91. 'addTime': nowTime,
  92. 'updTime': nowTime,
  93. 'uid': uid,
  94. 'channel': channel
  95. }
  96. try:
  97. UID_Preview.objects.create(**create_data)
  98. except Exception as e:
  99. print(repr(e))
  100. return response.json(178)
  101. else:
  102. obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=uid, channel=channel)
  103. # 设置此签名URL在60秒内有效。
  104. url = bucket.sign_url('PUT', obj, 7200)
  105. return response.json(0, url)
  106. else:
  107. return response.json(14)
  108. else:
  109. return response.json(444, 'uid,channel')
  110. # 管理员查询接口
  111. def do_admin_query(self, request_dict, userID, response):
  112. own_perm = ModelService.check_perm(userID, 20)
  113. if own_perm is True:
  114. page = request_dict.get('page', None)
  115. line = request_dict.get('line', None)
  116. uid = request_dict.get('uid', None)
  117. channel = request_dict.get('channel', None)
  118. page = int(page)
  119. line = int(line)
  120. omqs = UID_Preview.objects.filter()
  121. # 筛选指定设备id的订单
  122. if uid:
  123. omqs = omqs.filter(uid=uid)
  124. if channel:
  125. omqs = omqs.filter(channel=channel)
  126. if not omqs.exists():
  127. return response.json(0, [])
  128. count = omqs.count()
  129. order_ql = omqs[(page - 1) * line:page * line].values("id", "uid", "channel", "addTime", "updTime")
  130. order_list = list(order_ql)
  131. return response.json(0, {'data': order_list, 'count': count})
  132. else:
  133. return response.json(404)
  134. def do_admin_delete(self, request_dict, userID, response):
  135. own_perm = ModelService.check_perm(userID, 20)
  136. if own_perm is True:
  137. id = request_dict.get('id')
  138. UID_Preview.objects.filter(id=id).delete()
  139. return response.json(0)
  140. else:
  141. return response.json(404)