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 676b2d21..e5d16878 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 @@ -611,7 +611,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { logger.info("附件费分账金额{}",orderAttachmentRecordList); if(CollectionUtils.isNotEmpty(orderAttachmentRecordList)){ // 附件费分账. - attachPaymentConfirm(orderAttachmentRecordList.get(0), orderDetailId, orderDetail.getWorkerId(), deptId,orderDetail.getCustomerId()); + attachPaymentConfirm(orderAttachmentRecordList.get(0), orderDetailId, orderDetail.getWorkerId(), deptId,memberId); } // --------------------- 子财务单分账部分 start --------------------- // 子单的实际金额 @@ -719,9 +719,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { // 如果提成>追加金额 则去掉固定提成 只计算比例提成 if (MoneyUtil.lt(masterFee.add(platformFee), changeMoney)) { platformFee = changeMoney.multiply(deptRate).setScale(2, RoundingMode.UP); - masterFee = changeMoney.multiply(teamRete).setScale(2, RoundingMode.UP); } - // 分销抽成 // 1级分销 if (MoneyUtil.lt(oneRate, changeMoney)) { @@ -732,10 +730,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { placeTwoMoney = changeMoney.multiply(twoRate).setScale(2, RoundingMode.UP); } - // 如果是大师傅自己接单,则不需要抽成 - if(AdapayUtils.getWorkerMemberId(workerId, deptId).equals(masterMemberId)){ - masterFee = BigDecimal.ZERO; - } + logger.info("子订单改价分账1级{}2级{}",placeOneMoney,placeTwoMoney); // 上门师傅的报酬 BigDecimal workerFee = changeMoney; @@ -769,11 +764,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { workerFee = workerFee.subtract(platformFee); feeFlag = true; } - if (MoneyUtil.gt0(masterFee)) { - divMembers.add(new DivMember(masterMemberId, MoneyUtil.toS(masterFee), !feeFlag)); - workerFee = workerFee.subtract(masterFee); - feeFlag = true; - } + if (MoneyUtil.gt0(placeOneMoney) && StringUtils.isNotEmpty(placeOne)) { divMembers.add(new DivMember(placeOne, MoneyUtil.toS(placeOneMoney), !feeFlag)); workerFee = workerFee.subtract(placeOneMoney); @@ -785,6 +776,20 @@ public class OrderDetailServiceImpl implements OrderDetailService { if (MoneyUtil.gt0(workerFee)) { divMembers.add(new DivMember(memberId, MoneyUtil.toS(workerFee), !feeFlag)); } + masterFee=workerFee.multiply(teamRete).add(teamMoney).setScale(2, RoundingMode.UP); + if (MoneyUtil.lt(masterFee.add(platformFee), workerFee)) { + masterFee = workerFee.multiply(teamRete).setScale(2, RoundingMode.UP); + } + // 如果是大师傅自己接单,则不需要抽成 + if(AdapayUtils.getWorkerMemberId(workerId, deptId).equals(masterMemberId)){ + masterFee = BigDecimal.ZERO; + } + if (MoneyUtil.gt0(masterFee)) { + divMembers.add(new DivMember(masterMemberId, MoneyUtil.toS(masterFee), !feeFlag)); + workerFee = workerFee.subtract(masterFee); + feeFlag = true; + } + logger.info("大师傅的扣点{},最终的扣完之后的金额{}",masterFee,workerFee); String orderNo = "FCR_" + fcRecord.getId() + "_" + System.currentTimeMillis(); //调用分账 logger.info("子订单[{}]的[改价单]发起分账", orderDetailId); @@ -813,7 +818,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { return workerFee; } - private void attachPaymentConfirm(OrderAttachmentRecord orderAttachmentRecord, Long orderDetailId, Long workerId, Long deptId,Long customerId) throws BaseAdaPayException { + private void attachPaymentConfirm(OrderAttachmentRecord orderAttachmentRecord, Long orderDetailId, Long workerId, Long deptId,String customerId) throws BaseAdaPayException { BigDecimal attachMoney = orderAttachmentRecord.getAttachMoney(); // 扣除罚金后的上门师傅报酬 // workerFee = workerFee.subtract(fineMoney); @@ -821,13 +826,14 @@ public class OrderDetailServiceImpl implements OrderDetailService { // platformFee = platformFee.add(fineMoney); ArrayList divMembers = new ArrayList<>(); // 承担手续费的标志 如果平台抽成为0则大师傅承担手续费 如果大师傅抽成也为0 则由上门师傅自己承担手续费 - String memberId = AdapayUtils.getCustomerMemberId(customerId, deptId); + boolean feeFlag = false; BigDecimal one = null; if (MoneyUtil.gt0(attachMoney)) { - one = attachMoney.multiply(new BigDecimal(0.99)).setScale(2, RoundingMode.DOWN); - divMembers.add(new DivMember(memberId, MoneyUtil.toS(one), false)); - divMembers.add(new DivMember(memberId, MoneyUtil.toS(attachMoney.subtract(one)), true)); + BigDecimal rate = BigDecimal.valueOf(0.99); + one = attachMoney.multiply(rate).setScale(2, RoundingMode.DOWN); + divMembers.add(new DivMember(customerId, MoneyUtil.toS(one), false)); + divMembers.add(new DivMember("0", MoneyUtil.toS(attachMoney.subtract(one)), true)); logger.info("子订单[{}]的[附件费]提现金额", one); feeFlag = true; } @@ -840,7 +846,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { logger.info("子订单[{}]的[附件费]分账成功", orderDetailId); logger.info("子订单[{}]的[附件费]提现金额", one); if (feeFlag){ - drawCash(orderDetailId,deptId,memberId,AdapayUtils.bigDecimalToString(one)); + drawCash(orderDetailId,deptId,customerId,AdapayUtils.bigDecimalToString(one)); } } else { // 分账失败 if (AdapayErrorCode.CONFIRM_AMT_OVER_LIMIT.equals(response.getString("error_code"))) {