From e67d7e70c22e005ec4f9e96ebb6fa9115bcb6cb0 Mon Sep 17 00:00:00 2001 From: gofnnp Date: Wed, 12 Apr 2023 22:02:58 +0400 Subject: [PATCH] =?UTF-8?q?dev=20#14073=20=D0=BF=D1=80=D0=B8=D0=BF=D0=B8?= =?UTF-8?q?=D0=BB=D0=B8=D0=BB=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=20?= =?UTF-8?q?=D0=BE=D0=BF=D0=BB=D0=B0=D1=82=20=D0=BA=D0=B0=D0=BA=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BA=D1=83=D1=80=D1=8C=D0=B5=D1=80=D1=81=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/app.module.ts | 6 +- src/app/pages/orders/orders.component.html | 12 ++- src/app/pages/orders/orders.component.ts | 114 ++++++++++++++++++++- src/app/pipes/payment-status.pipe.ts | 22 ++++ src/app/pipes/payment-type.pipe.ts | 18 ++++ src/app/services/jsonrpc.service.ts | 6 +- src/environments/environment.prod.ts | 2 +- src/environments/environment.ts | 2 +- 8 files changed, 171 insertions(+), 11 deletions(-) create mode 100644 src/app/pipes/payment-status.pipe.ts create mode 100644 src/app/pipes/payment-type.pipe.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 5e0183b..8f7b2b0 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -30,6 +30,8 @@ import { DropdownModule } from 'primeng/dropdown'; import { ChipsModule } from 'primeng/chips'; import { ButtonModule } from 'primeng/button'; import {MultiSelectModule} from 'primeng/multiselect'; +import { PaymentTypePipe } from './pipes/payment-type.pipe'; +import { PaymentStatusPipe } from './pipes/payment-status.pipe'; const routes = [ { path: 'clients', component: ClientsComponent }, @@ -52,7 +54,9 @@ const routes = [ DivisionsComponent, AreasComponent, MenuComponent, - ExitComponentComponent + ExitComponentComponent, + PaymentTypePipe, + PaymentStatusPipe ], imports: [ BrowserModule, diff --git a/src/app/pages/orders/orders.component.html b/src/app/pages/orders/orders.component.html index 5f5ed19..b5613ea 100644 --- a/src/app/pages/orders/orders.component.html +++ b/src/app/pages/orders/orders.component.html @@ -147,14 +147,20 @@ - Сумма оплаты по безналу: - Тип оплаты: + Сумма оплаты + Тип оплаты + Статус оплаты + Отмена заказа {{pay.summ}} - {{pay.type}} + {{pay.type | paymentType}} + {{pay.payload.status | paymentStatus}} + + + diff --git a/src/app/pages/orders/orders.component.ts b/src/app/pages/orders/orders.component.ts index a72e9fb..5798f4e 100644 --- a/src/app/pages/orders/orders.component.ts +++ b/src/app/pages/orders/orders.component.ts @@ -18,7 +18,8 @@ import { SelectItem, } from 'primeng/api'; import { OrderTypes } from 'src/app/data/data'; -import { catchError, map } from 'rxjs'; +import { catchError, forkJoin, map } from 'rxjs'; +import { environment } from 'src/environments/environment'; /*import { SwPush, NewsletterService } from '@angular/service-worker*/ @Component({ @@ -265,7 +266,7 @@ export class OrdersComponent implements OnInit { async vievOrder(id: any) { this.dis = false; - await this.jsonRpcService + this.jsonRpcService .rpc2( { method: 'getOrders', @@ -279,6 +280,7 @@ export class OrdersComponent implements OnInit { let data = result.result; this.order = data; this.selectedStatus = this.order[0].status_h + this.getPaymentData(); }, error: (err) => { console.log('ERROR: ', err); @@ -292,6 +294,114 @@ export class OrdersComponent implements OnInit { setTimeout(() => this.getOrderRefunds(this.order[0].external_id), 400); } + getPaymentData() { + forkJoin([ + this.jsonRpcService.rpc2( + { + method: 'getPaymentData', + params: { + system_id: environment.systemId, + order_id: String(this.order[0].external_id), + }, + }, + RpcService.authService, + false, + location.origin + ), + this.jsonRpcService.rpc2( + { + method: 'getPaymentStatus', + params: { + system_id: environment.systemId, + order_id: String(this.order[0].external_id), + }, + }, + RpcService.authService, + false, + location.origin + ), + ]).subscribe({ + next: ([paymentData, paymentStatus]) => { + const payment_request = paymentData.result.payment_request; + this.order[0].payment.push({ + summ: payment_request.amount, + type: payment_request.type, + payload: { + id: payment_request.id, + status: paymentStatus.result.status, + }, + }); + }, + error: (error) => { + console.log('ERROR: ', error); + this.messageService.add({ + severity: 'error', + summary: 'Произошла ошибка!', + }); + }, + }); + } + + cancelOrder(payment_request_id: string) { + this.jsonRpcService + .rpc2( + { + method: 'cancelPayment', + params: { + payment_request_id, + system_id: environment.systemId, + }, + }, + RpcService.authService, + false, + location.origin + ) + .subscribe({ + next: (value) => { + this.changeOrderStatus(this.order[0].id, 'cancel'); + this.messageService.add({ + severity: 'success', + summary: 'Заказ отменен успешно!', + }); + }, + error: (error) => { + console.log('ERROR: ', error); + this.messageService.add({ + severity: 'error', + summary: 'Произошла ошибка!', + }); + }, + }); + } + + changeOrderStatus(orderId: number, status: string) { + this.jsonRpcService + .rpc2( + { + method: 'changeOrderStatusForOperator', + params: [Number(this.choose), Number(orderId), status], + }, + RpcService.authService, + false + ) + .subscribe({ + next: (value) => { + this.order[0].status = status; + this.messageService.add({ + severity: 'success', + summary: 'Статус заказа успешно изменён!', + }); + }, + error: (err) => { + console.log('ERROR: ', err); + this.messageService.add({ + severity: 'error', + summary: 'Произошла ошибка!', + }); + }, + }); + } + async getOrderRefunds(id: any) { await this.jsonRpcService .rpc2( diff --git a/src/app/pipes/payment-status.pipe.ts b/src/app/pipes/payment-status.pipe.ts new file mode 100644 index 0000000..f2e87a1 --- /dev/null +++ b/src/app/pipes/payment-status.pipe.ts @@ -0,0 +1,22 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'paymentStatus' +}) +export class PaymentStatusPipe implements PipeTransform { + private statuses = { + NEW: 'Новый', + CREATED: 'Новый', + CANCELED: 'Отменен', + OVERDUE: 'Отменен', + PAID: 'Оплачено', + NOTIFIED: 'Оплачено', + INTERNAL_ERROR: 'Ошибка', + PROCESSING: 'В процессе', + } + + transform(value: string, ...args: unknown[]): unknown { + return this.statuses[value as keyof typeof this.statuses] || value; + } + +} diff --git a/src/app/pipes/payment-type.pipe.ts b/src/app/pipes/payment-type.pipe.ts new file mode 100644 index 0000000..e4b4bbc --- /dev/null +++ b/src/app/pipes/payment-type.pipe.ts @@ -0,0 +1,18 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'paymentType' +}) +export class PaymentTypePipe implements PipeTransform { + + private types = { + CASH: 'Наличные', + CARD: 'Карта', + SBP: 'СБП' + } + + transform(value: unknown, ...args: unknown[]): unknown { + return this.types[value as keyof typeof this.types] || value; + } + +} diff --git a/src/app/services/jsonrpc.service.ts b/src/app/services/jsonrpc.service.ts index 1859618..445c500 100644 --- a/src/app/services/jsonrpc.service.ts +++ b/src/app/services/jsonrpc.service.ts @@ -64,7 +64,7 @@ export class JsonrpcService { } } - rpc2(data: { method: string, params: any }, service: RpcService, auth = false): Observable { + rpc2(data: { method: string, params: any }, service: RpcService, auth = false, url: string = ''): Observable { let headers = new HttpHeaders(); const token = decodeURI(this.cookiesService.getItem('token') ?? ''); @@ -78,11 +78,11 @@ export class JsonrpcService { id: uuidv4(), jsonrpc: this.jsonrpc, method: data.method, - params: { ...data.params }, + params: data.params, }; try { return this.http - .post(environment.appSelfDeliveryEndPoint, this.body, options) + .post(url.length ? (url + "/api/payment") : (location.origin + "/api"), this.body, options) .pipe(map((res: any) => res)); } catch (error) { return new Observable() diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index e939b73..9e396fd 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -1,5 +1,5 @@ export const environment = { production: true, appSelfDeliveryEndPoint: 'http://selfdelivery-pitsburg.mydatahosting.ru/admin_api', - systemId: 'dfe16ca16a3598b812', + systemId: 'd0b89b219e1feb3d7', }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index d69e879..043c9e1 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -5,7 +5,7 @@ export const environment = { production: false, appSelfDeliveryEndPoint: 'http://localhost:4200/api', - systemId: 'dfe16ca16a3598b812', + systemId: 'd0b89b219e1feb3d7', }; /*