zhijiezhao 4 hónapja
szülő
commit
ca2dbc83d1

+ 2 - 0
src/main/java/com/caimei/modules/order/dao/NewOrderDao.java

@@ -373,4 +373,6 @@ public interface NewOrderDao extends CrudDao<NewOrder> {
     Integer findUserIdentityByOrder(Integer orderId);
 
     Integer findOrderId(Integer shopOrderId);
+
+    List<CmSettleVo> findSplitAccounts(String shopOrderId);
 }

+ 14 - 0
src/main/java/com/caimei/modules/order/entity/CmSettleVo.java

@@ -0,0 +1,14 @@
+package com.caimei.modules.order.entity;
+
+import com.thinkgem.jeesite.common.persistence.DataEntity;
+import lombok.Data;
+
+@Data
+public class CmSettleVo extends DataEntity<CmSettleVo> {
+    private static final long serialVersionUID = 1L;
+
+    private String subUserNo;
+    private Double splitAccount;
+    private Integer productType;
+
+}

+ 53 - 33
src/main/java/com/caimei/modules/order/service/CmPayShopService.java

@@ -425,7 +425,7 @@ public class CmPayShopService extends CrudService<CmPayShopDao, CmPayShop> {
             List<String> ids = payRecords.stream().map(CmPayShopRecord::getShopOrderID).collect(Collectors.toList());
             List<NewShopOrder> csos = new ArrayList<>();
             if (null != ids && ids.size() > 0) {
-                csos = newShopOrderDao.findByShopOrderIDs(ids,cmPayShop.getId());
+                csos = newShopOrderDao.findByShopOrderIDs(ids, cmPayShop.getId());
             }
             for (NewShopOrder so : csos) {
                 CmPayShopRecord cmPayShopRecord = payRecords.stream().filter(p -> p.getShopOrderID().equals(so.getShopOrderID().toString())).findAny().get();
@@ -1454,44 +1454,64 @@ public class CmPayShopService extends CrudService<CmPayShopDao, CmPayShop> {
         }
     }
 
+//    @Transactional(readOnly = false, rollbackFor = Exception.class)
+//    public void settlement(String shopOrderId) throws Exception {
+//        Integer orderId = newOrderDao.findOrderId(Integer.valueOf(shopOrderId));
+//        Integer identity = newOrderDao.findUserIdentityByOrder(orderId);
+//        // 结算付供应商
+//        String format = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss.SSS").format(new Date());
+//        String substring = format.substring(20);
+//        String P3_customerNumber = newOrderDao.findSplitCode(shopOrderId);
+//        Double shopCost = newOrderDao.findShopCost(shopOrderId);
+//        settleOrder("JSCB" + shopOrderId + substring, shopCost, P3_customerNumber, shopOrderId, 1);
+//        // 结算佣金 佣金目前分到网络
+//        Double payAmount = newOrderDao.findPayAmount(shopOrderId);
+//        if (null != payAmount && payAmount > 0) {
+//            settleOrder("JSYJ" + shopOrderId + substring, payAmount, Constant.CUSTOMERNUM2, shopOrderId, 2);
+//        }
+//        // 有组织佣金/付第三方的情况下,还需要结算组织佣金,付第三方
+//        Double payOrganize = newOrderDao.findPayOrganize(shopOrderId);
+//        if (null != payOrganize && payOrganize > 0) {
+//            String split = null;
+//            //分销人员分账修改报备记录
+//            if (identity == 8) {
+//                CmReportingClub cmReportingClubById = cmReportingClubMapper.getByCmReportingClub(new CmReportingClub().orderId(orderId).orderStatus(1));
+//                if (null != cmReportingClubById) {
+//                    //分销团队分账号
+//                    split = cmReportingClubById.splitCode();
+//                    cmReportingClubMapper.updateCmReportingClub(new CmReportingClub().id(cmReportingClubById.id()).splitSettleStatus(3).splitSettleTime(new Date()));
+//                } else {
+//                    logger.info("分销订单分账结算异常,子订单Id:" + shopOrderId + ">>>>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+//                    return;
+//                }
+//            } else {
+//                split = newOrderDao.findOrganizeSplitByShopOrder(shopOrderId);
+//            }
+//            settleOrder("JSZZ" + shopOrderId + substring, payOrganize, split, shopOrderId, 3);
+//        }
+//        Double payOther = newOrderDao.getOtherPaid(shopOrderId);
+//        if (null != payOther && payOther > 0) {
+//            settleOrder("JSDSF" + shopOrderId + substring, payOther, Constant.CUSTOMERNUM3, shopOrderId, 4);
+//        }
+//    }
+
     @Transactional(readOnly = false, rollbackFor = Exception.class)
     public void settlement(String shopOrderId) throws Exception {
-        Integer orderId = newOrderDao.findOrderId(Integer.valueOf(shopOrderId));
-        Integer identity = newOrderDao.findUserIdentityByOrder(orderId);
         // 结算付供应商
         String format = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss.SSS").format(new Date());
         String substring = format.substring(20);
-        String P3_customerNumber = newOrderDao.findSplitCode(shopOrderId);
-        Double shopCost = newOrderDao.findShopCost(shopOrderId);
-        settleOrder("JSCB" + shopOrderId + substring, shopCost, P3_customerNumber, shopOrderId, 1);
-        // 结算佣金 佣金目前分到网络
-        Double payAmount = newOrderDao.findPayAmount(shopOrderId);
-        if (null != payAmount && payAmount > 0) {
-            settleOrder("JSYJ" + shopOrderId + substring, payAmount, Constant.CUSTOMERNUM2, shopOrderId, 2);
-        }
-        // 有组织佣金/付第三方的情况下,还需要结算组织佣金,付第三方
-        Double payOrganize = newOrderDao.findPayOrganize(shopOrderId);
-        if (null != payOrganize && payOrganize > 0) {
-            String split = null;
-            //分销人员分账修改报备记录
-            if (identity == 8) {
-                CmReportingClub cmReportingClubById = cmReportingClubMapper.getByCmReportingClub(new CmReportingClub().orderId(orderId).orderStatus(1));
-                if (null != cmReportingClubById) {
-                    //分销团队分账号
-                    split = cmReportingClubById.splitCode();
-                    cmReportingClubMapper.updateCmReportingClub(new CmReportingClub().id(cmReportingClubById.id()).splitSettleStatus(3).splitSettleTime(new Date()));
-                } else {
-                    logger.info("分销订单分账结算异常,子订单Id:" + shopOrderId + ">>>>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
-                    return;
-                }
-            } else {
-                split = newOrderDao.findOrganizeSplitByShopOrder(shopOrderId);
+        List<CmSettleVo> settleVos = newOrderDao.findSplitAccounts(shopOrderId);
+
+        for (CmSettleVo settleVo : settleVos) {
+            if (1 == settleVo.getProductType()) {
+                settleOrder("JSCB" + shopOrderId + substring, settleVo.getSplitAccount(), settleVo.getSubUserNo(), shopOrderId, 1);
+            }
+            if (3 == settleVo.getProductType()) {
+                settleOrder("JSYJ" + shopOrderId + substring, settleVo.getSplitAccount(), Constant.CUSTOMERNUM2, shopOrderId, 2);
+            }
+            if (5 == settleVo.getProductType()) {
+                settleOrder("JSZZ" + shopOrderId + substring, settleVo.getSplitAccount(), settleVo.getSubUserNo(), shopOrderId, 3);
             }
-            settleOrder("JSZZ" + shopOrderId + substring, payOrganize, split, shopOrderId, 3);
-        }
-        Double payOther = newOrderDao.getOtherPaid(shopOrderId);
-        if (null != payOther && payOther > 0) {
-            settleOrder("JSDSF" + shopOrderId + substring, payOther, Constant.CUSTOMERNUM3, shopOrderId, 4);
         }
     }
 

+ 3 - 1
src/main/java/com/caimei/modules/order/service/SplitAccountService.java

@@ -90,7 +90,9 @@ public class SplitAccountService extends BaseService {
             SplitAccountPo splitAccount = new SplitAccountPo();
             splitAccount.setOrderId(shopOrder.getOrderId());
             splitAccount.setShopOrderId(shopOrder.getShopOrderId());
-            // 前台获取金额
+            /** 前台获取金额
+             * (暂定前台输入金额未计算手续费,采美和第三方分帐出去金额总量的0.1%为手续费,从成本扣除)
+             */
             splitAccount.setSplitAccount(Double.parseDouble(rules[1]));
             splitAccount.setProductType(productType);
             splitAccount.setType(type);

+ 1 - 1
src/main/java/com/caimei/modules/order/web/CmPayShopController.java

@@ -787,7 +787,7 @@ public class CmPayShopController extends BaseController {
     @ResponseBody
     public Map<String, Object> splitEdit(String shopOrderId, String splits) {
         Map<String, Object> res = new HashMap<>();
-//        splitAccountService.SplitByHand(shopOrderId, splits);
+        splitAccountService.SplitByHand(shopOrderId, splits);
         res.put("success", true);
         return res;
     }

+ 7 - 0
src/main/resources/mappings/modules/order/OrderMapper.xml

@@ -2100,6 +2100,13 @@
         where cso.shopOrderId = #{shopOrderId}
         limit 0,1
     </select>
+    <select id="findSplitAccounts" resultType="com.caimei.modules.order.entity.CmSettleVo">
+        SELECT productType,subUserNo,splitAccount
+        FROM cm_split_account
+        where shopOrderId = #{shopOrderId}
+        and payStatus = 1
+        and settleStatus = 0
+    </select>
 
     <insert id="addCmOrder" parameterType="com.caimei.modules.order.entity.NewOrder" useGeneratedKeys="true" keyProperty="orderID">
         insert into cm_order