Skip to content

Latest commit

 

History

History
113 lines (113 loc) · 6.22 KB

File metadata and controls

113 lines (113 loc) · 6.22 KB

Plataforma de Microsserviços de Vendas

This README is also available in English.

Uma plataforma de microsserviços em Java 21 Spring Boot para gerenciar clientes, produtos e vendas. Ela integra MongoDB para persistência, Spring Cloud Config Server para configuração centralizada, Feign clients para comunicação entre serviços e OpenAPI/Swagger para documentação das APIs.

🚀 Funcionalidades

  • Microsserviços de Cliente, Produto e Vendas
  • Configuração centralizada via Spring Cloud Config Server
  • Persistência no MongoDB com padrão de repositório
  • APIs RESTful documentadas com OpenAPI/Swagger
  • Comunicação entre serviços usando Feign clients e RestTemplate
  • Tratamento estruturado de erros com exceções customizadas e erros de validação
  • Testes unitários e de integração em todos os serviços
  • Javadocs detalhados gerados para todas as classes e enums

🛠️ Stack Tecnológica

  • Java: 21
  • Spring Boot: 3.5.4
  • Spring Cloud: 2025.0.0
  • Spring Cloud Config Server
  • MongoDB
  • Feign Clients
  • Springdoc OpenAPI (Swagger UI)
  • Lombok
  • JUnit + Mockito para testes

🐳 Suporte a Docker (branch dockerized)

  • A branch dockerized contém o suporte completo a Docker.
  • Cada serviço possui um Dockerfile e .dockerignore.
  • docker-compose.yml orquestra todos os serviços e o MongoDB.
  • wait-for-it.sh garante que os serviços iniciem apenas após as dependências estarem prontas.
  • As configurações centralizadas são obtidas do ConfigServer usando hostnames do Docker.

📂 Módulos do Projeto

  • ConfigServer: Gerenciamento centralizado de configuração para todos os microsserviços
  • ClientService: Gerencia clientes (CRUD, busca por ID/CPF, validações)
  • ProductService: Gerencia produtos (CRUD, busca por código, validações)
  • SalesService: Gerencia vendas, ciclo de vida de status e associações de produtos

📑 Visão Geral do Domínio

  • Client: Entidade com validação, índices únicos e anotações Swagger
  • Product: Entidade com validação, enum de status (ATIVO/INATIVO) e suporte a Lombok
  • Sales: Entidade com gerenciamento de produtos, cálculo de preço total e ciclo de vida de status (INICIADA, FINALIZADA, CANCELADA)
  • DTOs: Objetos de transferência para Vendas, Produto e Cliente
  • Status Enum: Compartilhado entre domínios para consistência dos estados de ciclo de vida

📘 Documentação e Javadocs

Inclui Javadocs completos para todas as classes centrais, incluindo:

  • Classes principais (SalesServiceApplication, ClientServiceApplication, ProductServiceApplication, ConfigServerApplication).
  • Configurações (MongoConfig, OpenAPIConfig, RestTemplateConfig)
  • Classes de domínio (Client, Product, ProductQuantity, Sales)
  • DTOs (ClientDTO, ProductDTO, SalesDTO)
  • Serviços e Casos de Uso (RegisterClient, SearchClient, RegisterProduct, SearchProduct, RegisterSale, SearchSale)
  • Controladores (ClientResource, ProductResource, SalesResources)
  • Tratamento de exceções (ApiError, ApiValidationError, BadRequestException, EntityNotFoundException, RestExceptionHandler)
  • Utilitários (RestRequest, RestUtils)
  • Testes (SalesTest, SalesResourcesTest, ProductResourceTest, ClientResourceTest)

🧪 Testes

  • Testes unitários para domínios (SalesTest, lógica de ProductQuantity)
  • Testes de controladores REST (SalesResourcesTest, ProductResourceTest, ClientResourceTest)
  • Integração com Mockito para operações de CRUD e validações
  • Cobertura de tratamento de exceções para BadRequest e EntityNotFound

⚙️ Primeiros Passos

  1. Clone o repositório:
    git clone https://github.com/AsrielDreemurrGM/Microservices_Online_Selling.git
  2. Inicie o serviço ConfigServer.
  3. Inicie os serviços ClientService, ProductService e SalesService.
  4. Acesse a documentação da API em:
    Client Service: http://localhost:8081/swagger-ui.html
    Product Service: http://localhost:8082/swagger-ui.html
    Sales Service: http://localhost:8083/swagger-ui.html
  5. Para executar com Docker (branch dockerized):
    git checkout dockerized
    docker-compose up --build

📜 Resumo do Histórico de Commits

  • Commit inicial com quatro microsserviços, configuração e setup do build
  • Domínio de Cliente, DTO, repositório, casos de uso, recursos e testes
  • Domínio de Produto, DTO, repositório, casos de uso, recursos, configs e testes
  • Domínio de Vendas, DTO, serviços (RegisterSale, SearchSale), recursos e repositório
  • Setup do ConfigServer e correções em arquivos YML para microsserviços
  • Padronização do tratamento de exceções em todos os serviços
  • Adição de configurações OpenAPI e Mongo para todos os serviços
  • Criação e melhoria de testes unitários para serviços de Cliente, Produto e Vendas
  • Adição de Javadocs detalhados em todos os serviços, controladores, domínios e configs
  • Refatoração de endpoints para maior clareza
  • Configuração de Docker para microsserviços (branch dockerized)