Order Service — Phase 3
Что сделано
DTO
CheckoutRequest.java — добавлено поле @JsonProperty("customer_id") UUID customerId
OpenDineInRequest.java — то же
Service
OrderService.checkout — Order.builder().customerId(req.getCustomerId())
OrderService.openDineIn — то же
- NEW
attachCustomerInternal(orderId, customerId) — без JwtUser, для X-Service-Token из POS BFF
- NEW
detachCustomerInternal(orderId) — то же
Controller
InternalOrderController — добавлены 2 endpoint’а:
PATCH /internal/orders/{id}/customer — body { customer_id: UUID }
DELETE /internal/orders/{id}/customer — 204
Не трогали
Order entity — customer_id колонка уже была (миграция 006-br-3-1)
- Public
OrderController.attachCustomer / detachCustomer — оставлены для админ-flow
- Customer Service — не трогали, всё уже было готово
- Bridge events (order.customer.attached) — пока не публикуются, аналитика идёт через customer-summary endpoint который уже работает
Файлы
src/main/java/com/erp/order/dto/request/CheckoutRequest.java
src/main/java/com/erp/order/dto/request/OpenDineInRequest.java
src/main/java/com/erp/order/service/OrderService.java
src/main/java/com/erp/order/controller/InternalOrderController.java
Smoke
SVC=erp-internal-service-token-2026
ORDER_ID=$(...создать заказ через /checkout с customer_id...)
CUSTOMER_ID=$(curl /internal/customers/search-by-phone?franchise_id=...&phone=+79161234567 | jq -r .data.id)
# Attach
curl -X PATCH http://localhost:3005/internal/orders/$ORDER_ID/customer \
-H "X-Service-Token: $SVC" -H 'Content-Type: application/json' \
-d "{\"customer_id\":\"$CUSTOMER_ID\"}"
# → { "data": { ..., "customer_id": "..." } }
# Detach
curl -X DELETE http://localhost:3005/internal/orders/$ORDER_ID/customer \
-H "X-Service-Token: $SVC"
# → 204