UIDPreview.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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. # redisObj = RedisObject(db=8)
  75. # redisObj.del_data(key='uid_qs_'+userID)
  76. upqs = UID_Preview.objects.filter(uid=uid, channel=channel)
  77. if dvqs.exists():
  78. if upqs.exists():
  79. try:
  80. is_update = upqs.update(updTime=nowTime)
  81. except Exception as e:
  82. print(repr(e))
  83. return response.json(177)
  84. else:
  85. if is_update:
  86. obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=uid, channel=channel)
  87. # 设置此签名URL在60秒内有效。
  88. url = bucket.sign_url('PUT', obj, 7200)
  89. return response.json(0, url)
  90. else:
  91. return response.json(177)
  92. else:
  93. create_data = {
  94. 'addTime': nowTime,
  95. 'updTime': nowTime,
  96. 'uid': uid,
  97. 'channel': channel
  98. }
  99. try:
  100. UID_Preview.objects.create(**create_data)
  101. except Exception as e:
  102. print(repr(e))
  103. return response.json(178)
  104. else:
  105. obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=uid, channel=channel)
  106. # 设置此签名URL在60秒内有效。
  107. url = bucket.sign_url('PUT', obj, 7200)
  108. return response.json(0, url)
  109. else:
  110. return response.json(14)
  111. else:
  112. return response.json(444, 'uid,channel')
  113. # 管理员查询接口
  114. def do_admin_query(self, request_dict, userID, response):
  115. own_perm = ModelService.check_perm(userID, 20)
  116. if own_perm is True:
  117. page = request_dict.get('page', None)
  118. line = request_dict.get('line', None)
  119. uid = request_dict.get('uid', None)
  120. channel = request_dict.get('channel', None)
  121. page = int(page)
  122. line = int(line)
  123. omqs = UID_Preview.objects.filter()
  124. # 筛选指定设备id的订单
  125. if uid:
  126. omqs = omqs.filter(uid=uid)
  127. if channel:
  128. omqs = omqs.filter(channel=channel)
  129. if not omqs.exists():
  130. return response.json(0, [])
  131. count = omqs.count()
  132. order_ql = omqs[(page - 1) * line:page * line].values("id", "uid", "channel", "addTime", "updTime")
  133. order_list = list(order_ql)
  134. return response.json(0, {'data': order_list, 'count': count})
  135. else:
  136. return response.json(404)
  137. def do_admin_delete(self, request_dict, userID, response):
  138. own_perm = ModelService.check_perm(userID, 20)
  139. if own_perm is True:
  140. id = request_dict.get('id')
  141. # redisObj = RedisObject(db=8)
  142. # redisObj.del_data(key='uid_qs_' + userID)
  143. UID_Preview.objects.filter(id=id).delete()
  144. return response.json(0)
  145. else:
  146. return response.json(404)