Browse Source

云盘框架

peng 2 years ago
parent
commit
d80d7ff529

+ 13 - 0
Ansjer/server_urls/icloud_url.py

@@ -0,0 +1,13 @@
+# -*- coding: utf-8 -*-
+"""
+@Author : Rocky
+@Time : 2022/10/18 10:23
+@File :kvs_url.py
+"""
+from django.urls import re_path
+from Controller.IcloudService import IcloudMeal, IcloudService
+
+urlpatterns = [
+    re_path(r'^meal/(?P<operation>.*)$', IcloudMeal.UserRelatedView.as_view()),
+    re_path(r'^service/(?P<operation>.*)$', IcloudService.UserRelatedView.as_view()),
+]

+ 1 - 0
Ansjer/urls.py

@@ -255,6 +255,7 @@ urlpatterns = [
     re_path(r'^algorithm-shop/', include("Ansjer.server_urls.algorithm_shop_url")),
     re_path(r'^api/algorithm/', include("Ansjer.server_urls.algorithm_shop_url")),
     re_path(r'^kvs/', include("Ansjer.server_urls.kvs_url")),
+    re_path(r'^icloud/', include("Ansjer.server_urls.icloud_url")),
     re_path('appAccout/(?P<operation>.*)', SuperPasswordTool.SuperPasswordView.as_view()),
     re_path('sensorGateway/(?P<operation>.*)', SensorGatewayController.SensorGateway.as_view()),
     re_path(r'^api/surveys/(?P<operation>.*)$', CloudStorageController.CloudStorageView.as_view()),

+ 76 - 0
Controller/IcloudService/IcloudMeal.py

@@ -0,0 +1,76 @@
+# -*- coding: utf-8 -*-
+"""
+@Author : peng
+@Time : 2023-6-7 18:26:35
+@File :IcloudMeal.py
+"""
+
+from django.http import HttpResponse
+from django.views import View
+
+from Object.RedisObject import RedisObject
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+from Ansjer.config import ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME, SERVER_DOMAIN
+
+
+class UserRelatedView(View):
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.GET, operation, request)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.POST, operation, request)
+
+    def validation(self, request_dict, operation, request):
+        response = ResponseObject()
+        tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
+        response.lang = tko.lang
+        user_id = tko.userID
+        if tko.code != 0:
+            return response.json(tko.code)
+        if operation == 'getMeal':  # 获取套餐
+            return self.get_meal(request_dict, response)
+        elif operation == 'createPayOrder':  # 购买订单
+            return self.create_pay_order(request_dict, response)
+        else:
+            return response.json(404)
+
+    @staticmethod
+    def get_meal(request_dict, response):
+        """
+        获取套餐
+        @param request_dict: 请求参数
+        @request_dict serial_number: 序列号
+        @param response: 响应对象
+        @return: response
+        """
+        uuid_number = request_dict.get('uuid', None)
+        if not uuid_number:
+            return response.json(444, {'error param': 'uuid'})
+        try:
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500)
+
+    @staticmethod
+    def create_pay_order(request_dict, response):
+        """
+        购买订单
+        @param request_dict: 请求参数
+        @request_dict serial_number: 序列号
+        @param response: 响应对象
+        @return: response
+        """
+        uuid_number = request_dict.get('uuid', None)
+        if not uuid_number:
+            return response.json(444, {'error param': 'uuid'})
+        try:
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500)

+ 58 - 0
Controller/IcloudService/IcloudService.py

@@ -0,0 +1,58 @@
+# -*- coding: utf-8 -*-
+"""
+@Author : peng
+@Time : 2023-6-7 18:26:35
+@File :IcloudMeal.py
+"""
+
+from django.http import HttpResponse
+from django.views import View
+
+from Object.RedisObject import RedisObject
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+from Ansjer.config import ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME, SERVER_DOMAIN
+
+
+class UserRelatedView(View):
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.GET, operation, request)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.POST, operation, request)
+
+    def validation(self, request_dict, operation, request):
+        response = ResponseObject()
+        tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
+        response.lang = tko.lang
+        user_id = tko.userID
+        if tko.code != 0:
+            return response.json(tko.code)
+        if operation == '':  # 网页生成二维码
+            return self.generate_qr_code(response)
+        elif operation == 'get-scanning-status':  # 确认app是否扫码
+            return self.get_scanning_status(request_dict, response)
+        else:
+            return response.json(404)
+
+    @staticmethod
+    def create_pay_order(request_dict, response):
+        """
+        购买订单
+        @param request_dict: 请求参数
+        @request_dict serial_number: 序列号
+        @param response: 响应对象
+        @return: response
+        """
+        uuid_number = request_dict.get('uuid', None)
+        if not uuid_number:
+            return response.json(444, {'error param': 'uuid'})
+        try:
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500)

+ 3 - 1
Model/models.py

@@ -3563,6 +3563,7 @@ class ICloudStoreMeal(models.Model):
     is_delete = models.SmallIntegerField(default=0, verbose_name=u'是否删除 [0=否,1=是]')
     lang = models.ManyToManyField(to='Lang', verbose_name='套餐语言', db_table='icloud_store_meal_lang')
     size = models.IntegerField(null=True, default=0, verbose_name='云盘容量大小')  # 单位G
+    bucket_id = models.SmallIntegerField(default=0, verbose_name='关联存储桶id')
 
     def __str__(self):
         return self.id
@@ -3581,6 +3582,7 @@ class IcloudUseDetails(models.Model):
     upd_time = models.BigIntegerField(verbose_name='更新时间', default=0)
     detect_status = models.SmallIntegerField(default=0, verbose_name='开关状态')  # 0:关闭, 1:开启
     user_id = models.CharField(blank=True, max_length=32, verbose_name=u'用户id')
+    bucket_id = models.SmallIntegerField(default=0, verbose_name='关联存储桶id')
 
     class Meta:
         db_table = 'icloud_use_details'
@@ -3611,7 +3613,7 @@ class IcloudStorageRecord(models.Model):
     uid = models.CharField(max_length=20, verbose_name='设备UID', db_index=True)
     nickname = models.CharField(max_length=20, verbose_name='设备昵称', db_index=True)
     channel = models.SmallIntegerField(default=0, verbose_name='通道')
-    time_stamp = models.IntegerField(verbose_name='视频/图片名字时间戳', default=0, db_index=True)
+    time_stamp = models.IntegerField(verbose_name='视频/图片名字时间戳', default=0, db_index=True)  # 单位毫秒
     sec = models.IntegerField(verbose_name='秒数', default=0)
     bucket_id = models.IntegerField(verbose_name='关联存储桶id', default=0)
     fg = models.CharField(max_length=20, verbose_name='ts个数,时间描述片段数')  # 阿里为时间片段数,亚马逊为一个32bit整型,前28bit代表ts文件的时长