добавлена работа со списками продуктов, попытка оптимизировать запрос по поиску коктейлей
This commit is contained in:
@@ -79,9 +79,7 @@ public class BarController {
|
||||
@GetMapping("/getMe")
|
||||
public VisitorResponseDto getMe() {
|
||||
Visitor visitor = visitorService.getCurrentVisitor();
|
||||
String role;
|
||||
role = UserRole.ADMIN.toString();
|
||||
VisitorResponseDto dto = VisitorResponseDto.mapToDto(visitor, true, role, true);
|
||||
VisitorResponseDto dto = VisitorResponseDto.mapToDto(visitor, true, visitor.getRole().toString(), true);
|
||||
log.info("Запрос информации о пользователе: {}-{} {}, вошел в бар",
|
||||
dto.getId(),
|
||||
dto.getName().strip(),
|
||||
|
||||
@@ -6,6 +6,7 @@ import org.springframework.web.bind.annotation.CrossOrigin;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PatchMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@@ -64,6 +65,11 @@ public class IngredientController {
|
||||
ingredientService.changeBarIngredient(id, false);
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void removeIngredient(@PathVariable Long id) {
|
||||
ingredientService.removeIngredient(id);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
public void putIngredient(@RequestParam Long id) {
|
||||
ingredientService.changeBarIngredient(id, true);
|
||||
|
||||
@@ -6,6 +6,7 @@ import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
@@ -43,7 +44,7 @@ public class IngredientEntity {
|
||||
@JoinColumn(name = "type")
|
||||
private TypeEntity type;
|
||||
|
||||
@ManyToMany
|
||||
@ManyToMany(cascade = CascadeType.REMOVE)
|
||||
@JoinTable(
|
||||
name = "bar_ingredient",
|
||||
joinColumns = @JoinColumn(name = "ingredient"),
|
||||
|
||||
@@ -7,6 +7,8 @@ import org.springframework.security.core.userdetails.UserDetails;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.OneToMany;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -21,6 +23,8 @@ public class Visitor implements UserDetails {
|
||||
private Long id;
|
||||
private String name;
|
||||
private String lastName;
|
||||
@Enumerated(EnumType.STRING)
|
||||
private UserRole role;
|
||||
private Integer code;
|
||||
private String login;
|
||||
private String password;
|
||||
@@ -28,7 +32,8 @@ public class Visitor implements UserDetails {
|
||||
|
||||
@Override
|
||||
public Collection<? extends GrantedAuthority> getAuthorities() {
|
||||
return UserRole.ADMIN.getAuthorities();
|
||||
return role.getAuthorities();
|
||||
// return UserRole.ADMIN.getAuthorities();
|
||||
// return residents.stream()
|
||||
// .filter(BarResident::getActive)
|
||||
// .map(BarResident::getRole)
|
||||
|
||||
@@ -3,14 +3,20 @@ package ru.kayashov.bar.service;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import ru.kayashov.bar.controller.dto.ingredient.IngredientResponseDto;
|
||||
import ru.kayashov.bar.controller.dto.ingredient.IngredientSimpleResponseDto;
|
||||
import ru.kayashov.bar.mapper.IngredientMapper;
|
||||
import ru.kayashov.bar.model.Ingredient;
|
||||
import ru.kayashov.bar.model.entity.BarEntity;
|
||||
import ru.kayashov.bar.model.entity.CocktailEntity;
|
||||
import ru.kayashov.bar.model.entity.IngredientEntity;
|
||||
import ru.kayashov.bar.model.entity.ReceiptEntity;
|
||||
import ru.kayashov.bar.model.entity.TypeEntity;
|
||||
import ru.kayashov.bar.repository.BarEntityRepository;
|
||||
import ru.kayashov.bar.repository.CocktailRepository;
|
||||
import ru.kayashov.bar.repository.IngredientRepository;
|
||||
import ru.kayashov.bar.repository.ReceiptRepository;
|
||||
import ru.kayashov.bar.repository.TypeRepository;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -26,6 +32,8 @@ public class IngredientService {
|
||||
private final IngredientMapper mapper;
|
||||
private final BarEntityRepository barEntityRepository;
|
||||
private final IngredientRepository ingredientRepository;
|
||||
private final ReceiptRepository receiptRepository;
|
||||
private final CocktailRepository cocktailRepository;
|
||||
|
||||
private TypeEntity findTypeByName(String name) {
|
||||
return typeRepository.findByName(name)
|
||||
@@ -86,4 +94,21 @@ public class IngredientService {
|
||||
repository.save(entity);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void removeIngredient(Long id) {
|
||||
IngredientEntity ingredient = ingredientRepository.findById(id).orElseThrow();
|
||||
|
||||
List<CocktailEntity> cocktails = ingredient.getReceipts()
|
||||
.stream()
|
||||
.map(ReceiptEntity::getCocktail)
|
||||
.toList();
|
||||
|
||||
receiptRepository.deleteAll(ingredient.getReceipts());
|
||||
cocktailRepository.deleteAll(cocktails);
|
||||
|
||||
log.info("Удалены коктейли {}", cocktails.stream().map(c -> c.getId() + "-" + c.getName()).toList());
|
||||
repository.delete(ingredient);
|
||||
log.info("Удален ингредиент {}-{}", id, ingredient.getName());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user