O projeto consiste em uma API REST de delivery para pizarias.
✔️ Funcionalidade 1: Realizar cadastro de estabelecimentos e consumidores e fazer autenticação.
✔️ Funcionalidade 2: calcular o valor total do pedido com ou sem promoção.
✔️ Funcionalidade 3: Consumidores podem realizar pedidos.
✔️ Funcionalidade 4: Consumidores podem escolher o estabelicemento.
✔️ Funcionalidade 5: Consumidores podem acompanhar o status do seu pedido.
✔️ Funcionalidade 6: Consumidores podem qualificar o estabelecimento.
✔️ Funcionalidade 7: Consumidores podem escolher a melhor forma de pagamento.
✔️ Funcionalidade 8: Estabelecimento pode cadastar funcionário.
✔️ Funcionalidade 9: Estabelecimento pode cadastrar produtos.
✔️ Funcionalidade 10: Estabelecimento pode alterar o status do pedido.
✔️ Funcionalidade 11: Estabelecimento acompanhar as avaliações dadas pelos consumidores do seu estabelecimento.
✔️ Funcionalidade 12: Estabelecimento pode acompanhar um resumo de vendas com informações como: quantidade de pedidos, pedidos cancelados, média de pedidos, produtos mais vendidos, tempo médio de entrega.
✔️ Funcionalidade 13: Armazenar dados, como produtos, consumidores, estabelecimento, funcionários, pedidos, promoção no banco de dados MySQL.
✔️ Funcionalidade 14: Listar pedidos, consumidor, funcionários, produtos, categorias, estabelecimento.
✔️ Funcionalidade 15: Alterar pedidos, consumidor, funcionários, produtos, categorias, estabelecimento.
✔️ Funcionalidade 16: Excluir pedidos, consumidor, funcionários, produtos, categorias, estabelecimento.
- Estabelecimento
- Funcionário
- Categoria
- Produto
- Consumidor
- Pedido
http://localhost:8080
POST
POST /estabelecimento/cadastrar{
"nome": "pizzaria1",
"cpf": "12345678999",
"email": "asdasda",
"telefone": "12345",
"endereco": "asdasdasd",
"cnpj": "12345678999999",
"razao_social": "asdasdadaaaaaa",
"agencia": "1234",
"conta_corrente": "1515151",
"senha":"asdasdasd"
}PUT
PUT /estabelecimento/{id}/alterar{
"nome": "pizzaria1",
"cpf": "12345678999",
"email": "asdasda",
"telefone": "12345",
"endereco": "asdasdasd",
"cnpj": "12345678999999",
"razao_social": "asdasdadaaaaaa",
"agencia": "1234",
"conta_corrente": "1515151",
"senha":"asdasdasd"
}GET
GET /estabelecimento/lista[
{
"id": 1,
"nome": "Pizzaria 1",
"cpf": "12345678999",
"email": "contato@email.com",
"telefone": "12345",
"endereco": "Rua A",
"cnpj": "12345678999999",
"razao_social": "Pizzaria LTDA",
"agencia": "1234",
"conta_corrente": "1515151"
}
]GET
GET /estabelecimento/listanomes[
{
"id":1,
"nome":"Pizzaria 1"
}
]| Campo | Regra |
|---|---|
| Nome | Obrigatório e máximo de 80 caracteres |
| CPF | Obrigatório, único, 11 dígitos numéricos |
| Telefone | Obrigatório, máximo de 20 caracteres |
| Endereço | Obrigatório, máximo de 150 caracteres |
| CNPJ | Obrigatório, único, 14 dígitos numéricos |
| Razão Social | Obrigatório, máximo de 80 caracteres |
| Agência | Obrigatório, exatamente 4 dígitos |
| Conta Corrente | Obrigatório, máximo de 20 caracteres |
POST
POST /funcionario/cadastrar{
"nome": "Rodrigo",
"endereco": "Rua A",
"cpf": "12348778901",
"telefone": "123456789",
"funcao": "entregador",
"email": "funcionario@email.com",
"senha": "senha123",
"estabelecimento": {
"id": 1
}
}PUT /funcionario/{id}/alterar{
"nome": "Rodrigo",
"endereco": "Rua A",
"cpf": "12348778901",
"telefone": "123456789",
"funcao": "entregador",
"email": "funcionario@email.com",
"senha": "senha123",
}GET /funcionario/listaGET /funcionario/lista/{idEstabelecimento}DELETE /funcionario/{id}/excluir| Campo | Regra |
|---|---|
| Nome | Obrigatório e máximo de 80 caracteres |
| Endereço | Obrigatório e máximo de 150 caracteres |
| CPF | Obrigatório, único, 11 dígitos |
| Telefone | Obrigatório, mínimo de 5 e máximo de 20 dígitos |
| Função | Apenas ENTREGADOR ou ATENDENTE |
POST /categoria/cadastrar{
"nome":"pizza",
"descricao": "todos os tipos de pizzas",
"estabelecimento": {
"id": 1
}
}PUT /categoria/{id}/alterar{
"nome":"pizza alterada",
"descricao": "todos os tipos de pizzas",
}GET /categoria/listaGET /categoria/lista/{idEstabelecimento}DELETE /categoria/{id}/excluir| Campo | Regra |
|---|---|
| Nome | Obrigatório e máximo de 80 caracteres |
| Descrição | Máximo de 150 caracteres |
POST /produto/cadastrar{
"nome": "pizza de arroz",
"descricao": "asdasd",
"tamanho": "grande",
"valor_unitario": 10.00,
"valor_promocao": 5.00,
"personalizacao": "sim",
"categoria":{
"id":1
}PUT /produto/{id}/alterarGET /produto/listaGET /produto/lista/{idCategoria}DELETE /produto/{id}/excluir| Campo | Regra |
|---|---|
| Nome | Obrigatório |
| Descrição | Obrigatória |
| Tamanho | Pequeno, Médio ou Grande |
| Valor Unitário | Maior que zero |
| Valor Promoção | Opcional, maior que zero |
| Personalização | Sim ou Não |
POST /consumidor/cadastrar{
"nome": "rodrigo teste",
"cpf": "12345679999",
"cep":"12345678",
"telefone": "123456789",
"email": "consumidor@example.com",
"senha": "senha123",
"estado":"PE",
"cidade":"Olinda",
"rua": "rua 123",
"bairro": "Jardim Atlântico",
"complemento": "asdasdasda",
"ponto_referencia": "asdasdad"
}PUT /consumidor/{id}/alterarGET /consumidor/lista| Campo | Regra |
|---|---|
| Nome | Obrigatório |
| CPF | Único e obrigatório |
| CEP | Obrigatório, 8 dígitos |
| Estado | Apenas letras |
| Cidade | Apenas letras |
| Rua | Obrigatória |
| Bairro | Obrigatório |
| Complemento | Máximo 85 caracteres |
| Ponto de Referência | Máximo 70 caracteres |
POST /pedido/fazer{
"forma_pagamento": "DINHEIRO",
"observacao": "Sem cebola",
"status": "CONFIRMADO",
"itensPedido": [
{
"produto": {
"id": 1
},
"quantidade": 2
}
],
"consumidor": {
"id": 1
},
"estabelecimento": {
"id": 1
}
}GET /pedido/lista-consumidor/{idConsumidor}GET /pedido/lista-estabelecimento/{idEstabelecimento}DELETE /pedido/{id}/excluir| Campo | Regra |
|---|---|
| Forma de Pagamento | CRÉDITO, DÉBITO, PIX ou DINHEIRO |
| Observação | Máximo de 150 caracteres |
| Status | CONFIRMADO, FAZENDO, PRONTO, ENTREGANDO ou ENTREGUE |
| Valor Total | Calculado automaticamente pela API |
| Valor Promoção | Utilizado quando existir; caso contrário, utiliza o valor unitário do produto |
| Código | Significado |
|---|---|
| 200 | OK |
| 201 | Criado |
| 400 | Requisição inválida |
| 404 | Recurso não encontrado |
| 500 | Erro interno do servidor |
Java 17MySQLSpring BootSpring Data JPAHibernateMavenLombokExceptionHandlerPadrão MVC
Você pode acessar o código fonte do projeto ou baixá-lo.
Após baixar o projeto, você pode abrir com uma IDE compatível com o java. É necessário ter o JDK na versão 17.
Rodrigo Gomes Sarmento |
|---|
