From 75c06e64573a4a794a3cfd536720f3eef11468ff Mon Sep 17 00:00:00 2001 From: cb <275647614@qq.com> Date: Tue, 10 Jun 2025 18:01:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8A=A0=E4=BB=B7=E7=9A=84?= =?UTF-8?q?=E6=88=AA=E7=95=99=E6=89=A3=E7=82=B9=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/OrderDetailServiceImpl.java | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java index 6f2d7bf5..ebf8c7fe 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -582,6 +582,12 @@ public class OrderDetailServiceImpl implements OrderDetailService { pcDeptRate = MoneyUtil.lt0(pcDeptRate) ? BigDecimal.ZERO : pcDeptRate; BigDecimal pcDeptMoney = MoneyUtil.lt0(deptGoodsCategory.getPcDeptMoney()) ? BigDecimal.ZERO : deptGoodsCategory.getPcDeptMoney(); logger.info("平台追加抽成{},费率{}", pcDeptMoney, pcDeptRate); + BigDecimal retainRate = new BigDecimal(deptGoodsCategory.getRetainRate()); + retainRate = MoneyUtil.lt0(retainRate) ? BigDecimal.ZERO : retainRate; + BigDecimal retainMoney = MoneyUtil.lt0(deptGoodsCategory.getRetainMoney()) ? BigDecimal.ZERO : deptGoodsCategory.getPcDeptMoney(); + + + BigDecimal dtx = BigDecimal.ZERO; // 追加金额分账 @@ -602,7 +608,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { changeMoney = fcRecord.getChangeMoney(); logger.info("子订单加价金额{}", changeMoney); BigDecimal dtx2 = changePaymentConfirm(fcRecord, orderDetailId, orderDetail.getWorkerId(), deptId, memberId, - masterMemberId, teamRete, teamMoney, deptRate, deptMoney, saleRateThree, placeId, saleRateTwo, parentPlaceId); + masterMemberId, teamRete, teamMoney, deptRate, deptMoney, saleRateThree, placeId, saleRateTwo, parentPlaceId,retainRate); // dtx = dtx.add(dtx2); logger.info("子订单加价记录{}加价完毕{}", dtx2, dtx); } @@ -684,7 +690,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { // 增加手续费财务子单 FinancialDetail financialDetail1 = new FinancialDetail(); financialDetail1.setOrderDetailId(orderDetailId); - financialDetail1.setFinancialDetailType(2); + financialDetail1.setFinancialDetailType(6); financialDetail1.setPayMoney(commissionAmount); financialDetail1.setPayTime(new Date()); financialDetail1.setFinancialMasterId(financialMasterId); @@ -745,7 +751,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { private BigDecimal changePaymentConfirm(FinancialChangeRecord fcRecord, Long orderDetailId, Long workerId, Long deptId, String memberId, String masterMemberId, BigDecimal teamRete, BigDecimal teamMoney, BigDecimal deptRate, BigDecimal deptMoney, - BigDecimal oneRate, String placeOne, BigDecimal twoRate, String placeTwo) throws BaseAdaPayException { + BigDecimal oneRate, String placeOne, BigDecimal twoRate, String placeTwo,BigDecimal retainRate) throws BaseAdaPayException { BigDecimal changeMoney = fcRecord.getChangeMoney(); // 分销金额 BigDecimal placeOneMoney = BigDecimal.ZERO; @@ -754,20 +760,24 @@ public class OrderDetailServiceImpl implements OrderDetailService { BigDecimal platformFee = changeMoney.multiply(deptRate).add(deptMoney).setScale(2, RoundingMode.UP); // 大师傅抽成 BigDecimal masterFee = changeMoney.multiply(teamRete).add(teamMoney).setScale(2, RoundingMode.UP); + BigDecimal retainRateMoney=BigDecimal.ZERO; + // 如果提成>追加金额 则去掉固定提成 只计算比例提成 if (MoneyUtil.lt(masterFee.add(platformFee), changeMoney)) { - platformFee = changeMoney.multiply(deptRate).setScale(2, RoundingMode.UP); + platformFee = changeMoney.multiply(deptRate).setScale(2, RoundingMode.DOWN); } // 分销抽成 // 1级分销 if (MoneyUtil.lt(oneRate, changeMoney)) { - placeOneMoney = changeMoney.multiply(oneRate).setScale(2, RoundingMode.UP); + placeOneMoney = changeMoney.multiply(oneRate).setScale(2, RoundingMode.DOWN); } // 2级分销 if (MoneyUtil.lt(twoRate, changeMoney)) { - placeTwoMoney = changeMoney.multiply(twoRate).setScale(2, RoundingMode.UP); + placeTwoMoney = changeMoney.multiply(twoRate).setScale(2, RoundingMode.DOWN); + } + if (MoneyUtil.lt(retainRate, changeMoney)) { + retainRateMoney = changeMoney.multiply(retainRate).setScale(2, RoundingMode.DOWN); } - logger.info("子订单改价分账1级{}2级{}", placeOneMoney, placeTwoMoney); // 上门师傅的报酬 @@ -802,7 +812,12 @@ public class OrderDetailServiceImpl implements OrderDetailService { workerFee = workerFee.subtract(platformFee); feeFlag = true; } - + //截留扣点 + if (MoneyUtil.gt0(retainRate)) { + divMembers.add(new DivMember("0", MoneyUtil.toS(retainRateMoney), true)); + workerFee = workerFee.subtract(retainRateMoney); + feeFlag = true; + } if (MoneyUtil.gt0(placeOneMoney) && StringUtils.isNotEmpty(placeOne)) { divMembers.add(new DivMember(placeOne, MoneyUtil.toS(placeOneMoney), !feeFlag)); workerFee = workerFee.subtract(placeOneMoney);