|
@@ -30,14 +30,15 @@ from Model.models import Device_User, Device_Info, UidSetModel, UID_Bucket, Unus
|
|
|
CountryModel, DeviceTypeModel, OrdersSummary, DeviceInfoSummary, CompanySerialModel, \
|
|
|
CloudLogModel, UidCloudStorageCount, UserExModel, DeviceDomainRegionModel, VodHlsTag, VodHlsTagType, IcloudService, \
|
|
|
Store_Meal, Lang, VodBucketModel, UnicomComboOrderInfo, UnicomDeviceInfo, AbnormalOrder, DailyReconciliation, \
|
|
|
- CustomizedPush, UIDCompanySerialModel, UIDModel, LogModel, OperatingCosts, UidBucketStatistics, AppScannedSerial
|
|
|
+ CustomizedPush, UIDCompanySerialModel, UIDModel, LogModel, OperatingCosts, UidBucketStatistics, AppScannedSerial, \
|
|
|
+ SerialUnbindUID, UidUserModel, UidPushModel, iotdeviceInfoModel, ExperienceAiModel
|
|
|
from Object.AWS.AmazonS3Util import AmazonS3Util
|
|
|
from Object.AWS.S3Email import S3Email
|
|
|
from Object.RedisObject import RedisObject
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.utils import LocalDateTimeUtil
|
|
|
from Service.CommonService import CommonService
|
|
|
-from Service.EquipmentInfoService import EQUIPMENT_INFO_MODEL_LIST
|
|
|
+from Service.EquipmentInfoService import EQUIPMENT_INFO_MODEL_LIST, EquipmentInfoService
|
|
|
from Service.VodHlsService import SplitVodHlsObject
|
|
|
from Object.UnicomObject import UnicomObjeect
|
|
|
from Object.WechatPayObject import WechatPayObject
|
|
@@ -503,6 +504,8 @@ class CronUpdateDataView(View):
|
|
|
return self.reqUpdateSerialStatus(response)
|
|
|
elif operation == 'updateSerialStatus': # 更新序列号状态
|
|
|
return self.updateSerialStatus(request_dict, response)
|
|
|
+ elif operation == 'deleteUidData': # 清除uid数据
|
|
|
+ return self.deleteUidData(request_dict, response)
|
|
|
elif operation == 'reset-region-id': # 重置地区id
|
|
|
return self.reset_region_id(request_dict, response)
|
|
|
elif operation == 'updateVodMeal': # 定时修改体验套餐有效期为1个月
|
|
@@ -770,6 +773,96 @@ class CronUpdateDataView(View):
|
|
|
LOGGER.info('---更新序列号状态异常---:{}'.format(repr(e)))
|
|
|
return response.json(500)
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def deleteUidData(request_dict, response):
|
|
|
+ """
|
|
|
+ 清除uid数据
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict serial_redis_list: 序列号redis列表
|
|
|
+ @param response: 响应对象
|
|
|
+ """
|
|
|
+ serial_unbind_uid_qs = SerialUnbindUID.objects.filter(status=0).values_list('serial', 'uid')
|
|
|
+ # 没有需要清除的数据直接返回
|
|
|
+ if not serial_unbind_uid_qs.exists():
|
|
|
+ return response.json(0)
|
|
|
+ # 获取序列号,uid列表
|
|
|
+ serial_list, uid_list = [], []
|
|
|
+ for serial_unbind_uid in serial_unbind_uid_qs:
|
|
|
+ serial_list.append(serial_unbind_uid['serial'])
|
|
|
+ uid_list.append(serial_unbind_uid['uid'])
|
|
|
+
|
|
|
+ now_time = int(time.time())
|
|
|
+ redis_obj = RedisObject()
|
|
|
+ try:
|
|
|
+ with transaction.atomic():
|
|
|
+ # 更新序列号解绑uid表状态
|
|
|
+ serial_unbind_uid_qs.update(status=1, updated_time=now_time)
|
|
|
+ # 更新序列号状态
|
|
|
+ CompanySerialModel.objects.filter(serial_number__in=serial_list).update(status=1, update_time=now_time)
|
|
|
+ UIDCompanySerialModel.objects.filter(company_serial__serial_number__in=serial_list).delete()
|
|
|
+ # 删除设备相关数据,参考后台的设备重置删除的数据
|
|
|
+ Device_Info.objects.filter(UID__in=uid_list).delete()
|
|
|
+ UidSetModel.objects.filter(uid__in=uid_list).delete()
|
|
|
+ UidUserModel.objects.filter(UID__in=uid_list).delete()
|
|
|
+ UidPushModel.objects.filter(uid_set__uid__in=uid_list).delete()
|
|
|
+ iotdeviceInfoModel.objects.filter(serial_number__in=serial_list).delete()
|
|
|
+ # 删除推送消息
|
|
|
+ EquipmentInfoService.delete_all_equipment_info(device_uid__in=uid_list)
|
|
|
+
|
|
|
+ # 重置设备云存
|
|
|
+ UID_Bucket.objects.filter(uid__in=uid_list).delete()
|
|
|
+ Unused_Uid_Meal.objects.filter(uid__in=uid_list).delete()
|
|
|
+ # Order_Model.objects.filter(UID__in=uid_list).delete()
|
|
|
+ StsCrdModel.objects.filter(uid__in=uid_list).delete()
|
|
|
+ VodHlsModel.objects.filter(uid__in=uid_list).delete()
|
|
|
+ # 删除vod_hls分表数据
|
|
|
+ split_vod_hls_obj = SplitVodHlsObject()
|
|
|
+ split_vod_hls_obj.del_vod_hls_data(uid__in=uid_list)
|
|
|
+ ExperienceContextModel.objects.filter(uid__in=uid_list).delete()
|
|
|
+
|
|
|
+ # 重置AI
|
|
|
+ ExperienceAiModel.objects.filter(uid__in=uid_list).delete()
|
|
|
+ AiService.objects.filter(uid__in=uid_list).delete()
|
|
|
+
|
|
|
+ # 写入未使用序列号redis列表
|
|
|
+ redis_obj.rpush(UNUSED_SERIAL_REDIS_LIST, *serial_list)
|
|
|
+
|
|
|
+ # 重置region_id,不为美洲服,则写入redis列表
|
|
|
+ if CONFIG_INFO == CONFIG_US:
|
|
|
+ DeviceDomainRegionModel.objects.filter(serial_number__in=serial_list).update(region_id=0)
|
|
|
+ else:
|
|
|
+ redis_obj.rpush(RESET_REGION_ID_SERIAL_REDIS_LIST, *serial_list)
|
|
|
+
|
|
|
+ # 重置已使用的uid的使用状态为未使用,更新时间
|
|
|
+ UIDModel.objects.filter(uid__in=uid_list, status=2).update(status=0, mac='', update_time=now_time)
|
|
|
+
|
|
|
+ # 重置扫码记录
|
|
|
+ AppScannedSerial.objects.filter(serial__in=serial_list).delete()
|
|
|
+
|
|
|
+ # 记录操作日志
|
|
|
+ end_time = int(time.time())
|
|
|
+ log = {
|
|
|
+ 'user_id': 1,
|
|
|
+ 'status': 200,
|
|
|
+ 'time': now_time,
|
|
|
+ 'url': 'cron/update/deleteUidData',
|
|
|
+ 'operation': '已解绑序列号清除uid成功,执行时间{}秒'.format(end_time - now_time),
|
|
|
+ }
|
|
|
+ LogModel.objects.create(**log)
|
|
|
+
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ # 记录操作日志
|
|
|
+ log = {
|
|
|
+ 'user_id': 1,
|
|
|
+ 'status': 200,
|
|
|
+ 'time': now_time,
|
|
|
+ 'url': 'cron/update/deleteUidData',
|
|
|
+ 'operation': '已解绑序列号清除uid异常:{}'.format(repr(e))
|
|
|
+ }
|
|
|
+ LogModel.objects.create(**log)
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
@staticmethod
|
|
|
def reset_region_id(request_dict, response):
|
|
|
"""
|