ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2022-03-24 스프링부트 : 쇼핑몰#2
    학원/Spring 2022. 3. 24. 15:50

     

     

    회원가입

     

    MemberController

     

    @RequestMapping(value="/contract")
    public String contract() {
        return "member/contract";
    }
    
    
    @RequestMapping(value="/joinForm", method=RequestMethod.POST)
    public String join_form() {
        return "member/joinForm";
    }
    
    
    @RequestMapping("/idCheckForm")
    public String id_check_form( @RequestParam("userid") String userid,
            Model model, HttpServletRequest request ) {
    
        HashMap<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put( "ref_cursor", null );
        paramMap.put("userid", userid);
    
        ms.getMember(paramMap);	 
    
        ArrayList< HashMap<String,Object> > list 
            = (ArrayList<HashMap<String, Object>>) paramMap.get("ref_cursor");
    
        if(list.size() == 0) model.addAttribute("result", -1);
        else model.addAttribute("result", 1);
    
        model.addAttribute("userid", userid);
        return "member/idcheck";
    }
    
    
    
    
    @RequestMapping(value="/findZipNum")
    public String find_zip( HttpServletRequest request , Model model) {
        String dong=request.getParameter("dong");
    
        HashMap<String, Object> paramMap = new HashMap<String, Object>();
        if(dong != null && dong.trim().equals("")==false){			
            paramMap.put( "ref_cursor", null );
            paramMap.put("dong", dong);
    
            ms.selectAddressByDong(paramMap);
    
            ArrayList< HashMap<String,Object> > list 
                = (ArrayList<HashMap<String, Object>>) paramMap.get("ref_cursor");
    
            System.out.println(list.size() + dong);
    
            model.addAttribute("addressList" , list);
        }
        return "member/findZipNum";
    }
    
    
    @RequestMapping(value = "/join", method=RequestMethod.POST)
    public String join( @ModelAttribute("dto") @Valid MemberVO membervo, 
            BindingResult result, 
            @RequestParam(value="reid", required=false) String reid, 
            @RequestParam(value="pwdCheck", required=false) String pwdCheck, 
            //required=false => null값 허용
            HttpServletRequest request,
            Model model) {
    
        model.addAttribute("reid", "reid");
        String url = "member/joinForm";
    
        if(result.getFieldError("userid") != null) {
            model.addAttribute("message", result.getFieldError("userid").getDefaultMessage());
        } else if(result.getFieldError("pwd") != null) {
            model.addAttribute("message", result.getFieldError("pwd").getDefaultMessage());
        } else if(result.getFieldError("name") != null) {
            model.addAttribute("message", result.getFieldError("name").getDefaultMessage());
        } else if(result.getFieldError("email") != null) {
            model.addAttribute("message", result.getFieldError("email").getDefaultMessage());
        } else if(result.getFieldError("phone") != null) {
            model.addAttribute("message", result.getFieldError("phone").getDefaultMessage());
        } else if(reid==null || (reid != null && !reid.equals(membervo.getUserid()))) {
            model.addAttribute("message", "아이디 중복체크를 하지 않으셨습니다.");
        } else if(pwdCheck==null || (pwdCheck != null && !pwdCheck.equals(membervo.getPwd()))) {
            model.addAttribute("message", "비밀번호 확인이 일치하지 않습니다.");
        } else {
    
            HashMap<String, Object> paramMap = new HashMap<>();
            paramMap.put("userid", membervo.getUserid());
            paramMap.put("pwd", membervo.getPwd());
            paramMap.put("name", membervo.getName());
            paramMap.put("email", membervo.getEmail());
            paramMap.put("phone", membervo.getPhone());
            paramMap.put("zip_num", membervo.getZip_num());
            paramMap.put("address", membervo.getAddress());
            paramMap.put("address2", membervo.getAddress2());
    
            ms.insertMember(paramMap);
    
            model.addAttribute("message", "회원가입이 완료되었습니다. 로그인하세요.");
            url = "member/login";
        }
        return url;
    }

     

     

    MemberService

     

    public void selectAddressByDong(HashMap<String, Object> paramMap) {
        mdao.getAddress( paramMap );	
    }
    
    @Transactional(rollbackFor = Exception.class)
    public void insertMember(HashMap<String, Object> paramMap) {
        mdao.insertMember(paramMap);
    }

     

     

     

    MemberDao

     

    <select id="getAddress" statementType="CALLABLE" parameterType="java.util.HashMap">
        {  CALL getAddress_s( 
            #{dong},
            #{ref_cursor , mode=OUT, jdbcType=CURSOR, javaType=ResultSet, resultMap=memberMap}
        )  }
    </select>
    
    <insert id="insertMember" statementType="CALLABLE" parameterType="java.util.HashMap">
        {  CALL insertMember_s( 
            #{userid},#{pwd},#{name},#{email},#{phone},#{zip_num},#{address},#{address2}
        )}
    </insert>

     

     

    프로시저

     

    CREATE OR REPLACE PROCEDURE getAddress_s(
        p_dong IN member2.address%TYPE, 
        p_curvar OUT SYS_REFCURSOR
    )
    IS
    BEGIN
        OPEN p_curvar FOR SELECT * FROM address WHERE dong LIKE '%'||p_dong||'%';
    END;
    
    
    create or replace PROCEDURE insertMember_s(
        p_userid IN member2.userid%type,
        p_pwd IN member2.pwd%type,
        p_name IN member2.name%type,
        p_email IN member2.email%type,
        p_phone IN member2.phone%type,
        p_zip_num IN member2.zip_num%type,
        p_address IN member2.address%type,
        p_address2 IN member2.address2%type
    )
    IS
    BEGIN
        insert into member2 (userid, pwd, name, email, phone, zip_num, address, address2)
        values (p_userid,p_pwd,p_name,p_email,p_phone,p_zip_num,p_address,p_address2);
    END;

     

     


     

     

    회원정보 수정

     

     

    MemberController

     

    @RequestMapping("/memberEditForm")
    public String member_Edit_Form(Model model, HttpServletRequest request) {
    
        MemberVO dto = new MemberVO();
        HttpSession session = request.getSession();
    
        HashMap<String, Object> loginUser = 
                (HashMap<String, Object>) session.getAttribute("loginUser");
        dto.setUserid((String) loginUser.get("USERID"));
        dto.setName((String) loginUser.get("NAME"));
        dto.setEmail((String) loginUser.get("EMAIL"));
        dto.setPhone((String) loginUser.get("PHONE"));
        dto.setZip_num((String) loginUser.get("ZIP_NUM"));
        dto.setAddress((String) loginUser.get("ADDRESS"));
        dto.setAddress2((String) loginUser.get("ADDRESS2"));
    
        model.addAttribute("dto", dto);
        return "member/memberUpdateForm";
    }
    
    
    @RequestMapping(value = "/memberUpdate", method=RequestMethod.POST)
    public String join( @ModelAttribute("dto") @Valid MemberVO membervo, 
            BindingResult result, 
            @RequestParam(value="pwdCheck", required=false) String pwdCheck, 
            //required=false => null값 허용
            HttpServletRequest request,
            Model model) {
    
        if(result.getFieldError("userid") != null) {
            model.addAttribute("message", result.getFieldError("userid").getDefaultMessage());
            return "member/memberUpdateForm";
        } else if(result.getFieldError("pwd") != null) {
            model.addAttribute("message", result.getFieldError("pwd").getDefaultMessage());
            return "member/memberUpdateForm";
        } else if(result.getFieldError("name") != null) {
            model.addAttribute("message", result.getFieldError("name").getDefaultMessage());
            return "member/memberUpdateForm";
        } else if(result.getFieldError("email") != null) {
            model.addAttribute("message", result.getFieldError("email").getDefaultMessage());
            return "member/memberUpdateForm";
        } else if(result.getFieldError("phone") != null) {
            model.addAttribute("message", result.getFieldError("phone").getDefaultMessage());
            return "member/memberUpdateForm";
        } else if(pwdCheck==null || (pwdCheck != null && !pwdCheck.equals(membervo.getPwd()))) {
            model.addAttribute("message", "비밀번호 확인이 일치하지 않습니다.");
            return "member/memberUpdateForm";
        } 
            HashMap<String, Object> paramMap = new HashMap<>();
            paramMap.put("USERID", membervo.getUserid());
            paramMap.put("PWD", membervo.getPwd());
            paramMap.put("NAME", membervo.getName());
            paramMap.put("EMAIL", membervo.getEmail());
            paramMap.put("PHONE", membervo.getPhone());
            paramMap.put("ZIP_NUM", membervo.getZip_num());
            paramMap.put("ADDRESS", membervo.getAddress());
            paramMap.put("ADDRESS2", membervo.getAddress2());
    
            ms.updateMember(paramMap);
    
            HttpSession session = request.getSession();
            session.setAttribute("loginUser", paramMap);
    
            return "redirect:/";
    }

     

     

    MemberService

     

    @Transactional(rollbackFor = Exception.class)
    public void updateMember(HashMap<String, Object> paramMap) {
        mdao.updateMember(paramMap);
    }

     

     

    MemberDao

     

    <update id="updateMember" statementType="CALLABLE" parameterType="java.util.HashMap">
        {  CALL updateMember_s( 
            #{USERID},#{PWD},#{NAME},#{EMAIL},#{PHONE},#{ZIP_NUM},#{ADDRESS},#{ADDRESS2}
        )}
    </update>

     

     

    프로시저

     

    create or replace PROCEDURE updateMember_s(
        p_userid IN member2.userid%type,
        p_pwd IN member2.pwd%type,
        p_name IN member2.name%type,
        p_email IN member2.email%type,
        p_phone IN member2.phone%type,
        p_zip_num IN member2.zip_num%type,
        p_address IN member2.address%type,
        p_address2 IN member2.address2%type
    )
    IS
    BEGIN
        update member2 set pwd=p_pwd, name=p_name, email=p_email, 
        phone=p_phone, zip_num=p_zip_num, address=p_address, address2=p_address2
        where userid=p_userid;
    END;

     

     


     

    카테고리 별 상품 리스트 / 상세보기

     

     

    productController

     

    @RequestMapping("/catagory")
    	public ModelAndView catagore (Model model, HttpServletRequest request,
    			@RequestParam("kind") String kind) {
    
    		ModelAndView mav = new ModelAndView();
    		
    		HashMap<String, Object> paramMap = new HashMap<>();
    		paramMap.put("ref_cursor", null);
    		paramMap.put("kind", kind);
    		
    		ps.getKindList(paramMap);
    		
    		ArrayList<HashMap<String, Object>> list
    		= (ArrayList<HashMap<String, Object>>) paramMap.get("ref_cursor");
    		
    		mav.addObject("productKindList", list);
    		mav.setViewName("product/productKind");
    		return mav;
    		
    	}
    	
    	@RequestMapping("/productDetail")
    	public ModelAndView productDetail (Model model, HttpServletRequest request,
    			@RequestParam("pseq") int pseq) {
    		
    		ModelAndView mav = new ModelAndView();
    		
    		HashMap<String, Object> paramMap = new HashMap<>();
    		paramMap.put("ref_cursor", null);
    		paramMap.put("pseq", pseq);
    		ps.getProduct(paramMap);
    		
    		ArrayList<HashMap<String, Object>> list
    		= (ArrayList<HashMap<String, Object>>) paramMap.get("ref_cursor");
    		
    		HashMap<String, Object> resultMap = list.get(0);
    		mav.addObject("productVO", resultMap);
    		mav.setViewName("product/productDetail");
    		return mav;
    		
    	}

     

     

    ProductDao

     

    <select id="getKindList" statementType="CALLABLE" parameterType="java.util.HashMap">
        {CALL getKindList(
            #{kind},
            #{ref_cursor, mode=OUT, jdbcType=CURSOR, javaType=ResultSet, resultMap=productMap}
        )}
    </select>
    
    <select id="getProduct" statementType="CALLABLE" parameterType="java.util.HashMap">
        {CALL getProduct(
            #{pseq},
            #{ref_cursor, mode=OUT, jdbcType=CURSOR, javaType=ResultSet, resultMap=productMap}
        )}
    </select>

     

     

     

    프로시저

     

    create or replace PROCEDURE getBestNewProduct(
        p_kind IN product.kind%type,
        p_cur OUT SYS_REFCURSOR
    )
    IS
    BEGIN
        open p_cur for 
            select * from product where kind=;
    END;

     

     


     

     

     

    장바구니 추가/리스트/삭제

     

    CartController

     

    @Controller
    public class CartController {
    
    	@Autowired
    	CartService cs;
    	
    	@RequestMapping("/cartInsert")
    	public String cartInsert( HttpServletRequest request, Model model,
    			@RequestParam("pseq") int pseq , 
    			@RequestParam("quantity") int quantity ) {
    		
    		HttpSession session = request.getSession();
    		HashMap<String, Object> loginUser = (HashMap<String, Object>) session.getAttribute("loginUser");
    		
    		if( loginUser == null) {
    			return "member/login";
    		}else {
    			HashMap<String, Object> paramMap = new HashMap<>();
    			paramMap.put("id", loginUser.get("USERID"));
    			paramMap.put("pseq", pseq);
    			paramMap.put("quantity", quantity);
    			
    			cs.insertCart(paramMap);
    			
    		}		
    		return "redirect:/cartList";
    	}
    	
    	@RequestMapping("/cartList")
    	public ModelAndView cartList( HttpServletRequest request ) {
    		ModelAndView mav = new ModelAndView();
    	
    		HttpSession session = request.getSession();
    		HashMap<String, Object> loginUser = (HashMap<String, Object>) session.getAttribute("loginUser");
    		
    		if( loginUser == null) {
    			mav.setViewName("member/login");
    		}else {
    			HashMap<String, Object> paramMap = new HashMap<String, Object>();
    			paramMap.put("id", loginUser.get("USERID"));
    			paramMap.put("ref_cursor", null);
    
    			cs.listCart(paramMap);
    
    			ArrayList<HashMap<String, Object>> list 
    				= (ArrayList<HashMap<String, Object>>) paramMap.get("ref_cursor");
    			mav.addObject("cartList", list);
    			
    			int totalPrice=0;
    			for(HashMap<String, Object> cart : list)  {
    				totalPrice += Integer.parseInt(cart.get("QUANTITY").toString())
    							*Integer.parseInt(cart.get("PRICE2").toString());
    			}
    			
    				mav.addObject("totalPrice" , totalPrice);
    				mav.setViewName("mypage/cartList");
    		}
    		return mav;
    	}
    	
    	@RequestMapping("/cartDelete")
    	public String cartDelete(HttpServletRequest request) {
    		
    		String[] cseqArr = request.getParameterValues("cseq");
    		
    		HashMap<String, Object> paramMap = new HashMap<String, Object>();
    		for( String cseq : cseqArr) {
    			paramMap.put("cseq", cseq);
    			cs.deleteCart(paramMap);
    		}
    		
    		return "redirect:/cartList";
    	}
    	
    }

     

     

    CartDao

     

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    	
    <mapper namespace="com.ezen.spm17.dao.ICartDao">
    	
    	<resultMap id="cartMap" type="java.util.HashMap"></resultMap>
    		
    	<insert id="insertCart" statementType="CALLABLE" parameterType="java.util.HashMap">
    		{  CALL insertCart( #{id}, #{pseq}, #{quantity} )}
    	</insert>
    	
    	<select id="listCart" statementType="CALLABLE" parameterType="java.util.HashMap">
    		{  CALL listCart( 
    			#{id},
    			#{ref_cursor , mode=OUT, jdbcType=CURSOR, javaType=ResultSet, resultMap=memberMap}
    		)  }
    	</select>
    	
    	<delete id="deleteCart" statementType="CALLABLE" parameterType="java.util.HashMap">
    		{  CALL deleteCart( #{cseq} )  }
    	</delete>
    	
    </mapper>

     

     

    프로시저

     

    create or replace PROCEDURE insertCart(
        p_id IN cart.id%type,
        p_pseq IN cart.pseq%type,
        p_quantity IN cart.quantity%type
    )
    IS
    BEGIN
        insert into cart(cseq, id, pseq, quantity)
        values (cart_seq.nextVal, p_id, p_pseq, p_quantity);
    END;
    
    select * from cart_view;
    
    
    create or replace PROCEDURE listCart(
        p_id IN cart.id%type,
        p_cur OUT SYS_REFCURSOR
    )
    IS
    BEGIN
        open p_cur for 
            select * from cart_view where id=p_id;
    END;
    
    
    create or replace PROCEDURE deleteCart(
        p_cseq IN cart.cseq%type )
    IS
    BEGIN
       delete from cart where cseq=p_cseq;
    END;

     

     


     

     

     

    장바구니에서 주문 

     

    OrderController

     

    package com.ezen.spm17.controller;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.servlet.ModelAndView;
    
    import com.ezen.spm17.service.OrderService;
    
    @Controller
    public class OrderController {
    
    	@Autowired
    	OrderService os;
    	
    	@RequestMapping("/orderInsert")
    	public String orderInsert(HttpServletRequest request) {
    		
    		int oseq = 0;
    		HttpSession session = request.getSession();
    		HashMap<String, Object> loginUser = 
    				(HashMap<String, Object>) session.getAttribute("loginUser");
    		if(loginUser == null) {
    			return "member/login";
    		} else {
    			HashMap<String, Object> paramMap = new HashMap<>();
    			paramMap.put("id", loginUser.get("USERID"));
    			paramMap.put("oseq", 0);
    			
    			os.insertOrder(paramMap);
    			//아이디로 카트검색
    			//검색 내용으로 orders, order_detail 테이블에 레코드 추가
    			//oseq에 주문번호를 가지고 돌아옴
    			
    			oseq = Integer.parseInt(paramMap.get("oseq").toString());
    			System.out.println(oseq);
    		}
    		
    		return "redirect:/orderList?oseq="+oseq;
    	}
    	
    	@RequestMapping("/orderList")
    	public ModelAndView orderList(@RequestParam("oseq") int oseq, HttpServletRequest request,
    			Model model) {
    		ModelAndView mav = new ModelAndView();
    		HttpSession session = request.getSession();
    		HashMap<String, Object> loginUser = 
    				(HashMap<String, Object>) session.getAttribute("loginUser");
    		if(loginUser == null) {
    			mav.setViewName("member/login");
    		} else {
    			HashMap<String, Object> paramMap = new HashMap<String, Object> ();
    			paramMap.put("oseq", oseq);
    			paramMap.put("ref_cursor", null);
    			
    			os.listOrderByOseq(paramMap);
    			ArrayList<HashMap<String, Object>> list
    				= (ArrayList<HashMap<String, Object>>) paramMap.get("ref_cursor");
    			mav.addObject("orderList", list);
    			
    			int totalPrice = 0;
    			for (HashMap<String, Object> ovo : list) {
    				totalPrice += Integer.parseInt(ovo.get("QUANTITY").toString()) 
    						*Integer.parseInt(ovo.get("PRICE2").toString());
    			}
    			mav.addObject("totalPrice", totalPrice);
    			mav.setViewName("mypage/orderList");
    		}
    		
    		return mav;
    	}
    }

     

     

    OrderService

     

    package com.ezen.spm17.service;
    
    import java.util.HashMap;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.ezen.spm17.dao.IOrderDao;
    
    @Service
    public class OrderService {
    
    	@Autowired
    	IOrderDao odao;
    
    	@Transactional (rollbackFor = Exception.class)
    	public void insertOrder(HashMap<String, Object> paramMap) {
    		odao.insertOrder(paramMap);
    	}
    
    	public void listOrderByOseq(HashMap<String, Object> paramMap) {
    		odao.listOrderByOseq(paramMap);
    	}
    }

     

     

    OrderDao

     

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    	
    <mapper namespace="com.ezen.spm17.dao.IOrderDao">
    
    	<resultMap id="orderMap" type="java.util.HashMap"></resultMap>
    	
    	<insert id="insertOrder" statementType="CALLABLE" parameterType="java.util.HashMap">
    		{  CALL insertOrder( #{id}, 
    		#{oseq, mode=OUT, jdbcType=INTEGER} 
    		)}
    	</insert>
    	
    	<select id="listOrderByOseq" statementType="CALLABLE" parameterType="java.util.HashMap">
    		{  CALL listOrderByOseq( 
    			#{oseq},
    			#{ref_cursor , mode=OUT, jdbcType=CURSOR, javaType=ResultSet, resultMap=memberMap}
    		)  }
    	</select>
    </mapper>

     

     

    프로시저

     

    create or replace PROCEDURE insertOrder(
        p_id IN cart.id%type,
        p_oseq OUT orders.oseq%type
    )
    IS
        temp_oseq orders.oseq%type;
        temp_cursor sys_refcursor;
        v_cseq cart.cseq%type;
        v_quantity cart.quantity%type;
        v_pseq cart.pseq%type;
    BEGIN
        --orders 테이블에 레코드 추가
        insert into orders(oseq, id)
        values (order_seq.nextVal, p_id);
        
        --orders 테이블에서 가장 큰 oseq 조회
        select max(oseq) into temp_oseq from orders where id=p_id;
        p_oseq := temp_oseq;
        
        --cart 테이블에서 id로 목록 조회
        open temp_cursor for
            select cseq, pseq, quantity into v_cseq, v_pseq, v_quantity
            from cart where id=p_id and result='1';
       Loop
            FETCH temp_cursor into v_cseq, v_pseq, v_quantity; 
            EXIT WHEN temp_cursor%NOTFOUND;
            insert into order_detail(odseq, oseq, pseq, quantity)
            values (order_detail_seq.nextVal, temp_oseq, v_pseq, v_quantity);
            delete from cart where cseq=v_cseq;
       END LOOP;
        commit;
    END;
    
    create or replace PROCEDURE listOrderByOseq(
        p_oseq IN orders.oseq%type,
        p_cur OUT SYS_REFCURSOR
    )
    IS
    BEGIN
        open p_cur for 
            select * from order_view where oseq=p_oseq;
    END;

     

     

     

    댓글

Designed by Tistory.