|
# -*- coding: utf-8 -*-
from TimeConvert import TimeConvert as tc
from account.models import UserInfo
from coupon.models import CouponInfo, UserCouponInfo
from member.models import RightInfo
def fix_user_coupon_info():
rights = RightInfo.objects.filter(is_send_coupon=True, status=True)
coupons = {
'level1': {},
'level2': {},
'level3': {},
'level4': {},
'level5': {},
}
for right in rights:
if right.coupon_level1_id:
if right.coupon_level1_id not in coupons['level1']:
coupons['level1'][right.coupon_level1_id] = 0
coupons['level1'][right.coupon_level1_id] += right.coupon_level1_num
if right.coupon_level1_id not in coupons['level2']:
coupons['level2'][right.coupon_level1_id] = 0
coupons['level2'][right.coupon_level1_id] += right.coupon_level1_num
if right.coupon_level1_id not in coupons['level3']:
coupons['level3'][right.coupon_level1_id] = 0
coupons['level3'][right.coupon_level1_id] += right.coupon_level1_num
if right.coupon_level1_id not in coupons['level4']:
coupons['level4'][right.coupon_level1_id] = 0
coupons['level4'][right.coupon_level1_id] += right.coupon_level1_num
if right.coupon_level1_id not in coupons['level5']:
coupons['level5'][right.coupon_level1_id] = 0
coupons['level5'][right.coupon_level1_id] += right.coupon_level1_num
if right.coupon_level2_id:
if right.coupon_level2_id not in coupons['level2']:
coupons['level2'][right.coupon_level2_id] = 0
coupons['level2'][right.coupon_level2_id] += right.coupon_level2_num
if right.coupon_level2_id not in coupons['level3']:
coupons['level3'][right.coupon_level2_id] = 0
coupons['level3'][right.coupon_level2_id] += right.coupon_level2_num
if right.coupon_level2_id not in coupons['level4']:
coupons['level4'][right.coupon_level2_id] = 0
coupons['level4'][right.coupon_level2_id] += right.coupon_level2_num
if right.coupon_level2_id not in coupons['level5']:
coupons['level5'][right.coupon_level2_id] = 0
coupons['level5'][right.coupon_level2_id] += right.coupon_level2_num
if right.coupon_level3_id:
if right.coupon_level3_id not in coupons['level3']:
coupons['level3'][right.coupon_level3_id] = 0
coupons['level3'][right.coupon_level3_id] += right.coupon_level3_num
if right.coupon_level3_id not in coupons['level4']:
coupons['level4'][right.coupon_level3_id] = 0
coupons['level4'][right.coupon_level3_id] += right.coupon_level3_num
if right.coupon_level3_id not in coupons['level5']:
coupons['level5'][right.coupon_level3_id] = 0
coupons['level5'][right.coupon_level3_id] += right.coupon_level3_num
if right.coupon_level4_id:
if right.coupon_level4_id not in coupons['level4']:
coupons['level4'][right.coupon_level4_id] = 0
coupons['level4'][right.coupon_level4_id] += right.coupon_level4_num
if right.coupon_level4_id not in coupons['level5']:
coupons['level5'][right.coupon_level4_id] = 0
coupons['level5'][right.coupon_level4_id] += right.coupon_level4_num
if right.coupon_level5_id:
if right.coupon_level5_id not in coupons['level5']:
coupons['level5'][right.coupon_level5_id] = 0
coupons['level5'][right.coupon_level5_id] += right.coupon_level5_num
users = UserInfo.objects.filter(level__gte=1, status=True)
for user in users:
level_coupon = coupons.get('level{}'.format(user.level))
for coupon_id, coupon_num in level_coupon.items():
real_coupon_num = UserCouponInfo.objects.filter(user_id=user.user_id, coupon_id=coupon_id, status=True).count()
if real_coupon_num == coupon_num:
continue
print(user.user_id, coupon_id, coupon_num - real_coupon_num)
if real_coupon_num > coupon_num:
pass
# for _ in range(real_coupon_num - coupon_num):
# user_coupons = UserCouponInfo.objects.filter(user_id=user.user_id, coupon_id=coupon_id, status=True).order_by('-pk')
# user_coupon = user_coupons[0]
# user_coupon.status = False
# user_coupon.save()
else:
try:
coupon = CouponInfo.objects.get(coupon_id=coupon_id)
except CouponInfo.DoesNotExist:
continue
for _ in range(coupon_num - real_coupon_num):
UserCouponInfo.objects.create(
brand_id=coupon.brand_id,
brand_name=coupon.brand_name,
coupon_id=coupon_id,
user_id=user.user_id,
coupon_title=coupon.coupon_title,
coupon_detail=coupon.coupon_detail,
coupon_value=coupon.coupon_value,
coupon_image=coupon.coupon_image,
active_at=tc.utc_datetime(),
expire_at=tc.utc_datetime(days=365),
coupon_valid_period=coupon.coupon_valid_period,
coupon_limit_model_ids=coupon.coupon_limit_model_ids,
)
|