Skip to content

Latest commit

 

History

History
459 lines (347 loc) · 20.8 KB

README.md

File metadata and controls

459 lines (347 loc) · 20.8 KB

Loja Deva - Projeto Final do módulo de Programação Web.

Índice

Descrição do Projeto

Este projeto é o resultado final do módulo de Programação Web do Programa Deva da B3 em parceria com a Ada Tech. O objetivo principal foi desenvolver uma API de e-commerce em Java utilizando tecnologias como Maven, Spring Boot, JPA, Banco de Dados H2 e Spring Security. O projeto abrange diversas funcionalidades essenciais para um e-commerce, como gestão de clientes, produtos, carrinho de compras, pedidos e métodos de pagamento.

Pré-requisitos

Tecnologias Utilizadas

  • Java
  • Maven
  • Spring Boot
  • Spring Data JPA
  • H2 Database
  • Spring Security
  • Swagger

Estrutura do Projeto

O projeto está organizado nas seguintes pastas e classes:

Pasta config

  • RestControllerAdvice: Classe que fornece tratamento global de exceções para controladores REST.
  • SecurityConfig: Configurações de segurança utilizando o Spring Security.
  • SwaggerConfig: Configurações para a documentação da API utilizando o Swagger.

Pasta controller

  • BasketItemController: Controlador responsável por operações relacionadas aos itens do carrinho.
  • ClientController: Controlador para gerenciamento de clientes.
  • OrderController: Controlador responsável por operações relacionadas a pedidos.
  • OrderItemController: Controlador para operações relacionadas aos itens de pedidos.
  • ProductController: Controlador para gerenciamento de produtos.
  • ShoppingBasketController: Controlador para operações do carrinho de compras.

Pasta domain

  • Classes de domínio representando entidades essenciais para o e-commerce, como BasketItem, Client, Order, OrderItem, PaymentMethod, Product, ShoppingBasket e Status.

Pasta dto

  • Classes de Transferência de Dados (DTO) utilizadas para comunicação entre o frontend e o backend, incluindo classes como BasketItemRequest, ClientRequest, ClientResponse, OrderRequest, ProductRequest, ShoppingBasketRequest, UpdateItemQuantityRequest, UpdateOrderRequest e UpdateProductDetailsRequest.

Pasta repository

  • Interfaces de repositório que estendem JpaRepository para acesso ao banco de dados, incluindo BasketItemRepository, ClientRepository, OrderItemRepository, OrderRepository, ProductRepository e ShoppingBasketRepository.

Pasta service

  • Classes de serviço que encapsulam a lógica de negócios, incluindo subpacote exceptions com a classe ResourceNotFoundException.
  • BasketItemService é responsável por fornecer lógica de negócios relacionada aos itens do carrinho de compras. Ele gerencia a adição, remoção e atualização de itens no carrinho.
  • ClientService lida com operações relacionadas à gestão de clientes, incluindo cadastro, atualização e busca de informações do cliente.
  • OrderItemService é encarregado de manipular os itens de pedidos. Ele gerencia a criação e atualização de itens associados aos pedidos feitos pelos clientes.
  • OrderService gerencia as operações relacionadas à criação e processamento de pedidos. Ele interage com OrderItemService para garantir a integridade dos pedidos.
  • ProductService trata de operações relacionadas à gestão de produtos. Ele lida com a adição, remoção e atualização de produtos disponíveis para compra.
  • ShoppingBasketService é responsável pela lógica de negócios relacionada ao carrinho de compras como um todo. Ele interage com BasketItemService para garantir que o carrinho seja manipulado de acordo com as necessidades do cliente.

Esses serviços são essenciais para o funcionamento adequado do sistema, garantindo a integridade e a consistência das operações no e-commerce.

Classe Principal LojaDevaApplication

  • Ponto de entrada da aplicação Spring Boot.

Como Executar a Aplicação

  1. Certifique-se de ter o Java e uma IDE instalados na sua máquina.
  2. Clone o repositório: git clone https://github.com/seu-usuario/loja-deva.git
  3. Navegue até o diretório do projeto: cd loja-deva
  4. Execute a aplicação: mvn spring-boot:run
  5. Utilize o Swagger ou Postman para testar endpoints da API.

A aplicação estará disponível em http://localhost:8080.

Swagger

A documentação da API pode ser acessada através do Swagger. Após iniciar a aplicação, acesse http://localhost:8080/swagger-ui.html no seu navegador.

Documentação da API

Gerenciamento de clientes

Cadastro do cliente

Rota não autenticada

  POST localhost:8080/clients

Passar parâmetros no body da requisição em formato JSON:

Parâmetro Tipo Descrição
name string Obrigatório
email string Obrigatório.
cpf string Obrigatório. Chave única
address string Obrigatório
postalCode string Obrigatório
phoneNumber string Obrigatório
password string Obrigatório
  • Ao registrar o cliente um carrinho de compras associado ao client_id é criado automaticamente.

Buscar cliente pelo seu id

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  GET localhost:8080/clients/:id

Passar como parâmetro na URL da requisição o ID do client que deseja detalhar.

Parâmetro Descrição
id Obrigatório.

Atualização de todos os dados do cliente

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  PUT localhost:8080/clients/:id

Passar como parâmetro na URL da requisição o ID do client que deseja atualizar.

Parâmetro Descrição
id Obrigatório.

Passar parâmetros no body da requisição em formato JSON:

Parâmetro Tipo Descrição
name string Obrigatório
email string Obrigatório.
cpf string Obrigatório. Chave única
address string Obrigatório
postalCode string Obrigatório
phoneNumber string Obrigatório
password string Obrigatório

Atualização parcial dos dados do cliente

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  PATCH localhost:8080/clients/:id

Passar como parâmetro na URL da requisição o ID do client que deseja atualizar.

Parâmetro Descrição
id Obrigatório.

Passar parâmetros no body da requisição em formato JSON:

Parâmetro Tipo Descrição
name string Opcional
email string Opcional.
address string Opcional
postalCode string Opcional
phoneNumber string Opcional
password string Opcional

Remover cliente

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  DELETE localhost:8080/clients/:id
Parâmetro Descrição
id Obrigatório. Passar como parâmetro na URL da requisição o ID do cliente que deseja deletar

Gerenciamento de produtos

Cadastro do produto

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth

  POST localhost:8080/product

Passar parâmetros no body da requisição em formato JSON:

Parâmetro Tipo Descrição
name string Obrigatório.
description string Obrigatório
price BigDecimal Obrigatório.
inventoryQuantity Integer Obrigatório.
category string Obrigatório.

Retorna todos os produtos

Rota não autenticada.

  GET localhost:8080/product

Buscar produtos pelo seu ID

Rota não autenticada.

  GET localhost:8080/product/:id

Passar como parâmetro na URL da requisição o código do produto que deseja detalhar.

Parâmetro Descrição
id Obrigatório. Passar como parâmetro na URL da requisição o ID do produto que você quer buscar.

Atualização de todos os dados do produto

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  PUT localhost:8080/product/:id

Passar como parâmetro na URL da requisição o ID do produto que deseja atualizar.

Parâmetro Descrição
id Obrigatório.

Passar parâmetros no body da requisição em formato JSON:

Parâmetro Tipo Descrição
name string Obrigatório.
description string Obrigatório
price BigDecimal Obrigatório.
inventoryQuantity Integer Obrigatório.
category string Obrigatório.

Atualização parcial os dados do produto

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  PATCH localhost:8080/product/:id

Passar como parâmetro na URL da requisição o ID do produto que deseja atualizar.

Parâmetro Descrição
id Obrigatório.

Passar parâmetros no body da requisição em formato JSON:

Parâmetro Tipo Descrição
description string Opcional
price BigDecimal Opcional.
inventoryQuantity Integer Opcional.

Remover produto

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  DELETE localhost:8080/product/:id
Parâmetro Descrição
id Obrigatório. Passar como parâmetro na URL da requisição o ID do produto que deseja deletar

Gerenciamento de carrinhos de compras

Buscar carrinho de compras pelo seu ID

Rota não autenticada.

  GET localhost:8080/shopping-basket/:id
Parâmetro Descrição
id Obrigatório. Passar como parâmetro na URL da requisição o ID do produto que deseja detalhar
  • Retorna o cliente associado ao carrinho e a lista de itens do carrinho com a quantidade e valor total da compra.

Gerenciamento dos itens dos carrinhos de compras

Adição do produto ao carrinho de compras

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth

  POST localhost:8080/basket-item

Passar parâmetros no body da requisição em formato JSON:

Parâmetro Tipo Descrição
shoppingBasketId Long Obrigatório.
productId Long Obrigatório
quantity Integer Obrigatório.

Buscar item do carrinho de compras pelo seu ID

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  GET localhost:8080/basket-item/:id
Parâmetro Descrição
id Obrigatório. Passar como parâmetro na URL da requisição o ID do item que deseja detalhar

Retornar todos os itens adicionados em todos os carrinhos

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth

  GET localhost:8080/basket-item/items
  • Retorna todos os itens adicionados em todos os carrinhos com a quantidade total de itens.

Retornar todos os itens adicionados um carrinho pelo ID do carrinho

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth

  GET localhost:8080/basket-item/items
Parâmetro Descrição
shoppingBasketId Obrigatório. Passar como parâmetro na URL da requisição o ID do shoppingBasket que deseja detalhar
  • Retorna todos os itens adicionados em um carrinho específico com a quantidade total de itens.

Atualização da quantidade de um item

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  PATCH localhost:8080/basket-item/:id

Passar como parâmetro na URL da requisição o ID do item que deseja atualizar.

Parâmetro Descrição
id Obrigatório.

Passar parâmetros no body da requisição em formato JSON:

Parâmetro Tipo Descrição
quantity Integer Opcional.

Remover item do carrinho

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  DELETE localhost:8080/basket-item/:id
Parâmetro Descrição
id Obrigatório. Passar como parâmetro na URL da requisição o ID do item que deseja deletar

Gerenciamento de pedidos

Registrar pedido

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth

  POST localhost:8080/order

Passar parâmetros no body da requisição em formato JSON:

Parâmetro Tipo Descrição
basketId Long Obrigatório.
paymentMethod String Obrigatório
  • retorna as informações do carrinho com o método de pagamento escolhido, data de criação e/ou atualização e o status do pedido.

Buscar todos os pedidos

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  GET localhost:8080/order/

Buscar pedido pelo ID

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  GET localhost:8080/order/:id
Parâmetro Descrição
id Obrigatório. Passar como parâmetro na URL da requisição o ID pedido que deseja detalhar

Atualização do status do pedido

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  PUT localhost:8080/order/:id

Passar como parâmetro na URL da requisição o ID do pedido que deseja atualizar.

Parâmetro Descrição
id Obrigatório.

Passar parâmetros no body da requisição em formato JSON:

Parâmetro Tipo Descrição
status String Obrigatório.
  • retorna as informações do pedido com o novo status e data de atualização do pedido.

Deletar pedido

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  DELETE localhost:8080/order/:id
Parâmetro Descrição
id Obrigatório. Passar como parâmetro na URL da requisição o ID do pedido que deseja deletar

Gerenciamento dos itens dos pedidos

Buscar itens do pedido pelo ID do pedido

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  GET localhost:8080/order/:orderId/items
Parâmetro Descrição
id Obrigatório. Passar como parâmetro na URL da requisição o ID pedido que deseja detalhar

Buscar item do pedido pelo ID do pedido e pelo ID do item

Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.

  GET localhost:8080/order/:orderId/items/:id
Parâmetro Descrição
orderId Obrigatório. Passar como parâmetro na URL da requisição o ID pedido que deseja detalhar
id Obrigatório. Passar como parâmetro na URL da requisição o ID item do pedido que deseja detalhar

Licença

Este projeto está licenciado sob a Licença MIT.

Desenvolvedoras

Para qualquer dúvida ou sugestão, entre em contato com a equipe de desenvolvimento:


Adilane Pereira

Aline Werner

Ana Luiza Akiyama

Graziella Guedes

Nathalya Lucena

Atenciosamente,

Equipe de Desenvolvimento Loja Deva.