sspanel v3魔改版添加满多少加送余额功能,提高用户粘性.md

sspanel自带的功能比较少,个性化的定制空间小。sspanel有一个优惠码的功能,但只能在购买套餐时使用,还有时间限制问题。个人觉得充值送余额(满送)更能直接刺激用户消费。

首先确定你的付款方式,再决定修改哪个文件。不过无论修改哪个文件,都是在 app/Services/Gateway/ 目录下,然后根据付款方式选择修改文件。码支付就修改 Codepay.php,trimepay支付就修改 TrimePay.php,请务必选择正确。

找到notify函数,也就是下面这句,我们就修改这个函数即可达到目的。

public function notify($request, $response, $args)

notify函数内找到下面这行代码,这行代码表示将金额写入数据库,也就表示这行代码执行完毕后用户就充值成功了。我们现在在这行代码下面“搞事情”。(这里都是以码支付为例,不同支付方式的代码有出入)

$this->postPayment($pay_id, $payment);

判断用户的充值金额,如果我们想要阶梯式赠送余额:满500送10%,满300送8%,满200送6%,满100送5%,满50送3%。这里的满送规则仅作举例,根据实际情况你可自行修改。

$userid = explode("UID",$pay_id)[1];

if ($money >= 500 && $money <= 1000)
{
$perc = 0.1;
$text = "余额赠送(满500加送10%)";
}
if($money >= 300 && $money < 500){
$perc = 0.08;
$text = "余额赠送(满300加送8%)";
}
if($money >= 200 && $money < 300){
$perc = 0.06;
$text = "余额赠送(满200加送6%)";
}
if($money >= 100 && $money < 200){
$perc = 0.05;
$text = "余额赠送(满100加送5%)";
}
if($money >= 50 && $money <100){
$perc = 0.03;
$text = "余额赠送(满50加送3%)";
}

先判断达到满送活动的用户,再为他额外加送余额。

$givemoney = User::where('id', '=', $userid)->first();
$givemoney->money += ($money * $perc);
$givemoney->save();
光增加余额还不行,要让用户直观的看到加送了余额,以及加送了多少等信息,我们还需要增加记录。

$code = new Code();
$code->code = $text;
$code->type = -1;
$code->number = $money * $perc;
$code->isused = 1;
$code->userid = $userid;
$code->usedatetime = date("Y-m-d H:i:s");
$code->save();

最后收尾工作,我们要导入两个数据库类来让我们写的代码能跟数据库正常交互。在此文件的开头添加如下代码:

use App\Models\User;
use App\Models\Code;

一个满送活动就可以快乐的搞起来了。

为了此代码逻辑的严谨性,我们要保证不会存在重复赠送余额的可能。所以我们要判断每一笔满足满送条件的充值,是否已经赠送了余额,对于赠送过了的充值我们直接跳过上面的代码运行。在判断用户充值金额的代码前面,添加如下代码:

$leixing = Code::where("userid", "=", $userid)-&gt;latest('id')-&gt;first()-&gt;code;
if (mb_strstr($leixing, "余额赠送"))
{
exit("success");
}

现在我们尝试对于充值成功并满足满送条件的充值进行补单,发现没有出现重复加送余额的bug。