|
@@ -684,8 +684,10 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
rechargeDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
|
|
|
rechargeDetail.setUserId(userId);
|
|
|
rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
|
|
|
- rechargeDetail.setComAmount(studentPaymentOrder.getComAmount());
|
|
|
- rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount());
|
|
|
+ if (studentPaymentOrder.getComAmount() != null) {
|
|
|
+ rechargeDetail.setComAmount(studentPaymentOrder.getComAmount().negate());
|
|
|
+ rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount().negate());
|
|
|
+ }
|
|
|
sysUserCashAccountDetailService.insert(rechargeDetail);
|
|
|
//缴费
|
|
|
SysUserCashAccountDetail paymentDetail = new SysUserCashAccountDetail();
|
|
@@ -696,11 +698,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
paymentDetail.setTransNo(studentPaymentOrder.getTransNo());
|
|
|
paymentDetail.setType(PlatformCashAccountDetailTypeEnum.GOODS_SELL);
|
|
|
paymentDetail.setUserId(userId);
|
|
|
- rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
|
|
|
- if (studentPaymentOrder.getComAmount() != null) {
|
|
|
- rechargeDetail.setComAmount(studentPaymentOrder.getComAmount().negate());
|
|
|
- rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount().negate());
|
|
|
- }
|
|
|
+ sysUserCashAccountDetailService.insert(paymentDetail);
|
|
|
saveSellOrder(studentPaymentOrder.getOrderNo());
|
|
|
} else if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
|
|
|
if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
@@ -751,8 +749,9 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
BigDecimal marketAmount = studentGoodsSell.getMarketAmount();
|
|
|
//可用减免金额
|
|
|
BigDecimal usableMarketAmount = marketAmount;
|
|
|
-
|
|
|
+ //包含减免余额的总金额
|
|
|
BigDecimal totalAmount = goodsSellDtos.stream().map(e -> e.getTotalGoodsPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal subtract = totalAmount.subtract(marketAmount);
|
|
|
for (int i = 0; i < goodsId.size(); i++) {
|
|
|
Integer e = goodsId.get(i);
|
|
|
GoodsSellDto goodsSellDto = collect.get(e).get(0);
|
|
@@ -767,7 +766,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
sellOrder.setTransNo(orderByOrderNo.getTransNo());
|
|
|
sellOrder.setOrderId(orderByOrderNo.getId());
|
|
|
sellOrder.setOrderNo(orderByOrderNo.getOrderNo());
|
|
|
- //如果没有减免金额
|
|
|
+ //如果有减免金额
|
|
|
if(marketAmount.doubleValue() > 0l){
|
|
|
//如果是最后一件商品
|
|
|
if(i == goodsId.size() - 1){
|
|
@@ -779,7 +778,6 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
usableMarketAmount = usableMarketAmount.subtract(multiply);
|
|
|
}
|
|
|
}
|
|
|
- totalAmount = totalAmount.subtract(marketAmount);
|
|
|
|
|
|
sellOrder.setExpectAmount(goodsSellDto.getTotalGoodsPrice());
|
|
|
//如果没有使用余额,那么实际金额和预计金额一致
|
|
@@ -793,7 +791,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
sellOrder.setBalanceAmount(usableBalance);
|
|
|
}else {
|
|
|
//获取分配的余额
|
|
|
- BigDecimal multiply = balancePaymentAmount.multiply(goodsSellDto.getTotalGoodsPrice().divide(totalAmount, 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ BigDecimal multiply = balancePaymentAmount.multiply(goodsSellDto.getTotalGoodsPrice().divide(subtract, 2, BigDecimal.ROUND_HALF_UP));
|
|
|
//余额大于等于商品总价
|
|
|
sellOrder.setActualAmount(goodsSellDto.getTotalGoodsPrice().subtract(multiply));
|
|
|
sellOrder.setBalanceAmount(multiply);
|