修改扣点为三级目录+增加分销扣点
This commit is contained in:
parent
bd6dee6d8c
commit
77e7ae8227
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue