remotes/origin/hotfix/LIL-691
gzbender 7 years ago
parent ba3f95362e
commit 65bbde0ede
  1. 1
      api/v1/views.py
  2. 29
      apps/payment/models.py
  3. 11
      apps/user/models.py
  4. 0
      apps/user/templates/blocks/profile-menu.html
  5. 16
      apps/user/templates/user/bonus-history.html
  6. 10
      apps/user/templates/user/notification-settings.html
  7. 2
      apps/user/templates/user/payment-history.html
  8. 10
      apps/user/templates/user/profile-settings.html
  9. 2
      apps/user/views.py
  10. 1
      project/templates/blocks/lil_store_js.html
  11. 10
      project/templates/lilcity/main.html
  12. 4
      web/src/js/modules/common.js
  13. 4
      web/src/js/modules/profile.js

@ -486,6 +486,7 @@ class PaymentViewSet(ExtendedModelViewSet):
return Response(Payment.calc_amount(user=user, course=course, weekdays=weekdays))
class ContestViewSet(ExtendedModelViewSet):
queryset = Contest.objects.all()
serializer_class = ContestCreateSerializer

@ -11,7 +11,6 @@ from django.core.validators import RegexValidator
from django.utils.timezone import now
from django.conf import settings
from apps.user.models import Referral
from project.utils import weekday_in_date_range
from apps.course.models import Course
@ -122,11 +121,11 @@ class Payment(PolymorphicModel):
add_days = school_payment.add_days
date_start = school_payment.date_start
date_end = school_payment.date_end
referral_discount = 0
referrer_cashback = 0
referral_bonus = 0
referrer_bonus = 0
if hasattr(user, 'referral') and not user.referral.payment:
referral_discount = user.referral.discount
referrer_cashback = user.referral.referrer_cashback
referral_bonus = user.referral.bonus
referrer_bonus = user.referral.referrer_bonus
discount = 0
if course:
price = course.price
@ -155,14 +154,14 @@ class Payment(PolymorphicModel):
price = Decimal(aggregate.get('month_price__sum', 0))
if price >= config.SERVICE_DISCOUNT_MIN_AMOUNT:
discount = config.SERVICE_DISCOUNT
referral_discount = (price - discount) * referral_discount / 100
referrer_cashback = (price - discount) * referrer_cashback / 100
amount = price - discount - referral_discount
amount = price - discount
referral_bonus = round(amount * referral_bonus / 100)
referrer_bonus = round(amount * referrer_bonus / 100)
return {
'price': price,
'amount': amount,
'referral_discount': referral_discount,
'referrer_cashback': referrer_cashback,
'referral_bonus': referral_bonus,
'referrer_bonus': referrer_bonus,
'discount': discount,
}
@ -209,11 +208,11 @@ class CoursePayment(Payment):
author_balance.save()
# Если юзер реферал и нет платежа, где применялась скидка
if hasattr(self.user, 'referral') and not self.user.referral.payment:
# Отправляем кэшбэк
self.user.referral.cashback(amount_data.get('referrer_cashback'))
# Платеж - как сигнал, что скидка применилась
self.user.referral.payment = self
self.user.referral.save()
# Отправляем кэшбэк
self.user.referral.send_bonuses(amount_data.get('referral_bonus'), amount_data.get('referrer_bonus'))
class SchoolPayment(Payment):
@ -239,11 +238,11 @@ class SchoolPayment(Payment):
super().save(*args, **kwargs)
# Если юзер реферал и нет платежа, где применялась скидка
if not self.add_days and hasattr(self.user, 'referral') and not self.user.referral.payment:
# Отправляем кэшбэк
self.user.referral.cashback(amount_data.get('referrer_cashback'))
# Платеж - как сигнал, что скидка применилась
self.user.referral.payment = self
self.user.referral.save()
# Отправляем кэшбэк
self.user.referral.send_bonuses(amount_data.get('referral_bonus'), amount_data.get('referrer_bonus'))
@property
def date_end_humanize(self):
@ -254,6 +253,6 @@ class UserBonus(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='bonuses')
amount = models.DecimalField(max_digits=8, decimal_places=2, default=0, editable=False)
payment = models.OneToOneField(Payment, on_delete=models.SET_NULL, null=True)
referral = models.ForeignKey(Referral, on_delete=models.SET_NULL, null=True)
referral = models.ForeignKey('user.Referral', on_delete=models.SET_NULL, null=True)
created_at = models.DateTimeField(auto_now_add=True)

@ -265,14 +265,15 @@ class EmailSubscription(models.Model):
class Referral(models.Model):
referral = models.OneToOneField(User, on_delete=models.CASCADE, related_name='referral')
referrer = models.ForeignKey(User, on_delete=models.CASCADE, related_name='referrals')
discount = models.IntegerField()
referrer_cashback = models.IntegerField()
bonus = models.IntegerField()
referrer_bonus = models.IntegerField()
payment = models.OneToOneField('payment.Payment', null=True, blank=True, on_delete=models.CASCADE)
class Meta:
verbose_name = 'Реферал'
verbose_name_plural = 'Рефералы'
def cashback(self, amount):
# TODO
pass
def send_bonuses(self, referral_bonus, referrer_bonus):
from apps.payment.models import UserBonus
UserBonus.objects.create(user=self.referral, amount=referral_bonus, payment=self.payment, referral=self)
UserBonus.objects.create(user=self.referrer, amount=referrer_bonus, payment=self.payment, referral=self)

@ -3,18 +3,22 @@
{% load rupluralize from plural %}
{% block content %}
{% include "../blocks/menu.html" %}
{% include "../blocks/profile-menu.html" %}
<div class="section section_gray">
<div class="section section_gray" style="padding-bottom: 0;">
<div class="section__center center center_xs">
<div class="title title_sm">Бонусы</div>
<div class="text">У вас {{ request.user.bonus|rupluralize:"бонус,бонуса,бонусов" }}</div>
<div>
Вы можете пригласить своих друзей в наш сервис, за это вы получите {{ config.REFERRER_BONUS }} % от суммы
их первой покупки и они получат {{ config.REFERRAL_BONUS }} % от суммы покупки на свой бонусный счет <br>
Просто отправьте им эту ссылку, по которой они смогут зарегестрироваться:
Вы можете пригласить своих друзей в наш сервис, за это вы получите {{ config.REFERRER_BONUS }}% от суммы
их первой покупки и они получат {{ config.REFERRAL_BONUS }}% от суммы первой покупки на свой бонусный счет <br>
Просто отправьте им эту ссылку, по которой они смогут зарегистрироваться:
</div>
<div class="form__field field" style="margin-bottom: 0;">
<div class="field__wrap">
<input id="referrer-url" class="field__input" type="text" value="{{ referrer_url }}" readonly="readonly">
</div>
</div>
<div class="text">{{ referrer_url }}</div>
</div>
</div>

@ -1,13 +1,5 @@
{% extends "templates/lilcity/index.html" %} {% load static %} {% block content %}
<div class="section section_gray section_menu">
<div class="section__center center center_xs">
<div class="menu">
<a class="menu__link" href="{% url 'user-edit-profile' %}">Профиль</a>
<a class="menu__link active" href="{% url 'user-edit-notifications' user.id %}">Уведомления</a>
<a class="menu__link" href="{% url 'user-edit-payments' user.id %}">Платежи</a>
</div>
</div>
</div>
{% include "../blocks/profile-menu.html" %}
{% if not user.is_email_proved %}
<div class="section section_confirm">
<div class="section__center center center_xs">

@ -1,5 +1,5 @@
{% extends "templates/lilcity/index.html" %} {% load static %} {% block content %}
{% include "../blocks/menu.html" %}
{% include "../blocks/profile-menu.html" %}
{% if not user.is_email_proved %}
<div class="section section_confirm">
<div class="section__center center center_xs">

@ -1,13 +1,5 @@
{% extends "templates/lilcity/index.html" %} {% load static %} {% load thumbnail %} {% block content %}
<div class="section section_gray section_menu">
<div class="section__center center center_xs">
<div class="menu">
<a class="menu__link active" href="{% url 'user-edit-profile' %}">Профиль</a>
<a class="menu__link" href="{% url 'user-edit-notifications' user.id %}">Уведомления</a>
<a class="menu__link" href="{% url 'user-edit-payments' user.id %}">Платежи</a>
</div>
</div>
</div>
{% include "../blocks/profile-menu.html" %}
{% if not user.is_email_proved %}
<div class="section section_confirm">
<div class="section__center center center_xs">

@ -314,6 +314,6 @@ class BonusHistoryView(TemplateView):
context = self.get_context_data(**kwargs)
context['bonuses'] = request.user.bonuses.all()
context['referrer_url'] = '%s%s?referrer=%s' % (
settings.MAIN_HOST, reverse('index'), short_url.encode(request.user.id)
settings.MAIN_HOST, reverse('index'), short_url.encode_url(request.user.id)
)
return self.render_to_response(context)

@ -1,6 +1,7 @@
{% load static %}
<script>
window.LIL_STORE = {
isRegistration: {{ is_registration|yesno:"true,false" }},
staticUrl: '{% static "" %}',
accessToken: '{{ request.user.auth_token }}',
user: {

@ -13,13 +13,3 @@
{% include "templates/blocks/teachers.html" %}
{% include "templates/blocks/partners.html" %}
{% endblock content %}
{% block body_js %}
{% if is_registration %}
<script>
$(document).ready(function () {
$('.js-header-enter').click();
});
</script>
{% endif %}
{% endblock body_js %}

@ -40,6 +40,10 @@ $(document).ready(function () {
$('.banner').slideUp();
})
});
if(window.LIL_STORE.isRegistration && ! window.LIL_STORE.user.id){
$('.js-header-enter').click();
}
});
function updateHeader() {

@ -11,4 +11,8 @@ $(document).ready(function () {
$(`[data-gender=${currentGender}]`).addClass('active');
genderInput.val(currentGender)
});
$('#referrer-url').select().click(function(){
$(this).select();
});
})

Loading…
Cancel
Save