|
@@ -473,6 +473,8 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
|
|
|
Order existingOrder = orderService.getOrderByActivityId(activityId);
|
|
Order existingOrder = orderService.getOrderByActivityId(activityId);
|
|
|
if (existingOrder != null) {
|
|
if (existingOrder != null) {
|
|
|
log.info("找到已有订单 - activityId: {}, orderId: {}", activityId, existingOrder.getId());
|
|
log.info("找到已有订单 - activityId: {}, orderId: {}", activityId, existingOrder.getId());
|
|
|
|
|
+ // 订单已存在但可能缺少支付分信息(如 fetchRecognitionAndCreateOrder 创建的),尝试补齐
|
|
|
|
|
+ tryApplyPreAuthPayScore(existingOrder);
|
|
|
return existingOrder;
|
|
return existingOrder;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -501,14 +503,7 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
|
|
|
log.info("订单创建成功并已关联开门记录 - orderId: {}", newOrder.getId());
|
|
log.info("订单创建成功并已关联开门记录 - orderId: {}", newOrder.getId());
|
|
|
|
|
|
|
|
// 从 Redis 获取预创建的支付分信息并关联到订单(需确认模式)
|
|
// 从 Redis 获取预创建的支付分信息并关联到订单(需确认模式)
|
|
|
- if (payScoreService != null) {
|
|
|
|
|
- try {
|
|
|
|
|
- ((com.haha.service.payment.payscore.impl.PayScoreServiceImpl) payScoreService)
|
|
|
|
|
- .applyPreAuthPayScore(newOrder);
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- log.warn("关联支付分预授权信息失败 - orderId: {}, error: {}", newOrder.getId(), e.getMessage());
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ tryApplyPreAuthPayScore(newOrder);
|
|
|
} else {
|
|
} else {
|
|
|
log.error("订单创建失败 - activityId: {}", activityId);
|
|
log.error("订单创建失败 - activityId: {}", activityId);
|
|
|
}
|
|
}
|
|
@@ -516,6 +511,29 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
|
|
|
return newOrder;
|
|
return newOrder;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 尝试关联支付分预授权信息到订单(幂等,仅当订单缺少支付分信息时执行)
|
|
|
|
|
+ */
|
|
|
|
|
+ private void tryApplyPreAuthPayScore(Order order) {
|
|
|
|
|
+ if (order == null) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 已有支付分信息,无需重复关联
|
|
|
|
|
+ if (order.getPayScoreOrderId() != null) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (payScoreService == null) {
|
|
|
|
|
+ log.warn("[支付分配置] payScoreService 未注入,跳过关联 - orderId: {}", order.getId());
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ try {
|
|
|
|
|
+ ((com.haha.service.payment.payscore.impl.PayScoreServiceImpl) payScoreService)
|
|
|
|
|
+ .applyPreAuthPayScore(order);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("关联支付分预授权信息失败 - orderId: {}, error: {}", order.getId(), e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void handleOrderCallback(Map<String, Object> params) {
|
|
public void handleOrderCallback(Map<String, Object> params) {
|
|
@@ -1050,6 +1068,7 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
|
|
|
|
|
|
|
|
if (order != null) {
|
|
if (order != null) {
|
|
|
log.info("主动创建订单成功 - orderId: {}, activityId: {}", order.getId(), activityId);
|
|
log.info("主动创建订单成功 - orderId: {}, activityId: {}", order.getId(), activityId);
|
|
|
|
|
+ tryApplyPreAuthPayScore(order);
|
|
|
}
|
|
}
|
|
|
return order;
|
|
return order;
|
|
|
}
|
|
}
|