Доработка бека

This commit is contained in:
Kayashov.SM
2025-04-21 16:22:48 +04:00
parent 23316b79f0
commit 0217c549a3
7 changed files with 70 additions and 7 deletions

View File

@@ -44,6 +44,7 @@ public class AuthController {
Visitor visitor = visitorsRepository.findById(Long.valueOf(decodeArr[0])) Visitor visitor = visitorsRepository.findById(Long.valueOf(decodeArr[0]))
.orElseThrow(); .orElseThrow();
log.info("Попытка авторизации пользователя {}", visitor.getId());
Integer visitorCode = visitor.getCode(); Integer visitorCode = visitor.getCode();
if (visitorCode == null) { if (visitorCode == null) {
return new AuthResponseDto(null, "Повторите запрос кода из бота"); return new AuthResponseDto(null, "Повторите запрос кода из бота");
@@ -66,6 +67,7 @@ public class AuthController {
return new AuthResponseDto(null, "Не найдет пользователь " + login); return new AuthResponseDto(null, "Не найдет пользователь " + login);
} }
Visitor visitor = visitorOpt.get(); Visitor visitor = visitorOpt.get();
log.info("Попытка авторизации пользователя {}", visitor.getId());
if (passwordEncoder.matches(password, visitor.getPassword())) { if (passwordEncoder.matches(password, visitor.getPassword())) {
return new AuthResponseDto(jwtTokenProvider.generateToken(visitor), null); return new AuthResponseDto(jwtTokenProvider.generateToken(visitor), null);
} else { } else {
@@ -77,6 +79,7 @@ public class AuthController {
public AuthResponseDto refreshToken(@RequestHeader("Authorization") String token) { public AuthResponseDto refreshToken(@RequestHeader("Authorization") String token) {
Claims claims = jwtTokenProvider.extractAllClaims(token); Claims claims = jwtTokenProvider.extractAllClaims(token);
Long visitorId = claims.get("id", Long.class); Long visitorId = claims.get("id", Long.class);
log.info("обновление токена для пользователя {}", visitorId);
Visitor visitor = visitorsRepository.findById(visitorId).orElseThrow(); Visitor visitor = visitorsRepository.findById(visitorId).orElseThrow();
return new AuthResponseDto(jwtTokenProvider.generateToken(visitor), null); return new AuthResponseDto(jwtTokenProvider.generateToken(visitor), null);
} }

View File

@@ -2,6 +2,7 @@ package ru.kayashov.bar.controller;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.hibernate.Session;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping; 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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; 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.BarResponseDto;
import ru.kayashov.bar.controller.dto.bar.CategoryResponseDto; import ru.kayashov.bar.controller.dto.bar.CategoryResponseDto;
import ru.kayashov.bar.controller.dto.bar.GlassResponseDto; 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.bar.TagResponseDto;
import ru.kayashov.bar.controller.dto.VisitorResponseDto; import ru.kayashov.bar.controller.dto.cocktail.ReceiptResponseDto;
import ru.kayashov.bar.model.entity.BarEntity;
import ru.kayashov.bar.model.entity.BarResident; import ru.kayashov.bar.model.entity.BarResident;
import ru.kayashov.bar.model.entity.SessionEntity; import ru.kayashov.bar.model.entity.SessionEntity;
import ru.kayashov.bar.model.entity.Unit; import ru.kayashov.bar.model.entity.Unit;
@@ -105,12 +105,14 @@ public class BarController {
@PostMapping("session") @PostMapping("session")
public void changeSessionStatus(@RequestParam Boolean value) { public void changeSessionStatus(@RequestParam Boolean value) {
if (value) { if (value) {
sessionService.createEmptySession(); SessionEntity entity = sessionService.createEmptySession();
log.info("Открыта смена {}", entity.getId());
return; return;
} }
SessionEntity session = sessionService.findActiveSession(); SessionEntity session = sessionService.findActiveSession();
session.setIsActive(false); session.setIsActive(false);
sessionRepository.save(session); sessionRepository.save(session);
log.info("Закрыта смена {}", session.getId());
} }
@GetMapping("/getMe") @GetMapping("/getMe")

View File

@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import ru.kayashov.bar.controller.dto.cocktail.CocktailFilterRequestDto; 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.CocktailForListResponseDto;
import ru.kayashov.bar.controller.dto.ErrorDto; import ru.kayashov.bar.controller.dto.ErrorDto;
import ru.kayashov.bar.controller.dto.cocktail.CocktailModalDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailModalDto;
@@ -43,6 +44,16 @@ public class CocktailController {
return cocktailService.getMenu(dto); return cocktailService.getMenu(dto);
} }
@GetMapping("/instructions")
public String getInstructions(@RequestParam Long id) {
return cocktailService.findInstructions(id);
}
@GetMapping("/byIngredient")
public List<CocktailForIngredientModalDto> getByIngredient(@RequestParam Long id) {
return cocktailService.findByIngredient(id);
}
@PostMapping("/photo") @PostMapping("/photo")
public String savePhoto(@RequestBody MultipartFile file) throws IOException { public String savePhoto(@RequestBody MultipartFile file) throws IOException {
if(file == null) { if(file == null) {

View File

@@ -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;
}

View File

@@ -4,6 +4,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; 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.CocktailModalDto;
import ru.kayashov.bar.controller.dto.cocktail.CocktailForListResponseDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailForListResponseDto;
import ru.kayashov.bar.controller.dto.ingredient.IngredientSimpleResponseDto; 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();
}
} }

View File

@@ -9,7 +9,9 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; 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.CocktailFilterRequestDto;
import ru.kayashov.bar.controller.dto.cocktail.CocktailForIngredientModalDto;
import ru.kayashov.bar.controller.dto.cocktail.CocktailForListResponseDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailForListResponseDto;
import ru.kayashov.bar.controller.dto.cocktail.CocktailModalDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailModalDto;
import ru.kayashov.bar.controller.dto.cocktail.CocktailSimpleResponseDto; import ru.kayashov.bar.controller.dto.cocktail.CocktailSimpleResponseDto;
@@ -473,4 +475,19 @@ public class CocktailService {
log.info("Удален коктейль {}", cocktail); log.info("Удален коктейль {}", cocktail);
repository.delete(cocktail); repository.delete(cocktail);
} }
public String findInstructions(Long id) {
CocktailEntity cocktail = repository.findById(id).orElseThrow(RuntimeException::new);
return cocktail.getInstructions();
}
public List<CocktailForIngredientModalDto> findByIngredient(Long id) {
return ingredientRepository.findById(id).orElseThrow(RuntimeException::new)
.getReceipts()
.stream()
.map(ReceiptEntity::getCocktail)
.distinct()
.map(mapper::cocktailToIngredientDtoList)
.toList();
}
} }

View File

@@ -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.url=${DB_URL:jdbc:postgresql://192.168.1.100:5432/drinks}
spring.datasource.username=${DB_NAME:nextcloud} spring.datasource.username=${DB_NAME:nextcloud}
spring.datasource.password=${DB_PASSWORD:kayash73} 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.idle-timeout=30000
spring.datasource.hikari.max-lifetime=600000 spring.datasource.hikari.max-lifetime=600000