Spring

์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ(12) ํšŒ์› MY PAGE - ๊ตฌ๋งค ๋‚ด์—ญ (2) ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ (๋ณด์ˆ˜)

byeol_dev 2023. 4. 13. 11:22

---ํ˜„์žฌ๊นŒ์ง€ ๋ถ€์กฑํ•œ ๊ธฐ๋Šฅ

๊ตฌ๋งค ๋ชฉ๋ก ํŽ˜์ด์ง€์˜ ๋ฉ”๋‰ด ๋„์šฐ๊ธฐ

> interceptorConfig์— ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒํ•  ๋•Œ ๊ตฌ๋งค ๊ด€๋ จ ํŽ˜์ด์ง€ ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ๋„ ์ถ”๊ฐ€

ํšŒ์›์ด ๋ณด๋Š” ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด ํด๋ฆญ ์‹œ ํ•ด๋‹น ๋ฉ”๋‰ด ํŒŒ๋ž€์ƒ‰ ๋ณ€๊ฒฝ

personal_side.html์—์„œ ๋ฉ”๋‰ด์— active ์†์„ฑ์„ ๋„ฃ์œผ๋ฉด ํด๋ฆญ ์‹œ ์ƒ‰ ๋ฐ”๋€œ.

์–ด๋–ค ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•ด์„œ ํ•ด๋‹น ํŽ˜์ด์ง€์— ์™”๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ๋ฐ์ดํ„ฐ ๋„˜๊ธฐ๋Š” ์ž‘์—… ํ•„์š”.

db ์ž‘์—…ํ•ด์„œ ๋ฉ”๋‰ด ๋ถˆ๋Ÿฌ์˜จ ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž„์˜์˜ ๊ฐ’ ์ง€์ •.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">


<th:block th:fragment="personalSideFragment">
	<div class="row">
		<div class="col">    <!-- active -->
			<div class="list-group">
                <!-- ํšŒ์› ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด --> 
                <a href="/cart/cartList?personalMenu=1" 
                class="list-group-item list-group-item-action">
                    ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ชฉ๋ก
                </a>
                <a href="/buy/buyList?personalMenu=1" 
                class="list-group-item list-group-item-action">
                    ๊ตฌ๋งค ๋‚ด์—ญ
                </a>
                <a href="" 
                class="list-group-item list-group-item-action">
                    ๊ฐœ์ธ์ •๋ณด์ˆ˜์ •
                </a>
			</div>
		</div>
	</div>
</th:block>	
</html>

BuyController ์ž‘์„ฑ

1.๊ตฌ๋งค๋‚ด์—ญ ๋ฉ”๋‰ด ์ˆ˜์ •

ํ•ด๋‹น ํŽ˜์ด์ง€ ์˜ค๋Š” controller ์ˆ˜์ •

๋งค๊ฐœ๋ณ€์ˆ˜๋กœ String personalMenu ๋„ฃ๊ธฐ.

๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ html๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด ๊ฐ™์ด ํ™”๋ฉด ์—ด๋ฆฌ๋Š” personal_side.html์—์„œ๋„ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์ง.

//๊ตฌ๋งค ๋‚ด์—ญ ํŽ˜์ด์ง€
@RequestMapping("/buyList") //get,post ๋ฐฉ์‹ ๋‘˜ ๋‹ค ๋ฐ›๊ฒŒ
public String buyList(HttpSession session, Model model, BuyVO buyVO, String personalMenu) {
    //์˜ค๋Š˜ ๋‚ ์งœ
    String nowDate = DateUtil.getNowDateToString(); //2023-04-12
    //๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉํ•˜๋ฉด ๋‚ ์งœ ํ˜•์‹ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ
    //String nowDate1 = DateUtil.getNowDateToString("."); //2023.04.12

    //์ด๋ฒˆ ๋‹ฌ์˜ ์ฒซ ๋‚ 
    String firstDate = DateUtil.getFirstDateOfMonth();

    //์ฟผ๋ฆฌ ๋นˆ ๊ฐ’ memId ๊ฐ€์ ธ์˜ค๊ธฐ
    MemberVO loginInfo = (MemberVO)session.getAttribute("loginInfo");
    buyVO.setMemId(loginInfo.getMemId());
                                    //memId ๋ฐ›๋Š” ๊ฒƒ์—์„œ vo๋กœ ์ˆ˜์ •
    List<BuyVO> buyList = buyService.getBuyList(buyVO);
    for(BuyVO e : buyList) {
        System.out.println(e);
    }

    model.addAttribute("buyList", buyList);

    //๋„˜์–ด์˜จ ๋‚ ์งœ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ buyVO์— ์‹œ์ž‘ ๊ธฐ๊ฐ„, ๋๋‚˜๋Š” ๊ธฐ๊ฐ„ ๋ฐ์ดํ„ฐ ์„ธํŒ…
    if(buyVO.getFromDate() == null) {
        buyVO.setFromDate(firstDate);
    }
    if(buyVO.getToDate() == null) {
        buyVO.setToDate(nowDate);
    }

    //์‚ฌ์ด๋“œ ๋ฉ”๋‰ด(์‚ฌ์ด๋“œ ๋ฉ”๋‰ด ํด๋ฆญ ์‹œ ์ƒ‰ ์ฃผ๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ)
    model.addAttribute("personalMenu", personalMenu);

    return "content/buy/buy_list";
}

 

๋„˜์–ด์˜จ personalMenu ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ th:classappend ์†์„ฑ ์‚ฌ์šฉ.

์‚ผํ•ญ์—ฐ์‚ฐ์ž๋กœ ๋ฐ์ดํ„ฐ ํŒ๋‹จํ•˜์—ฌ active ์†์„ฑ ์ถ”๊ฐ€

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">


<th:block th:fragment="personalSideFragment">
	<div class="row">			
		<div class="col">    <!-- active : ํด๋ฆญ ์‹œ ๋ฉ”๋‰ด ์ƒ‰ ์ง€์ •-->
			<div class="list-group">
				<!-- ํšŒ์› ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด --> 
				<a href="/cart/cartList?personalMenu=1" 
				class="list-group-item list-group-item-action"
				th:classappend="${personalMenu == '1' ? 'active' : ''}"> <!-- String์œผ๋กœ ๋ฐ›์•„์„œ ๋ฌธ์ž์—ด ์ธ์‹์„ ์œ„ํ•ด '' ๊ฐ์‹ธ์ฃผ๊ธฐ -->
					์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ชฉ๋ก
				</a>
				<a href="/buy/buyList?personalMenu=2" 
				class="list-group-item list-group-item-action"
				th:classappend="${personalMenu == '2' ? 'active' : ''}">
					๊ตฌ๋งค ๋‚ด์—ญ
				</a>
				<a href="" 
				class="list-group-item list-group-item-action">
					๊ฐœ์ธ์ •๋ณด์ˆ˜์ •
				</a>
			</div>
		</div>
	</div>
</th:block>	
</html>

2. ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฉ”๋‰ด๋„ ๋™์ผํ•˜๊ฒŒ ์ž‘์—…

ํ˜„์žฌ๊นŒ์ง€ ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด ํด๋ฆญํ•˜๋ฉด active ์†์„ฑ ์ ์šฉ๋จ.

mypage์—์„œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ชฉ๋ก ์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ์ ์šฉ ์•ˆ ๋จ.

์žฅ๋ฐ”๊ตฌ๋‹ˆ ํŽ˜์ด์ง€ ์˜ฌ ๋•Œ @RequestParam ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ์†์„ฑ ์‚ฌ์šฉํ•˜์—ฌ ๋””ํดํŠธ ๊ฐ’ 1๋กœ ์ฃผ๊ธฐ.

//์žฅ๋ฐ”๊ตฌ๋‹ˆ ํŽ˜์ด์ง€    		//@RequestParam : ์š”์ฒญ ์‹œ์— ๋„˜์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ 
@GetMapping("/cartList")    //(required = false) : ๋„˜์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์ˆ˜ ๊ฐ’์€ ์•„๋‹˜(๋ฐ์ดํ„ฐ ๋„˜์–ด์˜ฌ ๋•Œ๋„ ์žˆ๊ณ  ์•„๋‹ ๋•Œ๋„ ์žˆ์Œ)
public String cartList(Model model, HttpSession session
        ,@RequestParam(required = false, defaultValue = "1") String personalMenu) {
    //์„ธ์…˜์—์„œ memId ๋นผ๊ธฐ               //defaultValue = "1" : ๋ฐ์ดํ„ฐ ์•ˆ ๋„˜์–ด์˜ค๋ฉด ๊ธฐ๋ณธ์œผ๋กœ 1 ์คŒ.
    MemberVO loginInfo = (MemberVO)session.getAttribute("loginInfo");

    //๋กœ๊ทธ์ธ ์ •๋ณด ์—†์œผ๋ฉด ์ƒํ’ˆ ๋ชฉ๋ก์œผ๋กœ
    if(loginInfo == null) {

        return "redirect:/item/itemList";
    }


    //์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ชฉ๋ก ์กฐํšŒ
    List<CartVO> cartList = cartService.getCartList(loginInfo.getMemId());
    model.addAttribute("cartList", cartList);

    //์ด ๊ตฌ๋งค๊ธˆ์•ก ๊ณ„์‚ฐ
    int finalPrice = 0;
    for(CartVO cart : cartList) {
        finalPrice += cart.getTotalPrice();
    }

    model.addAttribute("finalPrice", finalPrice);

    //์‚ฌ์ด๋“œ ๋ฉ”๋‰ด(์‚ฌ์ด๋“œ ๋ฉ”๋‰ด ํด๋ฆญ ์‹œ ์ƒ‰ ์ฃผ๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ)
    model.addAttribute("personalMenu", personalMenu);

    return "content/cart/cart_list";
}