Browse Source

激活码

chenshibin 4 years ago
parent
commit
f9cd29ad5f
1 changed files with 120 additions and 2 deletions
  1. 120 2
      AdminController/ServeManagementController.py

+ 120 - 2
AdminController/ServeManagementController.py

@@ -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
+
+