ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Level-Up成就系统深度实战:从静态成就到隐藏成就的完整实现

2026/8/21 13:25:09 拓冰建站 浏览量
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-upLevel-Up是一款为Laravel应用注入游戏化机制的成就系统开源包用户通过互动获得经验值XP、提升等级、解锁成就还能配合动态排行榜与连续打卡Streak机制提升社区活跃度。本文将以Level-Up成就系统为核心从安装配置讲起手把手带你完成静态成就、动态进度成就与隐藏成就的完整实现覆盖数据库设计、Trait方法调用、事件监听与撤销机制帮助你快速打造属于自己的游戏化Laravel应用。什么是Level-Up成就系统Level-UpLaravel成就系统以「体验驱动」为设计理念把枯燥的业务操作转化为可量化的成长体系。它围绕四个核心模块展开模块作用关联文件XP 经验值记录用户互动产生的积分src/Concerns/GiveExperience.php等级 Level根据XP自动升级、可设上限src/Models/Level.php成就 Achievement解锁徽章、支持进度与隐藏src/Models/Achievement.php排行榜 Leaderboard动态排行激发竞争src/Services/LeaderboardService.php本文聚焦成就系统而它的设计精妙之处在于一个is_secret字段 一个progress进度字段就组合出了三类截然不同的成就玩法。三种成就类型静态、动态与隐藏 动手前先搞清楚这三种成就的本质区别成就类型触发方式是否对外展示典型场景静态成就一次性直接授予✅ 可见「完成新手注册」「发布第一篇文章」动态成就按进度累计解锁✅ 可见「连续签到30天」「累计获得1000经验」隐藏成就达成后才揭晓❌ 默认不可见「彩蛋成就」「稀有称号」理解了吗静态成就 立即可得动态成就 进度驱动隐藏成就 惊喜揭晓。下面我们逐一实现。一键安装步骤快速搭建成就系统基础 首先通过 Composer 安装依赖无需 clone 仓库直接引入即可composer require cjmellor/level-up发布迁移文件与配置文件并执行迁移php artisan vendor:publish --taglevel-up-migrations php artisan vendor:publish --taglevel-up-config php artisan migrate配置发布后可编辑config/level-up.php其中定义了成就模型映射与用户外键关系这也是整套游戏化机制的可定制入口。成就数据表设计is_secret 字段的妙用 成就系统的数据库核心是两张表。第一张是成就定义表见 create_achievements_table.php.stub字段类型说明namestring成就名称is_secretboolean是否为隐藏成就默认 falsedescriptiontext成就描述imagestring成就图标第二张是用户与成就的多对多关系表 create_achievement_user_pivot_table.php.stub核心字段progress记录了每位用户的成就进度配合模型 AchievementUser.php 使用。静态成就实现一行代码授予成就 ✅先在你的User模型引入HasAchievementsTraituse LevelUp\Experience\Concerns\HasAchievements; class User extends Model { use HasAchievements; }创建一条静态成就并直接授予$achievement Achievement::create([ name 新手上路, description 完成新手注册, ]); $user-grantAchievement($achievement); // 立即授予授予成功后事件 AchievementAwarded.php 会自动触发你可以用监听器发送站内信、推送通知把奖励仪式感拉满。授予逻辑均封装在 HasAchievements.php 中。动态成就实现用进度追踪打造长线玩法 动态成就是留存利器它把大目标拆解为可感知的进度条。核心是「先建进度、再逐步推进」两步走。第一步创建带初始进度的成就$user-grantAchievement($achievement, 0); // 进度从 0 开始第二步在业务触发点推进进度// 用户每签到一次进度 1 $user-incrementAchievementProgress($achievement, 1);当进度累计到 100 时AchievementAwarded事件自动触发成就正式解锁。进度被安全地限制在 0~100 之间超出会抛出异常避免脏数据。想查询用户当前进度可用$user-achievementsWithProgress; // 所有有进度的成就 $user-achievementsWithSpecificProgress(50); // 进度达到 50% 以上的成就隐藏成就实现让玩家体验惊喜揭晓 隐藏成就是提升惊喜感的神器。创建时把is_secret置为 true 即可项目自带的工厂也提供了便捷写法见 AchievementFactory.php$secret Achievement::factory()-secret()-create(); $user-grantAchievement($secret); // 授予隐藏成就它的魔法藏在查询逻辑里普通成就列表achievements()会自动过滤掉is_secret true的记录而secretAchievements()专门查询隐藏成就allAchievements()则返回全部。这样玩家在个人主页看不到未解锁的隐藏成就达成瞬间才会揭晓惊喜感直接拉满。撤销成就与事件监听完整的生命周期管理 运营场景常常需要「收回奖励」。撤销逻辑同样封装完善$user-revokeAchievement($achievement); // 撤销成就撤销时自动触发 AchievementRevoked.php 事件进度也会一并清除。整套成就系统围绕以下事件形成闭环事件类触发时机AchievementAwarded成就授予进度为100或直接授予AchievementProgressionIncreased成就进度增加AchievementRevoked成就被撤销这些事件类位于src/Events/目录配合 Laravel 原生事件系统即可轻松扩展业务逻辑。最佳实践成就系统落地的3个建议 成就定义与业务解耦把成就的「触发条件」写在事件监听器里业务代码只负责推进进度职责清晰、易于维护。优先使用进度模式即使是静态成就也建议走progress流程方便未来平滑升级为多阶段成就而不必重构数据库。善用测试保障项目自带完善的测试用例见 HasAchievementsTest.php覆盖了重复授予、超进度、撤销等边界场景可作为你自定义成就逻辑的测试范本。至此你已经完成了从静态成就、动态进度成就到隐藏成就的完整闭环实现。无论是新手引导的一次性徽章、提升留存的签到进度还是制造惊喜的彩蛋成就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),仅供参考