From 0217c549a37a21fa5dfcf428006b7ac24d40ce41 Mon Sep 17 00:00:00 2001 From: "Kayashov.SM" Date: Mon, 21 Apr 2025 16:22:48 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B1=D0=B5=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bar/controller/AuthController.java | 3 +++ .../bar/controller/BarController.java | 12 +++++++----- .../bar/controller/CocktailController.java | 11 +++++++++++ .../CocktailForIngredientModalDto.java | 19 +++++++++++++++++++ .../kayashov/bar/mapper/CocktailMapper.java | 10 ++++++++++ .../kayashov/bar/service/CocktailService.java | 19 ++++++++++++++++++- src/main/resources/application.properties | 3 ++- 7 files changed, 70 insertions(+), 7 deletions(-) create mode 100644 src/main/java/ru/kayashov/bar/controller/dto/cocktail/CocktailForIngredientModalDto.java diff --git a/src/main/java/ru/kayashov/bar/controller/AuthController.java b/src/main/java/ru/kayashov/bar/controller/AuthController.java index 758ddbc..d602353 100644 --- a/src/main/java/ru/kayashov/bar/controller/AuthController.java +++ b/src/main/java/ru/kayashov/bar/controller/AuthController.java @@ -44,6 +44,7 @@ public class AuthController { Visitor visitor = visitorsRepository.findById(Long.valueOf(decodeArr[0])) .orElseThrow(); + log.info("Попытка авторизации пользователя {}", visitor.getId()); Integer visitorCode = visitor.getCode(); if (visitorCode == null) { return new AuthResponseDto(null, "Повторите запрос кода из бота"); @@ -66,6 +67,7 @@ public class AuthController { return new AuthResponseDto(null, "Не найдет пользователь " + login); } Visitor visitor = visitorOpt.get(); + log.info("Попытка авторизации пользователя {}", visitor.getId()); if (passwordEncoder.matches(password, visitor.getPassword())) { return new AuthResponseDto(jwtTokenProvider.generateToken(visitor), null); } else { @@ -77,6 +79,7 @@ public class AuthController { public AuthResponseDto refreshToken(@RequestHeader("Authorization") String token) { Claims claims = jwtTokenProvider.extractAllClaims(token); Long visitorId = claims.get("id", Long.class); + log.info("обновление токена для пользователя {}", visitorId); Visitor visitor = visitorsRepository.findById(visitorId).orElseThrow(); return new AuthResponseDto(jwtTokenProvider.generateToken(visitor), null); } diff --git a/src/main/java/ru/kayashov/bar/controller/BarController.java b/src/main/java/ru/kayashov/bar/controller/BarController.java index 0122fd5..fd52cda 100644 --- a/src/main/java/ru/kayashov/bar/controller/BarController.java +++ b/src/main/java/ru/kayashov/bar/controller/BarController.java @@ -2,6 +2,7 @@ package ru.kayashov.bar.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.hibernate.Session; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; @@ -10,14 +11,13 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import ru.kayashov.bar.controller.dto.SessionResponseDto; +import ru.kayashov.bar.controller.dto.VisitorResponseDto; import ru.kayashov.bar.controller.dto.bar.BarResponseDto; import ru.kayashov.bar.controller.dto.bar.CategoryResponseDto; import ru.kayashov.bar.controller.dto.bar.GlassResponseDto; -import ru.kayashov.bar.controller.dto.cocktail.ReceiptResponseDto; -import ru.kayashov.bar.controller.dto.SessionResponseDto; import ru.kayashov.bar.controller.dto.bar.TagResponseDto; -import ru.kayashov.bar.controller.dto.VisitorResponseDto; -import ru.kayashov.bar.model.entity.BarEntity; +import ru.kayashov.bar.controller.dto.cocktail.ReceiptResponseDto; import ru.kayashov.bar.model.entity.BarResident; import ru.kayashov.bar.model.entity.SessionEntity; import ru.kayashov.bar.model.entity.Unit; @@ -105,12 +105,14 @@ public class BarController { @PostMapping("session") public void changeSessionStatus(@RequestParam Boolean value) { if (value) { - sessionService.createEmptySession(); + SessionEntity entity = sessionService.createEmptySession(); + log.info("Открыта смена {}", entity.getId()); return; } SessionEntity session = sessionService.findActiveSession(); session.setIsActive(false); sessionRepository.save(session); + log.info("Закрыта смена {}", session.getId()); } @GetMapping("/getMe") diff --git a/src/main/java/ru/kayashov/bar/controller/CocktailController.java b/src/main/java/ru/kayashov/bar/controller/CocktailController.java index ab28074..7fe35f3 100644 --- a/src/main/java/ru/kayashov/bar/controller/CocktailController.java +++ b/src/main/java/ru/kayashov/bar/controller/CocktailController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import ru.kayashov.bar.controller.dto.cocktail.CocktailFilterRequestDto; +import ru.kayashov.bar.controller.dto.cocktail.CocktailForIngredientModalDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailForListResponseDto; import ru.kayashov.bar.controller.dto.ErrorDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailModalDto; @@ -43,6 +44,16 @@ public class CocktailController { return cocktailService.getMenu(dto); } + @GetMapping("/instructions") + public String getInstructions(@RequestParam Long id) { + return cocktailService.findInstructions(id); + } + + @GetMapping("/byIngredient") + public List getByIngredient(@RequestParam Long id) { + return cocktailService.findByIngredient(id); + } + @PostMapping("/photo") public String savePhoto(@RequestBody MultipartFile file) throws IOException { if(file == null) { diff --git a/src/main/java/ru/kayashov/bar/controller/dto/cocktail/CocktailForIngredientModalDto.java b/src/main/java/ru/kayashov/bar/controller/dto/cocktail/CocktailForIngredientModalDto.java new file mode 100644 index 0000000..bb76dc6 --- /dev/null +++ b/src/main/java/ru/kayashov/bar/controller/dto/cocktail/CocktailForIngredientModalDto.java @@ -0,0 +1,19 @@ +package ru.kayashov.bar.controller.dto.cocktail; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CocktailForIngredientModalDto { + private Long id; + private String name; + private RatingResponseDto rating; + private String image; +} diff --git a/src/main/java/ru/kayashov/bar/mapper/CocktailMapper.java b/src/main/java/ru/kayashov/bar/mapper/CocktailMapper.java index ef2bfd8..975a546 100644 --- a/src/main/java/ru/kayashov/bar/mapper/CocktailMapper.java +++ b/src/main/java/ru/kayashov/bar/mapper/CocktailMapper.java @@ -4,6 +4,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import ru.kayashov.bar.controller.dto.cocktail.CocktailForIngredientModalDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailModalDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailForListResponseDto; import ru.kayashov.bar.controller.dto.ingredient.IngredientSimpleResponseDto; @@ -224,4 +225,13 @@ public class CocktailMapper { } + public CocktailForIngredientModalDto cocktailToIngredientDtoList(CocktailEntity e) { + Visitor visitor = getCurrentVisitor(); + return CocktailForIngredientModalDto.builder() + .id(e.getId()) + .name(e.getName()) + .image(e.getImage()) + .rating(createRatingDto(e.getRating(), visitor)) + .build(); + } } diff --git a/src/main/java/ru/kayashov/bar/service/CocktailService.java b/src/main/java/ru/kayashov/bar/service/CocktailService.java index b24fde7..84bffc8 100644 --- a/src/main/java/ru/kayashov/bar/service/CocktailService.java +++ b/src/main/java/ru/kayashov/bar/service/CocktailService.java @@ -9,7 +9,9 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import ru.kayashov.bar.controller.IngredientController; import ru.kayashov.bar.controller.dto.cocktail.CocktailFilterRequestDto; +import ru.kayashov.bar.controller.dto.cocktail.CocktailForIngredientModalDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailForListResponseDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailModalDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailSimpleResponseDto; @@ -161,7 +163,7 @@ public class CocktailService { } } - if(dto.getICount() != null) { + if (dto.getICount() != null) { log.info("iii"); } // @@ -473,4 +475,19 @@ public class CocktailService { log.info("Удален коктейль {}", cocktail); repository.delete(cocktail); } + + public String findInstructions(Long id) { + CocktailEntity cocktail = repository.findById(id).orElseThrow(RuntimeException::new); + return cocktail.getInstructions(); + } + + public List findByIngredient(Long id) { + return ingredientRepository.findById(id).orElseThrow(RuntimeException::new) + .getReceipts() + .stream() + .map(ReceiptEntity::getCocktail) + .distinct() + .map(mapper::cocktailToIngredientDtoList) + .toList(); + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 9335316..80b8f1e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -6,7 +6,8 @@ spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.url=${DB_URL:jdbc:postgresql://192.168.1.100:5432/drinks} spring.datasource.username=${DB_NAME:nextcloud} spring.datasource.password=${DB_PASSWORD:kayash73} -spring.datasource.hikari.minimum-idle=1 +spring.datasource.hikari.minimum-idle=10 +spring.datasource.hikari.maximum-pool-size=50 spring.datasource.hikari.idle-timeout=30000 spring.datasource.hikari.max-lifetime=600000