Баг / После оплаты бонусами показывает попап "вам начислено Х лиликов"

remotes/origin/hotfix/bonuses-notification-4-9-19
gzbender 6 years ago
parent 51feb85fef
commit df85bce66e
  1. 7
      apps/payment/admin.py
  2. 7
      apps/payment/models.py
  3. 9
      apps/user/models.py
  4. 2
      project/templates/blocks/lil_store_js.html
  5. 6
      web/src/js/modules/popup.js

@ -5,7 +5,7 @@ from polymorphic.admin import (
PolymorphicChildModelFilter, PolymorphicChildModelFilter,
) )
from .models import AuthorBalance, CoursePayment, SchoolPayment, Payment, GiftCertificate from .models import AuthorBalance, CoursePayment, SchoolPayment, Payment, GiftCertificate, UserBonus
@admin.register(AuthorBalance) @admin.register(AuthorBalance)
@ -65,3 +65,8 @@ class PaymentAdmin(PolymorphicParentModelAdmin):
@admin.register(GiftCertificate) @admin.register(GiftCertificate)
class GiftCertificateAdmin(admin.ModelAdmin): class GiftCertificateAdmin(admin.ModelAdmin):
pass pass
@admin.register(UserBonus)
class UserBonusAdmin(admin.ModelAdmin):
pass

@ -389,8 +389,8 @@ class UserBonus(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='bonuses') user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='bonuses')
amount = models.DecimalField(max_digits=8, decimal_places=2, default=0) amount = models.DecimalField(max_digits=8, decimal_places=2, default=0)
payment = models.ForeignKey(Payment, on_delete=models.SET_NULL, null=True) payment = models.ForeignKey(Payment, on_delete=models.SET_NULL, null=True, blank=True)
referral = models.ForeignKey('user.Referral', on_delete=models.SET_NULL, null=True) referral = models.ForeignKey('user.Referral', on_delete=models.SET_NULL, null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True) created_at = models.DateTimeField(auto_now_add=True)
is_service = models.BooleanField(default=False) is_service = models.BooleanField(default=False)
action_name = models.CharField(max_length=20, blank=True, default='') action_name = models.CharField(max_length=20, blank=True, default='')
@ -399,6 +399,9 @@ class UserBonus(models.Model):
class Meta: class Meta:
ordering = ('created_at',) ordering = ('created_at',)
def __str__(self):
return '%s %s' % (self.user_id, self.amount)
class GiftCertificate(models.Model): class GiftCertificate(models.Model):
price = models.DecimalField(max_digits=8, decimal_places=2, default=0) price = models.DecimalField(max_digits=8, decimal_places=2, default=0)

@ -155,12 +155,13 @@ class User(AbstractUser):
).aggregate(models.Sum('amount')).get('amount__sum') or 0) ).aggregate(models.Sum('amount')).get('amount__sum') or 0)
@property @property
def has_new_bonuses(self): def new_bonuses(self):
from apps.payment.models import Payment from apps.payment.models import Payment
last_bonus = self.bonuses.filter( old_bonuses = int(self.bonuses.filter(
Q(payment__isnull=False, payment__status__in=Payment.PW_PAID_STATUSES) | Q(is_service=True), Q(payment__isnull=False, payment__status__in=Payment.PW_PAID_STATUSES) | Q(is_service=True),
).order_by('-created_at').first() Q(amount__lte=0) | Q(amount__gt=0, notified_at__isnull=False),
return bool(last_bonus) and last_bonus.amount > 0 and not last_bonus.notified_at ).aggregate(models.Sum('amount')).get('amount__sum') or 0)
return max(self.bonus - old_bonuses, 0)
@property @property
def paid_one_more(self): def paid_one_more(self):

@ -17,7 +17,7 @@
id: '{{ request.user.id|default:'' }}', id: '{{ request.user.id|default:'' }}',
role: +'{{ request.user.role }}', role: +'{{ request.user.role }}',
photo: '{% if request.user.photo %}{{ request.user.photo.url }}{% else %}{% static 'img/user_default.jpg' %}{% endif %}', photo: '{% if request.user.photo %}{{ request.user.photo.url }}{% else %}{% static 'img/user_default.jpg' %}{% endif %}',
hasNewBonuses: {{ request.user.has_new_bonuses|yesno:"true,false" }}, newBonuses: {{ request.user.new_bonuses }},
bonus: +'{{ request.user.bonus }}', bonus: +'{{ request.user.bonus }}',
}, },
components: {}, components: {},

@ -365,7 +365,7 @@ $(document).ready(function () {
} }
}); });
if(window.LIL_STORE.user.id && window.LIL_STORE.user.hasNewBonuses && window.LIL_STORE.user.bonus > 0){ if(window.LIL_STORE.user.id && window.LIL_STORE.user.newBonuses > 0){
$(document).ready(() => { $(document).ready(() => {
popup = $('.js-popup-bonuses-came'); popup = $('.js-popup-bonuses-came');
const $bonusesImg = popup.find('.bonuses-came__img'); const $bonusesImg = popup.find('.bonuses-came__img');
@ -387,8 +387,8 @@ $(document).ready(function () {
audioAddition.play().catch(error => console.log(error)); audioAddition.play().catch(error => console.log(error));
$bonusesImg.attr('src', window.LIL_STORE.staticUrl + 'img/lilcoin48x54.png') $bonusesImg.attr('src', window.LIL_STORE.staticUrl + 'img/lilcoin48x54.png')
.attr('src', window.LIL_STORE.staticUrl + 'img/lilcoin_spin.gif'); .attr('src', window.LIL_STORE.staticUrl + 'img/lilcoin_spin.gif');
$({bonuses: 0}).animate({bonuses: window.LIL_STORE.user.bonus}, { $({bonuses: 0}).animate({bonuses: window.LIL_STORE.user.newBonuses}, {
duration: 2900, duration: 2000,
easing: "linear", easing: "linear",
step: function(val) { step: function(val) {
$bonusesValue.html(Math.ceil(val)); $bonusesValue.html(Math.ceil(val));

Loading…
Cancel
Save