提交修改
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;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信支付订单关闭处理器
|
||||||
|
* 用于处理超时未支付的订单,将订单状态更新为关闭状态
|
||||||
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component("weiXinPayCloseHandler")
|
@Component("weiXinPayCloseHandler")
|
||||||
public class WeiXinPayCloseHandler extends BaseDelayedHandler {
|
public class WeiXinPayCloseHandler extends BaseDelayedHandler {
|
||||||
@ -23,22 +27,72 @@ public class WeiXinPayCloseHandler extends BaseDelayedHandler {
|
|||||||
private VvTradeOrderLineDao vvTradeOrderLineDao;
|
private VvTradeOrderLineDao vvTradeOrderLineDao;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理微信支付延迟关闭消息
|
||||||
|
*
|
||||||
|
* @param message 延迟消息内容,包含交易订单ID等信息
|
||||||
|
* @return 处理结果
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public R handler(String message) {
|
public R handler(String message) {
|
||||||
log.info("weiXinPayCloseHandler receive message:{}", message);
|
log.info("[微信支付订单关闭] 接收到延迟关单消息, message={}", message);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 解析延迟消息
|
||||||
WeiXinPayDelayDTO weiXinPayDelayDTO = JSONObject.parseObject(message, WeiXinPayDelayDTO.class);
|
WeiXinPayDelayDTO weiXinPayDelayDTO = JSONObject.parseObject(message, WeiXinPayDelayDTO.class);
|
||||||
|
Long tradeOrderId = weiXinPayDelayDTO.getTradeOrderId();
|
||||||
|
|
||||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(weiXinPayDelayDTO.getTradeOrderId());
|
log.info("[微信支付订单关闭] 开始处理订单关闭逻辑, tradeOrderId={}", tradeOrderId);
|
||||||
|
|
||||||
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) {
|
// 根据交易订单ID查询所有订单明细
|
||||||
if(OrderStatusEnums.wait_pay.getStatus().equals(vvTradeOrderLineEntity.getStatus())){
|
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(tradeOrderId);
|
||||||
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.close.getStatus());
|
|
||||||
vvTradeOrderLineEntity.setGmtClose(new Date());
|
if (vvTradeOrderLineEntities == null || vvTradeOrderLineEntities.isEmpty()) {
|
||||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
|
log.warn("[微信支付订单关闭] 未查询到订单明细数据, tradeOrderId={}", tradeOrderId);
|
||||||
}else{
|
|
||||||
log.info("weiXinPayCloseHandler not to close tradeOrderLineId:{} status:{}", vvTradeOrderLineEntity.getId(),vvTradeOrderLineEntity.getStatus());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return R.ok();
|
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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user