导出某个用户的积分流水逐条相加是 1200,账户页显示 1500,差的 300 找不到来源。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,早期后台调整直接改余额没写流水,后来手动补分也只动了汇总字段。两套数据各改各的,时间一长必然对不上。

「积分余额对账」这类改动最怕改一半,回滚脚本先准备好,再动生产。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

SELECT l.user_id, SUM(l.points) AS flow, m.meta_value AS balance
FROM wp_points_log l JOIN wp_usermeta m ON m.user_id = l.user_id
WHERE m.meta_key = 'points'
GROUP BY l.user_id HAVING flow <> balance;

权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

具体做法是,写个脚本按用户汇总流水,再和余额字段逐个比;差异部分生成一条调整流水,写清来源和操作人;之后所有变动只走统一入口,入口里同时写流水和余额;每周跑一次对账,差异超过 10 分就告警。

最后用这个标准收尾,对账脚本跑完差异为 0,账户页余额与流水加总一致。

作者 9823189