ver. 0.290: ShopCoupon + ShopOrder frontend migration to Domain + Controllers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -16,17 +16,17 @@ Panel administratora (33 moduły) został w pełni zmigrowany na architekturę D
|
||||
| Site | Router główny | route(), check_url_params(), title() |
|
||||
| ShopBasket | ZMIGROWANY do `front\Controllers\ShopBasketController` | Operacje koszyka, add/remove/quantity, checkout |
|
||||
| ShopClient | ZMIGROWANY do `front\Controllers\ShopClientController` | Logowanie, rejestracja, odzyskiwanie hasla, adresy, zamowienia |
|
||||
| ShopOrder | KRYTYCZNY | Webhooki płatności (tPay, Przelewy24, Hotpay) — bezpośrednie operacje DB |
|
||||
| ShopOrder | ZMIGROWANY do `front\Controllers\ShopOrderController` | Webhooki płatności + order details |
|
||||
| ShopProduct | Fasada | lazy_loading, warehouse_message, draw_product_attributes |
|
||||
| ShopProducer | Fasada | list(), products() |
|
||||
| ShopCoupon | Fasada | use_coupon(), delete_coupon() |
|
||||
| Newsletter | Fasada | signin(), confirm(), unsubscribe() |
|
||||
| ShopCoupon | ZMIGROWANY do `front\Controllers\ShopCouponController` | use_coupon(), delete_coupon() |
|
||||
| Newsletter | ZMIGROWANY do `front\Controllers\NewsletterController` | signin(), confirm(), unsubscribe() |
|
||||
|
||||
### front/factory/ (20 klas — pobieranie danych + logika)
|
||||
| Klasa | Status | Priorytet migracji |
|
||||
|-------|--------|--------------------|
|
||||
| ShopProduct | ORYGINALNA LOGIKA (~370 linii) | KRYTYCZNY — product_details(), promoted/top/new products |
|
||||
| ShopOrder | ORYGINALNA LOGIKA (~180 linii) | KRYTYCZNY — basket_save() tworzy zamówienie |
|
||||
| ShopOrder | ZMIGROWANA do `OrderRepository` — usunięta | — |
|
||||
| ShopClient | ZMIGROWANA do `ClientRepository` + `ShopClientController` — usunięta | — |
|
||||
| ShopCategory | ZMIGROWANA do `CategoryRepository` — usunięta | — |
|
||||
| Articles | ORYGINALNA LOGIKA | WYSOKI — złożone SQL z language fallback |
|
||||
@@ -44,7 +44,7 @@ Panel administratora (33 moduły) został w pełni zmigrowany na architekturę D
|
||||
| Menu | USUNIETA — przepieta na Domain | — |
|
||||
| Pages | USUNIETA — przepieta na Domain | — |
|
||||
| ShopAttribute | ZMIGROWANA (Domain) — usunięta | — |
|
||||
| ShopCoupon | Model danych | NISKI |
|
||||
| ShopCoupon | ZMIGROWANA do `CouponRepository` — usunięta | — |
|
||||
|
||||
### front/view/ (12 klas — renderowanie)
|
||||
| Klasa | Status |
|
||||
@@ -57,7 +57,8 @@ Panel administratora (33 moduły) został w pełni zmigrowany na architekturę D
|
||||
| Banners | PRZENIESIONA do `front\Views\Banners` |
|
||||
| Languages, Newsletter | PRZENIESIONE do `front\Views\` (nowy namespace) |
|
||||
| ShopClient | PRZENIESIONA do `front\Views\ShopClient` |
|
||||
| ShopOrder, ShopPaymentMethod | Czyste VIEW |
|
||||
| ShopOrder | ZMIGROWANA do `ShopOrderController` — usunięta |
|
||||
| ShopPaymentMethod | Czyste VIEW |
|
||||
| ShopTransport | PUSTA klasa (placeholder) |
|
||||
|
||||
### shop/ (14 klas — encje biznesowe)
|
||||
@@ -464,38 +465,41 @@ front\factory\ShopPromotion::promotion_type_XX() → shop\Product::is_product_on
|
||||
|
||||
---
|
||||
|
||||
### Etap: Order Creation Frontend Service
|
||||
### Etap: Order Creation Frontend Service — ZREALIZOWANY (ver. 0.290)
|
||||
|
||||
**Cel:** Migracja `front\factory\ShopOrder::basket_save()` (~180 linii).
|
||||
|
||||
**NOWE:**
|
||||
- `Domain/Order/OrderFrontendService.php`:
|
||||
- `createOrder()` — tworzenie zamówienia z koszyka (walidacja, kalkulacja cen, insert, redukcja stanów, obsługa kuponu, wysyłka emaili, auto-status dla pobrania)
|
||||
**ZREALIZOWANE:** (wg wytycznej "NIE tworzymy osobnych FrontendService/AdminService" — metody dodane do istniejącego `OrderRepository`)
|
||||
- `Domain/Order/OrderRepository.php` — dodane metody frontendowe:
|
||||
- `createFromBasket()` — tworzenie zamówienia z koszyka (21 parametrów, pełna logika basket_save)
|
||||
- `generateOrderNumber()` — format YYYY/MM/NNN
|
||||
- `orderDetails()`, `orderIdByHash()`, `orderHashById()`
|
||||
- Testy: `OrderFrontendServiceTest`
|
||||
- `orderDetailsFrontend()`, `findIdByHash()`, `findHashById()`
|
||||
- `front/Controllers/ShopOrderController.php` — kontroler z DI (OrderRepository)
|
||||
- Testy: `OrderRepositoryTest` (9 nowych), `ShopOrderControllerTest` (3 nowe)
|
||||
|
||||
**ZMIANA:**
|
||||
- `front/factory/ShopOrder` → fasada
|
||||
**USUNIĘTE:**
|
||||
- `front/factory/class.ShopOrder.php`
|
||||
- `front/controls/class.ShopOrder.php`
|
||||
- `front/view/class.ShopOrder.php`
|
||||
|
||||
**CALLERY ZAKTUALIZOWANE:**
|
||||
- `ShopBasketController` — DI OrderRepository, zmiana basket_save/order_hash
|
||||
- `ClientRepository::clientOrders()` — OrderRepository::orderDetailsFrontend()
|
||||
- `shop\Order::order_resend_confirmation_email()` — OrderRepository::orderDetailsFrontend()
|
||||
- `cron-turstmate.php` — OrderRepository::orderDetailsFrontend()
|
||||
|
||||
---
|
||||
|
||||
### Etap: Payment Webhook Service
|
||||
### Etap: Payment Webhook Service — ZREALIZOWANY (ver. 0.290)
|
||||
|
||||
**Cel:** Wyodrębnienie webhooków płatności z `front\controls\ShopOrder`.
|
||||
|
||||
**NOWE:**
|
||||
- `Domain/Payment/PaymentWebhookService.php`:
|
||||
- `processTpay(array $params)` — weryfikacja tPay
|
||||
- `processPrzelewy24(array $params)` — weryfikacja przez API + walidacja kwoty
|
||||
- `processHotpay(array $params)` — walidacja SHA256 hash
|
||||
- `private markOrderPaid()` — wspólna logika (update status + email + Apilo sync)
|
||||
- Testy: `PaymentWebhookServiceTest`
|
||||
**ZREALIZOWANE:** (webhooki przeniesione do `front\Controllers\ShopOrderController` — nadal używają `\shop\Order` do operacji statusów/płatności)
|
||||
- `ShopOrderController::paymentStatusTpay()` — przeniesione 1:1
|
||||
- `ShopOrderController::paymentStatusPrzelewy24pl()` — ujednolicone z tpay (set_as_paid + update_status zamiast ręcznego $mdb->update)
|
||||
- `ShopOrderController::paymentStatusHotpay()` — analogiczna zamiana na \shop\Order metody
|
||||
|
||||
**ZMIANA:**
|
||||
- `front/controls/ShopOrder` — webhooki stają się thin wrappers
|
||||
|
||||
**POPRAWA:** Zamiana `file_put_contents('tpay.txt')` na `\Log::save_log()`
|
||||
**UWAGA:** `\shop\Order` nie jest jeszcze zmigrowany — osobny etap (Order Instance + Apilo Service)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user