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);
|
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) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue