feat: 1.退款接口修改
This commit is contained in:
parent
8b74c09559
commit
8a7c9d8e2e
|
|
@ -2736,41 +2736,46 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
}
|
||||
|
||||
BigDecimal returnPackFee = packFee.multiply(returnNum);
|
||||
orderDetail.setNum(returnNum);
|
||||
orderDetail.setPriceAmount(returnNum.multiply(orderDetail.getPrice())
|
||||
.add(returnPackFee));
|
||||
orderDetail.setPackAmount(returnPackFee);
|
||||
orderDetail.setRefundNumber(returnNum);
|
||||
// orderDetail.setStatus(isOnline ? "refunding" : "refund");
|
||||
orderDetail.setStatus("refund");
|
||||
BigDecimal currentDetailAMount = BigDecimal.ZERO;
|
||||
// 优惠券抵扣商品直接退券
|
||||
if (StrUtil.isNotBlank(orderDetail.getUseCouponInfo())) {
|
||||
data.put("isCouponDiscount", true);
|
||||
TbActivateOutRecord outRecord = JSONObject.parseObject(orderDetail.getUseCouponInfo(), TbActivateOutRecord.class);
|
||||
outRecord.setRefNum(returnNum.intValue());
|
||||
shopCouponService.refund(CollUtil.newArrayList(outRecord));
|
||||
currentDetailAMount = returnNum.multiply(orderDetail.getPrice())
|
||||
.add(returnPackFee);
|
||||
// 使用了满减或积分,获取普通付款商品计算退款比例,退部分现金
|
||||
}else if (oldOrderInfo.getFullCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0 || oldOrderInfo.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0){
|
||||
// 计算当前商品占比
|
||||
BigDecimal ratio = calcDetailRatio(orderDetail);
|
||||
BigDecimal realAmount = orderDetail.getPriceAmount().multiply(ratio);
|
||||
returnAmount = returnAmount.add(realAmount
|
||||
.divide(orderDetail.getNum(), 2, RoundingMode.DOWN)
|
||||
.multiply(returnNum));
|
||||
currentDetailAMount = realAmount
|
||||
.divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
|
||||
.multiply(returnNum).setScale(2, RoundingMode.HALF_UP);
|
||||
returnAmount = returnAmount.add(currentDetailAMount);
|
||||
saleAmount = saleAmount.add(orderDetail.getPrice());
|
||||
packAMount = packAMount.add(orderDetail.getPackAmount()
|
||||
.divide(orderDetail.getNum(), 2, RoundingMode.DOWN)
|
||||
.multiply(returnNum));
|
||||
.divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
|
||||
.multiply(returnNum)).setScale(2, RoundingMode.HALF_UP);
|
||||
|
||||
}else {
|
||||
returnAmount = returnAmount.add(orderDetail.getPriceAmount()
|
||||
.divide(orderDetail.getNum(), 2, RoundingMode.DOWN)
|
||||
.multiply(returnNum));
|
||||
currentDetailAMount = orderDetail.getPriceAmount()
|
||||
.divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
|
||||
.multiply(returnNum).setScale(2, RoundingMode.HALF_UP);
|
||||
returnAmount = returnAmount.add(currentDetailAMount);
|
||||
saleAmount = saleAmount.add(orderDetail.getPrice());
|
||||
packAMount = packAMount.add(orderDetail.getPackAmount()
|
||||
.divide(orderDetail.getNum(), 2, RoundingMode.DOWN)
|
||||
.multiply(returnNum));
|
||||
.divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
|
||||
.multiply(returnNum)).setScale(2, RoundingMode.HALF_UP);
|
||||
}
|
||||
|
||||
orderDetail.setNum(returnNum);
|
||||
orderDetail.setPriceAmount(currentDetailAMount);
|
||||
orderDetail.setPackAmount(returnPackFee);
|
||||
orderDetail.setRefundNumber(returnNum);
|
||||
// orderDetail.setStatus(isOnline ? "refunding" : "refund");
|
||||
orderDetail.setStatus("refund");
|
||||
}
|
||||
|
||||
if (returnAmount.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue