|
|
@@ -496,11 +496,19 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
|
|
|
com.alibaba.fastjson2.JSONObject preAuth = ((com.haha.service.payment.payscore.impl.PayScoreServiceImpl) payScoreService)
|
|
|
.readPreAuthFromRedis(record.getDeviceId(), record.getUserId());
|
|
|
if (preAuth != null) {
|
|
|
+ // 第一层:Redis 命中
|
|
|
payScoreOrderId = preAuth.getString("payScoreOrderId");
|
|
|
payScoreState = preAuth.getString("payScoreState");
|
|
|
serviceId = preAuth.getString("serviceId");
|
|
|
+ } else if (record.getPayScoreOrderId() != null) {
|
|
|
+ // 第二层:Redis 过期,从 DoorRecord(DB 持久化)恢复
|
|
|
+ payScoreOrderId = record.getPayScoreOrderId();
|
|
|
+ payScoreState = PayScoreState.CREATED.getCode();
|
|
|
+ serviceId = record.getServiceId();
|
|
|
+ log.info("从DoorRecord恢复支付分订单ID - userId: {}, deviceId: {}, payScoreOrderId: {}",
|
|
|
+ record.getUserId(), record.getDeviceId(), payScoreOrderId);
|
|
|
} else {
|
|
|
- // Redis 预授权已过期,尝试从追踪SET恢复
|
|
|
+ // 第三层:兜底从追踪SET恢复
|
|
|
payScoreOrderId = ((com.haha.service.payment.payscore.impl.PayScoreServiceImpl) payScoreService)
|
|
|
.tryRecoverPayScoreOrderId(record.getUserId(), record.getDeviceId());
|
|
|
if (payScoreOrderId != null) {
|
|
|
@@ -509,7 +517,7 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
|
|
|
log.info("从追踪SET恢复支付分订单ID成功 - userId: {}, deviceId: {}, payScoreOrderId: {}",
|
|
|
record.getUserId(), record.getDeviceId(), payScoreOrderId);
|
|
|
} else {
|
|
|
- log.warn("Redis预授权已过期且追踪SET未找到 - userId: {}, deviceId: {}",
|
|
|
+ log.warn("Redis/DoorRecord/追踪SET 均未找到支付分信息 - userId: {}, deviceId: {}",
|
|
|
record.getUserId(), record.getDeviceId());
|
|
|
}
|
|
|
}
|
|
|
@@ -1174,20 +1182,32 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
|
|
|
com.alibaba.fastjson2.JSONObject preAuth = ((com.haha.service.payment.payscore.impl.PayScoreServiceImpl) payScoreService)
|
|
|
.readPreAuthFromRedis(deviceId, uid);
|
|
|
if (preAuth != null) {
|
|
|
+ // 第一层:Redis 命中
|
|
|
payScoreOrderId = preAuth.getString("payScoreOrderId");
|
|
|
payScoreState = preAuth.getString("payScoreState");
|
|
|
serviceId = preAuth.getString("serviceId");
|
|
|
} else {
|
|
|
- // Redis 预授权已过期,尝试从追踪SET恢复
|
|
|
- payScoreOrderId = ((com.haha.service.payment.payscore.impl.PayScoreServiceImpl) payScoreService)
|
|
|
- .tryRecoverPayScoreOrderId(uid, deviceId);
|
|
|
- if (payScoreOrderId != null) {
|
|
|
+ // 第二层:尝试从 DoorRecord(DB 持久化)恢复
|
|
|
+ DoorRecord dr = doorRecordService.getByActivityId(activityId);
|
|
|
+ if (dr != null && dr.getPayScoreOrderId() != null) {
|
|
|
+ payScoreOrderId = dr.getPayScoreOrderId();
|
|
|
payScoreState = PayScoreState.CREATED.getCode();
|
|
|
- serviceId = payScoreService.getServiceId();
|
|
|
- log.info("从追踪SET恢复支付分订单ID成功 - userId: {}, deviceId: {}, payScoreOrderId: {}",
|
|
|
+ serviceId = dr.getServiceId();
|
|
|
+ log.info("从DoorRecord恢复支付分订单ID - userId: {}, deviceId: {}, payScoreOrderId: {}",
|
|
|
userId, deviceId, payScoreOrderId);
|
|
|
} else {
|
|
|
- log.warn("Redis预授权已过期且追踪SET未找到 - userId: {}, deviceId: {}", userId, deviceId);
|
|
|
+ // 第三层:兜底从追踪SET恢复
|
|
|
+ payScoreOrderId = ((com.haha.service.payment.payscore.impl.PayScoreServiceImpl) payScoreService)
|
|
|
+ .tryRecoverPayScoreOrderId(uid, deviceId);
|
|
|
+ if (payScoreOrderId != null) {
|
|
|
+ payScoreState = PayScoreState.CREATED.getCode();
|
|
|
+ serviceId = payScoreService.getServiceId();
|
|
|
+ log.info("从追踪SET恢复支付分订单ID成功 - userId: {}, deviceId: {}, payScoreOrderId: {}",
|
|
|
+ userId, deviceId, payScoreOrderId);
|
|
|
+ } else {
|
|
|
+ log.warn("Redis/DoorRecord/追踪SET 均未找到支付分信息 - userId: {}, deviceId: {}",
|
|
|
+ userId, deviceId);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|