Skip to content

Commit 99c1194

Browse files
committed
feat follower, follow list
1 parent 1d436e0 commit 99c1194

6 files changed

Lines changed: 94 additions & 1 deletion

File tree

q

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
community-answer
2+
coupon
3+
feat/admin
4+
feat/project-status
5+
feat/recent-project
6+
* feat/social-list
7+
fix
8+
follow
9+
funding-rollback
10+
main
11+
mypage-maker
12+
project-detail
13+
query-test
14+
refactor-img
15+
refactor/funding
16+
refactor/project-all
17+
refactor/project-detail
18+
socket

src/main/java/NextLevel/demo/follow/FollowController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import lombok.RequiredArgsConstructor;
77
import org.springframework.http.ResponseEntity;
88
import org.springframework.stereotype.Controller;
9+
import org.springframework.web.bind.annotation.GetMapping;
910
import org.springframework.web.bind.annotation.PostMapping;
1011
import org.springframework.web.bind.annotation.RequestBody;
1112

@@ -21,4 +22,14 @@ public ResponseEntity follow(@RequestBody @Valid FollowDto dto) {
2122
return ResponseEntity.ok().body(new SuccessResponse("success", null));
2223
}
2324

25+
@GetMapping("/social/user/follow-list")
26+
public ResponseEntity getMyFollowList() {
27+
return ResponseEntity.ok().body(new SuccessResponse("success", followService.followList(JWTUtil.getUserIdFromSecurityContext())));
28+
}
29+
30+
@GetMapping("/social/user/follower-list")
31+
public ResponseEntity getMyFollowerList() {
32+
return ResponseEntity.ok().body(new SuccessResponse("success", followService.followerList(JWTUtil.getUserIdFromSecurityContext())));
33+
}
34+
2435
}

src/main/java/NextLevel/demo/follow/FollowRepository.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package NextLevel.demo.follow;
22

3+
import NextLevel.demo.user.entity.UserEntity;
34
import org.springframework.data.jpa.repository.JpaRepository;
45
import org.springframework.data.jpa.repository.Query;
56
import org.springframework.data.repository.query.Param;
67

8+
import java.util.List;
79
import java.util.Optional;
810

911
public interface FollowRepository extends JpaRepository<FollowEntity, Long> {
@@ -17,4 +19,28 @@ public interface FollowRepository extends JpaRepository<FollowEntity, Long> {
1719
"from TagEntity t " +
1820
"where t.id = 1 ")
1921
SelectFollowCountAndIsFollowDao selectFollowCountAndFollowDao(@Param("targetUserId") Long targetUserId, @Param("userId") Long userId);
22+
23+
@Query("select new NextLevel.demo.follow.ResponseFollowDto(" +
24+
"follower , " +
25+
"(select count(f1) from FollowEntity f1 where f1.target.id = follower.id and f1.user.id = :targetId) as isFollow " +
26+
")" +
27+
"from FollowEntity f " +
28+
"left join f.user follower " +
29+
"left join fetch follower.img " +
30+
"where f.target.id = :targetId " +
31+
"group by f.user")
32+
List<ResponseFollowDto> gerFollowerList(@Param("targetId") Long targetId);
33+
34+
@Query("select new NextLevel.demo.follow.ResponseFollowDto(" +
35+
"follow , " +
36+
"(select count(f1) from FollowEntity f1 where f1.user.id = follow.id and f1.target.id = :userId) as isFollow " +
37+
")" +
38+
"follow " +
39+
"from FollowEntity f " +
40+
"left join f.target follow " +
41+
"left join fetch follow.img " +
42+
"where f.user.id = :userId " +
43+
"group by follow")
44+
List<ResponseFollowDto> gerFollowList(@Param("userId") Long userId);
45+
2046
}

src/main/java/NextLevel/demo/follow/FollowService.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
import NextLevel.demo.exception.CustomException;
44
import NextLevel.demo.exception.ErrorCode;
5+
import NextLevel.demo.user.dto.user.response.UserProfileDto;
6+
import NextLevel.demo.user.dto.user.response.UserSummeryInfoDto;
57
import NextLevel.demo.user.entity.UserEntity;
68
import NextLevel.demo.user.service.UserValidateService;
79
import lombok.RequiredArgsConstructor;
810
import org.springframework.stereotype.Service;
911

12+
import java.util.List;
1013
import java.util.Optional;
1114

1215
@Service
@@ -38,4 +41,14 @@ public void follow(long userId, long targetId, boolean follow) {
3841
}
3942
}
4043

44+
public List<ResponseFollowDto> followerList(Long targetUserId) {
45+
userValidateService.findUserWithUserId(targetUserId);
46+
return followRepository.gerFollowerList(targetUserId);
47+
}
48+
49+
public List<ResponseFollowDto> followList(Long userId) {
50+
userValidateService.findUserWithUserId(userId);
51+
return followRepository.gerFollowList(userId);
52+
}
53+
4154
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package NextLevel.demo.follow;
2+
3+
import NextLevel.demo.user.dto.user.response.UserProfileDto;
4+
import NextLevel.demo.user.entity.UserEntity;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import lombok.Setter;
9+
10+
@NoArgsConstructor
11+
@Getter
12+
@Setter
13+
public class ResponseFollowDto {
14+
15+
private UserProfileDto user;
16+
@JsonProperty("isFollow")
17+
private boolean isFollow;
18+
19+
public ResponseFollowDto (UserEntity user, Long isFollow) {
20+
this.user = UserProfileDto.of(user);
21+
this.isFollow = isFollow!=null?isFollow.equals(1L):false;
22+
}
23+
24+
}

src/main/java/NextLevel/demo/user/controller/MypageController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package NextLevel.demo.user.controller;
22

33
import NextLevel.demo.common.SuccessResponse;
4+
import NextLevel.demo.follow.FollowService;
45
import NextLevel.demo.project.project.dto.response.ProjectListWithFundingDto;
56
import NextLevel.demo.project.project.dto.response.ResponseProjectListDto;
67
import NextLevel.demo.user.dto.user.request.RequestMyPageProjectListDto;
@@ -12,6 +13,7 @@
1213
import org.springframework.http.HttpStatus;
1314
import org.springframework.http.ResponseEntity;
1415
import org.springframework.stereotype.Controller;
16+
import org.springframework.web.bind.annotation.GetMapping;
1517
import org.springframework.web.bind.annotation.PostMapping;
1618
import org.springframework.web.bind.annotation.RequestBody;
1719
import org.springframework.web.bind.annotation.RequestMapping;
@@ -37,5 +39,4 @@ public ResponseEntity<?> myPageProjectListMaker(@RequestBody @Valid RequestMyPag
3739
dto.setUserId(JWTUtil.getUserIdFromSecurityContext());
3840
return ResponseEntity.status(HttpStatus.OK).body(new SuccessResponse("success", mypageProjectSelectService.mapageProjectListWithFunding(dto)));
3941
}
40-
4142
}

0 commit comments

Comments
 (0)