New World

[해외공구관리사이트] 주문 - 수정 본문

Project/old

[해외공구관리사이트] 주문 - 수정

hyeovi 2022. 9. 6. 21:15
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;
    }
반응형
Comments