Open Carol-Alexandre opened 1 year ago
Pode colocar o código aqui?
Porque não lembro dessa interface. Faz um tempo que eu fiz esse projetinho.
claro
na sacolaServicempl.java
package me.dio.sacola.service.impl;
import lombok.RequiredArgsConstructor; import me.dio.sacola.enumeration.FormaPagamento; import me.dio.sacola.model.Item; import me.dio.sacola.model.Restaurante; import me.dio.sacola.model.Sacola; import me.dio.sacola.repository.ItemRepository; import me.dio.sacola.repository.ProdutoRepository; import me.dio.sacola.repository.SacolaRepository; import me.dio.sacola.resource.dto.ItemDto; import me.dio.sacola.service.SacolaService; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.List;
@Service @RequiredArgsConstructor public class SacolaServiceImpl implements SacolaService { private final SacolaRepository sacolaRepository; private final ProdutoRepository produtoRepository; private final ItemRepository itemRepository;
@Override public Item incluirItemNaSacola(ItemDto itemDto) { Sacola sacola = verSacola(itemDto.getSacolaId());
if (sacola.isFechada()) {
throw new RuntimeException("Esta sacola está fechada.");
}
Item itemParaSerInserido = Item.builder()
.quantidade(itemDto.getQuantidade())
.sacola(sacola)
.produto(produtoRepository.findById(itemDto.getProdutoId()).orElseThrow(
() -> {
throw new RuntimeException("Esse produto não existe!");
}
))
.build();
List<Item> itensDaScola = sacola.getItens();
if (itensDaScola.isEmpty()) {
itensDaScola.add(itemParaSerInserido);
} else {
Restaurante restauranteAtual = itensDaScola.get(0).getProduto().getRestaurante();
Restaurante restauranteDoItemParaAdicionar = itemParaSerInserido.getProduto().getRestaurante();
if (restauranteAtual.equals(restauranteDoItemParaAdicionar)) {
itensDaScola.add(itemParaSerInserido);
} else {
throw new RuntimeException("Não é possível adicionar produtos de restaurantes diferentes. Feche a sacola ou esvazie.");
}
}
List<Double> valorDosItens = new ArrayList<>();
for (Item itemDaSacola: itensDaScola) {
double valorTotalItem =
itemDaSacola.getProduto().getValorUnitario() * itemDaSacola.getQuantidade();
valorDosItens.add(valorTotalItem);
}
double valorTotalSacola = valorDosItens.stream()
.mapToDouble(valorTotalDeCadaItem -> valorTotalDeCadaItem)
.sum();
sacola.setValorTotal(valorTotalSacola);
sacolaRepository.save(sacola);
return itemParaSerInserido;
}
@Override public Sacola verSacola(Long id) { return sacolaRepository.findById(id).orElseThrow( () -> { throw new RuntimeException("Essa sacola não existe!"); } ); }
@Override public Sacola fecharSacola(Long id, int numeroformaPagamento) { Sacola sacola = verSacola(id); if (sacola.getItens().isEmpty()) { throw new RuntimeException("Inclua ítens na sacola!"); } /if (numeroformaPagamento == 0) { sacola.setFormaPagamento(FormaPagamento.DINHEIRO); } else { sacola.setFormaPagamento(FormaPagamento.MAQUINETA); }/ FormaPagamento formaPagamento = numeroformaPagamento == 0 ? FormaPagamento.DINHEIRO : FormaPagamento.MAQUINETA; sacola.setFormaPagamento(formaPagamento); sacola.setFechada(true); return sacolaRepository.save(sacola); }
@Override public void excluirSacola(Long id) { Sacola sacola = verSacola(id); if (sacola.isFechada()) { throw new RuntimeException("Não é possível excluir uma sacola fechada."); } sacolaRepository.delete(sacola); } }
Oi, Carol. Então, deixa eu ver se entendi...
Para que o Swagger funcione, precisamos:
implementation 'io.springfox:springfox-boot-starter:3.0.0'
mvc:
pathmatch:
matching-strategy: ant_path_matcher
package me.dio.sacola.configuration;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket;
@Configuration public class SwaggerConfig { @Bean public Docket getBean() { return new Docket(DocumentationType.SWAGGER_2).select() .paths(PathSelectors.regex("/ifood-devweek/.*")) .build() .apiInfo(getInfo()); } private ApiInfo getInfo() { return new ApiInfoBuilder() .title("Sacola API") .description("Sacola API para Servir uma Aplicação de Delivery") .build(); } }
4. Coloca as anotações pertinentes do Swagger no [Resource](https://github.com/cami-la/sacola-api_IFOOD_DEV_WEEK/blob/master/src/main/java/me/dio/sacola/resource/SacolaResource.java):
```java
@Api(value="/ifood-devweek/sacolas")
Meu Deus, vou ter que te contratar como professora particular kkkkk
pelo que to vendo kkkkk
vou tentar aqui e te retorno para falar se deu certo kkkk
por falar nisso eu ate começei um projetinho inspirada em vc e coloquei aqui depois vc ver com carinho kkkk
https://github.com/Carol-Alexandre/calendario-primeiro-projeto
Oi @Carol-Alexandre. Tudo bem?? (:
Dei uma olhada sim no projeto, mas não consegui entender muito... Acredito que é porque ainda não esteja finalizado, né?
Mas você já deu o primeiro passo que é tentar e está indo muito bem por sinal.
Sugiro recomeçar o projeto e deixar ele o mais simples possível.
Bons estudos e qualquer coisa é só falar.
Camila, deu certo! Conseguir obg!
Mais apareceu outra coisa kkkkk
Fui a interface de excluir sacola, porém não aparece no sweggir, pq?