-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathFollowController.java
More file actions
82 lines (69 loc) · 2.99 KB
/
FollowController.java
File metadata and controls
82 lines (69 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package Remoa.BE.Member.Controller;
import Remoa.BE.Member.Domain.Member;
import Remoa.BE.Member.Service.FollowService;
import Remoa.BE.Member.Service.MemberService;
import Remoa.BE.exception.CustomMessage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Objects;
import static Remoa.BE.exception.CustomBody.errorResponse;
import static Remoa.BE.exception.CustomBody.successResponse;
import static Remoa.BE.utill.MemberInfo.authorized;
import static Remoa.BE.utill.MemberInfo.getMemberId;
@RestController
@Slf4j
@RequiredArgsConstructor
public class FollowController {
private final FollowService followService;
private final MemberService memberService;
/**
* Session에서 로그인한 사용자(Follow를 거는 사용자)의 Member와 Follow 받는 대상의 memberId를 통해
* Follow가 이미 되었는지 확인하고, 안 되어 있으면 Follow, 되어있다면 Unfollow를 할 수 있도록 기능합니다.
* @param memberId
* @param request
* @return ResponseEntity<String>
*/
@PostMapping("/follow/{member_id}")
public ResponseEntity<Object> follow(@PathVariable("member_id") Long memberId, HttpServletRequest request) {
if(authorized(request)){
//나 자신을 팔로우 하는 경우
Long myMemberId = getMemberId();
if(Objects.equals(memberId, myMemberId)){
return errorResponse(CustomMessage.FOLLOW_ME);
}
else{
Member member = memberService.findOne(myMemberId);
boolean check = followService.followFunction(memberId, member);
//팔로우
if(check){
return successResponse(CustomMessage.OK_FOLLOW,followService.showFollowId(member));
}
//언팔로우
else{
return successResponse(CustomMessage.OK_UNFOLLOW,followService.showFollowId(member));
}
}
}
return errorResponse(CustomMessage.UNAUTHORIZED);
}
/**
* Login한 Member가 Follow하는 멤버들의 Member 필드들을 List로 보여줌.
* 현재는 모든 필드들을 다 보여주지만, 이후 프론트와의 협의 후에 필요한 필드들만 가져올 수 있게 구현해야함.
* @param request
* @return ResponseEntity<Object>
*/
@GetMapping("/user/follow")
public ResponseEntity<Object> showFollowers(HttpServletRequest request) {
if(authorized(request)){
Long myMemberId = getMemberId();
Member member = memberService.findOne(myMemberId);
List<Member> members = followService.showFollows(member);
return successResponse(CustomMessage.OK,members);
}
return errorResponse(CustomMessage.UNAUTHORIZED);
}
}