Order servis¶
ordify-order-service — centralni biznis servis Ordify platforme: korpa, kreiranje porudžbina, pravila dostave (minimalni iznosi, besplatna dostava) i geofencing provera.
- Port: 5007
- Status: ✅ Aktivan
- Repo:
Marinkovic-Co/ordify-order-service
Funkcionalnosti¶
- Kreiranje porudžbina sa geofencing proverom (da li je lokacija u zoni dostave)
- Snapshot podaci u OrderItem (ime i cena u trenutku porudžbine)
- Statusi porudžbina:
KREIRANO → PRIHVAĆENO → U_DOSTAVI → DOSTAVLJENO/ODBIJENO - Integracija sa menu-service (REST batch poziv za cene)
- CRUD zona dostave (u pripremi za uklanjanje — prelazi na geofencing-service)
Modeli¶
Order
| Polje | Tip | Napomena |
|---|---|---|
customerName |
String | |
deliveryAddress |
String | Prikaz na računu |
latitude / longitude |
Double | GPS lokacija kupca |
note |
String (500) | Napomena kupca |
totalPrice |
BigDecimal | Računa se na osnovu trenutnih cena |
status |
OrderStatus | Enumeracija |
createdAt |
LocalDateTime | |
items |
List\<OrderItem> | Cascade ALL |
OrderItem
| Polje | Tip | Napomena |
|---|---|---|
productId |
Long | Link ka proizvodu |
productName |
String | Snapshot u trenutku porudžbine |
pricePaid |
BigDecimal | Snapshot cene |
quantity |
int | |
order |
Order | ManyToOne (JsonIgnore) |
OrderStatus: KREIRANO → PRIHVAĆENO → U_DOSTAVI → DOSTAVLJENO; alternativno ODBIJENO.
API¶
| Metod | Putanja | Opis |
|---|---|---|
| POST | /api/orders |
Kreiranje porudžbine (geofencing + provera dostupnosti) |
| PUT | /api/orders/{id}/status |
Promena statusa (string → enum) |
| GET | /api/orders |
Sve porudžbine |
| GET/POST/PUT/DELETE | /api/admin/zones |
CRUD zona (duplikat geofencing-servisa) |
Tok kreiranja porudžbine¶
- Validacija GPS koordinata (400 ako nedostaju)
- Geofencing provera —
GeofencingService.isLocationInDeliveryZone(lat, lng) - Batch poziv ka menu-service (
POST /api/products/batch) za cene - Provera dostupnosti svakog proizvoda (400 ako je nedostupan)
- Snapshot imena/cena u
OrderItem, računanjetotalPrice - Perzistencija sa statusom
KREIRANO
REST klijent¶
MenuServiceClient (@RegisterRestClient(configKey = "menu-api")) → POST /api/products/batch.
URL se konfiguriše: quarkus.rest-client.menu-api.url=http://localhost:5006.
Geofencing duplikat
Order-service trenutno sadrži dupliranu geofencing logiku (modeli DeliveryZone, ZonePoint, LngLat + GeofencingService sa ray-casting algoritmom) koja je izdvojena u poseban ordify-geofencing-service. Plan: ukloniti duplikat i pozivati geofencing-servis preko REST-a.
Pokretanje¶
Zahteva menu-service na http://localhost:5006 (podešava se u application.properties → quarkus.rest-client.menu-api.url).