|
@@ -17,6 +17,7 @@ import zipfile
|
|
|
import paypalrestsdk
|
|
|
import requests
|
|
|
import csv
|
|
|
+import math
|
|
|
from django.db import connection, connections, transaction
|
|
|
from django.db.models import Q, Sum, Count
|
|
|
from django.views import View
|
|
@@ -1116,13 +1117,11 @@ class CronCollectDataView(View):
|
|
|
create_time = int(time.time())
|
|
|
today_end_time = end_time_stamp + 86400
|
|
|
operating_costs_qs_1 = OperatingCosts.objects.filter(time=start_time_stamp).exclude(
|
|
|
- created_time__gte=end_time_stamp, created_time__lt=today_end_time).values('order_id', 'end_time',
|
|
|
- 'uid')
|
|
|
+ created_time__gte=end_time_stamp, created_time__lt=today_end_time).values('order_id', 'end_time', 'uid')
|
|
|
operating_costs_qs_2 = OperatingCosts.objects.filter(time=start_time_stamp,
|
|
|
created_time__gte=end_time_stamp,
|
|
|
created_time__lt=today_end_time, start_time=0).values(
|
|
|
- 'order_id', 'end_time',
|
|
|
- 'uid')
|
|
|
+ 'order_id', 'end_time', 'uid')
|
|
|
operating_costs_qs = operating_costs_qs_1.union(operating_costs_qs_2)
|
|
|
storage_univalence = 0.023 / 30
|
|
|
api_univalence = 0.005 / 1000
|
|
@@ -1132,14 +1131,15 @@ class CronCollectDataView(View):
|
|
|
for item in country_qs:
|
|
|
country_dict[item['id']] = item['country_name']
|
|
|
for item in operating_costs_qs:
|
|
|
- order_qs = Order_Model.objects.filter(orderID=item['order_id']).values('price', 'payTime', 'order_type',
|
|
|
- 'rank__expire', 'fee', 'payType',
|
|
|
- 'userID__region_country')
|
|
|
+ order_qs = Order_Model.objects.filter(orderID=item['order_id'], order_type__in=[0, 1]).values('price',
|
|
|
+ 'payTime',
|
|
|
+ 'rank__expire',
|
|
|
+ 'fee',
|
|
|
+ 'payType',
|
|
|
+ 'userID__region_country')
|
|
|
if order_qs.exists():
|
|
|
order = order_qs[0]
|
|
|
country_name = country_dict.get(order['userID__region_country'], '未知国家')
|
|
|
- if order['order_type'] not in [0, 1]:
|
|
|
- continue
|
|
|
order_type = '云存'
|
|
|
expire = str(order_qs[0]['rank__expire']) + '个月'
|
|
|
price = float(order['price'])
|
|
@@ -1149,7 +1149,7 @@ class CronCollectDataView(View):
|
|
|
fee = float(order['fee']) if order['fee'] else 0
|
|
|
order_start_time = int((datetime.datetime.fromtimestamp(item['end_time']) - relativedelta(
|
|
|
months=order['rank__expire'])).timestamp())
|
|
|
- order_days = round((item['end_time'] - order_start_time) / 86400)
|
|
|
+ order_days = math.ceil((item['end_time'] - order_start_time) / 86400)
|
|
|
if item['end_time'] > end_time_stamp: # 订单结束时间大于统计时间
|
|
|
if order_start_time <= start_time_stamp: # 订单月初之前开始
|
|
|
settlement_days = (end_time - start_time).days # 当月结算天数=月初-月底
|
|
@@ -1162,19 +1162,19 @@ class CronCollectDataView(View):
|
|
|
time__lt=order_start_time,
|
|
|
uid=item['uid'])
|
|
|
else: # 订单月初和统计时间之间开始
|
|
|
- settlement_days = round((end_time_stamp - order_start_time) / 86400)
|
|
|
+ settlement_days = math.ceil((end_time_stamp - order_start_time) / 86400)
|
|
|
uid_bucket_statistics = UidBucketStatistics.objects.filter(time__gte=order_start_time,
|
|
|
time__lte=end_time_stamp,
|
|
|
uid=item['uid'])
|
|
|
- remaining_usage_time = round((item['end_time'] - end_time_stamp) / 86400) # 剩余使用时间
|
|
|
+ remaining_usage_time = math.ceil((item['end_time'] - end_time_stamp) / 86400) # 剩余使用时间
|
|
|
else: # 订单结束时间小于统计时间
|
|
|
if order_start_time <= start_time_stamp:
|
|
|
- settlement_days = round((item['end_time'] - start_time_stamp) / 86400)
|
|
|
+ settlement_days = math.ceil((item['end_time'] - start_time_stamp) / 86400)
|
|
|
uid_bucket_statistics = UidBucketStatistics.objects.filter(time__gte=start_time_stamp,
|
|
|
time__lt=item['end_time'],
|
|
|
uid=item['uid'])
|
|
|
else:
|
|
|
- settlement_days = round((item['end_time'] - order_start_time) / 86400)
|
|
|
+ settlement_days = math.ceil((item['end_time'] - order_start_time) / 86400)
|
|
|
uid_bucket_statistics = UidBucketStatistics.objects.filter(time__gte=order_start_time,
|
|
|
time__lt=item['end_time'],
|
|
|
uid=item['uid'])
|
|
@@ -1218,6 +1218,7 @@ class CronCollectDataView(View):
|
|
|
LOGGER.info(
|
|
|
'thread_collect_operating_costs接口异常:errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
|
|
|
+
|
|
|
@staticmethod
|
|
|
def collect_obj_size(response):
|
|
|
try:
|