|
@@ -1,5 +1,6 @@
|
|
|
#!/usr/bin/env python3
|
|
|
# -*- coding: utf-8 -*-
|
|
|
+import hashlib
|
|
|
import json
|
|
|
import time
|
|
|
import urllib
|
|
@@ -8,9 +9,9 @@ import boto3
|
|
|
import threading
|
|
|
import logging
|
|
|
from boto3.session import Session
|
|
|
-from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
|
|
|
+from django.http import JsonResponse, HttpResponseRedirect, HttpResponse, StreamingHttpResponse
|
|
|
from django.views.generic.base import View
|
|
|
-from Model.models import Device_Info, Role, MenuModel, VodBucketModel
|
|
|
+from Model.models import Device_Info, Role, MenuModel, VodBucketModel, CDKcontextModel, Store_Meal
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
from Object.UidTokenObject import UidTokenObject
|
|
@@ -47,9 +48,18 @@ class serveManagement(View):
|
|
|
return self.getVodBucketList(userID, request_dict, response)
|
|
|
elif operation == 'addOrEditVodBucket':
|
|
|
return self.addOrEditVodBucket(userID, request_dict, response)
|
|
|
+ elif operation == 'getCdkList':
|
|
|
+ return self.getCdkList(userID, request_dict, response)
|
|
|
+ elif operation == 'createCdk':
|
|
|
+ return self.createCdk(request_dict, response)
|
|
|
+ elif operation == 'deleteCdk':
|
|
|
+ return self.deleteCdk(request_dict, response)
|
|
|
+ elif operation == 'downloadCDK':
|
|
|
+ return self.downloadCDK(request_dict, response)
|
|
|
else:
|
|
|
return response.json(404)
|
|
|
|
|
|
+
|
|
|
def getVodBucketList(self, userID, request_dict, response):
|
|
|
# 获取存储桶列表
|
|
|
pageNo = request_dict.get('pageNo', None)
|
|
@@ -94,3 +104,111 @@ class serveManagement(View):
|
|
|
except Exception as e:
|
|
|
print(e)
|
|
|
return response.json(500, repr(e))
|
|
|
+
|
|
|
+
|
|
|
+ def getCdkList(self, userID, request_dict, response):
|
|
|
+ # 获取激活码列表
|
|
|
+ pageNo = request_dict.get('pageNo', None)
|
|
|
+ pageSize = request_dict.get('pageSize', None)
|
|
|
+ cdk = request_dict.get('cdk', None)
|
|
|
+ order = request_dict.get('order', None)
|
|
|
+ is_activate = request_dict.get('is_activate', None)
|
|
|
+ mold = request_dict.get('mold', None)
|
|
|
+ lang = request_dict.get('lang', 'cn')
|
|
|
+ if not all([pageNo, pageSize]):
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ page = int(pageNo)
|
|
|
+ line = int(pageSize)
|
|
|
+ try:
|
|
|
+ if cdk:
|
|
|
+ searchVal = cdk.strip()
|
|
|
+ if order:
|
|
|
+ searchVal = order.strip()
|
|
|
+ if is_activate:
|
|
|
+ searchVal = is_activate.strip()
|
|
|
+
|
|
|
+ cdk_qs = CDKcontextModel.objects.filter().all()
|
|
|
+ if cdk:
|
|
|
+ cdk_qs = cdk_qs.filter(cdk__contains=searchVal)
|
|
|
+ if order:
|
|
|
+ cdk_qs = cdk_qs.filter(order__contains=searchVal)
|
|
|
+ if is_activate:
|
|
|
+ cdk_qs = cdk_qs.filter(is_activate=searchVal)
|
|
|
+ if mold:
|
|
|
+ cdk_qs = cdk_qs.filter(rank__bucket__mold=mold)
|
|
|
+
|
|
|
+
|
|
|
+ cdk_qs = cdk_qs.filter(rank__lang__lang=lang)
|
|
|
+ cdk_qs = cdk_qs.annotate(rank__title=F('rank__lang__title'))
|
|
|
+ cdk_qs = cdk_qs.values('id', 'cdk', 'create_time', 'valid_time', 'is_activate', 'rank__id', 'rank__title',
|
|
|
+ 'order',
|
|
|
+ 'create_time','rank__bucket__mold')
|
|
|
+ cdk_qs = cdk_qs.order_by('-create_time') # 根据CDK创建时间降序排序
|
|
|
+ count = cdk_qs.count()
|
|
|
+ cdk_qs = cdk_qs[(page - 1) * line:page * line]
|
|
|
+ return response.json(
|
|
|
+ 0, {'list': list(cdk_qs), 'total': count})
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ def createCdk(self, request_dict, response):
|
|
|
+ cdk_num = request_dict.get("cdknum", None)
|
|
|
+ mold = request_dict.get('mold', None)
|
|
|
+ order = request_dict.get('order', None)
|
|
|
+ cdk_list = []
|
|
|
+ sm_qs = Store_Meal.objects.filter(pay_type__payment='cdk_pay',bucket__mold=mold)
|
|
|
+ if sm_qs.exists:
|
|
|
+ rank = sm_qs[0].id
|
|
|
+ for i in range(int(cdk_num)):
|
|
|
+ nowTime = int(time.time())
|
|
|
+ cdk = hashlib.md5((str(uuid.uuid1()) + str(nowTime)).encode('utf-8')).hexdigest()
|
|
|
+ cdk_model = CDKcontextModel(
|
|
|
+ cdk=cdk,
|
|
|
+ create_time=nowTime,
|
|
|
+ valid_time=0,
|
|
|
+ is_activate=0,
|
|
|
+ rank_id=rank,
|
|
|
+ order=order,
|
|
|
+ )
|
|
|
+ cdk_list.append(cdk_model)
|
|
|
+ try:
|
|
|
+ CDKcontextModel.objects.bulk_create(cdk_list)
|
|
|
+ except Exception as e:
|
|
|
+ print(repr(e))
|
|
|
+ return response.json(404, repr(e))
|
|
|
+ else:
|
|
|
+ return response.json(0)
|
|
|
+
|
|
|
+ return response.json(0)
|
|
|
+
|
|
|
+ def deleteCdk(self, request_dict, response):
|
|
|
+ cdk_id = request_dict.get("id", None)
|
|
|
+ try:
|
|
|
+ CDKcontextModel.objects.get(id=cdk_id).delete()
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
+ def downloadCDK(self,request_dict, response):
|
|
|
+ region = request_dict.get('region', None)
|
|
|
+ content = ''
|
|
|
+ if region == 'cn':
|
|
|
+ # 下载国内未使用激活码
|
|
|
+ content += '激活码(国内)\n'
|
|
|
+ cdk_inactivate_qs = CDKcontextModel.objects.filter(is_activate=0, rank__bucket__mold=0).values('cdk')
|
|
|
+ else:
|
|
|
+ # 下载国外未使用激活码
|
|
|
+ content += '激活码(国外)\n'
|
|
|
+ cdk_inactivate_qs = CDKcontextModel.objects.filter(is_activate=0, rank__bucket__mold=1).values('cdk')
|
|
|
+ for cdk_inactivate in cdk_inactivate_qs:
|
|
|
+ content += cdk_inactivate['cdk'] + '\n'
|
|
|
+ # print(content)
|
|
|
+
|
|
|
+ response = StreamingHttpResponse(content)
|
|
|
+ response['Content-Type'] = 'application/octet-stream'
|
|
|
+ response['Content-Disposition'] = 'attachment;filename="CDK.txt"'
|
|
|
+ return response
|
|
|
+
|
|
|
+
|