New World
[해외공구관리사이트] 주문 - 수정 본문
728x90
반응형
주문서를 수정하는 페이지 기능
1. 프로젝트의 주문 정보에 따라 수정 페이지가 노출되는지 확인
2. 빈칸이 있으면 기존 값으로 저장되는지 확인
controller
ㄴ OrderController
회원 정보를 보내며 주문서 페이지를 호출한다.
// 주문서 수정
@RequestMapping("/orderUpdate{orderNo}")
public String orderUpdateAccount(@PathVariable("orderNo") Long orderNo, HttpSession httpSession, Model model) {
Order order = orderService.findOne(orderNo);
model.addAttribute("order", order);
model.addAttribute("nowLoginMember", memberController.modelMember(httpSession));
if (order.getProject().getOrderStatus().equals(ProjectOrderStatus.ACCOUNT)) {
return "sample/order/checkout-update-account";
} else if (order.getProject().getOrderStatus().equals(ProjectOrderStatus.CASH)) {
return "sample/order/checkout-update-cash";
} else {
return "찾는 페이지가 없습니다";
}
}
API
ㄴ OrderApiController
내 주문서가 제대로 노출되는지 확인한다.
// 수정
@PutMapping("/api/order/update/{no}")
public UpdateOrderResponse updateOrderAccount(@PathVariable("no") Long orderNo,
@RequestBody @Valid UpdateOrderAccountRequest request) {
orderService.update(orderNo, request);
return new UpdateOrderResponse(orderNo);
}
@Data
@AllArgsConstructor
static class UpdateOrderResponse {
private Long no;
}
Service
ㄴ OrderService
ㄴ OrderServiceImpl
기본적으로 업데이트할 것과 프로젝트 구매 방식에 따라 따로 업데이트 해야하는 것을 나눠 정보를 서버로 업데이트 시킨다.
@Override
@Transactional
public void update(Long no, UpdateOrderAccountRequest request) {
Order order = findOne(no);
Address address = new Address(request.getCity(), request.getStreet(), request.getZipcode());
order.setDate(request.getDate());
order.setPhone(request.getPhone());
order.setMemo(request.getMemo());
order.setAddress(address);
if (order.getProject().getOrderStatus().equals(ProjectOrderStatus.ACCOUNT)) {
updateByAccount(order, request);
}
}
public void updateByAccount(Order order, UpdateOrderAccountRequest request) {
Account account = order.getAccount();
Refund refund = new Refund(request.getRefundName(), request.getRefundBankName(),
request.getRefundAccount());
Purchase purchase = new Purchase(request.getPurchaseBankName(), request.getPurchaseAccount(),
request.getPurchaseDate());
account.setRefund(refund);
account.setPurchase(purchase);
order.setAccount(account);
}
@Override
@Transactional
public List<Order> updateByProject(Project project) {
List<Order> orders = project.getOrders();
for (int order = 0; order >= orders.size(); order++) {
orders.get(order).setOrderStatus(OrderStatus.Tracking);
}
return orders;
}
반응형
'Project > old' 카테고리의 다른 글
[해외공구관리사이트] 배송 - 조회 & 등록 & 수정 (0) | 2022.09.06 |
---|---|
[해외공구관리사이트] 캐쉬 - 적립 & 내역 조회 (0) | 2022.09.06 |
[해외공구관리사이트] 주문 - 조회(내 주문서와 내 프로젝트의 주문서) & 삭제 (0) | 2022.09.06 |
[해외공구관리사이트] 주문 - 저장 (0) | 2022.09.06 |
[해외공구관리사이트] 프로젝트 - 조회 (일반 & 상세 & 회원) (0) | 2022.09.06 |
Comments