Este projeto fez parte do módulo "JPA, consultas SQL e JPQL" do curso "Java Spring Professional" da DevSuperior. O objetivo é implementar consultas em um sistema de vendas. A pontuação obtida na avaliação foi 4 de 4.
O sistema gerencia vendas (Sale) e vendedores (Seller). Cada venda está associada a um vendedor, e um vendedor pode ter várias vendas.
-
Entrada (IN):
- Data inicial (opcional)
- Data final (opcional)
- Trecho do nome do vendedor (opcional)
-
Saída (OUT):
- Uma listagem paginada contendo id, data, quantia vendida e nome do vendedor das vendas que se enquadrem nos dados informados.
-
Entrada (IN):
- Data inicial (opcional)
- Data final (opcional)
-
Saída (OUT):
- Uma listagem contendo nome do vendedor e soma de vendas deste vendedor no período informado.
- Java: Linguagem de programação utilizada para o desenvolvimento do projeto.
- Spring Boot: Framework que simplifica a criação de aplicações stand-alone, production-grade em Spring.
- JPA: Java Persistence API, utilizado para a persistência de dados.
- SQL e JPQL: Linguagens de consulta utilizadas para interagir com o banco de dados.
-
Configuração do Projeto:
- Clonagem do repositório base.
- Configuração do ambiente de desenvolvimento (IDE e banco de dados).
-
Criação dos Models:
- Definição das entidades
Sale
eSeller
com seus respectivos atributos e mapeamentos JPA.
- Definição das entidades
-
Desenvolvimento dos Repositórios:
- Criação dos repositórios
SaleRepository
eSellerRepository
para interação com o banco de dados.
- Criação dos repositórios
-
Implementação dos Serviços:
- Desenvolvimento dos serviços para processamento das regras de negócio e consultas personalizadas.
-
Criação dos Controladores:
- Implementação dos controladores REST para exposição das APIs de consulta.
-
Tratamento de Datas:
- Implementação da lógica para considerar datas padrão (data atual e data de um ano atrás) quando não fornecidas nas consultas.
- Paginação de Resultados:
- Implementação de paginação nas consultas para garantir a eficiência e escalabilidade das respostas.
- Consulta Dinâmica:
- Desenvolvimento de lógica para permitir consultas dinâmicas baseadas nos parâmetros opcionais fornecidos pelo usuário.
- Testes Manuais com Postman:
- Validação das APIs utilizando a collection do Postman fornecida pelo curso.
- Testes Automatizados:
- Implementação de testes automatizados para garantir a integridade das funcionalidades desenvolvidas.
- Clone o repositório:
git clone [https://github.com/devsuperior/desafio-consulta-vendas.git](https://github.com/msantosdevlab/desafio-consulta-vendas)
- Importe o projeto na sua IDE.
- Configure o banco de dados conforme as instruções do projeto.
- Execute o projeto.
-
Sumário de Vendas por Vendedor (Teste 1):
GET /sales/summary?minDate=2022-01-01&maxDate=2022-06-30
- Exemplo de retorno:
[ { "sellerName": "Anakin", "total": 110571.0 }, { "sellerName": "Logan", "total": 83587.0 }, { "sellerName": "Loki Odinson", "total": 150597.0 }, { "sellerName": "Padme", "total": 135902.0 }, { "sellerName": "Thor Odinson", "total": 144896.0 } ]
-
Relatório de Vendas (Teste 2):
GET /sales/report?minDate=2022-05-01&maxDate=2022-05-31&name=odinson
- Exemplo de retorno:
{ "content": [ { "id": 9, "date": "2022-05-22", "amount": 19476.0, "sellerName": "Loki Odinson" }, { "id": 10, "date": "2022-05-18", "amount": 20530.0, "sellerName": "Thor Odinson" }, { "id": 12, "date": "2022-05-06", "amount": 21753.0, "sellerName": "Loki Odinson" } ] }
Este desafio foi desenvolvido como parte do curso "Java Spring Professional" da DevSuperior.