Kaynağa Gözat

分账逻辑修改

zhijiezhao 3 yıl önce
ebeveyn
işleme
dc68a8f76a

+ 4 - 0
src/main/java/com/caimei365/order/model/vo/OrderProductVo.java

@@ -14,6 +14,10 @@ import java.math.BigDecimal;
 @Data
 @Data
 public class OrderProductVo implements Serializable {
 public class OrderProductVo implements Serializable {
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
+    /**
+     * 商品分账商户号
+     */
+    private String splitCode;
     /**
     /**
      * 商品Id
      * 商品Id
      */
      */

+ 9 - 15
src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java

@@ -1045,18 +1045,12 @@ public class PayOrderServiceImpl implements PayOrderService {
                 }
                 }
                 List<SplitAccountPo> splitBillDetail = setSplitAccountDetail(order, payParam);
                 List<SplitAccountPo> splitBillDetail = setSplitAccountDetail(order, payParam);
                 List<Map<String, String>> maps = new ArrayList<>();
                 List<Map<String, String>> maps = new ArrayList<>();
-                List<ShopOrderVo> shopOrderList = orderCommonMapper.getShopOrderListByOrderId(order.getOrderId());
-                //供应商子商户总金额
-                for (ShopOrderVo shopOrder : shopOrderList) {
-                    double shopTotalAmount = 0.00;
-                    String subUserNo = "";
-                    for (SplitAccountPo account : splitBillDetail) {
-                        if (null != account.getType() && 4 == account.getType() && shopOrder.getShopId().equals(account.getShopId())) {
-                            shopTotalAmount = MathUtil.add(shopTotalAmount, account.getSplitAccount()).doubleValue();
-                            subUserNo = account.getSubUserNo();
-                        }
+                //供应商子商户金额
+                for (SplitAccountPo account : splitBillDetail) {
+                    if (null != account.getType() && 4 == account.getType()) {
+                        //每个有供应商子商户的分账给对应供应商子商户
+                        addMaps(maps, account.getSplitAccount(), account.getSubUserNo());
                     }
                     }
-                    addMaps(maps, shopTotalAmount, subUserNo);
                 }
                 }
                 //公账-专票总金额,私账-无票总金额,公账-普票总金额
                 //公账-专票总金额,私账-无票总金额,公账-普票总金额
                 //佣金进网络
                 //佣金进网络
@@ -1184,7 +1178,6 @@ public class PayOrderServiceImpl implements PayOrderService {
                     splitAmount = 0.00;
                     splitAmount = 0.00;
                 }
                 }
             }
             }
-            String commercialCode = payOrderMapper.getShopCommercialCode(orderProduct.getShopId());
             if (costPrice > 0) {
             if (costPrice > 0) {
                 SplitAccountPo splitAccount = new SplitAccountPo();
                 SplitAccountPo splitAccount = new SplitAccountPo();
                 splitAccount.setOrderId(order.getOrderId());
                 splitAccount.setOrderId(order.getOrderId());
@@ -1192,10 +1185,10 @@ public class PayOrderServiceImpl implements PayOrderService {
                 splitAccount.setShopId(orderProduct.getShopId());
                 splitAccount.setShopId(orderProduct.getShopId());
                 splitAccount.setSplitAccount(costPrice);
                 splitAccount.setSplitAccount(costPrice);
                 splitAccount.setProductType(1);
                 splitAccount.setProductType(1);
-                if (StringUtils.isNotBlank(commercialCode)) {
-                    // 供应商拥有子商户号
+                if (StringUtils.isNotBlank(orderProduct.getSplitCode())) {
+                    // 该商品设置了商户号
                     splitAccount.setType(4);
                     splitAccount.setType(4);
-                    splitAccount.setSubUserNo(commercialCode);
+                    splitAccount.setSubUserNo(orderProduct.getSplitCode());
                 } else {
                 } else {
                     //含税或者不含税看票
                     //含税或者不含税看票
                     if (0 == orderProduct.getIncludedTax() || 1 == orderProduct.getIncludedTax()) {
                     if (0 == orderProduct.getIncludedTax() || 1 == orderProduct.getIncludedTax()) {
@@ -1256,6 +1249,7 @@ public class PayOrderServiceImpl implements PayOrderService {
                         splitAccount.setType(2);
                         splitAccount.setType(2);
                         splitAccount.setSubUserNo(PayUtil.privateAccountNo);
                         splitAccount.setSubUserNo(PayUtil.privateAccountNo);
                     }
                     }
+                    log.info("付供应商运费分账参数------------->" + splitAccount);
                     list.add(splitAccount);
                     list.add(splitAccount);
                 }
                 }
             }
             }

+ 2 - 1
src/main/resources/mapper/OrderCommonMapper.xml

@@ -245,7 +245,8 @@
         cop.notOutStore,
         cop.notOutStore,
         cop.isActProduct AS actProduct,
         cop.isActProduct AS actProduct,
         cop.productType,
         cop.productType,
-        p.productCategory as productCategory
+        p.productCategory as productCategory,
+        p.splitCode
         FROM cm_order_product cop
         FROM cm_order_product cop
         LEFT JOIN product p ON cop.productID = p.productID
         LEFT JOIN product p ON cop.productID = p.productID
         WHERE orderID = #{orderId}
         WHERE orderID = #{orderId}

+ 2 - 1
src/main/resources/mapper/PayOrderMapper.xml

@@ -247,7 +247,8 @@
         AND payStatus = 1 AND productType = 1
         AND payStatus = 1 AND productType = 1
     </select>
     </select>
     <select id="getShopCommercialCode" resultType="java.lang.String">
     <select id="getShopCommercialCode" resultType="java.lang.String">
-        SELECT commercialCode FROM shop WHERE shopID = #{shopId}
+        SELECT commercialCode FROM cm_shop_splitcode WHERE shopID = #{shopId}
+        limit 1
     </select>
     </select>
     <select id="getPaidShipping" resultType="java.lang.Double">
     <select id="getPaidShipping" resultType="java.lang.Double">
         SELECT SUM(splitAccount)
         SELECT SUM(splitAccount)