From cbc0f96ab41671e038250f81d9ce920cef138b9f Mon Sep 17 00:00:00 2001 From: MyunghyunNero Date: Tue, 21 Nov 2023 14:48:30 +0900 Subject: [PATCH] =?UTF-8?q?refactor=20:=20programDetail=EC=97=90=20?= =?UTF-8?q?=EC=9C=A0=EC=A0=80=20=EC=A2=8B=EC=95=84=EC=9A=94=EC=97=AC?= =?UTF-8?q?=EB=B6=80=20=EC=B2=B4=ED=81=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gallae/controller/ProgramController.java | 8 +++++++- .../gallae/dto/program/ProgramDetailRes.java | 2 ++ .../gallae/service/program/ProgramService.java | 2 +- .../gallae/service/program/ProgramServiceImpl.java | 13 ++++++++++++- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/kusitms/gallae/controller/ProgramController.java b/src/main/java/kusitms/gallae/controller/ProgramController.java index 3054577..0b76b77 100644 --- a/src/main/java/kusitms/gallae/controller/ProgramController.java +++ b/src/main/java/kusitms/gallae/controller/ProgramController.java @@ -130,10 +130,16 @@ public ResponseEntity> findProgramsByFilter( @Operation(summary = "프로그램 세부내용 가져오기") @GetMapping("/program") public ResponseEntity> findProgramDetail( + Principal principal, + @Parameter(description = "프로그램 ID") @RequestParam(value = "id", required = true) Long id ){ - return ResponseEntity.ok(new BaseResponse<>(this.programService.getProgramDetail(id))); + String username = null; + if(principal != null) { + username = principal.getName(); + } + return ResponseEntity.ok(new BaseResponse<>(this.programService.getProgramDetail(id,username))); } @Operation(summary = "프로그램 지역에 맞게 여행 추천해주기") diff --git a/src/main/java/kusitms/gallae/dto/program/ProgramDetailRes.java b/src/main/java/kusitms/gallae/dto/program/ProgramDetailRes.java index fa43db3..8ae6481 100644 --- a/src/main/java/kusitms/gallae/dto/program/ProgramDetailRes.java +++ b/src/main/java/kusitms/gallae/dto/program/ProgramDetailRes.java @@ -22,6 +22,8 @@ public class ProgramDetailRes { private String location; + private boolean userLikeCheck; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Asia/Seoul") private LocalDate recruitStartDate; diff --git a/src/main/java/kusitms/gallae/service/program/ProgramService.java b/src/main/java/kusitms/gallae/service/program/ProgramService.java index 5511f0d..ca1d1fa 100644 --- a/src/main/java/kusitms/gallae/service/program/ProgramService.java +++ b/src/main/java/kusitms/gallae/service/program/ProgramService.java @@ -9,7 +9,7 @@ public interface ProgramService { - ProgramDetailRes getProgramDetail(Long id); + ProgramDetailRes getProgramDetail(Long id, String username); ProgramPageMainRes getProgramsByDynamicQuery(ProgramSearchReq programSearchReq, String username); diff --git a/src/main/java/kusitms/gallae/service/program/ProgramServiceImpl.java b/src/main/java/kusitms/gallae/service/program/ProgramServiceImpl.java index c59270e..f85e86a 100644 --- a/src/main/java/kusitms/gallae/service/program/ProgramServiceImpl.java +++ b/src/main/java/kusitms/gallae/service/program/ProgramServiceImpl.java @@ -11,6 +11,7 @@ import kusitms.gallae.domain.Program; import kusitms.gallae.global.TourApiService; import kusitms.gallae.global.jwt.JwtProvider; +import kusitms.gallae.repository.favorite.FavoriteRepository; import kusitms.gallae.repository.program.ProgramRepositoryCustom; import kusitms.gallae.repository.program.ProgramRepositoryImpl; import kusitms.gallae.repository.program.ProgramRespository; @@ -39,6 +40,8 @@ public class ProgramServiceImpl implements ProgramService { private final TourApiService tourApiService; + private final FavoriteRepository favoriteRepository; + @Override public ProgramPageMainRes getProgramsByDynamicQuery(ProgramSearchReq programSearchReq,String username) { @@ -105,9 +108,10 @@ public List getProgramsMap(){ } @Override - public ProgramDetailRes getProgramDetail(Long id){ + public ProgramDetailRes getProgramDetail(Long id, String username){ Program program = programRespository.findById(id).orElse(null); program.setViewCount(program.getViewCount()+1); + if(program == null) { throw new BaseException(BaseResponseStatus.BAD_REQUEST); }else{ @@ -126,6 +130,13 @@ public ProgramDetailRes getProgramDetail(Long id){ programDetailRes.setTripStartDate(program.getTripStartDate()); programDetailRes.setTripEndDate(program.getTripEndDate()); programDetailRes.setLike(program.getProgramLike()); + User user = null; + if(username != null){ + user = userRepository.findById(Long.valueOf(username)).orElse(null); + if(user !=null && favoriteRepository.existsByUserAndProgram(user,program)){ + programDetailRes.setUserLikeCheck(true); + } + } programDetailRes.setPhotoUrl(program.getPhotoUrl()); LocalDate localDate = LocalDate.of(program.getRecruitEndDate().getYear(), program.getRecruitEndDate().getMonth(),program.getRecruitEndDate().getDayOfMonth());