From 656e41b8cfbdace59203ac857f5868e2460aef6f Mon Sep 17 00:00:00 2001 From: nikolay Date: Mon, 3 Jul 2023 11:52:56 +0400 Subject: [PATCH] =?UTF-8?q?dev=20#14384=20=D0=9F=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20WPA=20?= =?UTF-8?q?=D0=9A=D0=BE=D1=84=D0=B5=D0=9B=D0=B0=D0=B9=D0=BA:=20change=20us?= =?UTF-8?q?er=20info=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- angular/src/app/interface/data.ts | 25 ++- .../last-order/last-order.component.html | 4 +- .../last-order/last-order.component.ts | 5 +- .../guest-card/guest-card.component.html | 21 +- .../pages/guest-card/guest-card.component.ts | 6 - .../pages/login/login.component.html | 6 +- .../pages/login/login.component.scss | 1 - .../loyality-program.component.html | 188 +++++++++--------- .../loyality-program.component.scss | 3 +- angular/src/app/services/auth.service.ts | 49 ++--- 10 files changed, 142 insertions(+), 166 deletions(-) diff --git a/angular/src/app/interface/data.ts b/angular/src/app/interface/data.ts index bb1a3e0..47f34e9 100644 --- a/angular/src/app/interface/data.ts +++ b/angular/src/app/interface/data.ts @@ -199,14 +199,29 @@ export interface UserInfoWalletBalance { wallet: UserInfoWallet; } +export interface CurrentInfo { + current_cashback: number; + current_level: number; +} + +export interface LastPurchase { + last_purchase_date: string; + last_purchase_sum: number; +} + +export interface NextLevel { + cashback: number; + next_level: number; + sum_for_next_level: number; +} + export interface UserInfo { - OrdersSum: number; - categories: UserInfoCategory[]; - customer_level: number; + current_level_and_cashback?: CurrentInfo; + last_purchase?: LastPurchase; id: string; - name: string | null; phone: string; - walletBalances: UserInfoWalletBalance[] | { error: ResponseError }; + walletBalances: number; + next_level: NextLevel; } export interface ResponseError { diff --git a/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.html b/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.html index a8c7c71..d202898 100644 --- a/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.html +++ b/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.html @@ -1,7 +1,7 @@

Ваш предыдущий заказ

Дата: - {{(lastOrder?.transactionCreateDate | date:'dd.MM.yyyyг.') || 'Данные не найдены'}} + {{(lastOrder?.last_purchase_date | date:'dd.MM.yyyyг.') || 'Данные не найдены'}}

На сумму: - {{lastOrder?.orderSum ? lastOrder?.orderSum + ' ₽' : 'Данные не найдены'}} + {{lastOrder ? lastOrder.last_purchase_sum + ' ₽' : 'Данные не найдены'}}

-

Уровень {{ authService.userInfo.customer_level }}

+

Уровень {{ authService.userInfo.current_level_and_cashback?.current_level ?? '--' }}

Кэшбек {{ authService.currentLvlPeriod.percent }}%

-

- - {{ Math.floor(authService.getBalanceAmount($any(authService.userInfo.walletBalances))) }} - бонусов - - - Ошибка! Отрицательный баланс бонусов - +

+ {{ Math.floor(authService.userInfo.walletBalances) }} + бонусов

@@ -29,9 +24,7 @@ Осталось купить на сумму {{ - authService.currentLvlPeriod.end - - (authService.userInfo.OrdersSum) + - 1 + authService.userInfo.next_level.sum_for_next_level }} рублей, тогда кэшбек будет с {{ - authService.purchaseData.currentPeriod[1] + authService.currentPeriod[1] .locale("ru") .format("D MMMM") }} @@ -53,7 +46,7 @@

Участвуй в программе лояльности COFFEE LIKE

Начни получать бонусы прямо сейчас

diff --git a/angular/src/app/presentation-options/default-option/pages/login/login.component.scss b/angular/src/app/presentation-options/default-option/pages/login/login.component.scss index 7e84dfd..a109a94 100644 --- a/angular/src/app/presentation-options/default-option/pages/login/login.component.scss +++ b/angular/src/app/presentation-options/default-option/pages/login/login.component.scss @@ -1,5 +1,4 @@ :host { - padding-top: 48px; display: flex; flex-direction: column; align-items: center; diff --git a/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.html b/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.html index 88bb56c..9850f25 100644 --- a/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.html +++ b/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.html @@ -1,105 +1,105 @@ -
- -

- Ваш текущий уровень {{ authService.userInfo?.customer_level }}, - поэтому вам начисляется {{ authService.currentLvlPeriod.percent }}% от суммы покупки. -

-

- Смена уровня произойдет в начале следующего квартала, - {{ authService.purchaseData.currentPeriod[1] - .locale("ru") - .format("DD.MM.YY") }}. -

-
- -

- Начисление Бонусных баллов происходит по дифференцированной шкале в - зависимости от уровня: -

+
+ +

+ Ваш текущий уровень {{ authService.userInfo?.current_level_and_cashback?.current_level ?? '--' }}, + поэтому вам начисляется {{ authService.currentLvlPeriod.percent }}% от суммы покупки. +

+

+ Смена уровня произойдет в начале следующего квартала, + {{ authService.currentPeriod[1] + .locale("ru") + .format("DD.MM.YY") }}. +

+
+ +

+ Начисление Бонусных баллов происходит по дифференцированной шкале в + зависимости от уровня: +

+ + + +
    + Уровень {{ index + 1 }} +
  • + Сумма покупок за прошлый квартал {{ item.start }}-{{ item.end }} + руб. +
  • +
  • Начисляемый бонус {{ item.percent }}% от суммы покупки
  • +
+
+
+ +
    + Уровень {{ index + 1 }} +
  • Сумма покупок за прошлый квартал — от {{ item.start }} руб.
  • +
  • Начисляемый бонус, в % от суммы покупки - {{ item.percent }}%
  • +
+
+
+
+ + +

+ Участник может использовать Бонусы для «оплаты» до 100% стоимости любой + покупки. +

+

+ Списание Бонусов происходит из расчета 1:1 (один Бонус дает скидку 1 + российский рубль / 1 тенге / 1 белорусский рубль. Скидка, предоставляемая + Участнику при списании Бонусов, уменьшает цену товаров в заказе в + соответствии с условиями ПЛ. +

+

+ Для списания Бонусов Участник должен попросить об этом в кофе-баре сети + «COFFEE LIKE» кассира до момента пробития фискального чека, после чего им + будет проверена возможность списания Бонусов. +

+

+ Для всех Участников возможно списание без использования мобильного + приложения. +

+

Полученные Бонусы не подлежат обмену на денежные средства.

+
+ +

+ Начисленные на счет бонусы сгорают по прошествии 90 дней с момента + совершения последней покупки с начислением или списанием бонусов. +

- -
    - Уровень {{ index + 1 }} -
  • - Сумма покупок за прошлый квартал {{ item.start }}-{{ item.end }} - руб. -
  • -
  • Начисляемый бонус {{ item.percent }}% от суммы покупки
  • + Возврат покупки, за которую бонусы были начислены: +
  • + В случае, если бонусов на счету достаточно для списания, бонусы + списываются в полном ранее начисленном за возвращаемый товар объеме. +
  • +
  • + В случае, если бонусов на счету недостаточно, формируется минусовой + баланс. +
-
-
- +
    - Уровень {{ index + 1 }} -
  • Сумма покупок за прошлый квартал — от {{ item.start }} руб.
  • -
  • Начисляемый бонус, в % от суммы покупки - {{ item.percent }}%
  • + Возврат покупки, которая была оплачена бонусами: +
  • + В случае предъявления Участником кассового или товарного чека, сумма + бонусов, списанная для оплаты возвращаемого товара, зачисляется на счет + участника. +
  • +
  • + В случае возврата товара с применением оплаты бонусами, клиенту + возвращается денежная сумма в размере, внесенном Участником в оплату + товара при покупке, за вычетом суммы, оплаченной бонусами. +
-
-
-
+ - -

- Участник может использовать Бонусы для «оплаты» до 100% стоимости любой - покупки. -

-

- Списание Бонусов происходит из расчета 1:1 (один Бонус дает скидку 1 - российский рубль / 1 тенге / 1 белорусский рубль. Скидка, предоставляемая - Участнику при списании Бонусов, уменьшает цену товаров в заказе в - соответствии с условиями ПЛ. -

-

- Для списания Бонусов Участник должен попросить об этом в кофе-баре сети - «COFFEE LIKE» кассира до момента пробития фискального чека, после чего им - будет проверена возможность списания Бонусов. -

-

- Для всех Участников возможно списание без использования мобильного - приложения. -

-

Полученные Бонусы не подлежат обмену на денежные средства.

-
- -

- Начисленные на счет бонусы сгорают по прошествии 90 дней с момента - совершения последней покупки с начислением или списанием бонусов. -

+
-
    - Возврат покупки, за которую бонусы были начислены: -
  • - В случае, если бонусов на счету достаточно для списания, бонусы - списываются в полном ранее начисленном за возвращаемый товар объеме. -
  • -
  • - В случае, если бонусов на счету недостаточно, формируется минусовой - баланс. -
  • -
- -
    - Возврат покупки, которая была оплачена бонусами: -
  • - В случае предъявления Участником кассового или товарного чека, сумма - бонусов, списанная для оплаты возвращаемого товара, зачисляется на счет - участника. -
  • -
  • - В случае возврата товара с применением оплаты бонусами, клиенту - возвращается денежная сумма в размере, внесенном Участником в оплату - товара при покупке, за вычетом суммы, оплаченной бонусами. -
  • -
-
- -
- - +
diff --git a/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.scss b/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.scss index d5a5c6d..531bfda 100644 --- a/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.scss +++ b/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.scss @@ -1,3 +1,4 @@ .loyality-program { - + max-width: 600px; + margin: 0 auto; } diff --git a/angular/src/app/services/auth.service.ts b/angular/src/app/services/auth.service.ts index e30bd62..fb36b38 100644 --- a/angular/src/app/services/auth.service.ts +++ b/angular/src/app/services/auth.service.ts @@ -4,34 +4,25 @@ import { WpJsonService } from './wp-json.service'; import { environment } from 'src/environments/environment'; import { JsonrpcService, RpcService } from './jsonrpc.service'; import { MessageService } from 'primeng/api'; -import { UserInfo, Purchase, lvlPeriod, UserInfoWalletBalance, ResponseError } from '../interface/data'; +import { UserInfo, lvlPeriod, UserInfoWalletBalance, Moment } from '../interface/data'; import { lvlPeriods } from 'src/app/app.constants'; -import moment, { Moment } from 'moment-timezone'; +import moment from 'moment-timezone'; import { Router } from '@angular/router'; -export interface IPurchaseData { - currentPeriod: Moment[]; - lastPeriod: Moment[]; - currentAmount?: number; - lastPurchase?: Purchase; -} - @Injectable({ providedIn: 'root', }) export class AuthService { - public purchaseData: IPurchaseData = { - currentPeriod: [], - lastPeriod: [], - lastPurchase: undefined, - }; + lastPeriod: Moment[] = []; + currentPeriod: Moment[] = []; userInfo?: UserInfo; loading: boolean = false; error: any; timeLeft: number = 0; get currentLvlPeriod(): lvlPeriod { - return lvlPeriods[this.userInfo ? this.userInfo.customer_level - 1 : 0]; + return lvlPeriods[ + this.userInfo?.current_level_and_cashback ? this.userInfo?.current_level_and_cashback.current_level - 1 : 0]; } constructor( @@ -90,13 +81,14 @@ export class AuthService { this.userInfo = value.customer_info; this.cookiesService.setCookie('phone-number', this.userInfo!.phone?.slice(2)); - - this.getLastPurchase(); } }, error: (e) => { this.error = e; }, + complete: () => { + this.loading = false; + } }); } @@ -234,31 +226,18 @@ export class AuthService { for (let i = 0; i < 4; i++) { if (moment().isBetween(quarters[i][0], quarters[i][1])) { - this.purchaseData.lastPeriod = quarters[i - 1]; - this.purchaseData.currentPeriod = quarters[i]; + this.lastPeriod = quarters[i - 1]; + this.currentPeriod = quarters[i]; } } } getNextLevel(): lvlPeriod { - if (this.userInfo?.customer_level === lvlPeriods.length) { - return lvlPeriods[lvlPeriods.length - 1]; + if (this.userInfo?.next_level.next_level) { + return lvlPeriods[this.userInfo.next_level.next_level]; } - return this.userInfo && lvlPeriods[this.userInfo?.customer_level] || lvlPeriods[0]; - } - getLastPurchase() { - this.loading = true; - if (this.userInfo) { - this.wpJsonService.getLastPurchase(environment.systemId, this.token!).subscribe({ - next: (res) => { - this.purchaseData.lastPurchase = res[this.userInfo!.id][0]; - }, - complete: () => { - this.loading = false; - }, - }); - } + return lvlPeriods[0]; } getBalanceAmount(loyaltyPrograms: UserInfoWalletBalance[]) {