Skip to content

Commit 41f3cac

Browse files
authored
Merge pull request #117 from Team-Shaka/refactor/116
⚡️ Refactor: 브랜치 뷰 url 변경 및 트리하우스 가입 시, 브랜치 자동 생성
2 parents d90a64d + df2ac8d commit 41f3cac

File tree

7 files changed

+32
-13
lines changed

7 files changed

+32
-13
lines changed

src/main/java/treehouse/server/api/branch/business/BranchService.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,17 @@ public void createBranch(TreeHouse treeHouse, Member inviter, Member invitee) {
3535

3636
/**
3737
* 트리하우스 내 두 멤버 사이의 가장 짧은 거리를 계산하여 브랜치 뷰를 반환합니다.
38-
* @param user
3938
* @param treehouseId
39+
* @param sourceMemberId
4040
* @param targetMemberId
4141
* @return BranchResponseDTO.getMemberBranchView
4242
*/
4343

44-
public BranchResponseDTO.getMemberBranchView getMemberBranchView(User user, Long treehouseId, Long targetMemberId) {
44+
public BranchResponseDTO.getMemberBranchView getMemberBranchView(Long treehouseId, Long sourceMemberId, Long targetMemberId) {
4545

4646
TreeHouse treeHouse = treehouseQueryAdapter.getTreehouseById(treehouseId);
4747
List<Branch> branches = branchQueryAdapter.findAllByTreeHouse(treeHouse); // 트리하우스 내 모든 브랜치 조회
48-
Member member = memberQueryAdapter.findByUserAndTreehouse(user, treeHouse); // 현재 로그인한 트리하우스 멤버
49-
Long rootId = member.getId(); // 현재 로그인한 트리하우스 멤버의 ID
50-
BranchResponseDTO.ShortestPathResult shortestPathResult = BranchUtil.findShortestDistance(branches, rootId, targetMemberId); // 최단 거리 계산
48+
BranchResponseDTO.ShortestPathResult shortestPathResult = BranchUtil.findShortestDistance(branches, sourceMemberId, targetMemberId); // 최단 거리 계산
5149

5250
// 최단 거리 결과를 이용해 브랜치 뷰 생성
5351
// Node 정보 생성
@@ -63,12 +61,12 @@ public BranchResponseDTO.getMemberBranchView getMemberBranchView(User user, Long
6361
}
6462

6563
// 브랜치 뷰 생성
66-
return BranchMapper.toBranchView(nodes, links, rootId, targetMemberId);
64+
return BranchMapper.toBranchView(nodes, links, sourceMemberId, targetMemberId);
6765

6866
}
6967

7068

71-
public BranchResponseDTO.getCompleteBranchView getCompleteBranchView(User user, Long treehouseId) {
69+
public BranchResponseDTO.getCompleteBranchView getCompleteBranchView(Long treehouseId) {
7270
TreeHouse treeHouse = treehouseQueryAdapter.getTreehouseById(treehouseId);
7371
List<Branch> branches = branchQueryAdapter.findAllByTreeHouse(treeHouse); // 트리하우스 내 모든 브랜치 조회
7472
Set<Long> memberIds = new HashSet<>();

src/main/java/treehouse/server/api/branch/presentation/BranchApi.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,19 @@ public class BranchApi {
2525
@GetMapping
2626
public CommonResponse<BranchResponseDTO.getMemberBranchView> getMemberBranchView(
2727
@PathVariable(name = "treehouseId") Long treehouseId,
28-
@RequestParam(name = "targetMemberId") Long targetMemberId,
29-
@AuthMember @Parameter(hidden = true) User user
28+
@RequestParam(name = "sourceMemberId") Long sourceMemberId,
29+
@RequestParam(name = "targetMemberId") Long targetMemberId
3030
)
3131
{
32-
return CommonResponse.onSuccess(branchService.getMemberBranchView(user, treehouseId, targetMemberId));
32+
return CommonResponse.onSuccess(branchService.getMemberBranchView(treehouseId, sourceMemberId, targetMemberId));
3333
}
3434

3535
@Operation(summary = "트리하우스 전체 브랜치 뷰 API 🔑", description = "트리하우스 내 모든 멤버 사이의 브랜치 뷰를 반환합니다.")
3636
@GetMapping("/complete")
3737
public CommonResponse<BranchResponseDTO.getCompleteBranchView> getCompleteBranchView(
38-
@PathVariable(name = "treehouseId") Long treehouseId,
39-
@AuthMember @Parameter(hidden = true) User user
38+
@PathVariable(name = "treehouseId") Long treehouseId
4039
)
4140
{
42-
return CommonResponse.onSuccess(branchService.getCompleteBranchView(user, treehouseId));
41+
return CommonResponse.onSuccess(branchService.getCompleteBranchView(treehouseId));
4342
}
4443
}

src/main/java/treehouse/server/api/invitation/business/InvitationService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import lombok.extern.slf4j.Slf4j;
55
import org.springframework.stereotype.Service;
66
import org.springframework.transaction.annotation.Transactional;
7+
import treehouse.server.api.branch.business.BranchService;
78
import treehouse.server.api.invitation.implement.InvitationCommandAdapter;
89
import treehouse.server.api.invitation.implement.InvitationQueryAdapter;
910
import treehouse.server.api.invitation.presentation.dto.InvitationRequestDTO;
@@ -116,6 +117,8 @@ public InvitationResponseDTO.invitationAccept decisionInvitation(User user, Invi
116117

117118
if (request.isAcceptDecision()==true) {
118119
treehouseId = invitation.getTreeHouse().getId(); // treehouse 관련 로직 개발 후, invitation.getTreeHouse.getId() 등으로 바꾸기
120+
// 초대장 수락
121+
119122
}
120123
return InvitationMapper.toInvitationResult(treehouseId);
121124
}

src/main/java/treehouse/server/api/invitation/implement/InvitationQueryAdapter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package treehouse.server.api.invitation.implement;
22

3+
import io.swagger.models.auth.In;
34
import lombok.RequiredArgsConstructor;
45
import org.springframework.transaction.annotation.Transactional;
56
import treehouse.server.api.invitation.persistence.InvitationRepository;
@@ -37,4 +38,9 @@ public Invitation findById(Long invitationId) {
3738
public Boolean existByPhoneAndTreehouse(String phoneNumber, TreeHouse treehouse) {
3839
return invitationRepository.existsByPhoneAndTreeHouse(phoneNumber, treehouse);
3940
}
41+
42+
public Invitation findByReceiverAndTreeHouse(User user, TreeHouse treeHouse) {
43+
return invitationRepository.findByReceiverAndTreeHouse(user, treeHouse)
44+
.orElseThrow(() -> new InvitationException(GlobalErrorCode.INVITATION_NOT_FOUND));
45+
}
4046
}

src/main/java/treehouse/server/api/invitation/persistence/InvitationRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ public interface InvitationRepository extends JpaRepository<Invitation, Long> {
1717
Boolean existsByPhone(String phoneNumber);
1818

1919
Boolean existsByPhoneAndTreeHouse(String phoneNumber, TreeHouse treehouse);
20+
21+
Optional<Invitation> findByReceiverAndTreeHouse(User user, TreeHouse treeHouse);
2022
}

src/main/java/treehouse/server/api/member/business/MemberService.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
import lombok.extern.slf4j.Slf4j;
55
import org.springframework.stereotype.Service;
66
import org.springframework.transaction.annotation.Transactional;
7+
import treehouse.server.api.branch.business.BranchService;
78
import treehouse.server.api.branch.implementation.BranchQueryAdapter;
9+
import treehouse.server.api.invitation.implement.InvitationQueryAdapter;
810
import treehouse.server.api.member.implementation.MemberCommandAdapter;
911
import treehouse.server.api.member.implementation.MemberQueryAdapter;
1012
import treehouse.server.api.member.presentation.dto.MemberRequestDTO;
1113
import treehouse.server.api.member.presentation.dto.MemberResponseDTO;
1214
import treehouse.server.api.treehouse.implementation.TreehouseQueryAdapter;
15+
import treehouse.server.global.entity.Invitation.Invitation;
1316
import treehouse.server.global.entity.User.User;
1417
import treehouse.server.global.entity.branch.Branch;
1518
import treehouse.server.global.entity.member.Member;
@@ -27,6 +30,9 @@ public class MemberService {
2730
private final MemberCommandAdapter memberCommandAdapter;
2831
private final TreehouseQueryAdapter treehouseQueryAdapter;
2932
private final BranchQueryAdapter branchQueryAdapter;
33+
private final InvitationQueryAdapter invitationQueryAdapter;
34+
35+
private final BranchService branchService;
3036

3137
/**
3238
* 트리하우스에 가입
@@ -43,6 +49,10 @@ public MemberResponseDTO.registerMember register(User user, MemberRequestDTO.reg
4349
user.addMember(savedMember); // User에 Member 추가
4450
treeHouse.addMember(savedMember); // TreeHouse에 Member 추가
4551

52+
// 트리하우스에 초대한 멤버와의 브랜치 생성
53+
Invitation invitation = invitationQueryAdapter.findByReceiverAndTreeHouse(user, treeHouse);
54+
branchService.createBranch(treeHouse, invitation.getSender(), savedMember);
55+
4656
return MemberMapper.toRegister(savedMember);
4757
}
4858

src/main/java/treehouse/server/global/security/config/SecurityConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public SecurityFilterChain JwtFilterChain(HttpSecurity http) throws Exception {
7272
authorize -> {
7373
// authorize.requestMatchers("/swagger-ui/**").permitAll();
7474
authorize.requestMatchers("/users/**").permitAll();
75+
authorize.requestMatchers("/treehouses/{treehouseId}/branches/**").permitAll();
7576
authorize.anyRequest().authenticated();
7677
})
7778
.exceptionHandling(

0 commit comments

Comments
 (0)