diff --git a/src/main/java/NextLevel/demo/follow/FollowRepository.java b/src/main/java/NextLevel/demo/follow/FollowRepository.java index 6e68697..eb5e297 100644 --- a/src/main/java/NextLevel/demo/follow/FollowRepository.java +++ b/src/main/java/NextLevel/demo/follow/FollowRepository.java @@ -1,9 +1,11 @@ package NextLevel.demo.follow; +import NextLevel.demo.user.entity.UserEntity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import java.util.List; import java.util.Optional; public interface FollowRepository extends JpaRepository { @@ -17,4 +19,11 @@ public interface FollowRepository extends JpaRepository { "from TagEntity t " + "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); + } diff --git a/src/main/java/NextLevel/demo/follow/FollowService.java b/src/main/java/NextLevel/demo/follow/FollowService.java index bf97946..5795f20 100644 --- a/src/main/java/NextLevel/demo/follow/FollowService.java +++ b/src/main/java/NextLevel/demo/follow/FollowService.java @@ -2,11 +2,14 @@ import NextLevel.demo.exception.CustomException; import NextLevel.demo.exception.ErrorCode; +import NextLevel.demo.user.dto.user.response.UserProfileDto; +import NextLevel.demo.user.dto.user.response.UserSummeryInfoDto; import NextLevel.demo.user.entity.UserEntity; import NextLevel.demo.user.service.UserValidateService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Optional; @Service @@ -38,4 +41,16 @@ public void follow(long userId, long targetId, boolean follow) { } } + public List followerList(Long targetUserId) { + userValidateService.findUserWithUserId(targetUserId); + List followerList = followRepository.gerFollowerList(targetUserId); + return followerList.stream().map(UserProfileDto::of).toList(); + } + + public List followList(Long userId) { + userValidateService.findUserWithUserId(userId); + List followList = followRepository.gerFollowList(userId); + return followList.stream().map(UserProfileDto::of).toList(); + } + } diff --git a/src/main/java/NextLevel/demo/user/controller/MypageController.java b/src/main/java/NextLevel/demo/user/controller/MypageController.java index 8cdf7dd..2168bb0 100644 --- a/src/main/java/NextLevel/demo/user/controller/MypageController.java +++ b/src/main/java/NextLevel/demo/user/controller/MypageController.java @@ -1,6 +1,7 @@ package NextLevel.demo.user.controller; import NextLevel.demo.common.SuccessResponse; +import NextLevel.demo.follow.FollowService; import NextLevel.demo.project.project.dto.response.ProjectListWithFundingDto; import NextLevel.demo.project.project.dto.response.ResponseProjectListDto; import NextLevel.demo.user.dto.user.request.RequestMyPageProjectListDto; @@ -12,6 +13,7 @@ import org.springframework.http.HttpStatus; 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; import org.springframework.web.bind.annotation.RequestMapping; @@ -22,6 +24,7 @@ public class MypageController { private final MypageProjectSelectService mypageProjectSelectService; + private final FollowService followService; // 내가 좋아요한, 내가 최근 조회한, 내가 펀딩한(with funding) with tag @PostMapping("/project") @@ -38,4 +41,14 @@ public ResponseEntity myPageProjectListMaker(@RequestBody @Valid RequestMyPag 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()))); + } + }