笔记:修改数量

    xiaoxiao2025-11-16  4

    js:

    var TTCart = { load : function(){ // 加载购物车数据 }, init : function(){ $("#toSettlement").click(function(){ $("#cartForm").submit(); }); $("[name=checkItem]").click(function(){ //计算总价 TTCart.refreshTotalPrice(); //将选中的商品填写到Form表单中 var itemIds = []; $("[name=checkItem]:checked").each(function(i,e){ itemIds.push($(e).val()); }) $("#cartForm [name=itemIds]").val(itemIds.join(",")); //设置全选状态 $("[name=toggle-checkboxes]").attr("checked",$("[name=checkItem]:not(:checked)").length==0); }); //全选 $("[name=toggle-checkboxes]").click(function(){ $("[name=checkItem]").attr("checked",this.checked); TTCart.refreshTotalPrice(); // if(this.checked){ // $("[name=checkItem]:not(:checked)").click(); // }else{ // $("[name=checkItem]:checked").click(); // } }); }, itemNumChange : function(){ $(".increment").click(function(){//+ var _thisInput = $(this).siblings("input"); _thisInput.val(eval(_thisInput.val()) + 1); $.post("/service/cart/update/num/"+_thisInput.attr("itemId")+"/"+_thisInput.val(),function(data){ TTCart.refreshTotalPrice(); }); }); $(".decrement").click(function(){//- var _thisInput = $(this).siblings("input"); if(eval(_thisInput.val()) == 1){ return ; } _thisInput.val(eval(_thisInput.val()) - 1); $.post("/service/cart/update/num/"+_thisInput.attr("itemId")+"/"+_thisInput.val(),function(data){ TTCart.refreshTotalPrice(); }); }); $(".quantity-form .quantity-text").rnumber(1);//限制只能输入数字 //jQuery的change事件,文本框内容更变时执行 $(".quantity-form .quantity-text").change(function(){ var _thisInput = $(this); $.post("/service/cart/update/num/"+_thisInput.attr("itemId")+"/"+_thisInput.val(),function(data){ TTCart.refreshTotalPrice(); }); }); }, refreshTotalPrice : function(){ //重新计算总价 var total = 0; $("[name=checkItem]:checked").each(function(i,e){ var _this = $(e); var _item =_this.parents("div.item").find(".quantity-form .quantity-text"); total += (eval(_item.attr("itemPrice")) * 10000 * eval(_item.val())) / 10000; }); $(".totalSkuPrice").html(new Number(total/100).toFixed(2)).priceFormat({ //价格格式化插件 prefix: '¥', thousandsSeparator: ',', centsLimit: 2 }); } }; $(function(){ TTCart.init(); TTCart.load(); TTCart.itemNumChange(); }); jsp:

    <div class="cell p-quantity" for-stock="for-stock-11345721"> <div class="quantity-form" data-bind=""> <a href="javascript:void(0);" class="decrement" clstag="clickcart|keycount|xincart|diminish1" id="decrement">-</a> <input type="text" class="quantity-text" itemPrice="${cart.itemPrice}" itemId="${cart.itemId}" value="${cart.num }" id="changeQuantity-11345721-1-1-0"> <a href="javascript:void(0);" class="increment" clstag="clickcart|keycount|xincart|add1" id="increment">+</a> </div> </div> <div class="cart-toolbar clearfix"> <div class="total fr"> <p><span class="totalSkuPrice">¥<fmt:formatNumber value="${totalPrice / 100}" maxFractionDigits="2" minFractionDigits="2" groupingUsed="true"/></span>总计:</p> <p><span id="totalRePrice">- ¥0.00</span>优惠:</p> </div> <div class="amout fr"><span id="selectedCount">1</span> 件商品</div> </div> <div class="total fr"> 总计(不含运费): <span class="totalSkuPrice">¥<fmt:formatNumber value="${totalPrice / 100}" maxFractionDigits="2" minFractionDigits="2" groupingUsed="true"/></span> </div> controller:

    /** * 修改购买商品的数量 * * @param itemId * @return */ @RequestMapping(value = "cart/update/num/{itemId}/{num}", method = RequestMethod.POST) public ResponseEntity<Void> updateItemFromCart(@PathVariable("itemId") Long itemId, @PathVariable("num") Integer num, HttpServletRequest request, HttpServletResponse response) { // 判断用户是否登录 User user = UserThreadLocal.get(); if (null == user) { // 未登录 this.cartCookieService.updateItemToCart(itemId, num, request, response); } else { // 已登录 this.cartService.updateItemToCart(itemId, num); } return ResponseEntity.status(HttpStatus.NO_CONTENT).build(); } service:

    package com.taotao.cart.service; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.fasterxml.jackson.databind.ObjectMapper; import com.taotao.cart.pojo.Cart; import com.taotao.cart.pojo.Item; import com.taotao.common.utils.CookieUtils; @Service public class CartCookieService { public static final String COOKIE_CART = "TT_CART"; private static final ObjectMapper MAPPER = new ObjectMapper(); private static final Integer COOKIE_TIME = 60 * 60 * 24 * 30 * 3; @Autowired private ItemService itemService; public void addItemToCart(Long itemId, HttpServletRequest request, HttpServletResponse response) { try { List<Cart> carts = this.queryCartList(request); Cart cart = null; for (Cart c : carts) { if (c.getItemId().intValue() == itemId.intValue()) { // 该商品已经存在 cart = c; break; } } if (null == cart) { // 不存在 // 查询商品数据 Item item = this.itemService.queryItemById(itemId); cart = new Cart(); cart.setCreated(new Date()); cart.setUpdated(cart.getCreated()); cart.setId(null); cart.setItemId(itemId); cart.setItemImage(item.getImages()[0]); cart.setItemPrice(item.getPrice()); cart.setItemTitle(item.getTitle()); cart.setNum(1);// TODO carts.add(cart); } else { // 存在 cart.setNum(cart.getNum() + 1);// TODO } // 将carts集合写入到cookie中 CookieUtils.setCookie(request, response, COOKIE_CART, MAPPER.writeValueAsString(carts), COOKIE_TIME, true); } catch (Exception e) { e.printStackTrace(); } } public List<Cart> queryCartList(HttpServletRequest request) { try { String cookieCart = CookieUtils.getCookieValue(request, COOKIE_CART, true); if (StringUtils.isEmpty(cookieCart)) { return new ArrayList<Cart>(0); } return MAPPER.readValue(cookieCart, MAPPER.getTypeFactory().constructCollectionType(List.class, Cart.class)); } catch (Exception e) { e.printStackTrace(); } return new ArrayList<Cart>(0); } public void deleteItemToCart(Long itemId, HttpServletRequest request, HttpServletResponse response) { List<Cart> carts = this.queryCartList(request); for (Cart c : carts) { if (c.getItemId().intValue() == itemId.intValue()) { // 该商品已经存在 carts.remove(c); break; } } try { // 将carts集合写入到cookie中 CookieUtils.setCookie(request, response, COOKIE_CART, MAPPER.writeValueAsString(carts), COOKIE_TIME, true); } catch (Exception e) { e.printStackTrace(); } } public void updateItemToCart(Long itemId, Integer num, HttpServletRequest request, HttpServletResponse response) { List<Cart> carts = this.queryCartList(request); for (Cart c : carts) { if (c.getItemId().intValue() == itemId.intValue()) { // 该商品已经存在 c.setNum(num); break; } } try { // 将carts集合写入到cookie中 CookieUtils.setCookie(request, response, COOKIE_CART, MAPPER.writeValueAsString(carts), COOKIE_TIME, true); } catch (Exception e) { e.printStackTrace(); } } }

    转载请注明原文地址: https://ju.6miu.com/read-1304245.html
    最新回复(0)