Back-Feature #417
closedCRUD для заказов
Description
Требуется описать в коде сущности и создать сервисы для создания заказов
(задача будет дополняться)
Сущность service (услуга)
service_id: uuid (PK: uuid)
name: varchar
description:
Сущность plan (базовый тариф)
plan_id: uuid (PK: uuid)
service_id: uuid (FK: service.service_id)
Сущность order_details (базовые детали заказа)
order_details_id: uuid (PK: uuid)
service_id: uuid (FK: service.service_id)
date: timestamp without time zone
cost: numeric
currency: varchar
Сущность taxi_plan (тариф такси)
taxi_plan_id: (PK: uuid)
name: varchar
description: varchar
price: numeric
currency: varchar
commission_percent: numeric
duration_minutes: integer
plan_id: uuid (FK: plan.plan_id)
Сущность taxi_order_details (детали заказа такси)
taxi_order_details_id: uuid (PK: uuid)
address_clarification: varchar
additional_commentary: varchar
additional_pics: varchar[]
promo_code: varchar
contacts: varchar
date: timestamp without time zone
order_details_id: uuid (FK: order_details.order_details_id)
currency: varchar
cost: numeric
Сущность order
order_id: uuid (PK: uuid)
user_id: uuid (FK: user.user_id)
executor_id: varchar
order_status: enum (enum OrderStatus, пока что содержит только:
OrderStatus.CREATED, OrderStatus.IN_PROGRESS, OrderStatus.COMPLETED)
order_type: enum (enum OrderType, на данный момент содержит только OrderType.TAXI)
details_id: uuid (FK: order_details.order_details_id)
created_at: timestamp without time zone
comment: varchar
plan_id: uuid (FK: plan.plan_id)
Сущность taxi_route_point - сущность, связывающая заказ автоняни и все остановки в пути, по которому возят детей:
taxi_route_point_id: uuid (PK: uuid)
order_details_id: uuid (FK: order_details.order_details_id)
route_point_index: integer (показывает номер остановки, таким образом можно добавить сколько угодно остановок в один заказ)
address: varchar
latitude: varchar
longitude: varchar
Контроллеры в gate
TaxiRoutePointController - контроллер точек путей такси
GET taxi/routePoint/{detailsId} - получить путь такси, привязанного к деталям заказа
POST taxi/routePoint - добавить путь такси
TaxiPlanController - контроллер тарифов такси
GET taxi/plan - получить все тарифы такси
GET taxi/plan/{planId} - получить конкретный тариф такси
POST taxi/plan - создать тариф такси
PATCH taxi/plan - обновить тариф такси
(последние два метода можно вынести в админку в будущем, потому что по идее обычным пользователям не должен быть доступен этот функционал, но он реализован)
TaxiOrderDetailsController - контроллер деталей заказов такси
GET taxi/order-details/{detailsId} - получить детали заказа такси
POST taxi/order-details - создать детали заказа такси
PATCH taxi/order-details - обновить детали заказа такси (добавить промокод, поменять уточнения, контакты)
OrderController - контроллер заказов
GET order/ - получить все заказы пользователя (в этом, и других методах пользователь берётся из JWT)
GET order/{orderId} - получить конкретный заказ по айди
POST order/ - создать заказ
PATCH order/ - обновить заказ (можно изменить comment)
PlanController - контроллер базовых тарифов
GET plan/{planId} - получить конкретный базовый тариф
POST plan/ - создать базовый тариф (метод для админки?)
ServiceController - контроллер услуг
GET service/{serviceId} - получить конкретную услугу
GET service/ - получить все услуги
POST service/ - создать услугу
PATCH service/ - обновить услугу (сейчас можно обновить только описание)
OrderDetailsController - контроллер деталей заказа
GET orderDetails/{orderDetailsId} - получить конкретные детали заказа
POST orderDetails/ - создать детали заказа
PATCH orderDetails/ - обновить детали заказа (сейчас обновляема только цена)