2026-06-09 积分流水、防负分与前台发帖限流加固
本次针对积分系统完成三项加固:修复积分流水“操作人”显示为 0 的问题,增加扣分防负数保护,并为前台发主题 / 回帖接入限流规则,降低刷积分风险。
主要改动:
- 积分流水操作人显示修复
- 文件:model/credit_log.func.php
- 新增流水时,如果
operator_uid <= 0,自动回落为当前变动用户 UID,避免普通用户行为流水显示无意义的 0。
- 文件:admin/view/htm/user_credit_log.htm
- 后台积分流水列表兼容历史数据,
operator_uid 为 0 时显示该条流水的 uid。
- 积分扣分防负数保护
- 文件:model/credit_log.func.php
credit_user_change() 在处理负数扣分前读取用户当前余额。
- 当前余额小于等于 0 时不再扣分。
- 请求扣分大于当前余额时只扣到 0,避免删除主题、删除回复、取消点赞、取消收藏、取消关注等扣回动作导致用户积分、金币或点券变成负数。
- 流水记录按实际扣除值写入,保证“变动”和“变动后”一致。
- 前台发主题 / 回帖限流
- 文件:model/misc.func.php
- 将
user_rate_limit() 提升为公共模型函数,供所有前台路由复用。
- 文件:route/user.php
- 移除原用户路由内的重复
user_rate_limit() 定义,避免限流逻辑分散。
- 文件:route/thread.php
- 前台发主题提交接入
web_thread_create 限流,默认同一用户 60 秒最多 5 次。
- 文件:route/post.php
- 前台回帖提交接入
web_post_create 限流,默认同一用户 60 秒最多 10 次。
- 后台限流配置补充
- 文件:admin/route/setting.php
- 限流默认配置新增
web_thread_create 和 web_post_create。
- 文件:admin/view/htm/setting_rate_limit.htm
- 后台“限流设置”页面新增“前台发主题”和“前台回帖”配置项,可调整次数与时间窗口;限制次数为 0 时仍表示关闭对应规则。