运营人员可通过可视化后台或代码注册配置积分规则,支持签到、购物返分等场景;需安装think-integral插件、启用中间件、发布并配置integral.php参数,调用gain/deduct方法触发积分变动,余额不足时抛出异常。

运营人员需要快速配置用户积分获取与消耗规则,比如签到送分、购物返分、兑换礼品扣分,同时避免手动写SQL或修改核心代码导致系统不稳定。
安装并启用积分插件
进入ThinkPHP项目根目录,执行命令行安装官方维护的think-integral插件包:
composer require topthink/think-integral
安装完成后,打开app/config/app.php,在'middleware'数组末尾追加IntegralMiddleware::class;若该中间件不存在,请确认插件已正确发布配置——【未执行php think integral:install会导致后续所有积分操作无响应】。
配置基础积分参数
运行命令生成配置文件:
php think integral:publish
编辑config/integral.php,重点修改以下三项:
【'default_rule' => 'user_level':表示新用户注册默认按会员等级匹配积分规则,若设为'none'则新用户积分为0且无法自动增长;
将'exchange_rate' => 100改为50,即1元=50积分(商城类项目常用);
设置'max_daily_gain' => 200,防止羊毛党通过刷签到单日狂揽上千分。
定义积分行为规则
方法一:后台可视化配置(推荐给运营人员)
登录后台管理页→点击「积分中心」→「行为规则」→新增规则;填写「行为标识」如order_pay、「触发条件」选择「订单支付成功」、「奖励积分」填{amount}*10(支持字段变量解析)。
方法二:代码注册(适合开发预埋)
在app/event/IntegralEvent.php中,于bind()方法内添加:
IntegralRule::register('login_daily', ['gain' => 20, 'limit' => 1, 'desc' => '每日首次登录']);
注意:行为标识login_daily必须全局唯一,重复注册会覆盖前一条规则且不报错。
触发积分变动
第一步:在业务逻辑中获取用户积分实例
$integral = \think\facade\Integral::user($userId);
第二步:执行增加操作(例如用户完成支付)
$integral->gain('order_pay', ['amount' => $order['pay_price']], '订单返积分');
第三步:执行扣除操作(例如兑换优惠券)
$integral->deduct('coupon_use', ['coupon_id' => $id], '兑换满减券');
这一步必须传入行为标识和描述,否则日志无法追溯;【若扣除积分时余额不足,默认拒绝执行且抛出IntegralException异常,不会透支】。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











