Selaa lähdekoodia

创建订单时,同时插入OrderDelivery表

baolei 6 kuukautta sitten
vanhempi
commit
4e53cefdc4

+ 2 - 1
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/data/mapper/WxApiProductMapper.java

@@ -5,6 +5,7 @@ import com.xingxi.api.data.domain.MercProdResponse;
 import com.xingxi.business.ProdInventory.mapper.ProdInventoryMapper;
 import com.xingxi.master.merchant.domain.MerchantProd;
 import com.xingxi.master.merchant.mapper.MerchantProdMapper;
+import com.xingxi.master.product.mapper.ProdAttrJointMapper;
 import com.xingxi.master.product.mapper.ProdAttrMapper;
 import com.xingxi.master.product.mapper.ProdMapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -12,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
 import java.util.List;
 
 @Mapper
-public interface WxApiProductMapper extends ProdMapper, MerchantProdMapper, ProdAttrMapper, ProdInventoryMapper {
+public interface WxApiProductMapper extends ProdMapper, MerchantProdMapper, ProdAttrMapper, ProdAttrJointMapper, ProdInventoryMapper {
 
     List<MercProdResponse> selectProductList(MercProdRequest request);
 

+ 74 - 11
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/service/impl/OrderApiServiceImpl.java

@@ -19,9 +19,11 @@ import com.xingxi.api.data.mapper.WxApiProductMapper;
 import com.xingxi.api.model.*;
 import com.xingxi.api.service.OrderServiceI;
 import com.xingxi.business.Order.domain.Order;
+import com.xingxi.business.Order.domain.OrderDelivery;
 import com.xingxi.business.Order.domain.OrderDeliveryExpr;
 import com.xingxi.business.Order.domain.OrderDetail;
 import com.xingxi.business.Order.mapper.OrderDeliveryExprMapper;
+import com.xingxi.business.Order.mapper.OrderDeliveryMapper;
 import com.xingxi.business.Order.mapper.OrderDetailMapper;
 import com.xingxi.business.Order.mapper.OrderMapper;
 import com.xingxi.business.PaymentInfo.domain.PaymentInfo;
@@ -31,10 +33,7 @@ import com.xingxi.business.ProdInventory.domain.ProdInventoryBill;
 import com.xingxi.business.ProdInventory.mapper.ProdInventoryBillMapper;
 import com.xingxi.business.UserAddress.domain.UserAddress;
 import com.xingxi.common.core.domain.entity.SysUser;
-import com.xingxi.common.enums.EDelFlag;
-import com.xingxi.common.enums.EInventoryBillType;
-import com.xingxi.common.enums.EOrderDetailStatus;
-import com.xingxi.common.enums.EOrderStatus;
+import com.xingxi.common.enums.*;
 import com.xingxi.common.exception.BusinessException;
 import com.xingxi.common.mq.bo.order.OrderBO;
 import com.xingxi.common.mq.publisher.order.OrderCreatedMqPublisher;
@@ -45,10 +44,7 @@ import com.xingxi.common.utils.bean.BeanUtils;
 import com.xingxi.common.utils.uuid.IdUtils;
 import com.xingxi.master.merchant.domain.MerchantProd;
 import com.xingxi.master.merchant.mapper.MerchantProdMapper;
-import com.xingxi.master.product.domain.Prod;
-import com.xingxi.master.product.domain.ProdAttrPrice;
-import com.xingxi.master.product.domain.ProdPic;
-import com.xingxi.master.product.domain.ProdVendor;
+import com.xingxi.master.product.domain.*;
 import com.xingxi.master.product.mapper.*;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -71,6 +67,8 @@ class OrderApiServiceImpl implements OrderServiceI {
     @Autowired
     private OrderDetailMapper orderDetailMapper;
     @Autowired
+    private OrderDeliveryMapper orderDeliveryMapper;
+    @Autowired
     private ProdPicMapper prodPicMapper;
     @Autowired
     private OrderDeliveryExprMapper orderDeliveryExprMapper;
@@ -199,6 +197,7 @@ class OrderApiServiceImpl implements OrderServiceI {
         BigDecimal prodAmt = BigDecimal.ZERO;
 
         List<OrderDetail> orderDetailItems = new ArrayList<>();
+
         for (OrderItemDTO orderItemDTO : orderItemDTOS) {
 //            MerchantProd merchantProd = merchantProdMapper.selectMerchantProdByMercProdId(orderItemDTO.getMercProdId());
             MerchantProd condMerchant = new MerchantProd();
@@ -222,13 +221,15 @@ class OrderApiServiceImpl implements OrderServiceI {
                 throw new BusinessException("未查询到商品的供应商");
             }
 
+            ProdAttr prodAttr = prodAttrMapper.selectProdAttrByProdAttrId(merchantProd.getProdAttrId());
+
             OrderDetail orderDetail = new OrderDetail();
             orderDetail.setOrderId(order.getOrderId());
             orderDetail.setOrderDetailStatus(EOrderDetailStatus.ORDERED.getVal());
             orderDetail.setProdId(merchantProd.getProdId());
             orderDetail.setProdName(prod.getProdName());
             orderDetail.setProdAttrId(merchantProd.getProdAttrId());
-            orderDetail.setProdAttrName(prodAttrMapper.selectProdAttrByProdAttrId(merchantProd.getProdAttrId()).getAttrName());
+            orderDetail.setProdAttrName(prodAttr.getAttrName());
             orderDetail.setVendorId(prodVendorList.get(0).getVendorId());
             orderDetail.setQuantity(orderItemDTO.getCount());
 
@@ -298,14 +299,76 @@ class OrderApiServiceImpl implements OrderServiceI {
         order.setProdQuantity(prodQty);
         orderMapper.updateOrder(order);
 
+
+        OrderDetail condOd = new OrderDetail();
+        condOd.setOrderId(order.getOrderId());
+        condOd.setDelFlag(EDelFlag.NO.getVal());
+
+        List<OrderDetail> orderDetailList = orderDetailMapper.selectOrderDetailList(condOd);
+
+        List<OrderDelivery> orderDeliveryList = new ArrayList<>();
+
+        for (OrderDetail od : orderDetailList) {
+
+            ProdAttr prodAttr = prodAttrMapper.selectProdAttrByProdAttrId(od.getProdAttrId());
+
+            if (EAttrType.JOINT.getVal().equalsIgnoreCase(prodAttr.getAttrType())) {
+                ProdAttrJoint condProdAttrJoint = new ProdAttrJoint();
+                condProdAttrJoint.setProdId(prodAttr.getProdId());
+                condProdAttrJoint.setProdAttrId(prodAttr.getProdAttrId());
+
+                List<ProdAttrJoint> prodAttrJointList = wxApiProductMapper.selectProdAttrJointList(condProdAttrJoint);
+
+                for (ProdAttrJoint paj : prodAttrJointList) {
+
+                    OrderDelivery orderDelivery = new OrderDelivery();
+                    orderDelivery.setDelFlag(EDelFlag.NO.getVal());
+                    orderDelivery.setOrderId(od.getOrderId());
+                    orderDelivery.setOrderDetailId(od.getOrderDetailId());
+                    orderDelivery.setProdId(paj.getJointProdId());
+                    orderDelivery.setProdName(wxApiProductMapper.selectProdById(paj.getJointProdId()).getProdName());
+                    orderDelivery.setProdAttrId(paj.getJointProdAttrId());
+                    orderDelivery.setProdAttrName(wxApiProductMapper.selectProdAttrByProdAttrId(paj.getJointProdAttrId()).getAttrName());
+
+                    orderDelivery.setVendorId(od.getVendorId());
+                    orderDelivery.setQuantity(Long.valueOf(od.getQuantity()));
+                    orderDelivery.setDelFlag(EDelFlag.NO.getVal());
+                    orderDelivery.setCreateUser(userId.toString());
+                    orderDelivery.setCreateTime(orderTime);
+                    orderDelivery.setUpdateUser(userId.toString());
+                    orderDelivery.setUpdateTime(orderTime);
+                    orderDeliveryList.add(orderDelivery);
+                }
+            } else {
+                OrderDelivery orderDelivery = new OrderDelivery();
+                orderDelivery.setDelFlag(EDelFlag.NO.getVal());
+                orderDelivery.setOrderId(od.getOrderId());
+                orderDelivery.setOrderDetailId(od.getOrderDetailId());
+                orderDelivery.setProdId(od.getProdId());
+                orderDelivery.setProdName(od.getProdName());
+                orderDelivery.setProdAttrId(od.getProdAttrId());
+                orderDelivery.setProdAttrName(od.getProdAttrName());
+                orderDelivery.setVendorId(od.getVendorId());
+                orderDelivery.setQuantity(Long.valueOf(od.getQuantity()));
+                orderDelivery.setDelFlag(EDelFlag.NO.getVal());
+                orderDelivery.setCreateUser(userId.toString());
+                orderDelivery.setCreateTime(orderTime);
+                orderDelivery.setUpdateUser(userId.toString());
+                orderDelivery.setUpdateTime(orderTime);
+                orderDeliveryList.add(orderDelivery);
+            }
+
+        }
+
+        orderDeliveryMapper.batchInsertOrderDelivery(orderDeliveryList);
+
         orderCreatedEvent(order);
 
         config = wxPayService.getConfig();
 
         WxPayUnifiedOrderV3Result.JsapiResult result = callWxpay(order,currentUser.getWxOpenId(),order.getOrderAmount().intValue(),currentUser.getLoginIp());
-        OrderCreateResponse rtn = new OrderCreateResponse(order,new OrderPaySignDTO(order.getOrderId(),orderNo,result.getPaySign()));
 
-        return rtn;
+        return new OrderCreateResponse(order,new OrderPaySignDTO(order.getOrderId(),orderNo,result.getPaySign()));
     }
 
     @Override