CDKController.py 10 KB

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