From 9b388e133ffbeb7b9ebbb95860058ff82e321756 Mon Sep 17 00:00:00 2001 From: kwonhee1 Date: Sat, 11 Oct 2025 17:57:28 +0900 Subject: [PATCH 1/2] fix --- .../demo/follow/FollowController.java | 11 ++++++++ .../demo/follow/FollowRepository.java | 27 +++++++++++++++---- .../NextLevel/demo/follow/FollowService.java | 10 +++---- .../demo/follow/ResponseFollowDto.java | 22 +++++++++++++++ .../user/controller/MypageController.java | 12 --------- 5 files changed, 59 insertions(+), 23 deletions(-) create mode 100644 src/main/java/NextLevel/demo/follow/ResponseFollowDto.java diff --git a/src/main/java/NextLevel/demo/follow/FollowController.java b/src/main/java/NextLevel/demo/follow/FollowController.java index d552e7a..a405113 100644 --- a/src/main/java/NextLevel/demo/follow/FollowController.java +++ b/src/main/java/NextLevel/demo/follow/FollowController.java @@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -21,4 +22,14 @@ public ResponseEntity follow(@RequestBody @Valid FollowDto dto) { return ResponseEntity.ok().body(new SuccessResponse("success", null)); } + @GetMapping("/social/user/follow-list") + public ResponseEntity getMyFollowList() { + return ResponseEntity.ok().body(new SuccessResponse("success", followService.followList(JWTUtil.getUserIdFromSecurityContext()))); + } + + @GetMapping("/social/user/follower-list") + public ResponseEntity getMyFollowerList() { + return ResponseEntity.ok().body(new SuccessResponse("success", followService.followerList(JWTUtil.getUserIdFromSecurityContext()))); + } + } diff --git a/src/main/java/NextLevel/demo/follow/FollowRepository.java b/src/main/java/NextLevel/demo/follow/FollowRepository.java index eb5e297..dd3b426 100644 --- a/src/main/java/NextLevel/demo/follow/FollowRepository.java +++ b/src/main/java/NextLevel/demo/follow/FollowRepository.java @@ -20,10 +20,27 @@ public interface FollowRepository extends JpaRepository { "where t.id = 1 ") SelectFollowCountAndIsFollowDao selectFollowCountAndFollowDao(@Param("targetUserId") Long targetUserId, @Param("userId") Long userId); - @Query("select f.user from FollowEntity f left join fetch f.user.img where f.target.id = :targetId") - List gerFollowerList(@Param("targetId") Long targetId); - - @Query("select f.target from FollowEntity f left join fetch f.target.img where f.user.id = :userId") - List gerFollowList(@Param("userId") Long userId); + @Query("select new NextLevel.demo.follow.ResponseFollowDto(" + + "follower , " + + "(select count(f1) from FollowEntity f1 where f1.target.id = follower.id and f1.user.id = :targetId) as isFollow " + + ")" + + "from FollowEntity f " + + "left join f.user follower " + + "left join fetch follower.img " + + "where f.target.id = :targetId " + + "group by f.user") + List gerFollowerList(@Param("targetId") Long targetId); + + @Query("select new NextLevel.demo.follow.ResponseFollowDto(" + + "follow , " + + "(select count(f1) from FollowEntity f1 where f1.user.id = follow.id and f1.target.id = :userId) as isFollow " + + ")" + + "follow " + + "from FollowEntity f " + + "left join f.user follow " + + "left join fetch follow.img " + + "where f.user.id = :userId " + + "group by f.user") + List gerFollowList(@Param("userId") Long userId); } diff --git a/src/main/java/NextLevel/demo/follow/FollowService.java b/src/main/java/NextLevel/demo/follow/FollowService.java index 5795f20..5281530 100644 --- a/src/main/java/NextLevel/demo/follow/FollowService.java +++ b/src/main/java/NextLevel/demo/follow/FollowService.java @@ -41,16 +41,14 @@ public void follow(long userId, long targetId, boolean follow) { } } - public List followerList(Long targetUserId) { + public List followerList(Long targetUserId) { userValidateService.findUserWithUserId(targetUserId); - List followerList = followRepository.gerFollowerList(targetUserId); - return followerList.stream().map(UserProfileDto::of).toList(); + return followRepository.gerFollowerList(targetUserId); } - public List followList(Long userId) { + public List followList(Long userId) { userValidateService.findUserWithUserId(userId); - List followList = followRepository.gerFollowList(userId); - return followList.stream().map(UserProfileDto::of).toList(); + return followRepository.gerFollowList(userId); } } diff --git a/src/main/java/NextLevel/demo/follow/ResponseFollowDto.java b/src/main/java/NextLevel/demo/follow/ResponseFollowDto.java new file mode 100644 index 0000000..53caff0 --- /dev/null +++ b/src/main/java/NextLevel/demo/follow/ResponseFollowDto.java @@ -0,0 +1,22 @@ +package NextLevel.demo.follow; + +import NextLevel.demo.user.dto.user.response.UserProfileDto; +import NextLevel.demo.user.entity.UserEntity; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@NoArgsConstructor +@Getter +@Setter +public class ResponseFollowDto { + + private UserProfileDto user; + private boolean isFollow; + + public ResponseFollowDto (UserEntity user, Long isFollow) { + this.user = UserProfileDto.of(user); + this.isFollow = isFollow!=null?isFollow.equals(1L):false; + } + +} diff --git a/src/main/java/NextLevel/demo/user/controller/MypageController.java b/src/main/java/NextLevel/demo/user/controller/MypageController.java index 2168bb0..b8d4511 100644 --- a/src/main/java/NextLevel/demo/user/controller/MypageController.java +++ b/src/main/java/NextLevel/demo/user/controller/MypageController.java @@ -24,7 +24,6 @@ public class MypageController { private final MypageProjectSelectService mypageProjectSelectService; - private final FollowService followService; // 내가 좋아요한, 내가 최근 조회한, 내가 펀딩한(with funding) with tag @PostMapping("/project") @@ -40,15 +39,4 @@ public ResponseEntity myPageProjectListMaker(@RequestBody @Valid RequestMyPag dto.setUserId(JWTUtil.getUserIdFromSecurityContext()); return ResponseEntity.status(HttpStatus.OK).body(new SuccessResponse("success", mypageProjectSelectService.mapageProjectListWithFunding(dto))); } - - @GetMapping("/follow-list") - public ResponseEntity getMyFollowList() { - return ResponseEntity.ok().body(new SuccessResponse("success", followService.followList(JWTUtil.getUserIdFromSecurityContext()))); - } - - @GetMapping("/follower-list") - public ResponseEntity getMyFollowerList() { - return ResponseEntity.ok().body(new SuccessResponse("success", followService.followerList(JWTUtil.getUserIdFromSecurityContext()))); - } - } From a10aa465a6389690f696876d01a2509c98126823 Mon Sep 17 00:00:00 2001 From: kwonhee1 Date: Sat, 11 Oct 2025 18:03:32 +0900 Subject: [PATCH 2/2] fix --- q | 18 ++++++++++++++++++ .../demo/follow/FollowRepository.java | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 q diff --git a/q b/q new file mode 100644 index 0000000..33f86f9 --- /dev/null +++ b/q @@ -0,0 +1,18 @@ + community-answer + coupon + feat/admin + feat/project-status + feat/recent-project +* feat/social-list + fix + follow + funding-rollback + main + mypage-maker + project-detail + query-test + refactor-img + refactor/funding + refactor/project-all + refactor/project-detail + socket diff --git a/src/main/java/NextLevel/demo/follow/FollowRepository.java b/src/main/java/NextLevel/demo/follow/FollowRepository.java index dd3b426..40e5d6a 100644 --- a/src/main/java/NextLevel/demo/follow/FollowRepository.java +++ b/src/main/java/NextLevel/demo/follow/FollowRepository.java @@ -37,10 +37,10 @@ public interface FollowRepository extends JpaRepository { ")" + "follow " + "from FollowEntity f " + - "left join f.user follow " + + "left join f.target follow " + "left join fetch follow.img " + "where f.user.id = :userId " + - "group by f.user") + "group by follow") List gerFollowList(@Param("userId") Long userId); }