提交修改
This commit is contained in:
parent
101cd372da
commit
640ef6ab5e
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"java.compile.nullAnalysis.mode": "automatic"
|
||||
}
|
||||
@ -15,6 +15,10 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 微信支付订单关闭处理器
|
||||
* 用于处理超时未支付的订单,将订单状态更新为关闭状态
|
||||
*/
|
||||
@Slf4j
|
||||
@Component("weiXinPayCloseHandler")
|
||||
public class WeiXinPayCloseHandler extends BaseDelayedHandler {
|
||||
@ -23,22 +27,72 @@ public class WeiXinPayCloseHandler extends BaseDelayedHandler {
|
||||
private VvTradeOrderLineDao vvTradeOrderLineDao;
|
||||
|
||||
|
||||
/**
|
||||
* 处理微信支付延迟关闭消息
|
||||
*
|
||||
* @param message 延迟消息内容,包含交易订单ID等信息
|
||||
* @return 处理结果
|
||||
*/
|
||||
@Override
|
||||
public R handler(String message) {
|
||||
log.info("weiXinPayCloseHandler receive message:{}", message);
|
||||
WeiXinPayDelayDTO weiXinPayDelayDTO = JSONObject.parseObject(message, WeiXinPayDelayDTO.class);
|
||||
log.info("[微信支付订单关闭] 接收到延迟关单消息, message={}", message);
|
||||
|
||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(weiXinPayDelayDTO.getTradeOrderId());
|
||||
try {
|
||||
// 解析延迟消息
|
||||
WeiXinPayDelayDTO weiXinPayDelayDTO = JSONObject.parseObject(message, WeiXinPayDelayDTO.class);
|
||||
Long tradeOrderId = weiXinPayDelayDTO.getTradeOrderId();
|
||||
|
||||
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) {
|
||||
if(OrderStatusEnums.wait_pay.getStatus().equals(vvTradeOrderLineEntity.getStatus())){
|
||||
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.close.getStatus());
|
||||
vvTradeOrderLineEntity.setGmtClose(new Date());
|
||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
|
||||
}else{
|
||||
log.info("weiXinPayCloseHandler not to close tradeOrderLineId:{} status:{}", vvTradeOrderLineEntity.getId(),vvTradeOrderLineEntity.getStatus());
|
||||
log.info("[微信支付订单关闭] 开始处理订单关闭逻辑, tradeOrderId={}", tradeOrderId);
|
||||
|
||||
// 根据交易订单ID查询所有订单明细
|
||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(tradeOrderId);
|
||||
|
||||
if (vvTradeOrderLineEntities == null || vvTradeOrderLineEntities.isEmpty()) {
|
||||
log.warn("[微信支付订单关闭] 未查询到订单明细数据, tradeOrderId={}", tradeOrderId);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
log.info("[微信支付订单关闭] 查询到订单明细数量={}, tradeOrderId={}", vvTradeOrderLineEntities.size(), tradeOrderId);
|
||||
|
||||
int closedCount = 0;
|
||||
int skippedCount = 0;
|
||||
|
||||
// 遍历订单明细,关闭待支付状态的订单
|
||||
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) {
|
||||
Long orderLineId = vvTradeOrderLineEntity.getId();
|
||||
String currentStatus = vvTradeOrderLineEntity.getStatus();
|
||||
|
||||
// 只处理待支付状态的订单
|
||||
if(OrderStatusEnums.wait_pay.getStatus().equals(currentStatus)){
|
||||
log.info("[微信支付订单关闭] 关闭待支付订单, tradeOrderId={}, orderLineId={}, status={} -> {}",
|
||||
tradeOrderId, orderLineId, currentStatus, OrderStatusEnums.close.getStatus());
|
||||
|
||||
// 更新订单状态为关闭
|
||||
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.close.getStatus());
|
||||
// 设置关闭时间
|
||||
vvTradeOrderLineEntity.setGmtClose(new Date());
|
||||
// 更新数据库
|
||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
|
||||
|
||||
closedCount++;
|
||||
log.info("[微信支付订单关闭] 订单关闭成功, tradeOrderId={}, orderLineId={}", tradeOrderId, orderLineId);
|
||||
} else {
|
||||
// 非待支付状态的订单不处理,仅记录日志
|
||||
log.info("[微信支付订单关闭] 订单状态非待支付,跳过处理, tradeOrderId={}, orderLineId={}, currentStatus={}",
|
||||
tradeOrderId, orderLineId, currentStatus);
|
||||
skippedCount++;
|
||||
}
|
||||
}
|
||||
|
||||
log.info("[微信支付订单关闭] 处理完成, tradeOrderId={}, 关闭订单数={}, 跳过订单数={}",
|
||||
tradeOrderId, closedCount, skippedCount);
|
||||
|
||||
return R.ok();
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("[微信支付订单关闭] 处理异常, message={}", message, e);
|
||||
return R.error("订单关闭处理失败: " + e.getMessage());
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user