下单 日志 打印

This commit is contained in:
wangw 2025-02-24 19:26:06 +08:00
parent cd1bb95e90
commit 59a79fddf4
1 changed files with 13 additions and 29 deletions

View File

@ -177,14 +177,17 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
}
//获取商品信息 计算金额 需要传入优惠券 减去优惠券
List<OrderDetail> orderDetails = cartService.getCartByTableCode(param.getTableCode(), param.isVipPrice() ? 1 : 0, param.getPlaceNum());
log.info("下单1 {}", JSONObject.toJSONString(orderDetails));
//总打包费
BigDecimal packAmount = BigDecimal.ZERO;
//总商品支付金额 不包含打包费 用来计算后续
BigDecimal totalAmount = BigDecimal.ZERO;
processOrderDetails(orderDetails, packAmount, totalAmount);
log.info("下单2 总金额{} {}", totalAmount, JSONObject.toJSONString(orderDetails));
if (packAmount.compareTo(param.getPackFee()) != 0) {
throw new ValidateException("生成订单失败,打包费不正确");
}
log.info("下单3 打包费{} 金额{}", param.getPackFee(), param.getOriginAmount());
//总金额
if (totalAmount.add(param.getPackFee()).compareTo(param.getOriginAmount()) != 0) {
throw new ValidateException("生成订单失败,订单金额不正确");
@ -332,6 +335,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
OrderInfo orderInfo = getById(param.getOrderId());
//退款总额
BigDecimal refundAmountTotal = BigDecimal.ZERO;
//退优惠券数量 <商品id数量>
Map<Long, Integer> returnCouponMap = new HashMap<>();
boolean isPay = true;
if (orderInfo.getStatus().equals(OrderStatusEnums.UNPAID.getCode())) {
isPay = false;
@ -340,11 +345,9 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
for (OrderDetail refundDetail : param.getRefundDetails()) {
AssertUtil.isNull(refundDetail.getNum(), "退单数量不能为空");
//退款金额
BigDecimal refundAmount;
BigDecimal refundAmount = BigDecimal.ZERO;
//退款数量
BigDecimal refNum;
//退优惠券数量 <商品id数量>
Map<Long, Integer> returnCouponMap = new HashMap<>();
OrderDetail orderDetail = detailService.getById(refundDetail.getId());
//可退数量=订单数量-退单数量-退菜数量
BigDecimal returnNum = orderDetail.getNum().subtract(orderDetail.getRefundNum()).subtract(orderDetail.getReturnNum());
@ -356,37 +359,18 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
//实际计算金额的数量
refNum = returnNum.subtract(orderDetail.getCouponNum());
//退单数量 大于 实际计算金额的数量
if (refundDetail.getNum().compareTo(refNum) >= 0) {
if (refundDetail.getNum().compareTo(refNum) > 0) {
refundAmount = refNum.multiply(orderDetail.getPrice());
returnCouponMap.put(orderDetail.getProductId(), refundDetail.getNum().subtract(refNum).intValue());
refNum = refundDetail.getNum();
} else {
refNum = refundDetail.getNum();
refundAmount = refundDetail.getNum().multiply(orderDetail.getPrice());
if (param.isModify()) {
refundAmount = refundDetail.getReturnAmount();
} else {
if (refundAmount.compareTo(refundDetail.getReturnAmount()) != 0) {
throw new ValidateException("退单失败," + refundDetail.getProductName() + "退单金额不正确");
}
}
}
} else {
if (param.isModify()) {
refundAmount = refundDetail.getReturnAmount();
refNum = refundDetail.getNum();
} else {
refNum = refundDetail.getNum();
refundAmount = BigDecimal.ZERO;
if (refundAmount.compareTo(refundDetail.getReturnAmount()) != 0) {
throw new ValidateException("退单失败," + refundDetail.getProductName() + "退单金额不正确");
}
}
}
refundAmountTotal = refundAmountTotal.add(refundAmount);
if (refundDetail.getReturnAmount().compareTo(refundDetail.getNum().multiply(orderDetail.getPrice())) != 0) {
if (refundAmount.compareTo(refundDetail.getReturnAmount()) != 0) {
throw new ValidateException("退单失败," + refundDetail.getProductName() + "退单金额不正确");
}
refNum = refundDetail.getNum();
refundAmountTotal = refundAmountTotal.add(refundAmount);
if (isPay) {
orderDetail.setRefundNum(orderDetail.getRefundNum().add(refNum));
orderDetail.setReturnAmount(orderDetail.getReturnAmount().add(refundDetail.getReturnAmount()));
@ -395,10 +379,10 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
}
} else {
orderDetail.setReturnNum(orderDetail.getRefundNum().add(refNum));
orderDetail.setPayAmount((orderDetail.getNum().subtract(orderDetail.getRefundNum()).subtract(orderDetail.getReturnNum())
.subtract(orderDetail.getCouponNum())).multiply(orderDetail.getPrice()));
}
refundDetail.setRefundRemark(refundDetail.getRefundRemark() + param.getRefundReason());
orderDetail.setPayAmount((orderDetail.getNum().subtract(orderDetail.getRefundNum()).subtract(orderDetail.getReturnNum())
.subtract(orderDetail.getCouponNum())).multiply(orderDetail.getPrice()));
orderDetail.setRefundRemark(refundDetail.getRefundRemark() + param.getRefundReason());
}
} else {
refundAmountTotal = param.getRefundAmount();