历史订单 赠送

退款库存 回滚
日志打印 截断200
This commit is contained in:
2025-03-03 10:45:59 +08:00
parent ec32fc48f5
commit 8119c767f0
7 changed files with 69 additions and 25 deletions

View File

@@ -153,10 +153,12 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
Map<String, List<OrderDetail>> resultMap = new HashMap<>();
// 遍历订单详情列表
for (OrderDetail orderDetail : orderDetails) {
orderDetail.initGift();
// 获取当前订单详情的 placeNum
Integer placeNum = orderDetail.getPlaceNum();
// 检查 Map 中是否已经存在该 placeNum 对应的列表
resultMap.computeIfAbsent(placeNum.toString(), k -> new ArrayList<>()).add(orderDetail);
}
historyOrderVo.setDetailMap(resultMap);
return historyOrderVo;

View File

@@ -7,6 +7,7 @@ import com.alibaba.fastjson2.JSONObject;
import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO;
import com.czg.account.entity.*;
import com.czg.account.service.*;
import com.czg.config.RabbitPublisher;
import com.czg.config.RedisCst;
import com.czg.entity.req.*;
import com.czg.entity.resp.*;
@@ -44,6 +45,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@@ -81,6 +83,8 @@ public class PayServiceImpl implements PayService {
private OrderPaymentService paymentService;
@Resource
private RedisService redisService;
@Resource
private RabbitPublisher rabbitPublisher;
private final BigDecimal MONEY_RATE = new BigDecimal("100");
@@ -429,6 +433,7 @@ public class PayServiceImpl implements PayService {
BigDecimal refundAmountTotal = BigDecimal.ZERO;
//退优惠券数量 <商品id数量>
Map<Long, Integer> returnCouponMap = new HashMap<>();
Map<Long, BigDecimal> returnProMap = new HashMap<>();
boolean isPay = true;
String refPayOrderNo = "REFO" + IdUtil.getSnowflakeNextId();
if (orderInfo.getStatus().equals(OrderStatusEnums.UNPAID.getCode())) {
@@ -485,6 +490,7 @@ public class PayServiceImpl implements PayService {
}
orderDetailService.updateById(orderDetail);
returnProMap.put(orderDetail.getProductId(), refundDetail.getNum());
}
long count = orderDetailService.queryChain()
.eq(OrderDetail::getOrderId, orderInfo.getId())
@@ -497,20 +503,22 @@ public class PayServiceImpl implements PayService {
} else {
refundAmountTotal = param.getRefundAmount();
orderInfo.setStatus(OrderStatusEnums.REFUND.getCode());
if (isPay) {
orderDetailService.updateChain()
.eq(OrderDetail::getOrderId, param.getOrderId())
.setRaw(OrderDetail::getRefundNum, "num-refund_num")
.setRaw(OrderDetail::getReturnAmount, "pay_amount")
.set(OrderDetail::getStatus, OrderStatusEnums.REFUND.getCode())
.update();
} else {
orderDetailService.updateChain()
.eq(OrderDetail::getOrderId, param.getOrderId())
.setRaw(OrderDetail::getReturnNum, "num")
.set(OrderDetail::getStatus, OrderStatusEnums.REFUND.getCode())
.update();
List<OrderDetail> orderDetails = orderDetailService.queryChain()
.select(OrderDetail::getId, OrderDetail::getNum, OrderDetail::getReturnNum, OrderDetail::getReturnNum)
.eq(OrderDetail::getOrderId, orderInfo.getId())
.list();
for (OrderDetail orderDetail : orderDetails) {
if (isPay) {
returnProMap.put(orderDetail.getProductId(), orderDetail.getNum().subtract(orderDetail.getReturnNum()).subtract(orderDetail.getRefundNum()));
orderDetail.setRefundNum(orderDetail.getNum().subtract(orderDetail.getReturnNum()));
orderDetail.setReturnAmount(orderDetail.getPayAmount());
} else {
returnProMap.put(orderDetail.getProductId(), orderDetail.getNum().subtract(orderDetail.getReturnNum()));
orderDetail.setReturnNum(orderDetail.getNum());
}
orderDetail.setStatus(OrderStatusEnums.REFUND.getCode());
}
orderDetailService.updateBatch(orderDetails);
}
//总退款金额
//TODO 退款 券 未处理
@@ -572,6 +580,8 @@ public class PayServiceImpl implements PayService {
}
orderInfo.setRefundRemark(orderInfo.getRefundRemark() + param.getRefundReason());
orderInfoService.updateById(orderInfo);
//退款返还库存
rabbitPublisher.sendOrderRefundMsg(JSONObject.toJSONString(returnProMap));
return CzgResult.success();
}