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

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]))
.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);
}

View File

@@ -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")

View File

@@ -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<CocktailForIngredientModalDto> getByIngredient(@RequestParam Long id) {
return cocktailService.findByIngredient(id);
}
@PostMapping("/photo")
public String savePhoto(@RequestBody MultipartFile file) throws IOException {
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.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();
}
}

View File

@@ -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<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.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