|
|
@@ -99,6 +99,7 @@ public class OrderSettlementServiceImpl implements OrderSettlementService {
|
|
|
|
|
|
washOrderService.updateById(washOrder);
|
|
|
|
|
|
+ ensureUserStationBelonging(washOrder.getUserId(), washOrder.getStationId());
|
|
|
backfillUnattributedRecharges(washOrder.getUserId());
|
|
|
|
|
|
if (orderInfo.getAmount() == 0) {
|
|
|
@@ -178,6 +179,23 @@ public class OrderSettlementServiceImpl implements OrderSettlementService {
|
|
|
log.info("订单:{},跨店分账完成", washOrder.getOrderId());
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 兜底保障:如果 createOrder 的自动归属没有生效,在结算时补齐。
|
|
|
+ * IoT 回调路径没有用户 Session,同步写 Redis 缓存供后续使用。
|
|
|
+ */
|
|
|
+ private void ensureUserStationBelonging(Long userId, String orderStationId) {
|
|
|
+ var user = userService.getById(userId);
|
|
|
+ if (user == null || user.getStationId() != null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ userService.lambdaUpdate()
|
|
|
+ .set(User::getStationId, orderStationId)
|
|
|
+ .eq(User::getId, userId)
|
|
|
+ .update();
|
|
|
+ KymCache.INSTANCE.putUserId2StationId(Map.of(userId, orderStationId));
|
|
|
+ log.info("兜底归属:用户={} 归属站点={}", userId, orderStationId);
|
|
|
+ }
|
|
|
+
|
|
|
private void backfillUnattributedRecharges(Long userId) {
|
|
|
var userStationId = KymCache.INSTANCE.getUserStationId(userId);
|
|
|
if (userStationId == null) {
|