feat: 1.退款接口修改

This commit is contained in:
张松 2024-11-20 17:33:51 +08:00
parent 8b74c09559
commit 8a7c9d8e2e
1 changed files with 22 additions and 17 deletions

View File

@ -2736,41 +2736,46 @@ public class TbShopTableServiceImpl implements TbShopTableService {
} }
BigDecimal returnPackFee = packFee.multiply(returnNum); BigDecimal returnPackFee = packFee.multiply(returnNum);
orderDetail.setNum(returnNum); BigDecimal currentDetailAMount = BigDecimal.ZERO;
orderDetail.setPriceAmount(returnNum.multiply(orderDetail.getPrice())
.add(returnPackFee));
orderDetail.setPackAmount(returnPackFee);
orderDetail.setRefundNumber(returnNum);
// orderDetail.setStatus(isOnline ? "refunding" : "refund");
orderDetail.setStatus("refund");
// 优惠券抵扣商品直接退券 // 优惠券抵扣商品直接退券
if (StrUtil.isNotBlank(orderDetail.getUseCouponInfo())) { if (StrUtil.isNotBlank(orderDetail.getUseCouponInfo())) {
data.put("isCouponDiscount", true); data.put("isCouponDiscount", true);
TbActivateOutRecord outRecord = JSONObject.parseObject(orderDetail.getUseCouponInfo(), TbActivateOutRecord.class); TbActivateOutRecord outRecord = JSONObject.parseObject(orderDetail.getUseCouponInfo(), TbActivateOutRecord.class);
outRecord.setRefNum(returnNum.intValue()); outRecord.setRefNum(returnNum.intValue());
shopCouponService.refund(CollUtil.newArrayList(outRecord)); 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){ }else if (oldOrderInfo.getFullCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0 || oldOrderInfo.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0){
// 计算当前商品占比 // 计算当前商品占比
BigDecimal ratio = calcDetailRatio(orderDetail); BigDecimal ratio = calcDetailRatio(orderDetail);
BigDecimal realAmount = orderDetail.getPriceAmount().multiply(ratio); BigDecimal realAmount = orderDetail.getPriceAmount().multiply(ratio);
returnAmount = returnAmount.add(realAmount currentDetailAMount = realAmount
.divide(orderDetail.getNum(), 2, RoundingMode.DOWN) .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
.multiply(returnNum)); .multiply(returnNum).setScale(2, RoundingMode.HALF_UP);
returnAmount = returnAmount.add(currentDetailAMount);
saleAmount = saleAmount.add(orderDetail.getPrice()); saleAmount = saleAmount.add(orderDetail.getPrice());
packAMount = packAMount.add(orderDetail.getPackAmount() packAMount = packAMount.add(orderDetail.getPackAmount()
.divide(orderDetail.getNum(), 2, RoundingMode.DOWN) .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
.multiply(returnNum)); .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP);
}else { }else {
returnAmount = returnAmount.add(orderDetail.getPriceAmount() currentDetailAMount = orderDetail.getPriceAmount()
.divide(orderDetail.getNum(), 2, RoundingMode.DOWN) .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
.multiply(returnNum)); .multiply(returnNum).setScale(2, RoundingMode.HALF_UP);
returnAmount = returnAmount.add(currentDetailAMount);
saleAmount = saleAmount.add(orderDetail.getPrice()); saleAmount = saleAmount.add(orderDetail.getPrice());
packAMount = packAMount.add(orderDetail.getPackAmount() packAMount = packAMount.add(orderDetail.getPackAmount()
.divide(orderDetail.getNum(), 2, RoundingMode.DOWN) .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
.multiply(returnNum)); .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) { if (returnAmount.compareTo(BigDecimal.ZERO) <= 0) {