説明なし

cpon.py 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. # -*- coding: utf-8 -*-
  2. from TimeConvert import TimeConvert as tc
  3. from account.models import UserInfo
  4. from coupon.models import CouponInfo, UserCouponInfo
  5. from member.models import RightInfo
  6. def fix_user_coupon_info():
  7. rights = RightInfo.objects.filter(is_send_coupon=True, status=True)
  8. coupons = {
  9. 'level1': {},
  10. 'level2': {},
  11. 'level3': {},
  12. 'level4': {},
  13. 'level5': {},
  14. }
  15. for right in rights:
  16. if right.coupon_level1_id:
  17. if right.coupon_level1_id not in coupons['level1']:
  18. coupons['level1'][right.coupon_level1_id] = 0
  19. coupons['level1'][right.coupon_level1_id] += right.coupon_level1_num
  20. if right.coupon_level1_id not in coupons['level2']:
  21. coupons['level2'][right.coupon_level1_id] = 0
  22. coupons['level2'][right.coupon_level1_id] += right.coupon_level1_num
  23. if right.coupon_level1_id not in coupons['level3']:
  24. coupons['level3'][right.coupon_level1_id] = 0
  25. coupons['level3'][right.coupon_level1_id] += right.coupon_level1_num
  26. if right.coupon_level1_id not in coupons['level4']:
  27. coupons['level4'][right.coupon_level1_id] = 0
  28. coupons['level4'][right.coupon_level1_id] += right.coupon_level1_num
  29. if right.coupon_level1_id not in coupons['level5']:
  30. coupons['level5'][right.coupon_level1_id] = 0
  31. coupons['level5'][right.coupon_level1_id] += right.coupon_level1_num
  32. if right.coupon_level2_id:
  33. if right.coupon_level2_id not in coupons['level2']:
  34. coupons['level2'][right.coupon_level2_id] = 0
  35. coupons['level2'][right.coupon_level2_id] += right.coupon_level2_num
  36. if right.coupon_level2_id not in coupons['level3']:
  37. coupons['level3'][right.coupon_level2_id] = 0
  38. coupons['level3'][right.coupon_level2_id] += right.coupon_level2_num
  39. if right.coupon_level2_id not in coupons['level4']:
  40. coupons['level4'][right.coupon_level2_id] = 0
  41. coupons['level4'][right.coupon_level2_id] += right.coupon_level2_num
  42. if right.coupon_level2_id not in coupons['level5']:
  43. coupons['level5'][right.coupon_level2_id] = 0
  44. coupons['level5'][right.coupon_level2_id] += right.coupon_level2_num
  45. if right.coupon_level3_id:
  46. if right.coupon_level3_id not in coupons['level3']:
  47. coupons['level3'][right.coupon_level3_id] = 0
  48. coupons['level3'][right.coupon_level3_id] += right.coupon_level3_num
  49. if right.coupon_level3_id not in coupons['level4']:
  50. coupons['level4'][right.coupon_level3_id] = 0
  51. coupons['level4'][right.coupon_level3_id] += right.coupon_level3_num
  52. if right.coupon_level3_id not in coupons['level5']:
  53. coupons['level5'][right.coupon_level3_id] = 0
  54. coupons['level5'][right.coupon_level3_id] += right.coupon_level3_num
  55. if right.coupon_level4_id:
  56. if right.coupon_level4_id not in coupons['level4']:
  57. coupons['level4'][right.coupon_level4_id] = 0
  58. coupons['level4'][right.coupon_level4_id] += right.coupon_level4_num
  59. if right.coupon_level4_id not in coupons['level5']:
  60. coupons['level5'][right.coupon_level4_id] = 0
  61. coupons['level5'][right.coupon_level4_id] += right.coupon_level4_num
  62. if right.coupon_level5_id:
  63. if right.coupon_level5_id not in coupons['level5']:
  64. coupons['level5'][right.coupon_level5_id] = 0
  65. coupons['level5'][right.coupon_level5_id] += right.coupon_level5_num
  66. users = UserInfo.objects.filter(level__gte=1, status=True)
  67. for user in users:
  68. level_coupon = coupons.get('level{}'.format(user.level))
  69. for coupon_id, coupon_num in level_coupon.items():
  70. real_coupon_num = UserCouponInfo.objects.filter(user_id=user.user_id, coupon_id=coupon_id, status=True).count()
  71. if real_coupon_num == coupon_num:
  72. continue
  73. print(user.user_id, coupon_id, coupon_num - real_coupon_num)
  74. if real_coupon_num > coupon_num:
  75. for _ in range(real_coupon_num - coupon_num):
  76. user_coupons = UserCouponInfo.objects.filter(user_id=user.user_id, coupon_id=coupon_id, status=True).order_by('-pk')
  77. user_coupon = user_coupons[0]
  78. user_coupon.status = 0
  79. user_coupon.save()
  80. else:
  81. try:
  82. coupon = CouponInfo.objects.get(coupon_id=coupon_id)
  83. except CouponInfo.DoesNotExist:
  84. continue
  85. for _ in range(coupon_num - real_coupon_num):
  86. UserCouponInfo.objects.create(
  87. brand_id=coupon.brand_id,
  88. brand_name=coupon.brand_name,
  89. coupon_id=coupon_id,
  90. user_id=user.user_id,
  91. coupon_title=coupon.coupon_title,
  92. coupon_detail=coupon.coupon_detail,
  93. coupon_value=coupon.coupon_value,
  94. coupon_image=coupon.coupon_image,
  95. active_at=tc.utc_datetime(),
  96. expire_at=tc.utc_datetime(days=365),
  97. coupon_valid_period=coupon.coupon_valid_period,
  98. coupon_limit_model_ids=coupon.coupon_limit_model_ids,
  99. )