Um supermercado da cidade de Campina Grande precisa de um sistema que gerencie o estoque e venda de produtos na sua loja. Neste sistema, o administrador deve obter uma visão geral e o controle sobre o funcionamento do supermercado, por exemplo, ele deve poder adicionar novos produtos, acompanhar quantas unidades do produto estão disponíveis, alterar preços, ser notificado sobre eventos críticos, gerenciar as vendas e oferecer alguns serviços personalizados para o cliente.
- Eu, como administrador, gostaria de adicionar um novo produto no sistema, informando seu nome, código de barra, fabricante, situação, e categoria;
- Eu, como administrador, gostaria de consultar a disponibilidade e o preço de cada produto do supermercado;
- Eu, como administrador, gostaria de atribuir um preço (R$) a um determinado produto no sistema;
- Eu, como administrador, gostaria de criar lotes associados aos produtos, informando a quantidade de itens disponíveis e a data de validade;
- Eu, como administrador, gostaria de fazer um CRUD de cliente no sistema.
- Eu, como cliente do sistema, desejo acessar o endpoint do Mercado Fácil para adicionar um produto do catálogo no carrinho de compras, para que seja possível realizar uma compra.
- Eu, como cliente do sistema, desejo acessar o endpoint do Mercado Fácil para remover um produto do carrinho de compras, para que seja possível desconsiderar o produto da compra.
- Eu, como cliente do sistema, desejo acessar o endpoint do Mercado Fácil para finalizar uma compra (fechar carrinho de compra e realizar pagamento), para que seja possível efetuar a compra dos produtos do carrinho.
- Eu, como cliente do sistema, desejo acessar o endpoint do Mercado Fácil para listar minhas compras que foram finalizadas, para que seja possível ver o meu histórico de compras.
- Eu, como cliente do sistema, desejo acessar o endpoint do Mercado Fácil para ver o descritivo de uma compra, para que seja possível ver detalhes de uma compra realizada (produtos, quantidades, data, usuário, etc.).
- Eu, como cliente do sistema Mercado Fácil, desejo acessar o endpoint do Mercado Fácil para listar as formas de pagamento disponíveis no sistema, para que seja possível realizar o pagamento de uma compra.
- Eu, como cliente do sistema Mercado Fácil, quero definir a forma de pagamento (boleto, paypal e cartão de crédito) ao finalizar compras, para que seja possível pagar as compras da forma mais conveniente.
- Eu, como administrador do sistema Mercado Fácil, quero poder estabelecer acréscimos percentuais no valor da compra para cada forma de pagamento, para que o valor do pagamento esteja compatível com os custos operacionais de cada tipo de operação.
- Eu, como administrador do sistema Mercado Fácil, quero poder estabelecer perfis de cliente (normal, especial e premium), para possibilitar que descontos diferenciados sejam aplicados nas compras dos clientes.
- Eu, como cliente do sistema Mercado Fácil, quero ter a opção de escolher e calcular o valor do tipo de entrega mais conveniente para mim. As opções de entrega são: Retirada, Padrão e Express. Para cada tipo de entrega um valor diferente será cobrado com base no endereço do cliente e com base nos tipos de produtos.
- Um projeto: MercadoFacil;
- Um Controller RestApiController que implementa os endpoints da API Rest.
- Dois repositórios são utilizados: ProdutoRepository e LoteRepository, que são responsáveis por manipular as entidades Produto e Lote em um banco de dados em memória;
- O modelo é composto pelas classes Produto.java e Lote.java que podem ser encontradas no pacote model;
- O pacote exceptions guarda as classes de exceções que podem ser levantadas dentro do sistema;
- Não há implementação de frontend, mas o projeto fornece uma interface de acesso à API via swagger.
Código base gerado via start.sprint.io com as seguintes dependências:
- Spring Web
- Spring Actuator
- Spring Boot DevTools
- Spring Data JPA
- H2 Database