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.
- Java
- Maven
- Spring Boot
- Spring Data JPA
- H2 Database
- Spring Security
- Swagger
O projeto está organizado nas seguintes pastas e classes:
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.
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.
- Classes de domínio representando entidades essenciais para o e-commerce, como
BasketItem
,Client
,Order
,OrderItem
,PaymentMethod
,Product
,ShoppingBasket
eStatus
.
- 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
eUpdateProductDetailsRequest
.
- Interfaces de repositório que estendem JpaRepository para acesso ao banco de dados, incluindo
BasketItemRepository
,ClientRepository
,OrderItemRepository
,OrderRepository
,ProductRepository
eShoppingBasketRepository
.
- Classes de serviço que encapsulam a lógica de negócios, incluindo subpacote
exceptions
com a classeResourceNotFoundException
. 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 comOrderItemService
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 comBasketItemService
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.
- Ponto de entrada da aplicação Spring Boot.
- Certifique-se de ter o Java e uma IDE instalados na sua máquina.
- Clone o repositório:
git clone https://github.com/seu-usuario/loja-deva.git
- Navegue até o diretório do projeto:
cd loja-deva
- Execute a aplicação:
mvn spring-boot:run
- Utilize o Swagger ou Postman para testar endpoints da API.
A aplicação estará disponível em http://localhost:8080
.
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.
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.
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. |
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 |
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 |
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 |
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. |
Rota não autenticada.
GET localhost:8080/product
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. |
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. |
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. |
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 |
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.
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. |
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 |
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.
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.
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. |
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 |
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.
Rota autenticada - necessário configurar sua ferramenta de teste da aplicação de preferência com Authorization - tipo Basic Auth.
GET localhost:8080/order/
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 |
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.
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 |
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 |
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 |
Este projeto está licenciado sob a Licença MIT.
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.