RUA宠物-积分模块设计方案
积分模块设计方案
记录时间:2026-09-17 状态:方案仅作记录,尚未确定是否开发。其中「积分商城兑换」部分需求未定,仅预留契约。 相关现有体系:会员成长值(
user_member/**growth_log/ **member_level)、活动报名(activity_signup)。
1. 背景与定位
现有「成长值」体系用于升级门槛(member_level 按成长值区间匹配)。积分定位与成长值不同:
- 成长值:累计、不消耗、决定会员等级。
- 积分:可消耗、可过期、可兑换的运营货币。
二者独立账本,但复用现有设计模式(growth_log +** addGrowth → 做成 points_log + **addPoints)。
2. 积分获取(建议值可调,均带防刷)
| 行为 | 建议积分 | 频控/防刷 |
|---|---|---|
| 每日签到 | +5,连续 7 天额外 +10 | 每天 1 次(日期唯一键) |
| 发布有效帖子 | +10 | 每人日上限(如 3 条) |
| 被点赞/被收藏 | +1 / +2 | 单用户每日上限 |
| 参与活动并现场签到 | +30 | 每活动 1 次 |
| 完善资料/实名认证 | 一次性 +20 | 永久 1 次 |
| 消费订单(按实付) | 1 元 = 1 分 | 以订单为准 |
| 后台手工发放/调整 | 自定义 | 后台操作留痕 |
3. 积分时效(过期)
- 策略建议:批次滚动过期,每笔积分记录获得日期,设有效期(如** **12 个月),到期批量清零。
- 扣减采用** **FIFO 先进先出:消费/兑换优先扣最早到期积分。
- 过期由定时任务每日扫描清零,写** **
points_log(类型=过期)存档;到期前可做提醒(可选)。 - 余额展示:「可用 + 将于 X 日过期」。
4. 兑换(商城未定,先留契约)
- 本次仅产出:
points_log扣减能力 + 事务原子性 + 防超兑(SELECT ... FOR UPDATE锁)。 - 兑换表/接口留占位,遵守约束:任何扣减必写流水、支持回滚、余额不为负。
- 商城商品/兑换/发货等待需求明确后再接。
5. 技术落地(与现有设施对齐)
新增表:
points_account:用户积分账户(可用/冻结/累计)。points_log:流水(获得/消费/过期/调整),字段对齐** **growth_log。points_rule:后台可配置获取规则(类型/分值/上限/生效状态)。points_expire_batch(可选):每笔积分批次与到期日,便于 FIFO 与清理。
埋点: 在签到、发布、活动签到、订单完成、实名等已有成功节点调用** addPoints()(复用 **UserMember::addGrowth 模式),用「用户+类型+业务ID+日期」唯一键保证幂等。
定时: 过期清理依赖定时任务;备选:CRON 入口脚本** **php think points:expire,或访问自动触发兜底(二选一,待确认服务器设施)。
后台: 积分规则配置页、用户积分明细/调整页、过期记录页(可并入会员体系菜单)。
6. 接口(小程序端预留)
GET /api/points/info—— 积分余额/首页GET /api/points/logs—— 积分流水(分页)POST /api/points/signin—— 签到领积分(若签到独立于成长值)POST /api/points/exchange——** **占位,商城未定时不实现- 后台:
/admin/points/*(规则、明细、调整)