| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- 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:
- 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 = 0
- 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,
- )
|