본문 바로가기

프로젝트_ 커피주문 서비스

마이페이지

  • myPage.mustache
{{#userName}}
{{>layouts/header}}
{{/userName}}

{{#user}}

    이름: {{name}} <br>
    <input type="hidden" id="phoneNum" value="{{phoneNum}}">전화번호: {{phoneNum}}
{{/user}} <br><br>

주문 내역 ----- <br>
{{#order}}

        주문 번호: {{id}} <br>
        주문 일시: {{orderDate}} <br>
        {{#orderP}}
        주문 상품: {{product.name}} <br>
        가격: {{total}} <br>

        <button class="btn btn-outline-danger" id="order-cancel" orderProductId="{{id}}" orderId="{{order.id}}">주문 취소</button>
        {{/orderP}}
{{/order}}

{{^order}}
    주문한 내역이 없음.
{{/order}}

<script>
    const orderCancel = document.querySelector("#order-cancel");

    orderCancel.addEventListener("click", () => {
        const orderProductId = orderCancel.getAttribute("orderProductId");
        const orderId = orderCancel.getAttribute("orderId");
        console.log(`삭제 번허: ${orderProductId}`);
        console.log(`주문 번호: ${orderId}`);

        const url = `/api/orders/${orderId}`
        fetch(url, {
            method: "DELETE"
        }).then(response => {
            const msg = (response.ok) ? "주문 삭제 완료" : "주문 삭제 실패";
            alert(msg);

            window.location.reload();
        })
    })
</script>




<!-- JSON으로 받아온 데이터 화면에 출력하는 방법 -->
<!--<script>-->
<!--    const phoneNum = document.querySelector("#phoneNum").value;-->

<!--    console.log(phoneNum);-->

<!--    const url = `/api/orders/${phoneNum}`-->

<!--    fetch(url).then(res => res.json())-->
<!--                .then(res => {-->
<!--                    const id = document.createElement("div");-->
<!--                    const Date = document.createElement("div");-->
<!--                    id.textContent = res.map((order) => order.id);-->
<!--                    Date.textContent = res.map((order) => order.orderDate);-->
<!--                    const orderId = document.getElementById("orderId");-->
<!--                    const orderDate = document.getElementById("orderDate");-->
<!--                    orderId.appendChild(id);-->
<!--                    orderDate.appendChild(Date);-->
<!--                });-->
<!--</script>-->

 

  • MainController
    //마이 페이지
    @GetMapping("/myPage")
    public String myPage(@LoginUser SessionUser user, Model model) throws Exception{
        if (user != null) {
            model.addAttribute("user", user);
            model.addAttribute("userName", user.getName());
        }

        List<Order> orderProducts = orderService.findByPhoneNum(user.getPhoneNum());
        model.addAttribute("order", orderProducts);

        List<OrderProduct> orderProducts2 = orderProductService.listByOrderId(user.getId());
        model.addAttribute("orderP", orderProducts2);


        return "coffeeShop/myPage";
    }

 

  • OrderProduct에 주문 번호로 조회 추가
  • OrderProductRepository
public interface OrderProductRepository extends JpaRepository<OrderProduct, Long> {

    @Query(value = "SELECT * FROM Order_Product WHERE Order_Id = " +
            "(SELECT id FROM orders WHERE user_id = :userId)", nativeQuery = true)

    List<OrderProduct> listByOrderId(@Param("userId")Long userId);

}

 

  • OrderProduct
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Getter
@Entity
@Table (name = "OrderProduct")
public class OrderProduct {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    @OnDelete(action = OnDeleteAction.CASCADE) //cascade 옵션 -> OnDelete 옵션은 cascade = CascadeTYPE의 모든 조건을 충족!
    @JoinColumn(name = "order_id")
    @JsonIgnore //양방향 매핑이라 조회 떄 문제생김 -> 임시방편
    private Order order;

    @ManyToOne
    @JoinColumn(name = "product_id")
    private Product product;

    @Column
    private int Total;

    public static OrderProduct createOrderProduct(OrderProductDto dto, Order order, Product product) {
        return new OrderProduct(
                dto.getId(),
                order,
                product,
                product.getPrice()
        );
    }
}

 

  • OrderProductService
		
        .
        .
        
  	public List<OrderProduct> listByOrderId(Long userId) {
        return orderProductRepository.listByOrderId(userId);
    }
    
    	.
        .
        .

 

  • OrderProductAPIController
		
        .
        .
        
    @GetMapping("/api/orderproducts/{userId}")
    public List<OrderProduct> listByOrderId(@PathVariable Long userId){
        return orderProductService.listByOrderId(userId);
    }
    
    
    	.
        .
        .

 

 

 

 

GitHub - Pearlmoon997/CoffeeShop: CoffeeShop

CoffeeShop. Contribute to Pearlmoon997/CoffeeShop development by creating an account on GitHub.

github.com

 

'프로젝트_ 커피주문 서비스' 카테고리의 다른 글

결제 버튼 API 호출  (0) 2022.09.17
결제 모달 띄우기  (0) 2022.09.09
주문하기 구현  (0) 2022.08.28
네이버 로그인 API (+구글 로그인 API)  (0) 2022.08.11
레이아웃, Member 변경  (0) 2022.08.11