| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 | #!/usr/bin/env python3# -*- coding: utf-8 -*-"""@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.@AUTHOR: ASJRD018@NAME: AnsjerFormal@software: PyCharm@DATE: 2018/12/5 9:30@Version: python3.6@MODIFY DECORD:ansjer dev@file: cloudstorage.py@Contact: chanjunkai@163.com"""import jsonimport timeimport urllibimport uuidimport hashlibimport boto3import oss2import paypalrestsdkimport threadingfrom aliyunsdkcore import clientfrom aliyunsdksts.request.v20150401 import AssumeRoleRequestfrom boto3.session import Sessionfrom django.http import JsonResponse, HttpResponseRedirect, HttpResponsefrom django.views.generic.base import Viewfrom Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD, \    SERVER_DOMAIN_SSLfrom Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel, \    ExperienceContextModel, CDKcontextModelfrom Object.AliPayObject import AliPayObjectfrom Object.ResponseObject import ResponseObjectfrom Object.TokenObject import TokenObjectfrom Object.UidTokenObject import UidTokenObjectfrom Service.CommonService import CommonServicefrom Object.m3u8generate import PlaylistGeneratorfrom Object.WechatPayObject import WechatPayObjectfrom django.db.models import Qfrom django.http import StreamingHttpResponseSERVER_DOMAIN = 'http://test.dvema.com/'# 设备信息添加class CDKView(View):    def get(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation')        return self.validation(request.GET, request, operation)    def post(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation')        return self.validation(request.POST, request, operation)    def validation(self, request_dict, request, operation):        response = ResponseObject()        if operation is None:            return response.json(444, 'error path')        else:            token = request_dict.get('token', None)            # 设备主键uid            tko = TokenObject(token)            response.lang = tko.lang            if tko.code != 0:                return response.json(tko.code)            userID = tko.userID            if operation == 'createCDK':                return self.createCDK(request_dict, response)            elif operation == 'deleteCDK':                return self.deleteCDK(request_dict, response)            elif operation == 'queryCDK':                return self.queryCDK(request_dict, response)            elif operation == 'saveOrEditCDKform':                return self.saveOrEditCDKform(request_dict, response)            elif operation == 'saveOrEditCDK':                return self.saveOrEditCDK(request_dict, response)            elif operation == 'downloadCDK':                return self.downloadCDK(response)    def createCDK(self, request_dict, response):        cdk_num = request_dict.get("cdknum", None)        rank = request_dict.get('rank', None)        order = request_dict.get('order', None)        cdk_list = []        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)    def queryCDK(self, request_dict, response):        page = int(request_dict.get('page', None))        line = int(request_dict.get('line', None))        # channel = request_dict.get('channel', None)        cdk = request_dict.get('cdk', None)        order = request_dict.get('order', None)        is_activate = request_dict.get('is_activate', None)        searchVal = ''        if cdk:            searchVal = cdk.strip()        elif order:            searchVal = order.strip()        elif is_activate:            searchVal = is_activate.strip()        if page and line:            cdk_qs = CDKcontextModel.objects.filter().all()  # values('cdk','create_time','valid_time','is_activate','rank__id','order__id')            if searchVal:                if cdk:                    cdk_qs = cdk_qs.filter(cdk__contains=searchVal)                elif order:                    cdk_qs = cdk_qs.filter(order=searchVal)                elif is_activate:                    cdk_qs = cdk_qs.filter(is_activate=searchVal)            cdk_qs = cdk_qs.values('id', 'cdk', 'create_time', 'valid_time', 'is_activate', 'rank__id', 'rank__title', 'order',                                   'create_time')            cdk_qs = cdk_qs.order_by('-create_time')  # 根据CDK创建时间降序排序            count = cdk_qs.count()            cdk_qs = cdk_qs[(page - 1) * line:page * line]            # cdk_dict = {}            # for cdk in cdk_qs:            #     cdk_dict[cdk['id']] = {'id': cdk['id'], 'cdk': cdk['cdk'], 'create_time': cdk['create_time'],            #                            'valid_time': cdk['valid_time'], 'is_activate': cdk['is_activate'],            #                            'rank': cdk['rank__id'], 'order': cdk['order']}            res = {                'datas': list(cdk_qs),                'count': count            }            return response.json(0, res)        else:            return response.json(444, 'page,line')    def deleteCDK(self, request_dict, response):        cdk_id = request_dict.get("id", None)        try:            CDKcontextModel.objects.get(cdk=cdk_id).delete()        except Exception as e:            return response.json(500, repr(e))        else:            page = int(request_dict.get('page', None))            line = int(request_dict.get('line', None))            # channel = request_dict.get('channel', None)            cdk = request_dict.get('cdk', None)            order = request_dict.get('order', None)            is_activate = request_dict.get('is_activate', None)            searchVal = ''            if cdk:                searchVal = cdk.strip()            elif order:                searchVal = order.strip()            elif is_activate:                searchVal = is_activate.strip()            if page and line:                cdk_qs = CDKcontextModel.objects.filter().all()  # values('cdk','create_time','valid_time','is_activate','rank__id','order__id')                if searchVal:                    if cdk:                        cdk_qs = cdk_qs.filter(cdk__contains=searchVal)                    elif order:                        cdk_qs = cdk_qs.filter(order=searchVal)                    elif is_activate:                        cdk_qs = cdk_qs.filter(is_activate=searchVal)                cdk_qs = cdk_qs.values('id', 'cdk', 'create_time', 'valid_time', 'is_activate', 'rank__id',                                       'rank__title', 'order',                                       'create_time')                cdk_qs = cdk_qs.order_by('-create_time')  # 根据CDK创建时间降序排序                count = cdk_qs.count()                cdk_qs = cdk_qs[(page - 1) * line:page * line]                res = {                    'datas': list(cdk_qs),                    'count': count                }                return response.json(0, res)    def saveOrEditCDK(self, request_dict, response):        cdk_id = request_dict.get("id", None)        cdk = request_dict.get('cdk', None)        valid_time = request_dict.get('valid_time', None)        is_activate = request_dict.get('is_activate', None)        rank = request_dict.get('rank', None)        try:            if cdk_id:                if cdk or valid_time or is_activate or rank:                    update_dict = {}                    if cdk:                        update_dict['cdk'] = cdk                    if valid_time:                        update_dict['valid_time'] = valid_time                    if is_activate:                        update_dict['is_activate'] = is_activate                    if rank:                        update_dict['rank'] = rank                    CDKcontextModel.objects.filter(id=cdk_id).update(**update_dict)        except Exception as e:            return response.json(500, repr(e))        else:            return response.json(0)    def downloadCDK(self, response):        content = ''        cdk_inactivate_qs = CDKcontextModel.objects.filter(is_activate=0).values('cdk')        content += '激活码\n'        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
 |