瀏覽代碼

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

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 django.views import View
 from Ansjer.config import LOGGER
 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.Enums.RedisKeyConstant import RedisKeyConstant
 from Object.RedisObject import RedisObject
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
+from typing import Dict, Any
+from django.http import HttpRequest, JsonResponse
 
 
 
 
 class DeviceVersionInfoView(View):
 class DeviceVersionInfoView(View):
@@ -66,6 +68,8 @@ class DeviceVersionInfoView(View):
             ver = request_dict.get('ver')
             ver = request_dict.get('ver')
             res = self.cache_device_version_info(d_code, ver)
             res = self.cache_device_version_info(d_code, ver)
             return response.json(0, res)
             return response.json(0, res)
+        elif operation == 'getDeviceVodStatus':
+            return self.get_device_vod_status(userID, request, request_dict, response)
         else:
         else:
             return response.json(414)
             return response.json(414)
     @classmethod
     @classmethod
@@ -383,4 +387,48 @@ class DeviceVersionInfoView(View):
             LOGGER.exception("同步设备配置失败")
             LOGGER.exception("同步设备配置失败")
             return response.json(500, f'Server error: {str(e)}')
             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)