-
Notifications
You must be signed in to change notification settings - Fork 0
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
Feat/#52/요청받은 정산 관련 api 개발 #61
The head ref may contain hidden characters: "feat/#52/\uC694\uCCAD\uBC1B\uC740-\uC815\uC0B0-\uAD00\uB828-api-\uAC1C\uBC1C"
Changes from all commits
1e0167d
634c226
ab73f6c
fe40baa
e7fba83
8de2715
1a394b0
3edbd31
e7b1054
658e4dd
ded8b2b
93adc8a
089b25d
188e30e
6d1b79b
57d088f
dbb69d5
70422d8
171367f
613d314
5047201
199568b
d197777
4d38ea1
509127b
1661a2e
7c41a47
19ac0ea
14ddf6b
677b91b
f96ba01
b4e1f9b
373c8fc
ab80292
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,14 +4,18 @@ | |
import lombok.extern.slf4j.Slf4j; | ||
import org.springframework.web.bind.annotation.*; | ||
import space.space_spring.argument_resolver.jwtLogin.JwtLoginAuth; | ||
import space.space_spring.dto.pay.*; | ||
import space.space_spring.entity.UserSpace; | ||
import space.space_spring.dto.pay.dto.PayReceiveInfoDto; | ||
import space.space_spring.dto.pay.dto.PayRequestInfoDto; | ||
import space.space_spring.dto.pay.dto.PayTargetInfoDto; | ||
import space.space_spring.dto.pay.dto.TotalPayInfoDto; | ||
import space.space_spring.dto.pay.request.PostPayCompleteRequest; | ||
import space.space_spring.dto.pay.request.PostPayCreateRequest; | ||
import space.space_spring.dto.pay.response.*; | ||
import space.space_spring.response.BaseResponse; | ||
import space.space_spring.service.PayService; | ||
import space.space_spring.util.userSpace.UserSpaceUtils; | ||
|
||
import java.util.List; | ||
import java.util.Optional; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
|
@@ -47,7 +51,7 @@ private void validateIsUserInSpace(Long userId, Long spaceId) { | |
} | ||
|
||
/** | ||
* 내가 요청한 정산 view | ||
* 내가 요청한 정산 조회 | ||
*/ | ||
@GetMapping("/space/{spaceId}/pay/request") | ||
public BaseResponse<GetRequestPayViewResponse> showRequestPayListForUser(@JwtLoginAuth Long userId, @PathVariable Long spaceId) { | ||
|
@@ -63,6 +67,24 @@ public BaseResponse<GetRequestPayViewResponse> showRequestPayListForUser(@JwtLog | |
return new BaseResponse<>(new GetRequestPayViewResponse(payRequestInfoDtoListInComplete, payRequestInfoDtoListComplete)); | ||
} | ||
|
||
/** | ||
* 내가 요청받은 정산 조회 | ||
*/ | ||
@GetMapping("/space/{spaceId}/pay/receive") | ||
public BaseResponse<GetReceivePayViewResponse> showReceivePayListForUser(@JwtLoginAuth Long userId, @PathVariable Long spaceId) { | ||
// TODO 1. 유저가 스페이스에 속하는 지 검증 -> 추후에 인터셉터에서 처리하게끔 리펙토링 필요 | ||
validateIsUserInSpace(userId, spaceId); | ||
|
||
// TODO 2. 유저가 요청받은 정산 중 현재 진행중인 정산 리스트 get -> 정산 타겟 유저가 정산 안했을 경우 : isComplete = false | ||
List<PayReceiveInfoDto> payReceiveInfoDtoListInComplete = payService.getPayReceiveInfoForUser(userId, spaceId, false); | ||
|
||
// TODO 3. 유저가 요청받은 정산 중 완료한 정산 리스트 get -> 정산 타겟 유저가 정산 했을 경우 : isComplete = true | ||
List<PayReceiveInfoDto> payReceiveInfoDtoListComplete = payService.getPayReceiveInfoForUser(userId, spaceId, true); | ||
|
||
return new BaseResponse<>(new GetReceivePayViewResponse(payReceiveInfoDtoListInComplete, payReceiveInfoDtoListComplete)); | ||
} | ||
|
||
|
||
/** | ||
* 유저가 최근 정산받은 은행 계좌 정보 조회 | ||
* 해당 api는 유저가 속한 스페이스의 정보가 필요없다고 판단해서 spaceId 를 request로 받지 않음 | ||
|
@@ -92,11 +114,38 @@ public BaseResponse<String> createPay(@JwtLoginAuth Long userId, @PathVariable L | |
} | ||
|
||
// TODO 3. PostPayCreateRequest의 bankName, bankAccountNum 검증 | ||
// 이거 해야할까?? 프론트단 분들과 논의 필요 | ||
// 만약 이걸 해야할 경우, @RequestBody 를 validate 하는 방식으로 검증 수행해야 할 듯 | ||
|
||
// TODO 4. 정산 생성 | ||
payService.createPay(userId, spaceId, postPayCreateRequest); | ||
|
||
return new BaseResponse<>("정산 생성 성공"); | ||
} | ||
|
||
/** | ||
* 하나의 정산에 대한 상세정보 조회 | ||
*/ | ||
@GetMapping("/space/{spaceId}/pay/{payRequestId}") | ||
public BaseResponse<TotalPayInfoDto> showTotalPayInfo(@JwtLoginAuth Long userId, @PathVariable Long spaceId, @PathVariable Long payRequestId) { | ||
|
||
// TODO 1. 유저가 스페이스에 속하는 지 검증 | ||
validateIsUserInSpace(userId, spaceId); | ||
|
||
// TODO 2. 정산 상세 정보 조회 | ||
return new BaseResponse<>(payService.getTotalPayInfo(spaceId, payRequestId)); | ||
} | ||
|
||
/** | ||
* 정산 타겟 유저의 정산 완료 처리 | ||
*/ | ||
@PostMapping("/space/{spaceId}/pay/complete") | ||
public BaseResponse<PostPayCompleteResponse> setPayComplete(@JwtLoginAuth Long userId, @PathVariable Long spaceId, @RequestBody PostPayCompleteRequest postPayCompleteRequest) { | ||
|
||
// TODO 1. 유저가 스페이스에 속하는 지 검증 | ||
validateIsUserInSpace(userId, spaceId); | ||
|
||
Comment on lines
+144
to
+146
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. p1: 해당PayRequestTargetId가 user꺼가 맞는지 확인하는 과정이 있으면 좋을 것 같습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아하 이런 검증 로직이 있어도 좋을거같네요!! 코드 리펙토링 시에 추가해보겠습니다!! |
||
// TODO 2. 정산 타겟 유저의 정산 완료 처리 | ||
return new BaseResponse<>(payService.setPayRequestTargetToComplete(postPayCompleteRequest.getPayRequestTargetId())); | ||
} | ||
|
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p2: response에 payRequestId를 넣어 주는 건 어떻게 생각하시나요
프론트 측에서 정산 생성 후 바로 정산 상세보기 화면으로 넘어가는 요구사항이 생기면 필요하다고 생각합니다.
다른 기능들에서도 "생성" API에 response로 성공 여부 뿐만 아니라 생성한 자원의 Id를 넘겨주는 걸 고려하면 좋을 것 같아요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
앗 post and get 구조를 위해서 id를 넘겨주는거도 좋다고 생각했지만, 프론트 측에서 정산 생성 후 바로 정산 상세보기 화면으로 넘어가는 플로우가 아니라 자신이 생성한 정산목록으로부터 해당 정산 id를 다시 알기 때문에 굳이 response로 넘겨줄필요가 있을까 싶어서 일단 빼봤습니다!
프론트단과 api 연동과정에서 서로 소통후에 생성 관련 api들의 response로 생성된 리소스의 id를 넘겨주는 방식을 고려해보겠습니다!!