chenjunkai 6 жил өмнө
parent
commit
70e7b84d8e

+ 3 - 2
Ansjer/urls.py

@@ -5,8 +5,7 @@ from django.urls import path, re_path
 from Controller import FeedBackInfo, EquipmentOTA, EquipmentInfo, EquipmentSensor, StreamMedia, AdminManage, AppInfo, \
 from Controller import FeedBackInfo, EquipmentOTA, EquipmentInfo, EquipmentSensor, StreamMedia, AdminManage, AppInfo, \
     AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, \
     AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, \
     EquipmentManager, LogManager, PermissionManager, OTAEquipment, shareUserPermission, UserManger, CheckUserData, \
     EquipmentManager, LogManager, PermissionManager, OTAEquipment, shareUserPermission, UserManger, CheckUserData, \
-    UserController, CloudVod, OrderContrller
-
+    UserController, CloudVod, OrderContrller,VodBucket
 urlpatterns = [
 urlpatterns = [
     url(r'^account/authcode$', UserController.authCodeView.as_view()),
     url(r'^account/authcode$', UserController.authCodeView.as_view()),
     url(r'^account/register$', UserController.registerView.as_view()),
     url(r'^account/register$', UserController.registerView.as_view()),
@@ -114,6 +113,8 @@ urlpatterns = [
     url(r'^meal/(?P<operation>.*)$', MealManage.MealView.as_view()),
     url(r'^meal/(?P<operation>.*)$', MealManage.MealView.as_view()),
     url(r'^order/(?P<operation>.*)$', OrderContrller.OrderView.as_view()),
     url(r'^order/(?P<operation>.*)$', OrderContrller.OrderView.as_view()),
 
 
+    url(r'^vodBucket/(?P<operation>.*)$', VodBucket.VodBucketView.as_view()),
+
     # 新的设备接口
     # 新的设备接口
     path('Test', Test.Test.as_view()),
     path('Test', Test.Test.as_view()),
     # 路由加参数参考
     # 路由加参数参考

+ 4 - 2
Controller/CloudVod.py

@@ -415,8 +415,9 @@ class CloudVodView(View):
         qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("rank", "channel")
         qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("rank", "channel")
         if not qs.exists():
         if not qs.exists():
             return response.json(10, '设备未购买')
             return response.json(10, '设备未购买')
-        time = int(time)
-        VodHlsModel.objects.create(uid=UID, channel=channel, time=time)
+        nowTime = int(time)
+        # endTime = int(time)+
+        VodHlsModel.objects.create(uid=UID, channel=channel, time=nowTime)
         return response.json(0)
         return response.json(0)
 
 
     def do_get_playlist(self, request_dict, userID, response):
     def do_get_playlist(self, request_dict, userID, response):
@@ -428,6 +429,7 @@ class CloudVodView(View):
         if not dvqs.exists():
         if not dvqs.exists():
             return response.json(10, '无设备')
             return response.json(10, '无设备')
         UID = dvqs[0]["UID"]
         UID = dvqs[0]["UID"]
+        time.time()
         qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("rank", "channel")
         qs = Device_Meal.objects.filter(uid=UID, channel=channel, status=1).values("rank", "channel")
         if not qs.exists():
         if not qs.exists():
             return response.json(10, '设备未购买')
             return response.json(10, '设备未购买')

+ 112 - 0
Controller/VodBucket.py

@@ -0,0 +1,112 @@
+#!/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/15 15:30
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: VodBucket.py
+@Contact: chanjunkai@163.com
+"""
+import datetime
+import json
+import time
+
+import oss2
+import paypalrestsdk
+from aliyunsdkcore import client
+from aliyunsdksts.request.v20150401 import AssumeRoleRequest
+from django.http import JsonResponse
+from django.utils import timezone
+from django.utils.decorators import method_decorator
+from django.views.decorators.csrf import csrf_exempt
+from django.views.generic.base import View
+import urllib
+from var_dump import var_dump
+from Ansjer.config import OSS_BUCKET_ENDPOINT, OSS_BUCKET_VOD_LIST, OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, \
+    OSS_REGION_ID, OSS_ROLE_ARN, SERVER_DOMAIN
+from Model.models import Device_Meal, Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, VodBucketModel
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+from Object.UidTokenObject import UidTokenObject
+from Service.CommonService import CommonService
+from Service.ModelService import ModelService
+
+
+class VodBucketView(View):
+    @method_decorator(csrf_exempt)
+    def dispatch(self, *args, **kwargs):
+        return super(VodBucketView, self).dispatch(*args, **kwargs)
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.GET, operation)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        request_dict = json.loads(request.body.decode('utf-8'))
+        return self.validation(request_dict, operation)
+
+    def validation(self, request_dict, operation):
+        response = ResponseObject()
+        if operation is None:
+            return response.json(444, 'error path')
+        token = request_dict.get('token', None)
+        # 设备主键uid
+        tko = TokenObject(token)
+        tko.valid()
+        response.lang = tko.lang
+        if tko.code != 0:
+            return response.json(tko.code)
+        userID = tko.userID
+        request_dict.pop('token')
+        own_perm = ModelService.check_permission(userID, 50)
+        if not own_perm:
+            return response.json(404)
+        if operation == 'add':
+            return self.do_add(request_dict, response)
+        elif operation == 'delete':
+            return self.do_delete(request_dict, response)
+        elif operation == 'update':
+            return self.do_update(request_dict, response)
+        elif operation == 'query':
+            return self.do_query(response)
+        else:
+            return response.json(414)
+
+    def do_add(self, request_dict, response):
+        nowTime = int(time.time())
+        try:
+            VodBucketModel.objects.create(addTime=nowTime, updTime=nowTime, **request_dict)
+        except Exception as e:
+            return response.json(10, repr(e))
+        res = list(VodBucketModel.objects.values())
+        return response.json(0, res)
+
+    def do_query(self, response):
+        res = list(VodBucketModel.objects.values())
+        return response.json(0, res)
+
+    def do_update(self, request_dict, response):
+        nowTime = int(time.time())
+        id = request_dict.get('id', None)
+        try:
+            VodBucketModel.objects.filter(id=id).update(updTime=nowTime, **request_dict)
+        except Exception as e:
+            return response.json(10, repr(e))
+        res = list(VodBucketModel.objects.values())
+        return response.json(0, res)
+
+    def do_delete(self, request, response):
+        id = request.get('id', None)
+        try:
+            VodBucketModel.objects.filter(id=id).delete()
+        except Exception as e:
+            return response.json(10, repr(e))
+        res = list(VodBucketModel.objects.values())
+        return response.json(0, res)

+ 28 - 3
Model/models.py

@@ -454,15 +454,35 @@ class Feedback_Info(models.Model):
         ordering = ('id',)
         ordering = ('id',)
 
 
 
 
+# 存储通表
+class VodBucketModel(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='主键')
+    bucket = models.CharField(max_length=30, verbose_name='设备UID')
+    storeDay = models.IntegerField(default=0, verbose_name='存储生命周期(天)')
+    content = models.TextField(verbose_name='描述')
+    addTime = models.IntegerField(verbose_name='添加时间', default=0)
+    updTime = models.IntegerField(verbose_name='更新时间', default=0)
+
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'vod_bucket'
+        verbose_name = u'存储通信息'
+        verbose_name_plural = verbose_name
+        ordering = ('-id',)
+
+
 class Store_Meal(models.Model):
 class Store_Meal(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增ID')
     id = models.AutoField(primary_key=True, verbose_name=u'自增ID')
     title = models.CharField(blank=True, max_length=32, verbose_name=u'标题')
     title = models.CharField(blank=True, max_length=32, verbose_name=u'标题')
-    currency = models.CharField(blank=True,default='USD', max_length=32, verbose_name=u'货币')
+    currency = models.CharField(blank=True, default='USD', max_length=32, verbose_name=u'货币')
     price = models.CharField(blank=True, max_length=32, verbose_name=u'价格')
     price = models.CharField(blank=True, max_length=32, verbose_name=u'价格')
     day = models.IntegerField(default=0, blank=True, verbose_name=u'套餐天数')
     day = models.IntegerField(default=0, blank=True, verbose_name=u'套餐天数')
     content = models.TextField(blank=True, null=True, verbose_name=u'描述')
     content = models.TextField(blank=True, null=True, verbose_name=u'描述')
     add_time = models.DateTimeField(blank=True, null=True, verbose_name=u'加入时间', auto_now_add=True)
     add_time = models.DateTimeField(blank=True, null=True, verbose_name=u'加入时间', auto_now_add=True)
     update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
     update_time = models.DateTimeField(blank=True, verbose_name=u'更新时间', auto_now=True)
+    bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id',on_delete=models.CASCADE, default=1, verbose_name='存储空间')
     # storeDay = models.IntegerField(default=0, blank=True, verbose_name=u'存储的天数')
     # storeDay = models.IntegerField(default=0, blank=True, verbose_name=u'存储的天数')
 
 
     def __str__(self):
     def __str__(self):
@@ -578,6 +598,8 @@ class VodHlsModel(models.Model):
     uid = models.CharField(max_length=20, verbose_name='设备UID')
     uid = models.CharField(max_length=20, verbose_name='设备UID')
     channel = models.SmallIntegerField(default=0, verbose_name='通道')
     channel = models.SmallIntegerField(default=0, verbose_name='通道')
     time = models.IntegerField(verbose_name='播放列表名字时间戳', default=0)
     time = models.IntegerField(verbose_name='播放列表名字时间戳', default=0)
+    endTime = models.IntegerField(verbose_name='删除时间', default=0)
+    bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id',on_delete=models.CASCADE, default=1, verbose_name='存储空间')
 
 
     def __str__(self):
     def __str__(self):
         return self.id
         return self.id
@@ -594,7 +616,8 @@ class OssCrdModel(models.Model):
     uid = models.CharField(max_length=20, verbose_name='设备UID')
     uid = models.CharField(max_length=20, verbose_name='设备UID')
     channel = models.SmallIntegerField(default=0, verbose_name='通道')
     channel = models.SmallIntegerField(default=0, verbose_name='通道')
     data = models.TextField(verbose_name='设备UID')
     data = models.TextField(verbose_name='设备UID')
-    addTime = models.IntegerField(verbose_name='添加事件',default=0)
+    addTime = models.IntegerField(verbose_name='添加事件', default=0)
+    bucket = models.ForeignKey(VodBucketModel, blank=True, to_field='id',on_delete=models.CASCADE, default=1, verbose_name='存储空间')
 
 
     def __str__(self):
     def __str__(self):
         return self.id
         return self.id
@@ -603,4 +626,6 @@ class OssCrdModel(models.Model):
         db_table = 'osscrd'
         db_table = 'osscrd'
         verbose_name = u'设备证书'
         verbose_name = u'设备证书'
         verbose_name_plural = verbose_name
         verbose_name_plural = verbose_name
-        ordering = ('-id',)
+        ordering = ('-id',)
+
+

+ 1 - 1
Object/TokenObject.py

@@ -21,7 +21,7 @@ class TokenObject:
 
 
     def __init__(self, token=None):
     def __init__(self, token=None):
         if token == 'local':
         if token == 'local':
-            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJleHAiOjE1NzQwNTg2Njh9.tzJLLh78EuW_FZ1oLJ85RSaryVntVY72FBfqZg_G-qc'
+            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiZW4iLCJleHAiOjE1NDU0NjUxMzZ9.C5U18mAeu1GNGerb_6YnJayNm_LxuikqigXl2HzdMqI'
         if token == 'test':
         if token == 'test':
             token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsYW5nIjoiZW4iLCJleHAiOjE1NDUwOTQ0MDgsInVzZXJJRCI6IjE1MTU2NDI2MjMzNzkzOTUxMzgwMDEzODAwMSJ9.d7guVGZy7oFh5_Ri5kfeK-C7hNtKTqBlxMrWPR7nnaE'
             token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsYW5nIjoiZW4iLCJleHAiOjE1NDUwOTQ0MDgsInVzZXJJRCI6IjE1MTU2NDI2MjMzNzkzOTUxMzgwMDEzODAwMSJ9.d7guVGZy7oFh5_Ri5kfeK-C7hNtKTqBlxMrWPR7nnaE'
         self.token = token
         self.token = token