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