From f0ea957b833d6720c0b765f4dc76729ea2d6f641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=AF=BC=ED=98=81?= <104811969+MinsFuture@users.noreply.github.com> Date: Tue, 25 Jun 2024 21:07:44 +0900 Subject: [PATCH] =?UTF-8?q?PR=20:=20JPA=20=EC=98=81=EC=86=8D=EC=84=B1=20?= =?UTF-8?q?=EC=BB=A8=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20(#19)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Chore : JPA 영속성 컨텍스트 관련 로직 수정 * Chore : gradle.yml 파일 수정 반영 --- .../domain/photo/service/PhotoService.java | 2 +- .../controller/HomeController.java | 2 +- .../request/WalkInvitaionCreateRequestDto.java | 3 +-- .../dto/response/HomePageResponseDto.java | 2 +- .../walkinvitation/entity/WalkInvitation.java | 10 +++++++--- .../repository/WalkInvitationRepository.java | 2 +- .../service/WalkInvitationService.java | 16 +++++++++++----- 7 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/gdsc/petwalk/domain/photo/service/PhotoService.java b/src/main/java/com/gdsc/petwalk/domain/photo/service/PhotoService.java index 2389def..13b6ece 100644 --- a/src/main/java/com/gdsc/petwalk/domain/photo/service/PhotoService.java +++ b/src/main/java/com/gdsc/petwalk/domain/photo/service/PhotoService.java @@ -31,7 +31,7 @@ public List savePhotosToWalkInvitation(MultipartFile[] multipartFiles, Wa .walkInvitation(walkInvitation) .build(); - savedPhotos.add(photoRepository.save(photo)); + savedPhotos.add(photo); } return savedPhotos; diff --git a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/controller/HomeController.java b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/controller/HomeController.java index f2ff8f1..9ea37a9 100644 --- a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/controller/HomeController.java +++ b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/controller/HomeController.java @@ -36,7 +36,7 @@ public class HomeController { @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PreAuthorize("isAuthenticated()") - @Operation(summary = "홈 화면 글쓰기 로직", description = "홈 화면 글쓰기 로직, WalkInvitaionCreateRequestDto는 json형식, uploadPhotos는 multipart/form-data") + @Operation(summary = "홈 화면 글쓰기 로직", description = "홈 화면 글쓰기 로직, WalkInvitaionCreateRequestDto는 application/json형식, uploadPhotos는 multipart/form-data로 한번에 form-data 형식으로 보내주면 됨.
try it out을 누르면 dto 정보를 확인 할 수 있습니다. swagger에서 직접 테스트는 안되니 참고하세요!") @ApiResponse(responseCode = "200", description = "글쓰기 성공 시 Long 타입 id 값 반환") public ResponseEntity createWalkInvitation( @RequestPart("walkInvitaionCreateRequestDto") WalkInvitaionCreateRequestDto request, diff --git a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/dto/request/WalkInvitaionCreateRequestDto.java b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/dto/request/WalkInvitaionCreateRequestDto.java index 52d0a6a..b3e37c0 100644 --- a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/dto/request/WalkInvitaionCreateRequestDto.java +++ b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/dto/request/WalkInvitaionCreateRequestDto.java @@ -14,6 +14,5 @@ public class WalkInvitaionCreateRequestDto { private double latitude; // 산책 위치 위도 private double longitude; // 산책 위치 경도 private String detailedLocation; // 세부 위치 - private LocalDateTime walkDateTime; // 산책 시작 날짜 및 시간 - + private LocalDateTime walkStartDateTime; // 산책 시작 날짜 및 시간 } diff --git a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/dto/response/HomePageResponseDto.java b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/dto/response/HomePageResponseDto.java index b6712be..c5c5de6 100644 --- a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/dto/response/HomePageResponseDto.java +++ b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/dto/response/HomePageResponseDto.java @@ -38,7 +38,7 @@ public static List getListFrom(List walkInv .latitude(walkInvitation.getLatitude()) .longitude(walkInvitation.getLongitude()) .detailedLocation(walkInvitation.getDetailedLocation()) - .walkDateTime(walkInvitation.getWalkDateTime()) + .walkDateTime(walkInvitation.getWalkStartDateTime()) .walkingStatus(walkInvitation.getWalkingStatus()) // .walkInvitationPhotoUrl(walkInvitation.getPhotoUrls().get(0).getPhotoUrl()) .walkInvitationPhotoUrl(null) diff --git a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/entity/WalkInvitation.java b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/entity/WalkInvitation.java index e372862..9e9f0e6 100644 --- a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/entity/WalkInvitation.java +++ b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/entity/WalkInvitation.java @@ -39,7 +39,7 @@ public class WalkInvitation { private String detailedLocation; // 세부 위치 @Column(nullable = false) - private LocalDateTime walkDateTime; // 산책 날짜 + private LocalDateTime walkStartDateTime; // 산책 날짜 private String walkingStatus; // 산책 상태 @@ -52,16 +52,20 @@ public class WalkInvitation { private List photoUrls = new ArrayList<>(); @Builder - public WalkInvitation(Long id, String title, String content, double latitude, double longitude, String detailedLocation, LocalDateTime walkDateTime, String walkingStatus, Member writer, List photoUrls) { + public WalkInvitation(Long id, String title, String content, double latitude, double longitude, String detailedLocation, LocalDateTime walkStartDateTime, String walkingStatus, Member writer, List photoUrls) { this.id = id; this.title = title; this.content = content; this.latitude = latitude; this.longitude = longitude; this.detailedLocation = detailedLocation; - this.walkDateTime = walkDateTime; + this.walkStartDateTime = walkStartDateTime; this.walkingStatus = walkingStatus; this.writer = writer; this.photoUrls = photoUrls; } + + public void addPhotos(List photos){ + this.photoUrls = photos; + } } diff --git a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/repository/WalkInvitationRepository.java b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/repository/WalkInvitationRepository.java index 6d3a080..5190c93 100644 --- a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/repository/WalkInvitationRepository.java +++ b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/repository/WalkInvitationRepository.java @@ -13,7 +13,7 @@ public interface WalkInvitationRepository extends JpaRepository { List findAllByWriter(Member member); - List findAllByWalkDateTimeBetween(LocalDateTime start, LocalDateTime end); + List findAllByWalkStartDateTimeBetween(LocalDateTime start, LocalDateTime end); @Query("SELECT u FROM walk_invitations u WHERE " + "(6371 * acos(cos(radians(:centerLat)) * cos(radians(u.latitude)) " + diff --git a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/service/WalkInvitationService.java b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/service/WalkInvitationService.java index 84e8a52..94aab67 100644 --- a/src/main/java/com/gdsc/petwalk/domain/walkinvitation/service/WalkInvitationService.java +++ b/src/main/java/com/gdsc/petwalk/domain/walkinvitation/service/WalkInvitationService.java @@ -1,6 +1,7 @@ package com.gdsc.petwalk.domain.walkinvitation.service; import com.gdsc.petwalk.domain.member.entity.Member; +import com.gdsc.petwalk.domain.member.repository.MemberRepository; import com.gdsc.petwalk.domain.photo.entity.Photo; import com.gdsc.petwalk.domain.photo.service.PhotoService; import com.gdsc.petwalk.domain.walkinvitation.dto.request.WalkInvitaionCreateRequestDto; @@ -10,6 +11,7 @@ import com.gdsc.petwalk.domain.walkinvitation.repository.WalkInvitationRepository; import com.gdsc.petwalk.global.principal.PrincipalDetails; import lombok.RequiredArgsConstructor; +import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -23,6 +25,7 @@ @RequiredArgsConstructor public class WalkInvitationService { + private final MemberRepository memberRepository; private final WalkInvitationRepository walkInvitationRepository; private final PhotoService photoService; @@ -42,7 +45,7 @@ public WalkInvitationDetailsResponseDto getHomeDetailsById(Long id) { .latitude(walkInvitation.getLatitude()) .longitude(walkInvitation.getLongitude()) .detailedLocation(walkInvitation.getDetailedLocation()) - .walkDateTime(walkInvitation.getWalkDateTime()) + .walkDateTime(walkInvitation.getWalkStartDateTime()) .walkingStatus(walkInvitation.getWalkingStatus()) .walkInvitationPhotoUrls(photoUrls) .memberName(member.getNickName()) @@ -53,7 +56,8 @@ public WalkInvitationDetailsResponseDto getHomeDetailsById(Long id) { public Long createWalkInvitation(WalkInvitaionCreateRequestDto request, MultipartFile[] multipartFiles, PrincipalDetails principalDetails) { - Member member = principalDetails.getMember(); + Member member = memberRepository.findByEmail(principalDetails.getMember().getEmail()) + .orElseThrow(() -> new UsernameNotFoundException("해당 Email에 해당하는 유저가 없습니다")); WalkInvitation walkInvitation = WalkInvitation.builder() .writer(member) @@ -62,11 +66,13 @@ public Long createWalkInvitation(WalkInvitaionCreateRequestDto request, .latitude(request.getLatitude()) .longitude(request.getLongitude()) .detailedLocation(request.getDetailedLocation()) - .walkDateTime(request.getWalkDateTime()) + .walkStartDateTime(request.getWalkStartDateTime()) .walkingStatus("산책 대기 중") .build(); + member.getWalkInvitations().add(walkInvitation); - walkInvitation.setPhotoUrls(photoService.savePhotosToWalkInvitation(multipartFiles, walkInvitation)); + List photos = photoService.savePhotosToWalkInvitation(multipartFiles, walkInvitation); + walkInvitation.addPhotos(photos); walkInvitationRepository.save(walkInvitation); @@ -82,7 +88,7 @@ public List getTodayHomePageLists(PrincipalDetails principa LocalDateTime after24Hours = now.plusHours(24); List walkInvitations - = walkInvitationRepository.findAllByWalkDateTimeBetween(now, after24Hours); + = walkInvitationRepository.findAllByWalkStartDateTimeBetween(now, after24Hours); return HomePageResponseDto.getListFrom(walkInvitations); }