본문 바로가기

Spring

orderInfo 구현

반응형

원하는 user의 주문 정보를 받아오는 함수 구현!

 

<UserOrderInfoApiResponse>

 


@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserOrderInfoApiResponse {


private UserApiResponse userApiResponser;

//userApiResponser 에는 private List<OrderGroupApiResponse> orderGroupApiResponseList; 존재

OrderGroupApiResponse에는 private List<ItemApiResponse> itemApiResponseList; 존재

}

 

 

 

<UserApiController>

 

@RequestMapping("/api/user")
public class UserApiController implements CrudInterface<UserApiRequest,UserApiResponse> {

@Autowired
private UserApiLogicService userApiLogicService;


@GetMapping("{id}/orderInfo")
public Header<UserOrderInfoApiResponse> orderInfo(@PathVariable Long id){


return userApiLogicService.orderInfo(id);

// id를 통해 userApiService의 orderInfo에 접근.

}

 

}

 

 

<UserApiLogicService>

 

 

public Header<UserOrderInfoApiResponse> orderInfo(Long id) {


//user

User user = userRepository.getOne(id);

 

// id로 User 객체를 찾아냄.

UserApiResponse userApiResponse = response2(user);

// 해당 유저 객체를 UserApiResponse로 바꿔줌.

//orderGroup

List<OrderGroup> orderGroupList = user.getOrderGroupList();

//현재 유저가 가지고 있는 orderGroup의 list를 빼옴.
List<OrderGroupApiResponse> orderGroupApiResponseList = orderGroupList.stream()
.map(orderGroup -> {
OrderGroupApiResponse orderGroupApiResponse = orderGroupLogicService.response(orderGroup).getData();

//orderGroupList에 있는 orderGroup하나 하나를 orderGroupApiResponse로 바꿔주고

해당 orderGroup의 itemList를 뽑아 내는데 item또한 ItemApiResponse로 뽑아야 함.

따라서 orderGroup의 Detail에서 item을 뽑아서 그 item을 itemApiResponse로 바꾼 List를 뽑아냄.

현재 하나의 orderGroupApiResponse에 itemApiResponse의 List를 저장시키고 이 orderGroupApiResponse를 return시킴

그리고 이것들을 collect해서 List로 변환 한것이 결국 List<OrderGroupApiResponse> orderGroupApiResponseList에 들어감.


//item
List<ItemApiResponse> itemApiResponseList = orderGroup.getOrderDetailList().stream()
.map(detail -> detail.getItem())
.map(item -> itemApiLogicService.response(item).getData() )
.collect(Collectors.toList());

orderGroupApiResponse.setItemApiResponseList(itemApiResponseList);
return orderGroupApiResponse;

})
.collect(Collectors.toList());

 

//itemApiResponseList가 채워진 orderGroupApiResponseList가 userApiResponse에 세팅됨.


//user group명 지정
userApiResponse.setOrderGroupApiResponseList(orderGroupApiResponseList);

UserOrderInfoApiResponse userOrderInfoApiResponse = UserOrderInfoApiResponse.builder()
.userApiResponser(userApiResponse)
.build();

 

//userOrderInfoApiResponse에 해당 userApiResponse에 세팅시킴.

그리고 이것을 Header형태로 반환시킴.

return Header.OK(userOrderInfoApiResponse);



}

반응형

'Spring' 카테고리의 다른 글

프레임 워크 개념  (0) 2019.12.17
스프링 부트 프로젝트 (Architecture & TDD & REST API)  (0) 2019.11.24
페이징 처리  (0) 2019.11.18
Controller 추상화  (0) 2019.11.17
Code Refactoring : JPA Enum 형태 관리  (0) 2019.11.17