|
@@ -102,7 +102,7 @@ public class SubmitOrderListener {
|
|
|
// 订单地址id
|
|
|
Long addrOrderId = userAddrOrder.getAddrOrderId();
|
|
|
|
|
|
- if(CollectionUtils.isNotEmpty(shopCartOrders)) {
|
|
|
+ if (CollectionUtils.isNotEmpty(shopCartOrders)) {
|
|
|
// 每个店铺生成一个订单
|
|
|
for (ShopCartOrderDto shopCartOrderDto : shopCartOrders) {
|
|
|
Double sumPlatformAmount = 0.0;
|
|
@@ -114,14 +114,12 @@ public class SubmitOrderListener {
|
|
|
|
|
|
// 订单商品名称
|
|
|
StringBuilder orderProdName = new StringBuilder(100);
|
|
|
-
|
|
|
List<OrderItem> orderItems = new ArrayList<>();
|
|
|
-
|
|
|
List<ShopCartItemDiscountDto> shopCartItemDiscounts = shopCartOrderDto.getShopCartItemDiscounts();
|
|
|
for (ShopCartItemDiscountDto shopCartItemDiscount : shopCartItemDiscounts) {
|
|
|
List<ShopCartItemDto> shopCartItems = shopCartItemDiscount.getShopCartItems();
|
|
|
for (ShopCartItemDto shopCartItem : shopCartItems) {
|
|
|
- Sku sku = checkAndGetSku(shopCartItem.getSkuId(), shopCartItem, skuStocksMap);
|
|
|
+ Sku sku = checkAndGetSku(shopCartItem.getSkuId(), mergerOrder.getPlatform(), shopCartItem, skuStocksMap);
|
|
|
Product product = checkAndGetProd(shopCartItem.getProdId(), shopCartItem, prodStocksMap);
|
|
|
OrderItem orderItem = new OrderItem();
|
|
|
orderItem.setShopId(shopId);
|
|
@@ -141,6 +139,7 @@ public class SubmitOrderListener {
|
|
|
//平台的补贴优惠金额
|
|
|
orderItem.setPlatformShareReduce(shopCartItem.getPlatformShareReduce());
|
|
|
// 实际订单项支付金额
|
|
|
+ //TODO wangjian 根据platform来计算是否优先扣减积分抵扣
|
|
|
orderItem.setActualTotal(shopCartItem.getActualTotal());
|
|
|
// 分摊优惠金额
|
|
|
orderItem.setShareReduce(shopCartItem.getShareReduce());
|
|
@@ -175,6 +174,7 @@ public class SubmitOrderListener {
|
|
|
// 商品总额
|
|
|
order.setTotal(shopCartOrderDto.getTotal());
|
|
|
// 实际总额
|
|
|
+ //TODO wangjian 根据platform来计算是否优先扣减积分抵扣
|
|
|
order.setActualTotal(shopCartOrderDto.getActualTotal());
|
|
|
order.setStatus(OrderStatus.UNPAY.value());
|
|
|
order.setChannelId(Long.valueOf(mergerOrder.getPlatform()));
|
|
@@ -205,7 +205,7 @@ public class SubmitOrderListener {
|
|
|
orderSettlement.setVersion(0);
|
|
|
orderSettlement.setPayScore(0);
|
|
|
//如果用使用积分,结算表将积分价格插入
|
|
|
- if(mergerOrder.getIsScorePay() != null && mergerOrder.getIsScorePay() == 1){
|
|
|
+ if (mergerOrder.getIsScorePay() != null && mergerOrder.getIsScorePay() == 1) {
|
|
|
orderSettlement.setPayScore(shopCartOrderDto.getUseScore());
|
|
|
}
|
|
|
orderSettlementMapper.insert(orderSettlement);
|
|
@@ -218,24 +218,24 @@ public class SubmitOrderListener {
|
|
|
}
|
|
|
|
|
|
//TODO wangjia 修改本地库存
|
|
|
- // 更新sku库存
|
|
|
- skuStocksMap.forEach((key, sku) -> {
|
|
|
-
|
|
|
- if (skuMapper.updateStocks(sku) == 0) {
|
|
|
- skuService.removeSkuCacheBySkuId(key, sku.getProdId());
|
|
|
- productService.removeProductCacheByProdId(sku.getProdId());
|
|
|
- throw new GlobalException("商品:[" + sku.getProdName() + "]库存不足");
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
-// 更新商品库存
|
|
|
- prodStocksMap.forEach((prodId, prod) -> {
|
|
|
-
|
|
|
- if (productMapper.updateStocks(prod) == 0) {
|
|
|
- productService.removeProductCacheByProdId(prodId);
|
|
|
- throw new GlobalException("商品:[" + prod.getProdName() + "]库存不足");
|
|
|
- }
|
|
|
- });
|
|
|
+// // 更新sku库存
|
|
|
+// skuStocksMap.forEach((key, sku) -> {
|
|
|
+//
|
|
|
+// if (skuMapper.updateStocks(sku) == 0) {
|
|
|
+// skuService.removeSkuCacheBySkuId(key, sku.getProdId());
|
|
|
+// productService.removeProductCacheByProdId(sku.getProdId());
|
|
|
+// throw new GlobalException("商品:[" + sku.getProdName() + "]库存不足");
|
|
|
+// }
|
|
|
+// });
|
|
|
+//
|
|
|
+//// 更新商品库存
|
|
|
+// prodStocksMap.forEach((prodId, prod) -> {
|
|
|
+//
|
|
|
+// if (productMapper.updateStocks(prod) == 0) {
|
|
|
+// productService.removeProductCacheByProdId(prodId);
|
|
|
+// throw new GlobalException("商品:[" + prod.getProdName() + "]库存不足");
|
|
|
+// }
|
|
|
+// });
|
|
|
|
|
|
}
|
|
|
|
|
@@ -276,10 +276,36 @@ public class SubmitOrderListener {
|
|
|
|
|
|
@SuppressWarnings({"Duplicates"})
|
|
|
private Sku checkAndGetSku(Long skuId, ShopCartItemDto shopCartItem, Map<Long, Sku> skuStocksMap) {
|
|
|
- //TODO wangjian 先让接口正常 shopCartItem
|
|
|
- shopCartItem.setProdCount(9);
|
|
|
// 获取sku信息
|
|
|
- Sku sku = skuService.getSkuBySkuId(skuId,1,158L);
|
|
|
+ Sku sku = skuService.getSkuBySkuId(skuId);
|
|
|
+ if (sku == null) {
|
|
|
+ throw new GlobalException("购物车包含无法识别的商品");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (sku.getStatus() != 1) {
|
|
|
+ throw new GlobalException("商品[" + sku.getProdName() + "]已下架");
|
|
|
+ }
|
|
|
+ // -1为无限库存
|
|
|
+ if (sku.getActualStocks() != -1 && shopCartItem.getProdCount() > sku.getActualStocks()) {
|
|
|
+ throw new GlobalException("商品:[" + sku.getProdName() + "]库存不足");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (sku.getActualStocks() != -1) {
|
|
|
+ Sku mapSku = new Sku();
|
|
|
+ mapSku.setProdId(sku.getProdId());
|
|
|
+ // 这里的库存是改变的库存
|
|
|
+ mapSku.setStocks(shopCartItem.getProdCount());
|
|
|
+ mapSku.setSkuId(sku.getSkuId());
|
|
|
+ mapSku.setProdName(sku.getProdName());
|
|
|
+ skuStocksMap.put(sku.getSkuId(), mapSku);
|
|
|
+ }
|
|
|
+ return sku;
|
|
|
+ }
|
|
|
+
|
|
|
+ @SuppressWarnings({"Duplicates"})
|
|
|
+ private Sku checkAndGetSku(Long skuId, Integer platform, ShopCartItemDto shopCartItem, Map<Long, Sku> skuStocksMap) {
|
|
|
+ // 获取sku信息
|
|
|
+ Sku sku = skuService.getSkuBySkuId(skuId, platform, shopCartItem.getShopId());
|
|
|
if (sku == null) {
|
|
|
throw new GlobalException("购物车包含无法识别的商品");
|
|
|
}
|