diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 3a83e9af..49784b09 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -7,12 +7,12 @@
-
+
-
-
+
+
\ No newline at end of file
diff --git a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/controller/FollowController.java b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/controller/FollowController.java
index c9d973e4..71c4d3a8 100644
--- a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/controller/FollowController.java
+++ b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/controller/FollowController.java
@@ -67,6 +67,13 @@ public ResponseEntity getHasNewFollowers
return ResponseEntity.ok(followService.hasFollowers(memberId));
}
+ @GetMapping("followers/count/{memberId}")
+ public ResponseEntity getFollowerCount(
+ @PathVariable Long memberId
+ ) {
+ return ResponseEntity.ok(followService.getFollowerCount(memberId));
+ }
+
@PatchMapping("followers/relation/update/{memberId}")
public ResponseEntity updateFollowRelation(
@PathVariable Long memberId
diff --git a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/controller/api/FollowApi.java b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/controller/api/FollowApi.java
index 109c3dbb..13aba13e 100644
--- a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/controller/api/FollowApi.java
+++ b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/controller/api/FollowApi.java
@@ -196,6 +196,30 @@ public ResponseEntity getHasNewFollowers
@PathVariable Long memberId
);
+ @Operation(
+ summary = "팔로잉, 팔로워 수 조회",
+ description = "해당 유저의 팔로잉, 팔로워 수를 조회한다. (팔로워 수, 팔로잉 수)",
+ security = @SecurityRequirement(name = "bearerAuth")
+ )
+ @Parameter(
+ in = ParameterIn.HEADER,
+ name = "Authorization", required = true,
+ schema = @Schema(type = "string"),
+ description = "Bearer [Access 토큰]")
+ @ApiResponses(value = {
+ @ApiResponse(responseCode = "200", description = "조회"),
+ @ApiResponse(responseCode = "401", description = "토큰 인증 실패",
+ content = @Content(mediaType = "application/json",
+ examples = @ExampleObject(value = "{\n" +
+ " \"errorCode\": \"T-002\",\n" +
+ " \"message\": \"해당 토큰은 유효한 토큰이 아닙니다.\"\n" +
+ "}"))
+ )
+ })
+ @GetMapping("followers/count/{memberId}")
+ public ResponseEntity getFollowerCount(
+ @PathVariable Long memberId
+ );
@Operation(
summary = "새 팔로워들을 기존 팔로워들로 변경",
description = "해당 멤버의 새로운 팔로워들을 기존 팔로워들로 변경한다.",
diff --git a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/dto/FollowResponse.java b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/dto/FollowResponse.java
index 8c25be9a..87e2abcb 100644
--- a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/dto/FollowResponse.java
+++ b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/dto/FollowResponse.java
@@ -41,6 +41,23 @@ public static isFollowingResponse of(boolean isFollow) {
}
}
+ @Getter
+ @Setter
+ @Builder
+ @NoArgsConstructor
+ @AllArgsConstructor
+ public static class FollowCountResponse {
+ private long followerCount;
+ private long followingCount;
+
+ public static FollowCountResponse of(long followerCount, long followingCount) {
+ return FollowCountResponse.builder()
+ .followerCount(followerCount)
+ .followingCount(followingCount)
+ .build();
+ }
+ }
+
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
diff --git a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/repository/FollowRepository.java b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/repository/FollowRepository.java
index 157783d5..f2a61a4c 100644
--- a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/repository/FollowRepository.java
+++ b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/repository/FollowRepository.java
@@ -19,6 +19,12 @@ public interface FollowRepository extends JpaRepository {
// 중복 체크에 사용할 메서드
boolean existsByFollowerIdAndFollowingId(Long followerId, Long followingId);
+ // 특정 사용자가 팔로우하는 사람 수
+ long countByFollower_Id(Long memberId);
+
+ // 특정 사용자를 팔로우하는 사람 수
+ long countByFollowing_Id(Long memberId);
+
@Query("SELECT fol " +
"FROM Follow f " +
"JOIN f.follower fol " +
diff --git a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/service/FollowService.java b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/service/FollowService.java
index 43dbac2d..dc3a6bb7 100644
--- a/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/service/FollowService.java
+++ b/baebae-BE/src/main/java/com/web/baebaeBE/domain/Follow/service/FollowService.java
@@ -53,6 +53,13 @@ public void followMember(Long followerId, Long followingId) {
followRepository.save(follow);
}
+ public FollowResponse.FollowCountResponse getFollowerCount(Long memberId) {
+ long followerCount = followRepository.countByFollower_Id(memberId);
+ long followingCount = followRepository.countByFollowing_Id(memberId);
+
+ return FollowResponse.FollowCountResponse.of(followerCount, followingCount);
+ }
+
public void deleteFollower(Long followerId, Long followingId) {
Follow follow = followRepository.findByFollowerIdAndFollowingId(followerId, followingId)
.orElseThrow(() -> new BusinessException(FollowException.NOT_EXIST_FOLLOW));