我已经查明了根本原因。让我来梳理一下发现的问题。
问题分析
我查了数据库,发现了两个问题:
1. 壁纸配置从未保存(配置问题)
数据库 app_settings 里只有 event_mid_autumn_mazu_points_config,没有 event_mid_autumn_mazu_wallpaper_config。所以服务端 readMidAutumnMazuWallpaperConfig() 返回空配置,没有通用壁纸也没有星宿壁纸 → resolveWallpaperCount = 0 → 壁纸 icon 不显示。
2. 福分配置是在领取之后才设的(时序问题 + 代码 bug)
时间线:
- 14:32(北京时间)你测试 NFC,此时福分配置还是 0 →
pointsAwarded = 0→ 福分 icon 不显示 - 14:34(北京时间)福分配置被保存(bigBoxPoints=100, smallBoxPoints=80)
而且 addUserPoints 在 points=0 时不写日志(points.ts:56-62):
if (points <= 0) {
return { pointsAdded: 0, balance: ..., log: null } // ← 没写 userPointLogs
}
而 hasClaimedReward 靠查 userPointLogs 判断是否已领取(mid-autumn-mazu.post.ts:50-62)。由于没写日志,服务端误判你"没领过",你可以重复领取——但神龛会重复插入(没有去重保护)。
让我来修复代码中的这个 bug。