Back-Feature #417
Updated by Андрей Савран about 2 months ago
Требуется описать в коде сущности и создать сервисы для создания заказов (задача будет дополняться) --- Сущность 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 varchar (PK: uuid) taxi_plan_id: varchar (FK: taxi_plan.taxi_plan_id) 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 varchar (PK: uuid) user_id: uuid varchar (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) varchar (uuid, должен существовать в поле, оканчивающемся на details_id в одной из таблиц order_details) created_at: timestamp without time zone comment: varchar plan_id: uuid (FK: plan.plan_id) --- Сущность taxi_route_point - сущность, связывающая заказ автоняни и все остановки в пути, по которому возят детей: taxi_route_point_id: uuid varchar (PK: uuid) order_details_id: uuid taxi_order_details_id: varchar (FK: order_details.order_details_id) taxi_order_details.taxi_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/ - обновить детали заказа (сейчас обновляема только цена) ------- executorId и orderStatus)