|
|
@@ -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)
|