자바 전자상거래 프로젝트 면접-카 트 모듈

23006 단어 자바 필기시험
카 트 모듈 기술 요점:1.상품 총가격 계산 재 활용 패키지 2.재 활용 의 논리 적 방법 패키지 사상 3.상업 연산 의 정밀도 손실 을 해결 하 는 구덩이
1.카 트 모듈 기능 1.카 트 에 상품 추가 2.상품 수량 업데이트 3.상품 수량 조회 4.카 트 에 있 는 상품 제거 5.선택/선택 2.카 트 에 상품 컨트롤 러 층 추가:
//       
@RequestMapping("add.do")
@ResponseBody
public ServerResponse add(HttpSession session, Integer count, Integer productId){
    User user = (User)session.getAttribute(Const.CURRENT_USER);
    if(user ==null){
        return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
    }
    return iCartService.add(user.getId(),productId,count);
}

서비스 계층:
//       
public ServerResponse add(Integer userId,Integer productId,Integer count){
    if(productId == null || count == null){
        return ServerResponse.createByErrorCodeMessage(ResponseCode.ILLEGAL_ARGUMENT.getCode(),ResponseCode.ILLEGAL_ARGUMENT.getDesc());
    }
    Cart cart = cartMapper.selectCartByUserIdProductId(userId,productId);
    if(cart == null){
        //            ,             
        Cart cartItem = new Cart();
        cartItem.setQuantity(count);
        cartItem.setChecked(Const.Cart.CHECKED);
        cartItem.setProductId(productId);
        cartItem.setUserId(userId);
        cartMapper.insert(cartItem);
    }else{
        //            .
        //       ,    
        count = cart.getQuantity() + count;
        cart.setQuantity(count);
        cartMapper.updateByPrimaryKeySelective(cart);
    }
    return this.list(userId);
}
//          (            )
public ServerResponse list (Integer userId){
    CartVo cartVo = this.getCartVoLimit(userId);
    return ServerResponse.createBySuccess(cartVo);
}
//          
private CartVo getCartVoLimit(Integer userId){
    CartVo cartVo = new CartVo();
    //                 
    List cartList = cartMapper.selectCartByUserId(userId);
    List cartProductVoList = Lists.newArrayList();

    BigDecimal cartTotalPrice = new BigDecimal("0");   //        0

    if(CollectionUtils.isNotEmpty(cartList)){
        for(Cart cartItem : cartList){        //        
            //        
            CartProductVo cartProductVo = new CartProductVo();
            cartProductVo.setId(cartItem.getId());
            cartProductVo.setUserId(userId);
            cartProductVo.setProductId(cartItem.getProductId());
            //     
            Product product = productMapper.selectByPrimaryKey(cartItem.getProductId());
            if(product != null){       //        
                cartProductVo.setProductMainImage(product.getMainImage());
                cartProductVo.setProductName(product.getName());
                cartProductVo.setProductSubtitle(product.getSubtitle());
                cartProductVo.setProductStatus(product.getStatus());
                cartProductVo.setProductPrice(product.getPrice());
                cartProductVo.setProductStock(product.getStock());
                //    
                int buyLimitCount = 0;
                //       ,       
                if(product.getStock() >= cartItem.getQuantity()){
                    buyLimitCount = cartItem.getQuantity();
                    cartProductVo.setLimitQuantity(Const.Cart.LIMIT_NUM_SUCCESS);
                }else{
                    //    ,          
                    buyLimitCount = product.getStock();
                    cartProductVo.setLimitQuantity(Const.Cart.LIMIT_NUM_FAIL);
                    //          
                    Cart cartForQuantity = new Cart();
                    cartForQuantity.setId(cartItem.getId());
                    //           
                    cartForQuantity.setQuantity(buyLimitCount);
                    cartMapper.updateByPrimaryKeySelective(cartForQuantity);
                }
                //      
                cartProductVo.setQuantity(buyLimitCount);
                //        
                cartProductVo.setProductTotalPrice(BigDecimalUtil.mul(product.getPrice().doubleValue(),cartProductVo.getQuantity()));
                cartProductVo.setProductChecked(cartItem.getChecked());
            }
            //        ,            
            if(cartItem.getChecked() == Const.Cart.CHECKED){
                cartTotalPrice = BigDecimalUtil.add(cartTotalPrice.doubleValue(),cartProductVo.getProductTotalPrice().doubleValue());
            }
            cartProductVoList.add(cartProductVo);
        }
    }
    cartVo.setCartTotalPrice(cartTotalPrice);
    cartVo.setCartProductVoList(cartProductVoList);
    cartVo.setAllChecked(this.getAllCheckedStatus(userId));
    cartVo.setImageHost(PropertiesUtil.getProperty("ftp.server.http.prefix"));

    return cartVo;
}

CartProductVo 단일 상품 의 정보,상품 수량 제한 및 특정 상품 의 총가격 계산 설명
public class CartProductVo {
    //                
    private Integer id;
    private Integer userId;
    private Integer productId;
    private Integer quantity;  //          
    private String productName;
    private String productSubtitle;
    private String productMainImage;
    private BigDecimal productPrice;
    private Integer productStatus;
    private BigDecimal productTotalPrice;
    private Integer productStock;
    private Integer productChecked;//       
    private String limitQuantity;  //           
}

CartProductVo 는 카 트 의 상황 을 묘사 하고 모든 상품 의 총 가격 을 밀봉 하 며 전체 선택 에 대해 설명 한다.
public class CartVo {
    private List cartProductVoList;
    private BigDecimal cartTotalPrice;
    private Boolean allChecked;      //       
    private String imageHost;
}

상업 연산 의 정밀도 손실 을 해결 하 는 구 덩이 는 총 가격 을 계산 할 때 부동 소수점 정밀도 손실 문제 가 발생 할 수 있 습 니 다.제 블 로 그 를 참고 하 십시오.자바 전자상거래 프로젝트 면접–부동 소수점 상업 연산 에서 정밀도 문 제 를 잃 습 니 다.3.상품 수량 을 업데이트 하 는 Controller 층:
//     
@RequestMapping("update.do")
@ResponseBody
public ServerResponse update(HttpSession session, Integer count, Integer productId){
    User user = (User)session.getAttribute(Const.CURRENT_USER);
    if(user ==null)
        return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
    return iCartService.update(user.getId(),productId,count);
}

서비스 계층:
//     
public ServerResponse update(Integer userId,Integer productId,Integer count){
    if(productId == null || count == null)
        return ServerResponse.createByErrorCodeMessage(ResponseCode.ILLEGAL_ARGUMENT.getCode(),ResponseCode.ILLEGAL_ARGUMENT.getDesc());
    Cart cart = cartMapper.selectCartByUserIdProductId(userId,productId);  //          
    if(cart != null)
        cart.setQuantity(count);
    cartMapper.updateByPrimaryKey(cart);
    return this.list(userId);
}

4.카 트 에서 상품 컨트롤 러 층 제거:
//        
@RequestMapping("delete_product.do")
@ResponseBody
//     ,    ,      
public ServerResponse deleteProduct(HttpSession session,String productIds){
    User user = (User)session.getAttribute(Const.CURRENT_USER);
    if(user ==null)
        return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
    return iCartService.deleteProduct(user.getId(),productIds);
}

서비스 계층:
public ServerResponse<CartVo> deleteProduct(Integer userId,String productIds){
    //  guava Splitter  (      ,  list   )
    //     ,    ,      
    List<String> productList = Splitter.on(",").splitToList(productIds);
    if(CollectionUtils.isEmpty(productList))
       return ServerResponse.createByErrorCodeMessage(ResponseCode.ILLEGAL_ARGUMENT.getCode(),ResponseCode.ILLEGAL_ARGUMENT.getDesc());
    cartMapper.deleteByUserIdProductIds(userId,productList);
    return this.list(userId);
}

Mapper.xml:
<delete id="deleteByUserIdProductIds" parameterType="map">
    delete from mmall_cart
    where user_id = #{userId}
    <if test="productIdList != null">
        and product_id in
        "productIdList" item="item" index="index" open="(" separator="," close=")">
            #{item}
        
    if>
delete>

5.단일 선택 전체 선택 컨트롤 러 층:
//   
@RequestMapping("un_select_all.do")
@ResponseBody
public ServerResponse unSelectAll(HttpSession session){
    User user = (User)session.getAttribute(Const.CURRENT_USER);
    if(user ==null)
        return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
    return iCartService.selectOrUnSelect(user.getId(),null,Const.Cart.UN_CHECKED);
}

//   
@RequestMapping("select.do")
@ResponseBody
public ServerResponse select(HttpSession session,Integer productId){
    User user = (User)session.getAttribute(Const.CURRENT_USER);
    if(user ==null)
        return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
    return iCartService.selectOrUnSelect(user.getId(),productId,Const.Cart.CHECKED);
}

//    
@RequestMapping("un_select.do")
@ResponseBody
public ServerResponse unSelect(HttpSession session,Integer productId){
    User user = (User)session.getAttribute(Const.CURRENT_USER);
    if(user ==null)
        return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
    return iCartService.selectOrUnSelect(user.getId(),productId,Const.Cart.UN_CHECKED);
}

서비스 계층:
//      
public ServerResponse selectOrUnSelect (Integer userId,Integer productId,Integer checked){
    cartMapper.checkedOrUncheckedProduct(userId,productId,checked);
    return this.list(userId);
}

//    ,                  
private boolean getAllCheckedStatus(Integer userId){
    if(userId == null)
        return false;
    return cartMapper.selectCartProductCheckedStatusByUserId(userId) == 0;
}

Mapper.xml:

<update id="checkedOrUncheckedProduct" parameterType="map">
   UPDATE  mmall_cart
   set checked = #{checked},
   update_time = now()
   where user_id = #{userId}
   <if test="productId != null">
       and product_id = #{productId}
   if>
update>

<select id="selectCartProductCheckedStatusByUserId" resultType="int" parameterType="int">
    SELECT  count(1) from mmall_cart where checked = 0 and user_id = #{userId}
select>

자바 면접 의 전체 블 로그 목록 은 다음 과 같 습 니 다:자바 필기시험 면접 목록
전재 출처,원문 주소:https://blog.csdn.net/weixin_41835916 본 논문 이 당신 에 게 도움 이 된다 고 생각 되면 정상 을 클릭 하여 지지 해 주 십시오.당신 의 지 지 는 제 가 글 을 쓰 는 가장 큰 동력 입 니 다.감사합니다.

좋은 웹페이지 즐겨찾기