Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MyPage 기능 관련 api 구현 #165

Merged
merged 9 commits into from
Mar 21, 2024
Prev Previous commit
Next Next commit
✨ Feat: MyPage 계좌 조회, 삭제 api 구현(#158)
hyoungj00n committed Mar 18, 2024
commit 5098a8b3c853514d71082a7413b5df69e0987f07
Original file line number Diff line number Diff line change
@@ -57,6 +57,7 @@ public enum ErrorStatus implements BaseErrorCode {
MEMBER_ACCOUNT_NOT_FOUND(HttpStatus.BAD_REQUEST, "MEMBER4008", "계좌가 존재하지 않습니다"),
MEMBER_ADDRESS_NOT_FOUND(HttpStatus.BAD_REQUEST, "MEMBER4009", "주소가 존재하지 않습니다"),
MEMBER_INACTIVATE(HttpStatus.NOT_ACCEPTABLE, "MEMBER40010", "탈퇴한 회원입니다."),
MEMBER_NOT_OWNER(HttpStatus.NOT_ACCEPTABLE, "MEMBER40010", "해당 회원이 아닙니다."),

//JWT

Original file line number Diff line number Diff line change
@@ -14,7 +14,8 @@ public enum SuccessStatus implements BaseCode {
//Member
MEMBER_DELETE_SUCCESS(HttpStatus.OK, "MEMBER2001", "회원 탈퇴 성공입니다."),
MEMBER_NOTIFICATION_UPDATE(HttpStatus.OK, "MEMBER2002", "회원 알림 변경 성공입니다."),
MEMBER_ACCOUNT_UPDATE(HttpStatus.OK,"MEMBER2003", "회원 계좌 변경 성공입니다.")
MEMBER_ACCOUNT_UPDATE(HttpStatus.OK,"MEMBER2003", "회원 계좌 변경 성공입니다."),
MEMBER_ACCOUNT_DELETE(HttpStatus.OK, "MEMBER2004", "회원 계좌 삭제 성공입니다.")
;

private final HttpStatus httpStatus;
Original file line number Diff line number Diff line change
@@ -389,13 +389,17 @@ public static MemberResponseDTO.MyPageOrderItemDTO toMyPageOrderItemDTO(OrderIte
.build();
}

public static MemberResponseDTO.AccountDTO toGetAccountDTO(Account account){
return MemberResponseDTO.AccountDTO.builder()
.accountNum(account.getAccountNum())
.bankName(account.getBankName())
.owner(account.getOwner())
.defaultCheck(account.getDefaultCheck())
.build();
public static List<MemberResponseDTO.AccountDTO> toGetAccountDTO(List<Account> account){

List<MemberResponseDTO.AccountDTO> accountList = account.stream().map(a -> MemberResponseDTO.AccountDTO.builder()
.id(a.getId())
.accountNum(a.getAccountNum())
.bankName(a.getBankName())
.owner(a.getOwner())
.defaultCheck(a.getDefaultCheck())
.build()).collect(Collectors.toList());

return accountList;
}


Original file line number Diff line number Diff line change
@@ -56,9 +56,11 @@ public interface MemberCommandService {

Account postAccount(MemberRequestDTO.AccountDTO request, Member member);

void updateAddress(MemberRequestDTO.AddressDTO request,Long addressId);
void updateAddress(MemberRequestDTO.AddressDTO request,Member member, Long addressId);

void updateAccount(MemberRequestDTO.AccountDTO request, Long accountId);
void updateAccount(MemberRequestDTO.AccountDTO request, Member member,Long accountId);

void deleteAccount(Member member, Long accountId);

void deleteMember(MemberRequestDTO.WithdrawReasonDTO request, Member member);

Original file line number Diff line number Diff line change
@@ -618,22 +618,40 @@ public Account postAccount(MemberRequestDTO.AccountDTO request, Member member) {
}

@Override
public void updateAddress(MemberRequestDTO.AddressDTO request, Long addressId) {
public void updateAddress(MemberRequestDTO.AddressDTO request, Member member,Long addressId) {

Address address = addressRepository.findById(addressId).orElseThrow(()-> new MemberHandler(ErrorStatus.MEMBER_ADDRESS_NOT_FOUND));
if(!address.getMember().equals(member)){
throw new MemberHandler(ErrorStatus.MEMBER_NOT_OWNER);
}
addressRepository.changeAddress(addressId, request.getAddressName(),request.getAddressSpec(), request.getDeliveryMemo(), request.getZipcode(), request.getDefaultCheck(),request.getRecipientName(),request.getRecipientPhone());


}

@Override
public void updateAccount(MemberRequestDTO.AccountDTO request, Long accountId) {
public void updateAccount(MemberRequestDTO.AccountDTO request, Member member, Long accountId) {

Account account = accountRepository.findById(accountId).orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_ACCOUNT_NOT_FOUND));

if(!account.getMember().equals(member)){
throw new MemberHandler(ErrorStatus.MEMBER_NOT_OWNER);
}
accountRepository.changeAccount(accountId, request.getAccountNum(),request.getBankName(),request.getOwner(),request.getDefaultCheck());

}

@Override
public void deleteAccount(Member member, Long accountId) {
Account account = accountRepository.findById(accountId).orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_ACCOUNT_NOT_FOUND));

if(!account.getMember().equals(member)){
throw new MemberHandler(ErrorStatus.MEMBER_NOT_OWNER);
}

accountRepository.delete(account);
}

/**
* 카테고리 validator
*/
Original file line number Diff line number Diff line change
@@ -21,5 +21,5 @@ public interface MemberQueryService {

List<Account> findAllAccountById(Long id);

Optional<Account> findAccountById(Long id);
List<Account> findAccountById(Long id);
}
Original file line number Diff line number Diff line change
@@ -62,7 +62,7 @@ public List<Account> findAllAccountById(Long id) {
return account;
}

public Optional<Account> findAccountById(Long id){
return accountRepository.findByMember_Id(id);
public List<Account> findAccountById(Long id){
return accountRepository.findAllByMember_Id(id);
}
}
Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Optional;

@RestController
@@ -92,37 +93,53 @@ public ApiResponse<MemberResponseDTO.AccountResultDTO> postAccount(@RequestBody

@PutMapping(value = "/address/update/{addressId}")
@Operation(summary = "회원 주소 수정 api", description = "request: 우편번호, 배송지명, 배송지, 배송메모")
@Parameters(value = {
@Parameter(name = "addressId", description = "주소 id 입니다.")
})
public ApiResponse<MemberResponseDTO.AddressResultDTO> updateAddress(@RequestBody MemberRequestDTO.AddressDTO request,
@PathVariable (name = "addressId") Long addressId,
Authentication authentication) {

Member member = memberQueryService.findMemberById(Long.valueOf(authentication.getName().toString())).orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND));
memberCommandService.updateAddress(request, addressId);
memberCommandService.updateAddress(request, member, addressId);

return ApiResponse.onSuccess(null);
}

@PutMapping(value = "/account/update/{accountId}")
@Operation(summary = "회원 계좌 수정 api", description = "request: 소유주 이름, 은행 이름, 계좌번호")
@Parameters(value = {
@Parameter(name = "accountId", description = "계좌 id 입니다.")
})
public ApiResponse<?> updateAccount(@RequestBody MemberRequestDTO.AccountDTO request,
@PathVariable (name = "accountId") Long accountId,
Authentication authentication) {

Member member = memberQueryService.findMemberById(Long.valueOf(authentication.getName().toString())).orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND));

memberCommandService.updateAccount(request,accountId);
memberCommandService.updateAccount(request,member, accountId);

return ApiResponse.of(SuccessStatus.MEMBER_ACCOUNT_UPDATE,null);
}

@DeleteMapping(value = "account/delete/{accountId}")
@Operation(summary = "회원 계좌 삭제 api", description = "계좌를 삭제하는 api입니다. ")
@Parameters(value = {
@Parameter(name = "accountId", description = "계좌 id 입니다.")
})
public ApiResponse<?> deleteAccount(Authentication authentication,@PathVariable(name = "accountId") Long accountId){
Member member = memberQueryService.findMemberById(Long.valueOf(authentication.getName().toString())).orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND));
memberCommandService.deleteAccount(member, accountId);
return ApiResponse.of(SuccessStatus.MEMBER_ACCOUNT_DELETE,null);
}


@GetMapping(value = "/account")
@Operation(summary = "mypage 계좌 조회 api")
public ApiResponse<MemberResponseDTO.AccountDTO> getAccount(Authentication authentication){
public ApiResponse<List<MemberResponseDTO.AccountDTO>> getAccount(Authentication authentication){

Member member = memberQueryService.findMemberById(Long.valueOf(authentication.getName().toString())).orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND));
Account account = memberQueryService.findAccountById(member.getId()).orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_ACCOUNT_NOT_FOUND));
List<Account> account = memberQueryService.findAccountById(member.getId());

return ApiResponse.onSuccess(MemberConverter.toGetAccountDTO(account));
}