Sfoglia il codice sorgente

fix 添加购物车商品数量

zoujiajian 2 anni fa
parent
commit
4acc37d3d1

+ 18 - 4
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -48,6 +48,7 @@ import com.cyksj.mapper.manage.coupon.CouponUserMapper;
 import com.cyksj.mapper.manage.distribute.*;
 import com.cyksj.mapper.market.task.TaskTypeMapper;
 import com.cyksj.mapper.market.task.UserBindDetailMapper;
+import com.cyksj.mapper.order.ShoppingCartDonMapper;
 import com.cyksj.mapper.shop.YhShopGoodsSkuMapper;
 import com.cyksj.model.dto.*;
 import com.cyksj.model.entity.*;
@@ -69,10 +70,7 @@ import com.cyksj.service.giftcard.GiftCardUserRecordService;
 import com.cyksj.service.groups.GroupsFuncService;
 import com.cyksj.service.market.MarketFrontService;
 import com.cyksj.service.market.task.TaskService;
-import com.cyksj.service.order.OrderCommonService;
-import com.cyksj.service.order.OrderDonPostService;
-import com.cyksj.service.order.OrderDonService;
-import com.cyksj.service.order.OrderMasterDonService;
+import com.cyksj.service.order.*;
 import com.cyksj.service.pay.AliPayCommonService;
 import com.cyksj.service.relation.GroupRelationClearService;
 import com.cyksj.service.relation.GroupRelationFrontService;
@@ -101,6 +99,7 @@ import java.math.RoundingMode;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
 
 import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_ALREADY_BE_USER;
 import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_NOT_FIND;
@@ -240,6 +239,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final OrderMasterDonService orderMasterDonService;
 
+	private final ShoppingCartDonMapper shoppingCartDonMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -584,6 +585,16 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			openId = user.getOpenId();
 		}
 		userId = user.getId();
+		List<Long> shopCartIds = payGoods.stream().filter(shopCart -> shopCart.getShopCartId() != null).map(OrderPayRequest::getShopCartId).collect(Collectors.toList());
+		if (CollUtil.isNotEmpty(shopCartIds)) {
+			//校验购物车中物品是否一致
+			Integer shopCartCount = shoppingCartDonMapper.selectCount(Wrappers.lambdaQuery(ShoppingCartDon.class)
+					.eq(ShoppingCartDon::getUserId, user.getId())
+					.in(ShoppingCartDon::getId, shopCartIds));
+			if (shopCartIds.size() != shopCartCount) {
+				throw BusinessRuntimeException.getInstance("购物车下单商品错误");
+			}
+		}
 		for (OrderPayRequest payRequest : payGoods) {
 			GoodsDonSku sku = null;
 			Long goodsId;
@@ -910,6 +921,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				closeOrder(orderMasterDon.getId(), null);
 			});
 		}
+		if (CollUtil.isNotEmpty(shopCartIds)) {
+			shoppingCartDonMapper.deleteBatchIds(shopCartIds);
+		}
 		return orderMasterDon;
 	}
 

+ 7 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/ShoppingCartOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.cyksj.service.order.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.mapper.order.ShoppingCartDonMapper;
@@ -32,6 +33,12 @@ public class ShoppingCartOrderServiceImpl extends ServiceImpl<ShoppingCartDonMap
 	private final OrderDonService orderDonService;
 	@Override
 	public void addGoodsShoppingCart(ShoppingCartDon goodsCartDon) {
+		//最多添加购物车数量30
+		int count = this.count(Wrappers.lambdaQuery(ShoppingCartDon.class)
+				.eq(ShoppingCartDon::getUserId, goodsCartDon.getUserId()));
+		if (count > 30) {
+			throw BusinessRuntimeException.getInstance("最多添加30件商品至购物车");
+		}
 		Long skuId = goodsCartDon.getSkuId();
 		if (skuId == null) {
 			throw BusinessRuntimeException.getInstance("请指定商品添加至购物车");