فهرست منبع

新增查询设备云存套餐使用状态

zhuojiaxuan 1 هفته پیش
والد
کامیت
968c6d78a4
1فایلهای تغییر یافته به همراه50 افزوده شده و 2 حذف شده
  1. 50 2
      Controller/UserDevice/DeviceVersionInfoController.py

+ 50 - 2
Controller/UserDevice/DeviceVersionInfoController.py

@@ -13,12 +13,14 @@ from django.http import QueryDict
 from django.views import View
 from Ansjer.config import LOGGER
 
-from Model.models import DeviceVersionInfo, Device_Info
+from Model.models import DeviceVersionInfo, Device_Info, UID_Bucket, ExperienceContextModel, UidSetModel
 from Object.Enums.RedisKeyConstant import RedisKeyConstant
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
+from typing import Dict, Any
+from django.http import HttpRequest, JsonResponse
 
 
 class DeviceVersionInfoView(View):
@@ -66,6 +68,8 @@ class DeviceVersionInfoView(View):
             ver = request_dict.get('ver')
             res = self.cache_device_version_info(d_code, ver)
             return response.json(0, res)
+        elif operation == 'getDeviceVodStatus':
+            return self.get_device_vod_status(userID, request, request_dict, response)
         else:
             return response.json(414)
     @classmethod
@@ -383,4 +387,48 @@ class DeviceVersionInfoView(View):
             LOGGER.exception("同步设备配置失败")
             return response.json(500, f'Server error: {str(e)}')
 
-        return response.json(0)
+        return response.json(0)
+
+    def get_device_vod_status(self, userID: int, request: HttpRequest,
+                              request_dict: Dict[str, Any], response: ResponseObject) -> JsonResponse:
+        """
+                获取设备云存状态:0使用中;1已过期; 2未开通
+
+                Args:
+                    userID (int): 用户ID
+                    request (HttpRequest): 请求对象
+                    request_dict (QueryDict): 请求参数字典
+                    response (ResponseObject): 响应对象
+
+                Returns:
+                    JsonResponse: 返回状态
+                """
+        UID: str = request_dict.get('UID')
+        if UID is None:
+            return response.json(444)
+
+        try:
+            now_time = int(time.time())
+            uid_set_qs = UidSetModel.objects.filter(uid=UID).values('ucode', 'device_type').first()
+            ucode = uid_set_qs['ucode'] if uid_set_qs else ''
+            device_type = uid_set_qs['device_type'] if uid_set_qs else ''
+            is_cloud_device = CommonService.is_cloud_device(ucode, device_type)
+            if not is_cloud_device:
+                cloud_type = -1 # 不支持
+            else:
+                exper_qs = ExperienceContextModel.objects.filter(uid=UID)
+                if exper_qs.exists():
+                    uid_bucket_qs = UID_Bucket.objects.filter(uid=UID, status=1).values('endTime').first()
+                    if uid_bucket_qs and uid_bucket_qs['endTime'] > now_time:
+                        cloud_type = 1 # 使用中
+                    else:
+                        cloud_type = 2 # 已过期
+                else:
+                    cloud_type = 0 # 未开通
+
+            return response.json(0, {'status':cloud_type})
+        except Exception as e:
+            error_msg: str = f'查询云存状态异常, 错误: {str(e)}'
+            error_line: int = e.__traceback__.tb_lineno
+            LOGGER.error(f'{error_msg} 行号: {error_line}')
+            return response.json(500)