|
@@ -98,7 +98,7 @@ class serveManagement(View):
|
|
|
elif operation == 'deviceAttritionAlert': # 流失预警
|
|
|
return self.deviceAttritionAlert(request_dict, response, request)
|
|
|
elif operation == 'deactivationPackage': # 停用套餐
|
|
|
- return self.deactivationPackage(userID, request_dict, response)
|
|
|
+ return self.deactivationPackage(request_dict, response)
|
|
|
else:
|
|
|
return response.json(404)
|
|
|
|
|
@@ -1360,8 +1360,8 @@ class serveManagement(View):
|
|
|
cursor.close() # 执行完,关闭
|
|
|
connection.close()
|
|
|
result_list = []
|
|
|
- more_list = [] # 多个参数筛查结果
|
|
|
- new_list = [] # 单独一个参数筛查结果
|
|
|
+ more_list = [] # 多个参数查询结果
|
|
|
+ new_list = [] # 单独一个参数查询结果
|
|
|
col_names = [desc[0] for desc in cursor.description]
|
|
|
for uid_type in uid_type_tuple:
|
|
|
uid_dict = dict(zip(col_names, uid_type))
|
|
@@ -1432,7 +1432,7 @@ class serveManagement(View):
|
|
|
meg = '异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e))
|
|
|
return response.json(500, meg)
|
|
|
|
|
|
- def deactivationPackage(self, userID, request_dict, response):
|
|
|
+ def deactivationPackage(self, request_dict, response):
|
|
|
"""
|
|
|
停用套餐
|
|
|
@param request_dict:
|
|
@@ -1507,6 +1507,9 @@ class serveManagement(View):
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
def cloudDataExport(self, request_dict, response):
|
|
|
+ """
|
|
|
+ 流失预警导出功能
|
|
|
+ """
|
|
|
cursor = connection.cursor()
|
|
|
sql = "SELECT t1.userID_id, du.username, t1.uid, t1.addTime, t1.use_status, t1.`day`, t1.grade FROM(SELECT t1.userID_id, t1.uid, t1.addTime, t1.use_status, t1.`day`, t1.grade FROM(SELECT t1.userID_id, t1.uid, t1.addTime, t1.use_status, t1.`day`,(CASE WHEN t1.`day` >= '15' AND t1.`day` < '25' THEN '一号预警' WHEN t1.use_status = '1' AND t1.`day` >= '25' THEN '二号预警' WHEN t1.use_status = 2 AND t1.`day` >= '25' THEN '八号预警' ELSE '预警取消' END ) AS grade FROM(SELECT t1.userID_id, t1.uid, t1.addTime, t1.use_status, t1.`day` FROM(SELECT t1.userID_id, t1.uid, t1.addTime, t1.use_status, TIMESTAMPDIFF(DAY,FROM_UNIXTIME(t1.addTime, '%Y-%m-%d' ),DATE_FORMAT( NOW(), '%Y-%m-%d' )) AS 'day' FROM (SELECT di.userID_id, vub.uid, vub.addTime, vub.use_status FROM vod_uid_bucket AS vub, device_info AS di WHERE vub.uid = di.UID AND vub.addTime > '1669824000' GROUP BY di.userID_id) AS t1 WHERE t1.uid NOT IN (SELECT uid FROM uid_cloud_storage_count)) AS t1 WHERE t1.`day`>='15' AND t1.userID_id is NOT NULL) AS t1 ORDER BY t1.userID_id)AS t1 WHERE t1.userID_id NOT IN (SELECT di.userID_id FROM `uid_cloud_storage_count` AS vcsc LEFT JOIN device_info AS di ON vcsc.uid = di.UID WHERE di.userID_id is NOT NULL))AS t1 LEFT JOIN device_user AS du ON t1.userID_id = du.userID order by t1.addTime "
|
|
|
cursor.execute(sql)
|
|
@@ -1534,12 +1537,12 @@ class serveManagement(View):
|
|
|
device_type_qs = DeviceTypeModel.objects.filter(type=uid_set_qs[0]['device_type']).values(
|
|
|
'model')
|
|
|
model = device_type_qs[0]['model'] if device_type_qs.exists() else ''
|
|
|
+ # 判断设备是否为ipc设备和是否支持云存
|
|
|
if model == 2:
|
|
|
if len(uid_set_qs[0]['ucode']) > 4:
|
|
|
number = uid_set_qs[0]['ucode'][-4]
|
|
|
else:
|
|
|
continue
|
|
|
- # 判断设备是否为ipc设备和是否支持云存
|
|
|
if number in ['4', '5']:
|
|
|
device_number += 1
|
|
|
else:
|
|
@@ -1547,7 +1550,7 @@ class serveManagement(View):
|
|
|
item['device_number'] = device_number
|
|
|
item['other_device'] = 0
|
|
|
not_upload_list.append(item)
|
|
|
- # 创建Excel
|
|
|
+ # 创建Excel,导出所有流失预警数据
|
|
|
file_name = "流失预警.xls"
|
|
|
if not_upload_list:
|
|
|
ws = xlwt.Workbook(encoding="UTF-8")
|
|
@@ -1557,7 +1560,7 @@ class serveManagement(View):
|
|
|
w.write(0, 2, u'设备UID')
|
|
|
w.write(0, 3, u'设备自云存开通起多少天没有上传数据')
|
|
|
w.write(0, 4, u'设备数量')
|
|
|
- w.write(0, 5, u'用户是否上传过数据')
|
|
|
+ w.write(0, 5, u'用户有无上传过数据')
|
|
|
w.write(0, 6, u'是否有有效期内的付费套餐')
|
|
|
w.write(0, 7, u'预警级别')
|
|
|
excel_row = 1
|
|
@@ -1567,6 +1570,8 @@ class serveManagement(View):
|
|
|
data_uid = obj['uid']
|
|
|
data_day = obj['day']
|
|
|
data_device_number = obj['device_number']
|
|
|
+ if data_device_number == 1:
|
|
|
+ data_device_number = 'N/A'
|
|
|
data_use_status = obj['use_status']
|
|
|
if data_use_status == 1:
|
|
|
data_use_status = '有'
|