Иди на текст

Order servis

ordify-order-servicecentralni 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: KREIRANOPRIHVAĆENOU_DOSTAVIDOSTAVLJENO; 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

  1. Validacija GPS koordinata (400 ako nedostaju)
  2. Geofencing proveraGeofencingService.isLocationInDeliveryZone(lat, lng)
  3. Batch poziv ka menu-service (POST /api/products/batch) za cene
  4. Provera dostupnosti svakog proizvoda (400 ako je nedostupan)
  5. Snapshot imena/cena u OrderItem, računanje totalPrice
  6. 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

./mvnw compile quarkus:dev

Zahteva menu-service na http://localhost:5006 (podešava se u application.propertiesquarkus.rest-client.menu-api.url).