Рубрики
Без рубрики

Давайте добавим функцию оформления заказа в наше приложение для электронной коммерции с помощью Spring Boot

Давайте добавим функцию оформления заказа в наше приложение для электронной коммерции с помощью Spring Boot В этом уроке… С тегами e commerce, springboot, java.

Давайте добавим функцию оформления заказа в наше приложение для электронной коммерции с помощью Spring Boot

В этом руководстве мы узнаем, как создать заказ и отобразить историю заказов пользователя

Вступление

Мы создаем приложение для электронной коммерции с нуля, используя Vue.js в интерфейсе и Java с Spring boot для серверной части. Вы можете ознакомиться с первым руководством по интерфейсу из этой серии здесь.

Давайте разработаем приложение для электронной коммерции С Нуля, используя Java и Spring | by NilMadhab | Javarevisited | Medium

Нулевой Мазхаб ・ 24 марта 2021 г. ・ Средний

Размещение заказа – важная функция для приложения электронной коммерции, которое позволяет пользователям заказывать товары по своему выбору.

Сначала мы разработаем серверный API с помощью Spring Boot, а в следующем руководстве мы будем использовать этот API для интерфейсной части нашего веб-сайта электронной коммерции.

Живая демо-версия

Вы можете протестировать API по следующей ссылке swagger. Вы найдете API корзины в разделе “Контроллер заказов” (сначала запустите код в вашем локальном браузере).

Swagger API

Вы можете найти полный код по адресу Github .

Пред- реквизиты

  1. Знание Java, ООП и Spring Boot Framework

  2. Java Development Kit (JDK)

  3. IntelliJ IDEA Ultimate — с открытым исходным кодом (рекомендуется)

  4. MySQL /MariaDB База данных

  5. Хороший браузер (рекомендуется Chrome)

Структура проекта

Предварительный просмотр API мы будем строить

разместить заказ(/заказать/добавить) : Это метод post, который отвечает за сохранение заказа пользователя.

получить все Заказы(/order/) : Это метод get, который возвращает список всех заказов конкретного пользователя. Поэтому в качестве параметра требуется только токен пользователя.

Ход учебного пособия

Дизайн стола

Модель

Прежде чем мы начнем кодировать, мы должны потратить некоторое время на обдумывание дизайна модели/таблицы. Итак, нам нужны две таблицы, которые будут связаны друг с другом. Итак, в существующем пакете модели создайте два файла Order.java и OrderItem.java .

Первая таблица/модель (мы называем его order) будет содержать такие атрибуты, как id (первичный ключ), user_id (внешний ключ), created_date, идентификатор сеанса (идентификатор сеанса платежа, который мы сгенерировали) и total_price .

Идентификатор пользователя, который мы будем извлекать из таблицы users.

Если вам интересно узнать идентификатор сеанса, пожалуйста, обратитесь к этому руководству , где мы объяснили сеанс проверки.

Вторая таблица/модель ((((мы называем его orderitems) на самом деле будет содержать продукты, которые присутствуют в определенном порядке. Там нам нужно связать эти две таблицы. Таким образом, первичный ключ , т.е. идентификатор из таблицы order, будет использоваться в качестве внешнего ключа в таблице orderitems. Таким образом, атрибутами таблицы orderitems будут order_item_id, created_date, price, product_id(внешний ключ), количество, order_id(внешний ключ).

Продукт i d мы будем получены из таблицы продуктов.

Модель заказа

Взаимосвязь таблиц

таблица заказов и таблица элементов заказа имеют тип отношения один ко многим, т.е. одна строка (запись) в таблице заказов связана с несколькими строками (элементами этого конкретного порядка) в таблице orderitems.

Аналогично, таблицы заказов и пользователей имеют тип отношения многие к одному, т.е. несколько заказов (записей/строк) связаны с одним пользователем (строка/запись), поскольку у пользователя может быть несколько заказов.

Модель элементов заказа

Взаимосвязь таблиц

Таблица заказов, которую мы только что создали, и эта таблица orderitems имеют тип отношения многие к одному, поскольку несколько товаров (продуктов) могут быть связаны с определенным заказом.

таблица products и таблица orderitems имеют тип отношения один к одному, поскольку строка (элемент) в таблице orderitems связана только с одной строкой (элементом) в таблице products.

Хранилище

Создайте два java-файла в существующем пакете репозитория OrderRespository.java и OrderItemsRespository.java .

  1. Сначала мы создаем интерфейс репозитория для таблицы заказов(OrderRespository.java ).

Создание методов CRUD вручную означает написание большого количества шаблонного кода, если вы не позволите интерфейсу JpaRepository выполнять за вас рутинные реализации. Итак, мы расширим JpaRepository и создадим интерфейс CartRepository.

  • Расширение JpaRepository автоматически создаст и реализует методы для основных операций CRUD.

  • Мы определим метод findAllByUserId Order By CreatedDate Desc для получения списка заказов пользователя, а затем упорядочим список по созданной дате каждой записи в таблице заказов. Реализацией этого метода будет автоматически управлять JpaRepository .

  • Аналогично мы создаем интерфейс репозитория для таблицы orderitems(OrderItemsRespository.java ).

    Мы не объявляем здесь никакого метода, но вместо этого мы будем использовать один метод в классе service позже.

DTO

В пакете dto создайте пакет с именем order, в котором создайте 3 файла orderDto.java , OrderItemsDto.java и placeOrderDto.java .

  1. Мы создаем Ordered to for как фиктивный объект для модели заказа с двумя полями id и userId .

    1. Аналогично мы создаем Orderitemdto В настоящее время мы не будем использовать это, но для будущего использования или изменений мы сохраняем это наготове.
    2. Теперь в поле Разместить заказ мы объявляем три поля id, userId и общую стоимость заказа. Этот dto будет использоваться для сохранения заказа в таблице заказов. ## Сервис

Теперь давайте реализуем класс Service для взаимодействия с таблицей order и orderitems. В интерфейсе OrderRepositoryinterface мы определили методы для взаимодействия с базой данных .

В классе Service мы будем вызывать эти методы и реализовывать так называемую бизнес-логику. Мы создадим методы для добавления заказа, извлекая все заказы пользователя. Внутри этих методов мы будем вызывать методы, определенные в OrderRepositoryinterface.

  1. Во-первых, давайте реализуем класс обслуживания элементов заказа. В этом классе мы реализуем один метод для сохранения товара/продукта в определенном порядке.
    1. Теперь давайте создадим класс обслуживания заказов, который будет содержать логику для размещения заказа и получения сведений о заказе.

PlaceOrder: Этот метод используется для установки порядка размещения, и он получает идентификатор заказа из метода SaveOrder. Этот идентификатор возвращается из метода SaveOrder, потому что нам нужен этот идентификатор в качестве атрибута в таблице OrderItems. Также, используя объект класса cardservice, мы извлекаем товары из корзины, а затем сохраняем их в таблице orderitems, используя метод в классе orderItemsService. И как только заказ размещен, мы удаляем корзину, то есть удаляем товары из корзины.

список заказов: Этот метод примет идентификатор пользователя в качестве параметра, а затем вернет список всех заказов из таблицы заказов, соответствующих этому идентификатору пользователя.

Контроллер

Здесь мы создадим наши API-интерфейсы.

В пакете контроллера создается файл OrderController.java и аннотируйте класс с помощью RestController annotation . В этом классе OrderController мы будем использовать методы, которые мы определили в классе OrderService.

  1. Итак, сначала мы внедрим API для сохранения заказа. Создайте метод PlaceOrder, который принимает токен и идентификатор сеанса в качестве параметров.

Этот метод, который выдает исключение

  • если недопустимый пользователь (не вошедший в систему) попытается разместить заказ

  • если пользователь (действительный) пытается разместить заказ на товар, которого нет в таблице товаров.

  1. Поскольку мы добавили заказ в таблицу, теперь мы создаем API для получения заказов пользователя. Этот метод выдает исключение, если недопустимый пользователь пытается получить историю заказов.

Поздравляю!!!

Теперь мы успешно добавили функцию заказа в наше приложение электронной коммерции с помощью Spring Boot. В следующем уроке мы реализуем интерфейсную часть с использованием этих API с помощью Vuejs, так что следите за обновлениями!

Оригинал: “https://dev.to/nilmadhabmondal/let-s-add-the-place-order-feature-to-our-e-commerce-app-using-spring-boot-4lfj”