50 lines
1.1 KiB
PHP
50 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Listeners;
|
|
|
|
use App\Bonus\Agent;
|
|
use App\Bonus\Direct;
|
|
use App\Events\OrderPaid;
|
|
use App\Models\Config;
|
|
use Carbon\Carbon;
|
|
|
|
class OrderPaiddListener
|
|
{
|
|
/**
|
|
* 创建事件监听器。
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
|
|
}
|
|
|
|
/**
|
|
* 处理事件。
|
|
* @param \App\Events\OrderPaid $event
|
|
* @return void
|
|
*/
|
|
public function handle(OrderPaid $event)
|
|
{
|
|
$order = $event->order;
|
|
if ($order->type == 2) {
|
|
$year = Config::where('name', 'upgrade_time')->value('value') ?? 1;
|
|
$user = $order->user;
|
|
|
|
$user->identityUpdate(1, 'AutoUp', ['orderid' => $order->orderid]);
|
|
|
|
$user->vipd_at = Carbon::now();
|
|
$user->vip_end_at = Carbon::now()->addYear($year);
|
|
$user->save();
|
|
}
|
|
|
|
if ($order->remark) {
|
|
$remark = json_decode($order->remark, true);
|
|
$order->user->info->update($remark);
|
|
}
|
|
|
|
$bonus = Direct::settlement($order);
|
|
Agent::settlement($order, null, $bonus);
|
|
}
|
|
}
|