修改扣点为三级目录+增加分销扣点

This commit is contained in:
kuang.yife 2023-07-30 19:48:00 +08:00
parent bd6dee6d8c
commit 77e7ae8227
2 changed files with 67 additions and 3 deletions

View File

@ -33,6 +33,11 @@
<artifactId>ghy-worker</artifactId> <artifactId>ghy-worker</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.ghy</groupId>
<artifactId>ghy-custom</artifactId>
</dependency>
<dependency> <dependency>
<groupId>com.ghy</groupId> <groupId>com.ghy</groupId>
<artifactId>ghy-payment</artifactId> <artifactId>ghy-payment</artifactId>

View File

@ -13,9 +13,14 @@ import com.ghy.common.exception.base.BaseException;
import com.ghy.common.utils.AdapayUtils; import com.ghy.common.utils.AdapayUtils;
import com.ghy.common.utils.MoneyUtil; import com.ghy.common.utils.MoneyUtil;
import com.ghy.common.utils.ObjectUtils; import com.ghy.common.utils.ObjectUtils;
import com.ghy.common.utils.StringUtils;
import com.ghy.customer.domain.Customer;
import com.ghy.customer.service.CustomerService;
import com.ghy.goods.domain.DeptGoodsCategory; import com.ghy.goods.domain.DeptGoodsCategory;
import com.ghy.goods.domain.GoodsCategory;
import com.ghy.goods.domain.GoodsStandard; import com.ghy.goods.domain.GoodsStandard;
import com.ghy.goods.service.DeptGoodsCategoryService; import com.ghy.goods.service.DeptGoodsCategoryService;
import com.ghy.goods.service.GoodsCategoryService;
import com.ghy.goods.service.GoodsStandardService; import com.ghy.goods.service.GoodsStandardService;
import com.ghy.order.domain.*; import com.ghy.order.domain.*;
import com.ghy.order.mapper.OrderAddSubtractMapper; import com.ghy.order.mapper.OrderAddSubtractMapper;
@ -100,6 +105,9 @@ public class OrderDetailServiceImpl implements OrderDetailService {
@Resource @Resource
private DeptGoodsCategoryService deptGoodsCategoryService; private DeptGoodsCategoryService deptGoodsCategoryService;
@Resource
private CustomerService customerService;
// Adapay 手续费率 默认0.008 // Adapay 手续费率 默认0.008
@Value("${adapay.fee_rate:0.008}") @Value("${adapay.fee_rate:0.008}")
private String feeRate; private String feeRate;
@ -478,7 +486,10 @@ public class OrderDetailServiceImpl implements OrderDetailService {
Long goodsStandardId = orderGoods.get(0).getGoodsStandardId(); Long goodsStandardId = orderGoods.get(0).getGoodsStandardId();
GoodsStandard goodsStandard = goodsStandardService.selectById(goodsStandardId); GoodsStandard goodsStandard = goodsStandardService.selectById(goodsStandardId);
DeptGoodsCategory deptGoodsCategory = deptGoodsCategoryService.get(goodsStandard.getDeptGoodsCategoryId()); // 第四级规格
DeptGoodsCategory childCategory = deptGoodsCategoryService.get(goodsStandard.getDeptGoodsCategoryId());
// 需要找第三级规格
DeptGoodsCategory deptGoodsCategory = deptGoodsCategoryService.selectOneByGoodsCategoryId(childCategory.getParentCategoryId());
// 修改子订单状态为完成 // 修改子订单状态为完成
updateStatus(orderDetailId, OrderStatus.FINISH.code()); updateStatus(orderDetailId, OrderStatus.FINISH.code());
@ -493,6 +504,31 @@ public class OrderDetailServiceImpl implements OrderDetailService {
// 子单收款人的memberId // 子单收款人的memberId
String memberId = AdapayUtils.getWorkerMemberId(financialDetail.getPayeeId(), deptId); String memberId = AdapayUtils.getWorkerMemberId(financialDetail.getPayeeId(), deptId);
String masterMemberId = AdapayUtils.getWorkerMemberId(workerMaster.getWorkerId(), deptId); String masterMemberId = AdapayUtils.getWorkerMemberId(workerMaster.getWorkerId(), deptId);
String placeId = null;
String parentPlaceId = null;
// 一级分销追加扣点
BigDecimal saleRateOne = new BigDecimal(deptGoodsCategory.getOneRate());
saleRateOne = MoneyUtil.lt0(saleRateOne) ? BigDecimal.ZERO : saleRateOne;
// 二级分销追加扣点
BigDecimal saleRateTwo = new BigDecimal(deptGoodsCategory.getTwoRate());
saleRateTwo = MoneyUtil.lt0(saleRateTwo) ? BigDecimal.ZERO : saleRateTwo;
// 三级分销追加扣点
BigDecimal saleRateThree = new BigDecimal(deptGoodsCategory.getThreeRate());
saleRateThree = MoneyUtil.lt0(saleRateThree) ? BigDecimal.ZERO : saleRateThree;
Customer customer = customerService.selectByCustomerId(orderMaster.getCustomerId());
// 一级分销售
if(customer.getCustomerPlace() != null && customer.getParentCustomerPlace() == null){
placeId = AdapayUtils.getCustomerMemberId(customer.getCustomerPlace(), deptId);
saleRateOne = saleRateOne.add(saleRateTwo).add(saleRateThree);
}else if(customer.getCustomerPlace() != null && customer.getParentCustomerPlace() != null){
parentPlaceId = AdapayUtils.getCustomerMemberId(customer.getParentCustomerPlace(), deptId);
saleRateTwo = saleRateTwo.add(saleRateThree);
}
// 大师傅提成 // 大师傅提成
BigDecimal teamRete = new BigDecimal(workerMaster.getLeaderTeamRate()); BigDecimal teamRete = new BigDecimal(workerMaster.getLeaderTeamRate());
@ -513,7 +549,7 @@ public class OrderDetailServiceImpl implements OrderDetailService {
BigDecimal dtx = BigDecimal.ZERO; BigDecimal dtx = BigDecimal.ZERO;
// 追加金额分账 // 追加金额分账
BigDecimal dtx1 = addPaymentConfirm(orderDetailId, deptId, memberId, masterMemberId, teamRete, teamMoney, pcDeptRate, pcDeptMoney); BigDecimal dtx1 = this.addPaymentConfirm(orderDetailId, deptId, memberId, masterMemberId, teamRete, teamMoney, pcDeptRate, pcDeptMoney, placeId, saleRateOne, parentPlaceId, saleRateTwo);
dtx = dtx.add(dtx1); dtx = dtx.add(dtx1);
// 改价单分账 // 改价单分账
@ -709,12 +745,16 @@ public class OrderDetailServiceImpl implements OrderDetailService {
* @throws BaseAdaPayException AdaPay分账接口可能抛出的异常 * @throws BaseAdaPayException AdaPay分账接口可能抛出的异常
*/ */
private BigDecimal addPaymentConfirm(Long orderDetailId, Long deptId, String memberId, String masterMemberId, private BigDecimal addPaymentConfirm(Long orderDetailId, Long deptId, String memberId, String masterMemberId,
BigDecimal teamRete, BigDecimal teamMoney, BigDecimal pcDeptRate, BigDecimal pcDeptMoney) throws BaseAdaPayException { BigDecimal teamRete, BigDecimal teamMoney, BigDecimal pcDeptRate, BigDecimal pcDeptMoney,
BigDecimal oneRate, String placeOne, BigDecimal twoRate, String placeTwo) throws BaseAdaPayException {
BigDecimal dtx = BigDecimal.ZERO; BigDecimal dtx = BigDecimal.ZERO;
List<OrderAddSubtract> oasList = orderAddSubtractMapper.select(new OrderAddSubtract() List<OrderAddSubtract> oasList = orderAddSubtractMapper.select(new OrderAddSubtract()
.setOrderDetailId(orderDetailId).setPayStatus(PayStatus.PAID.getCode())); .setOrderDetailId(orderDetailId).setPayStatus(PayStatus.PAID.getCode()));
List<OrderAddSubtract> adds = oasList.stream().filter(oas -> MoneyUtil.gt0(oas.getMoney())).collect(Collectors.toList()); List<OrderAddSubtract> adds = oasList.stream().filter(oas -> MoneyUtil.gt0(oas.getMoney())).collect(Collectors.toList());
for (OrderAddSubtract oas : adds) { for (OrderAddSubtract oas : adds) {
BigDecimal placeOneMoney = BigDecimal.ZERO;
BigDecimal placeTwoMoney = BigDecimal.ZERO;
BigDecimal oasMoney = oas.getMoney(); BigDecimal oasMoney = oas.getMoney();
// 平台抽成 // 平台抽成
BigDecimal platformFee = oasMoney.multiply(pcDeptRate).add(pcDeptMoney).setScale(2, RoundingMode.UP); BigDecimal platformFee = oasMoney.multiply(pcDeptRate).add(pcDeptMoney).setScale(2, RoundingMode.UP);
@ -725,6 +765,17 @@ public class OrderDetailServiceImpl implements OrderDetailService {
platformFee = oasMoney.multiply(pcDeptRate).setScale(2, RoundingMode.UP); platformFee = oasMoney.multiply(pcDeptRate).setScale(2, RoundingMode.UP);
masterFee = oasMoney.multiply(teamRete).setScale(2, RoundingMode.UP); masterFee = oasMoney.multiply(teamRete).setScale(2, RoundingMode.UP);
} }
// 分销抽成
// 1级分销
if (MoneyUtil.lt(oneRate, oasMoney)) {
placeOneMoney = oasMoney.multiply(oneRate).setScale(2, RoundingMode.UP);
}
// 2级分销
if (MoneyUtil.lt(twoRate, oasMoney)) {
placeTwoMoney = oasMoney.multiply(twoRate).setScale(2, RoundingMode.UP);
}
// 上门师傅的报酬 // 上门师傅的报酬
BigDecimal workerFee = oasMoney.subtract(platformFee).subtract(masterFee); BigDecimal workerFee = oasMoney.subtract(platformFee).subtract(masterFee);
// 分账信息 // 分账信息
@ -743,6 +794,14 @@ public class OrderDetailServiceImpl implements OrderDetailService {
divMembers.add(new DivMember(memberId, MoneyUtil.toS(workerFee), !feeFlag)); divMembers.add(new DivMember(memberId, MoneyUtil.toS(workerFee), !feeFlag));
dtx = dtx.add(workerFee); dtx = dtx.add(workerFee);
} }
if (StringUtils.isNotEmpty(placeOne)) {
divMembers.add(new DivMember(placeOne, MoneyUtil.toS(placeOneMoney), !feeFlag));
dtx = dtx.add(placeOneMoney);
}
if (StringUtils.isNotEmpty(placeTwo)) {
divMembers.add(new DivMember(placeTwo, MoneyUtil.toS(placeTwoMoney), !feeFlag));
dtx = dtx.add(placeTwoMoney);
}
String orderNo = "OAS_" + oas.getId() + "_" + System.currentTimeMillis(); String orderNo = "OAS_" + oas.getId() + "_" + System.currentTimeMillis();
//调用分账 //调用分账
logger.info("子订单[{}]的追加单[{}]发起分账: {}", orderDetailId, oas.getId(), JSON.toJSONString(divMembers)); logger.info("子订单[{}]的追加单[{}]发起分账: {}", orderDetailId, oas.getId(), JSON.toJSONString(divMembers));