Projeto final para conclusão do bootcamp Desenvolvimento Java com IA do site DIO.
Criar uma API RESTful capaz de gerenciar restaurantes e os pratos do seu cardápio.
- Listar restaurantes
- Cadastrar restaurantes
- Listar dados de um restaurante
- Alterar dados um restaurante
- Excluir um restaurante
- Listar todos os pratos de um restautante
- Criar um produto de um restaurante
- Alterar um produto de um restaurante
- Excluir um produto de um restaurante
- Foto do restaurante
- Nome do restaurante
- Endereço do restaurante
- Horários de funcionamento do restaurante (ex.: De Segunda à Sexta das 09h as 18h e de Sabado à Domingo das 11h as 20h).
- Foto do produto
- Nome do produto
- Preço do produto
- Categoria do produto (ex.: Doce, Salgados, Sucos...)
- Descrição para a promoção do produto (ex.: Chopp pela metade do preço)
- Preço promocional
- Dias da semana e o horário em que o produto deve estar em promoção
- É necessário tratar os campos que indicam horários de funcionamento e horário para as promoções dos pratos.
- Os campos devem possuir o formato HH:mm.
- Os horários devem possuir intervalo mínimo de 15 minutos.
{
"id": "0001",
"fotoUrl": "restaurante.jpg",
"nome": "Restaurante Marazul",
"endereco": "Av. João Candido, 31, Cidade Nova",
"funcionamento": [
{
"diainicial": "segunda",
"diafinal": "sexta",
"horainicial": "09:00",
"horafinal": "20:00"
}
],
"pratos": [
{
"id": "0012",
"fotoUrl": "canjica.jpeg",
"nome": "Canjica",
"quantidade": 20,
"preco": 20.00,
"categoria": "SOBREMESAS",
"promocao": {
"ativa": true,
"id": "005",
"descricao": "Canjica pela metade do preço",
"preco": 10.00,
"periodo": [
{
"diainicial": "segunda",
"diafinal": "sexta",
"horainicial": "09:00",
"horafinal": "20:00"
}
]
}
}
]
}
A URL da requisição deve ter o seguinte formato:
http://localhost:8080/api/v1/restaurants/{id}/
http://localhost:8080/api/v1/restaurants/{id}/products/{productid}
A resposta deve ter o seguinte formato: Ainda sendo implementado
classDiagram
class Restaurante {
-Long id
-BufferedImage fotoUrl
-String nome
-String endereco
}
class Funcionamento {
-LocalDateTime diainicial
-LocalDateTime diafinal
-LocalDateTime horainicial
-LocalDateTime horafinal
}
class Produto {
-Long id
-BufferedImage fotoUrl
-String nome
-int quantidade
-BigDecimal preco
-CategoriaProduto categoria
}
class Promocao {
-boolean ativa
-Long id
-String descricao
-float preco
}
class Periodo {
-String diainicial
-String diafinal
-String horainicial
-String horafinal
}
Restaurante "1" --> "0..*" Funcionamento : tem
Restaurante "1" --> "0..*" Produto : tem
Produto "1" --> "0..1" Promocao : pode ter
Promocao "1" --> "0..*" Periodo : tem
- Spring Boot 3
- Java 17
- Lombok
- PostgreSQL/ Flyway
- JPA/Hibernate
- Maven
- Insomnia
- Docker