소스 검색

新增获取云盘容量功能

guanhailong 2 년 전
부모
커밋
86fcce098d
1개의 변경된 파일39개의 추가작업 그리고 5개의 파일을 삭제
  1. 39 5
      Controller/IcloudService/IcloudMeal.py

+ 39 - 5
Controller/IcloudService/IcloudMeal.py

@@ -9,7 +9,7 @@ import time
 from urllib.parse import quote, parse_qs, unquote
 
 import paypalrestsdk
-from django.db import transaction
+from django.db import transaction, connection
 from django.db.models import Q
 from django.http import HttpResponse, HttpResponseRedirect
 from django.views import View
@@ -58,6 +58,8 @@ class IcloudMeal(View):
                 return self.create_pay_order(request_dict, request, user_id, response)
             elif operation == 'getCloudDriveInit':  # 获取套餐明细
                 return self.get_cloud_drive_init(request_dict, response, user_id)
+            elif operation == 'getCapacity':  # 获取容量
+                return self.get_capacity(response, user_id)
             else:
                 return response.json(414)
 
@@ -495,10 +497,9 @@ class IcloudMeal(View):
             data = {}
             cloud_service_list = []
             count = cloud_service_qs.count()
-            cloud_service_qs = cloud_service_qs[(page - 1) * line:page * line].values('use_status', 'type',
-                                                                                      'order_id',
-                                                                                      'add_time', 'end_time').order_by(
-                '-add_time')
+            cloud_service_qs = cloud_service_qs.values('use_status', 'type', 'order_id', 'add_time',
+                                                       'end_time').order_by(
+                '-add_time')[(page - 1) * line:page * line]
             # 获取套餐明细
             for service in cloud_service_qs:
                 data['use_status'] = service['use_status']
@@ -531,3 +532,36 @@ class IcloudMeal(View):
         except Exception as e:
             logging.info('异常错误,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return response.json(500, e)
+
+    @staticmethod
+    def get_capacity(response, user_id):
+        """
+        获取云盘容量
+        @param user_id: 用户id
+        @param response: 响应
+        @return: response
+        """
+        try:
+            select_part = 'SELECT'
+            sum_used_size = 'SUM(u.use_size) AS total_used_size'
+            sum_size = 'SUM(i.size) AS total_all_size'
+            from_part = 'FROM icloud_use_details AS u JOIN icloud_service AS i ON i.use_details_id = u.id'
+            where_part = "WHERE u.user_id = %s"
+            # 合并SQL查询
+            query = f'{select_part} {sum_used_size}, {sum_size} {from_part} {where_part}'
+
+            with connection.cursor() as cursor:
+                cursor.execute(query, (user_id,))
+                result = cursor.fetchone()
+            connection.close()
+            if result != (None, None):
+                data = {
+                    'M_size': round(result[0], 2),
+                    'G_size': round(result[1], 0)
+                }
+                return response.json(0, data)
+            else:
+                return response.json(173)
+        except Exception as e:
+            logging.info('异常错误,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(500, e)