Skip to content

Commit 7c3a5a6

Browse files
committed
Merge branch 'develop'
2 parents fcec009 + 757a9d0 commit 7c3a5a6

5 files changed

Lines changed: 111 additions & 2 deletions

File tree

src/main/java/fitfit/domain/account/controller/AccountRestController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import fitfit.domain.account.dto.AccountRequestDTO.RegisterOrUpdateRequest;
44
import fitfit.domain.account.dto.AccountResponseDTO.AccountInfoResponse;
5-
import fitfit.domain.account.service.command.AccountCommandService;
6-
import fitfit.domain.account.service.query.AccountQueryService;
5+
import fitfit.domain.account.service.AccountCommandService;
6+
import fitfit.domain.account.service.AccountQueryService;
77
import fitfit.global.apiPayload.ApiResponse;
88
import io.swagger.v3.oas.annotations.Operation;
99
import io.swagger.v3.oas.annotations.media.Content;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package fitfit.domain.account.service;
2+
3+
import fitfit.domain.account.dto.AccountRequestDTO;
4+
import fitfit.domain.account.dto.AccountResponseDTO;
5+
6+
public interface AccountCommandService {
7+
AccountResponseDTO.AccountInfoResponse registerOrUpdateAccount(String authorization, AccountRequestDTO.RegisterOrUpdateRequest request);
8+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package fitfit.domain.account.service;
2+
3+
import fitfit.domain.account.converter.AccountConverter;
4+
import fitfit.domain.account.dto.AccountRequestDTO.RegisterOrUpdateRequest;
5+
import fitfit.domain.account.dto.AccountResponseDTO.AccountInfoResponse;
6+
import fitfit.domain.account.entity.Account;
7+
import fitfit.domain.account.repository.AccountRepository;
8+
import fitfit.domain.member.entity.Member;
9+
import fitfit.domain.member.repository.MemberRepository;
10+
import fitfit.domain.token.provider.JwtProvider;
11+
import fitfit.global.apiPayload.code.status.ErrorStatus;
12+
import fitfit.global.apiPayload.exception.handler.MemberHandler;
13+
import lombok.RequiredArgsConstructor;
14+
import lombok.extern.slf4j.Slf4j;
15+
import org.springframework.stereotype.Service;
16+
import org.springframework.transaction.annotation.Transactional;
17+
18+
@Slf4j
19+
@Service
20+
@RequiredArgsConstructor
21+
@Transactional
22+
public class AccountCommandServiceImpl implements AccountCommandService {
23+
private final AccountRepository accountRepository;
24+
private final MemberRepository memberRepository;
25+
private final JwtProvider jwtProvider;
26+
27+
private Member getMemberById(Long memberId) {
28+
return memberRepository.findById(memberId)
29+
.orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND));
30+
}
31+
32+
@Override
33+
public AccountInfoResponse registerOrUpdateAccount(String authorization, RegisterOrUpdateRequest request) {
34+
Long memberId = jwtProvider.getMemberIdAndValidateToken(authorization);
35+
36+
//회원 엔티티 조회
37+
Member member = getMemberById(memberId);
38+
39+
//기존 계좌 정보 확인
40+
Account account = accountRepository.findByMemberId(memberId).orElse(null);
41+
42+
if (account == null) {
43+
//계좌가 없는 경우
44+
account = AccountConverter.toAccount(member, request);
45+
accountRepository.save(account);
46+
47+
log.info("새 계좌 등록 완료: memberId={}, accountId={}", memberId, account.getId());
48+
} else {
49+
//계좌 있는 경우
50+
account.update(request.getBank(), request.getAccount(), request.getField());
51+
52+
log.info("기존 계좌 수정 완료: memberId={}, accountId={}", memberId, account.getId());
53+
}
54+
55+
return AccountConverter.toAccountInfoResponse(account);
56+
}
57+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package fitfit.domain.account.service;
2+
3+
import fitfit.domain.account.dto.AccountResponseDTO;
4+
5+
public interface AccountQueryService {
6+
AccountResponseDTO.AccountInfoResponse getAccountInfo(String authorization);
7+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package fitfit.domain.account.service;
2+
3+
import fitfit.domain.account.converter.AccountConverter;
4+
import fitfit.domain.account.dto.AccountResponseDTO.AccountInfoResponse;
5+
import fitfit.domain.account.entity.Account;
6+
import fitfit.domain.account.repository.AccountRepository;
7+
import fitfit.domain.member.repository.MemberRepository;
8+
import fitfit.domain.token.provider.JwtProvider;
9+
import fitfit.global.apiPayload.code.status.ErrorStatus;
10+
import fitfit.global.apiPayload.exception.handler.AccountHandler;
11+
import lombok.RequiredArgsConstructor;
12+
import lombok.extern.slf4j.Slf4j;
13+
import org.springframework.stereotype.Service;
14+
import org.springframework.transaction.annotation.Transactional;
15+
16+
@Slf4j
17+
@Service
18+
@RequiredArgsConstructor
19+
@Transactional(readOnly = true)
20+
public class AccountQueryServiceImpl implements AccountQueryService {
21+
private final AccountRepository accountRepository;
22+
private final MemberRepository memberRepository;
23+
private final JwtProvider jwtProvider;
24+
25+
@Override
26+
public AccountInfoResponse getAccountInfo(String authorization) {
27+
Long memberId = jwtProvider.getMemberIdAndValidateToken(authorization);
28+
29+
//계좌 정보 조회
30+
Account account = accountRepository.findByMemberId(memberId)
31+
.orElseThrow(()-> new AccountHandler(ErrorStatus.ACCOUNT_NOT_FOUND));
32+
33+
log.info("계좌 조회 완료: memberId={}, accountId={}", memberId, account.getId());
34+
35+
return AccountConverter.toAccountInfoResponse(account);
36+
}
37+
}

0 commit comments

Comments
 (0)