- product.mustache + Java Script
- 이미지 적용 아직 안함!
<!-- 로그인 여부 상관없이 header 출력 -->
{{#userName}}
{{>layouts/header}}
{{/userName}}
{{^userName}}
{{>layouts/header}}
{{/userName}}
<!-- 로그인 안했으면 로그인하라는 버튼 -->
{{^userId}}
<button class="btn btn-outline-danger btn-lg m-5"><a href="signIn" style="color: black; text-decoration-line: none">로그인 후 이용해주세요</a></button>
{{/userId}}
<!-- 로그인 확인 후 출력 부분 -->
{{#userId}}
{{#products}}
<div class="row row-cols-1 row-cols-md-3 g-4" style="margin: 0 auto">
<div class="col">
<div class="card">
<img src="images/coffee.png" class="card-img-top">
<div class="card-body">
<input type="hidden" id="id" value="{{id}}">
<h5 class="card-title" id="name">{{name}}</h5>
<p class="card-text">{{price}} 원</p>
<button class="btn btn-outline-secondary" id="order-btn" productId="{{id}}"
userId="{{userId}}" total="{{price}}">주문하기</button>
</div>
</div>
</div>
</div>
{{/products}}
{{/userId}}
<script>
const orderBtns = document.querySelectorAll("#order-btn");
orderBtns.forEach(btn => {
btn.addEventListener("click", (event) => {
const orderBtn = event.srcElement;
const order = {
userId: orderBtn.getAttribute("userId"),
productId: orderBtn.getAttribute("productId"),
total: orderBtn.getAttribute("total")
}
console.log(order);
const url = `/order/product`
fetch(url, {
method: "POST",
body: JSON.stringify(order),
headers: {
"Content-Type": "application/json"
}
}).then(response => {
const msg = (response.ok) ? "주문 완료" : "주문 실패";
alert(msg);
});
});
});
</script>
- MainController
@Controller
@RequiredArgsConstructor
@Slf4j
public class MainController {
@Autowired
private ProductService productService;
@Autowired
private OrderService orderService;
@Autowired
private OrderProductService orderProductService;
.
.
.
.
//모든 상품 페이지
@GetMapping("/product")
public String product(Model model, @LoginUser SessionUser user) { //모델 등록
List<Product> products = productService.list();
model.addAttribute("products", products);
//올바른 User ID 인지 확인
if (user != null) {
model.addAttribute("userId", user.getId());
model.addAttribute("userName", user.getName());
}
return "coffeeShop/product";
}
@PostMapping("/order/product")
public ResponseEntity<OrderDto> create(@LoginUser SessionUser user, @RequestBody Map<String, Long> map, OrderDto dto,
OrderProductDto orderDto) {
// JSON 데이터 잘 매핑됐는지 확인
log.info("map ->" + map);
//Order 테이블 Insert
OrderDto createdDto = orderService.create(user.getId(), dto);
//Order_product 테이블 Insert
OrderProductDto createdDto2 = orderProductService.create(createdDto.getId(), map.get("productId"), orderDto);
log.info("orderProduct -> " + createdDto2);
return ResponseEntity.status(HttpStatus.OK).body(createdDto);
}
}
- 로그인 전 상품 페이지
- 로그인 후 상품 페이지
- 주문하기 버튼 클릭
- h2 console 로 데이터 Insert 확인
GitHub - Pearlmoon997/CoffeeShop: CoffeeShop
CoffeeShop. Contribute to Pearlmoon997/CoffeeShop development by creating an account on GitHub.
github.com
'프로젝트_ 커피주문 서비스' 카테고리의 다른 글
결제 모달 띄우기 (0) | 2022.09.09 |
---|---|
마이페이지 (0) | 2022.08.31 |
네이버 로그인 API (+구글 로그인 API) (0) | 2022.08.11 |
레이아웃, Member 변경 (0) | 2022.08.11 |
Store - Order 연결 (0) | 2022.08.09 |