
Level-Up实战案例从零打造带积分体系的Laravel社区论坛【免费下载链接】level-upLevel-Up is a Laravel package introducing gamification into your applications. Users earn experience points (XP) and levels through interactions, while also unlocking achievements. It promotes engagement, competition, and fun through its dynamic leaderboard feature. Customisable to fit your specific needs项目地址: https://gitcode.com/gh_mirrors/le/level-upLevel-Up 是一个专为 Laravel 打造的游戏化积分Gamification包用户通过发帖、签到等互动获得经验值XP并升级配合成就解锁与动态排行榜让社区论坛的留存和互动像游戏一样上瘾。本文用一个社区论坛的实战案例带你从零搭建完整的积分体系5 步即可上线。一、为什么论坛需要一套积分体系传统论坛靠积分激励用户但手工维护「谁加了多少分、升到几级、有没有作弊」非常痛苦。Level-Up 把这套逻辑封装成 Laravel 包一次安装就自带四大核心能力能力解决的问题对应模块 经验值 XP发帖、回帖自动加分GiveExperience 特性⬆️ 等级升级按经验阈值自动升级Level 模型 成就徽章里程碑奖励、隐藏成就HasAchievements 特性 连续打卡激励用户每日发帖HasStreaks 特性 排行榜一键生成全服积分榜Leaderboard 服务二、第一步安装 Level-Up 并初始化数据库在项目根目录执行 Composer 命令安装然后发布迁移文件并完成建表composer require cjmellor/level-up php artisan vendor:publish --taglevel-up-migrations php artisan migrate迁移脚本位于 database/migrations/共 10 个会自动创建experiences经验值、levels等级、achievements成就、streaks连续活跃等数据表无需手写建表语句。 如果安装后直接加分而未配置等级结构Level-Up 会自动创建默认的 1 级保证不会报错。配置文件在 config/level-up.php通过环境变量即可控制关键行为例如在.env中限制最高等级LEVEL_CAP_ENABLEDtrue LEVEL_CAP100三、第二步发帖自动加积分在User模型引入GiveExperience特性后加扣分只需一行代码$user-addPoints(10); // 发帖 10 分 $user-deductPoints(5); // 违规扣分典型用法是监听 Laravel 事件帖子创建成功后加分。由于加分动作会触发PointsIncreased事件见 Events 目录你可以在监听器里推送实时通知或 WebSocket 消息实现「恭喜获得 10 积分」的即时反馈。进阶玩法倍率加成。想搞「12 月发帖双倍积分」活动用 Artisan 命令生成一个倍率类php artisan level-up:multiplier IsMonthDecember命令实现在 MakeMultiplierCommand模板在 stubs/Multiplier.stub。在qualifies方法里写判断条件比如当前月份是 12 月满足条件的加分自动翻倍活动结束后禁用即可。四、第三步设计论坛的等级体系等级结构通过Level门面批量创建经验值达到阈值即自动升级Level::add( [level 1, next_level_experience null], [level 2, next_level_experience 100], [level 3, next_level_experience 250], );论坛常用等级命名可映射为Lv1 新芽 → Lv2 成员 → Lv3 活跃用户 → Lv10 版主。用户升级时会触发UserLevelledUp事件监听器在 UserLevelledUpListener可以借此自动授予「新人出新手村」成就或发放头衔徽章。查询用户当前等级与距升级还差多少经验$user-getLevel(); // 当前等级 $user-nextLevelAt(); // 距离下一级所需经验五、第四步为里程碑解锁成就论坛成就可以做成「发表第 10 篇帖子」「累计获赞 100 次」这类里程碑任务也支持带进度条的渐进式成就$user-grantAchievement($achievement); // 立即解锁 $user-grantAchievement($achievement, progress: 50); // 进度 50% $user-incrementAchievementProgress($achievement, 10); // 进度 10更妙的是隐藏成就is_secret字段未解锁前对用户完全不可见解锁瞬间弹出「恭喜发现隐藏徽章」惊喜感拉满。全部方法见 HasAchievements。六、第五步连续发帖打卡防「三天热度」连续活跃Streak是提升日活的利器。先创建一个 Activity比如「每日发帖」然后每次发帖记录$user-recordStreak($activity); // 今日发帖连击 1 $user-getCurrentStreakCount($activity); // 当前连续天数规则很直观连续 5 天发帖第 6 天中断计数自动归 1 重新开始并触发StreakBroken事件。考虑到用户偶尔请假Level-Up 还支持冻结连击$user-freezeStreak($activity, days: 5); // 允许中断 5 天不断连历史连击记录默认自动归档StreakHistory模型你可以在后台用数据回答「论坛用户平均能坚持几天」。实现细节见 HasStreaks。七、彩蛋一键生成全服排行榜前台排行榜页只需调用一次服务返回按经验值降序排列的用户列表支持分页Leaderboard::generate(paginate: true);排行榜服务在 LeaderboardService可轻松扩展成「本周积分榜」「版块积分榜」等变体。八、积分审计每一分都查得到开启审计配置config/level-up.php 中audit.enabled后每次加分、扣分、升级都会写入审计表并自动标注类型与原因$user-addPoints(amount: 50, reason: 精华帖奖励);运营排查「这分怎么来的」时一条$user-experienceHistory就能拉出完整流水对积分体系的公平性至关重要。九、项目关键路径速查经验值核心src/Concerns/GiveExperience.php成就系统src/Concerns/HasAchievements.php连续打卡src/Concerns/HasStreaks.php排行榜src/Services/LeaderboardService.php事件定义src/Events/数据模型src/Models/测试用例参考tests/Concerns/GiveExperienceTest.php十、总结给论坛加上「游戏魂」回到主线回顾整个落地路径⚡ 安装 Level-Up一条命令建好积分数据库 发帖自动加 XP活动期用倍率类翻倍激励⬆️ 按经验阈值设计等级升级自动触发奖励 里程碑 隐藏成就制造惊喜感 连续发帖打卡与冻结机制锁住日活 排行榜让竞争氛围自然形成整套体系代码量极少、事件驱动、完全可定制——这就是 Level-Up 把游戏化做得「开箱即用」的原因。你的社区论坛值得一次 Level-Up。【免费下载链接】level-upLevel-Up is a Laravel package introducing gamification into your applications. Users earn experience points (XP) and levels through interactions, while also unlocking achievements. It promotes engagement, competition, and fun through its dynamic leaderboard feature. Customisable to fit your specific needs项目地址: https://gitcode.com/gh_mirrors/le/level-up创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考