CDKController.py 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  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: 2018/12/5 9:30
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: cloudstorage.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. import json
  15. import time
  16. import urllib
  17. import uuid
  18. import hashlib
  19. import boto3
  20. import oss2
  21. import paypalrestsdk
  22. import threading
  23. from aliyunsdkcore import client
  24. from aliyunsdksts.request.v20150401 import AssumeRoleRequest
  25. from boto3.session import Session
  26. from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
  27. from django.views.generic.base import View
  28. from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD, \
  29. SERVER_DOMAIN_SSL
  30. from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel, \
  31. ExperienceContextModel, CDKcontextModel
  32. from Object.AliPayObject import AliPayObject
  33. from Object.ResponseObject import ResponseObject
  34. from Object.TokenObject import TokenObject
  35. from Object.UidTokenObject import UidTokenObject
  36. from Service.CommonService import CommonService
  37. from Object.m3u8generate import PlaylistGenerator
  38. from Object.WechatPayObject import WechatPayObject
  39. from django.db.models import Q, F
  40. from django.http import StreamingHttpResponse
  41. SERVER_DOMAIN = 'http://test.dvema.com/'
  42. # 设备信息添加
  43. class CDKView(View):
  44. def get(self, request, *args, **kwargs):
  45. request.encoding = 'utf-8'
  46. operation = kwargs.get('operation')
  47. return self.validation(request.GET, request, operation)
  48. def post(self, request, *args, **kwargs):
  49. request.encoding = 'utf-8'
  50. operation = kwargs.get('operation')
  51. return self.validation(request.POST, request, operation)
  52. def validation(self, request_dict, request, operation):
  53. response = ResponseObject()
  54. if operation is None:
  55. return response.json(444, 'error path')
  56. else:
  57. token = request_dict.get('token', None)
  58. # 设备主键uid
  59. tko = TokenObject(token)
  60. response.lang = tko.lang
  61. if tko.code != 0:
  62. return response.json(tko.code)
  63. userID = tko.userID
  64. if operation == 'createCDK':
  65. return self.createCDK(request_dict, response)
  66. elif operation == 'deleteCDK':
  67. return self.deleteCDK(request_dict, response)
  68. elif operation == 'queryCDK':
  69. return self.queryCDK(request_dict, response)
  70. elif operation == 'saveOrEditCDKform':
  71. return self.saveOrEditCDKform(request_dict, response)
  72. elif operation == 'saveOrEditCDK':
  73. return self.saveOrEditCDK(request_dict, response)
  74. elif operation == 'downloadCDK':
  75. return self.downloadCDK(request_dict, response)
  76. def createCDK(self, request_dict, response):
  77. cdk_num = request_dict.get("cdknum", None)
  78. rank = request_dict.get('rank', None)
  79. order = request_dict.get('order', None)
  80. cdk_list = []
  81. for i in range(int(cdk_num)):
  82. nowTime = int(time.time())
  83. cdk = hashlib.md5((str(uuid.uuid1()) + str(nowTime)).encode('utf-8')).hexdigest()
  84. cdk_model = CDKcontextModel(
  85. cdk=cdk,
  86. create_time=nowTime,
  87. valid_time=0,
  88. is_activate=0,
  89. rank_id=rank,
  90. order=order,
  91. )
  92. cdk_list.append(cdk_model)
  93. try:
  94. CDKcontextModel.objects.bulk_create(cdk_list)
  95. except Exception as e:
  96. print(repr(e))
  97. return response.json(404, repr(e))
  98. else:
  99. return response.json(0)
  100. def queryCDK(self, request_dict, response):
  101. page = int(request_dict.get('page', None))
  102. line = int(request_dict.get('line', None))
  103. # channel = request_dict.get('channel', None)
  104. cdk = request_dict.get('cdk', None)
  105. order = request_dict.get('order', None)
  106. is_activate = request_dict.get('is_activate', None)
  107. lang = request_dict.get('lang', 'cn')
  108. searchVal = ''
  109. if cdk:
  110. searchVal = cdk.strip()
  111. elif order:
  112. searchVal = order.strip()
  113. elif is_activate:
  114. searchVal = is_activate.strip()
  115. if page and line:
  116. cdk_qs = CDKcontextModel.objects.filter().all() # values('cdk','create_time','valid_time','is_activate','rank__id','order__id')
  117. if searchVal:
  118. if cdk:
  119. cdk_qs = cdk_qs.filter(cdk__contains=searchVal)
  120. elif order:
  121. cdk_qs = cdk_qs.filter(order=searchVal)
  122. elif is_activate:
  123. cdk_qs = cdk_qs.filter(is_activate=searchVal)
  124. cdk_qs = cdk_qs.filter(rank__lang__lang=lang)
  125. cdk_qs = cdk_qs.annotate(rank__title=F('rank__lang__title'))
  126. cdk_qs = cdk_qs.values('id', 'cdk', 'create_time', 'valid_time', 'is_activate', 'rank__id', 'rank__title', 'order',
  127. 'create_time')
  128. cdk_qs = cdk_qs.order_by('-create_time') # 根据CDK创建时间降序排序
  129. count = cdk_qs.count()
  130. cdk_qs = cdk_qs[(page - 1) * line:page * line]
  131. # cdk_dict = {}
  132. # for cdk in cdk_qs:
  133. # cdk_dict[cdk['id']] = {'id': cdk['id'], 'cdk': cdk['cdk'], 'create_time': cdk['create_time'],
  134. # 'valid_time': cdk['valid_time'], 'is_activate': cdk['is_activate'],
  135. # 'rank': cdk['rank__id'], 'order': cdk['order']}
  136. res = {
  137. 'datas': list(cdk_qs),
  138. 'count': count
  139. }
  140. return response.json(0, res)
  141. else:
  142. return response.json(444, 'page,line')
  143. def deleteCDK(self, request_dict, response):
  144. cdk_id = request_dict.get("id", None)
  145. lang = request_dict.get("lang", 'cn')
  146. try:
  147. CDKcontextModel.objects.get(cdk=cdk_id).delete()
  148. except Exception as e:
  149. return response.json(500, repr(e))
  150. else:
  151. page = int(request_dict.get('page', None))
  152. line = int(request_dict.get('line', None))
  153. # channel = request_dict.get('channel', None)
  154. cdk = request_dict.get('cdk', None)
  155. order = request_dict.get('order', None)
  156. is_activate = request_dict.get('is_activate', None)
  157. searchVal = ''
  158. if cdk:
  159. searchVal = cdk.strip()
  160. elif order:
  161. searchVal = order.strip()
  162. elif is_activate:
  163. searchVal = is_activate.strip()
  164. if page and line:
  165. cdk_qs = CDKcontextModel.objects.filter().all() # values('cdk','create_time','valid_time','is_activate','rank__id','order__id')
  166. if searchVal:
  167. if cdk:
  168. cdk_qs = cdk_qs.filter(cdk__contains=searchVal)
  169. elif order:
  170. cdk_qs = cdk_qs.filter(order=searchVal)
  171. elif is_activate:
  172. cdk_qs = cdk_qs.filter(is_activate=searchVal)
  173. cdk_qs = cdk_qs.filter(rank__lang__lang=lang)
  174. cdk_qs = cdk_qs.annotate(rank__title=F('rank__lang__title'))
  175. cdk_qs = cdk_qs.values('id', 'cdk', 'create_time', 'valid_time', 'is_activate', 'rank__id',
  176. 'rank__title', 'order',
  177. 'create_time')
  178. cdk_qs = cdk_qs.order_by('-create_time') # 根据CDK创建时间降序排序
  179. count = cdk_qs.count()
  180. cdk_qs = cdk_qs[(page - 1) * line:page * line]
  181. res = {
  182. 'datas': list(cdk_qs),
  183. 'count': count
  184. }
  185. return response.json(0, res)
  186. def saveOrEditCDK(self, request_dict, response):
  187. cdk_id = request_dict.get("id", None)
  188. cdk = request_dict.get('cdk', None)
  189. valid_time = request_dict.get('valid_time', None)
  190. is_activate = request_dict.get('is_activate', None)
  191. rank = request_dict.get('rank', None)
  192. try:
  193. if cdk_id:
  194. if cdk or valid_time or is_activate or rank:
  195. update_dict = {}
  196. if cdk:
  197. update_dict['cdk'] = cdk
  198. if valid_time:
  199. update_dict['valid_time'] = valid_time
  200. if is_activate:
  201. update_dict['is_activate'] = is_activate
  202. if rank:
  203. update_dict['rank'] = rank
  204. CDKcontextModel.objects.filter(id=cdk_id).update(**update_dict)
  205. except Exception as e:
  206. return response.json(500, repr(e))
  207. else:
  208. return response.json(0)
  209. def downloadCDK(self,request_dict, response):
  210. region = request_dict.get('region', None)
  211. content = ''
  212. if region == 'cn':
  213. # 下载国内未使用激活码
  214. content += '激活码(国内)\n'
  215. cdk_inactivate_qs = CDKcontextModel.objects.filter(is_activate=0, rank__bucket__mold=0).values('cdk')
  216. else:
  217. # 下载国外未使用激活码
  218. content += '激活码(国外)\n'
  219. cdk_inactivate_qs = CDKcontextModel.objects.filter(is_activate=0, rank__bucket__mold=1).values('cdk')
  220. for cdk_inactivate in cdk_inactivate_qs:
  221. content += cdk_inactivate['cdk'] + '\n'
  222. # print(content)
  223. response = StreamingHttpResponse(content)
  224. response['Content-Type'] = 'application/octet-stream'
  225. response['Content-Disposition'] = 'attachment;filename="CDK.txt"'
  226. return response