Browse Source

feat[litemall-wx-api]: 系统自动删除购物车失效商品

Junling Bu 6 years ago
parent
commit
25dd96d4fb

+ 30 - 7
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCartController.java

@@ -1,6 +1,7 @@
 package org.linlinjava.litemall.wx.web;
 package org.linlinjava.litemall.wx.web;
 
 
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.commons.logging.LogFactory;
 import org.linlinjava.litemall.core.system.SystemConfig;
 import org.linlinjava.litemall.core.system.SystemConfig;
@@ -14,10 +15,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 import static org.linlinjava.litemall.wx.util.WxResponseCode.GOODS_NO_STOCK;
 import static org.linlinjava.litemall.wx.util.WxResponseCode.GOODS_NO_STOCK;
 import static org.linlinjava.litemall.wx.util.WxResponseCode.GOODS_UNSHELVE;
 import static org.linlinjava.litemall.wx.util.WxResponseCode.GOODS_UNSHELVE;
@@ -60,7 +58,22 @@ public class WxCartController {
             return ResponseUtil.unlogin();
             return ResponseUtil.unlogin();
         }
         }
 
 
-        List<LitemallCart> cartList = cartService.queryByUid(userId);
+        List<LitemallCart> list = cartService.queryByUid(userId);
+        List<LitemallCart> cartList = new ArrayList<>();
+        // TODO
+        // 如果系统检查商品已删除或已下架,则系统自动删除。
+        // 更好的效果应该是告知用户商品失效,允许用户点击按钮来清除失效商品。
+        for (LitemallCart cart : list) {
+            LitemallGoods goods = goodsService.findById(cart.getGoodsId());
+            if (goods == null || !goods.getIsOnSale()) {
+                cartService.deleteById(cart.getId());
+                logger.debug("系统自动删除失效购物车商品 goodsId=" + cart.getGoodsId() + " productId=" + cart.getProductId());
+            }
+            else{
+                cartList.add(cart);
+            }
+        }
+
         Integer goodsCount = 0;
         Integer goodsCount = 0;
         BigDecimal goodsAmount = new BigDecimal(0.00);
         BigDecimal goodsAmount = new BigDecimal(0.00);
         Integer checkedGoodsCount = 0;
         Integer checkedGoodsCount = 0;
@@ -133,7 +146,12 @@ public class WxCartController {
             cart.setId(null);
             cart.setId(null);
             cart.setGoodsSn(goods.getGoodsSn());
             cart.setGoodsSn(goods.getGoodsSn());
             cart.setGoodsName((goods.getName()));
             cart.setGoodsName((goods.getName()));
-            cart.setPicUrl(goods.getPicUrl());
+            if(StringUtils.isEmpty(product.getUrl())){
+                cart.setPicUrl(goods.getPicUrl());
+            }
+            else{
+                cart.setPicUrl(product.getUrl());
+            }
             cart.setPrice(product.getPrice());
             cart.setPrice(product.getPrice());
             cart.setSpecifications(product.getSpecifications());
             cart.setSpecifications(product.getSpecifications());
             cart.setUserId(userId);
             cart.setUserId(userId);
@@ -202,7 +220,12 @@ public class WxCartController {
             cart.setId(null);
             cart.setId(null);
             cart.setGoodsSn(goods.getGoodsSn());
             cart.setGoodsSn(goods.getGoodsSn());
             cart.setGoodsName((goods.getName()));
             cart.setGoodsName((goods.getName()));
-            cart.setPicUrl(goods.getPicUrl());
+            if(StringUtils.isEmpty(product.getUrl())){
+                cart.setPicUrl(goods.getPicUrl());
+            }
+            else{
+                cart.setPicUrl(product.getUrl());
+            }
             cart.setPrice(product.getPrice());
             cart.setPrice(product.getPrice());
             cart.setSpecifications(product.getSpecifications());
             cart.setSpecifications(product.getSpecifications());
             cart.setUserId(userId);
             cart.setUserId(userId);