ufutx.dma/app/Jobs/UnfreezeCommission.php
2026-03-04 14:42:40 +08:00

74 lines
2.6 KiB
PHP

<?php
namespace App\Jobs;
use App\Events\CommissionUnfreezeComplete;
use App\Models\OrderCommission;
use App\Models\PartnerCommission;
use App\Models\PartnerWallet;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class UnfreezeCommission implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected OrderCommission $commission;
protected PartnerCommission $partner_commission;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(OrderCommission $commission)
{
$this->commission = $commission;
$this->partner_commission = $commission->partner_commission;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$partner_commission = $this->partner_commission;
// 判断佣金是否已经解冻或未到时间
if ($partner_commission->status != 0 || $partner_commission->unfreeze_time > now()) {
Log::info('order_commission'.$this->commission->id."的状态为".$partner_commission->status.",解冻时间为".$partner_commission->unfreeze_time.",当前时间为".date('Y-m-d H:i:s'));
return;
}
try {
DB::beginTransaction();
Log::info('order_commission'.$this->commission->id.'佣金解冻start');
// 更新佣金状态为已解冻
$partner_commission->status = 1;
$partner_commission->save();
Log::info('order_commission'.$this->commission->id.'更新佣金状态为已解冻');
// 更新合伙人钱包余额
$wallet = PartnerWallet::where('user_id', $partner_commission->user_id)->first();
$wallet->balance = bcadd($wallet->balance,$partner_commission->amount,2);
$wallet->frozen_amount = bcsub($wallet->frozen_amount,$partner_commission->amount,2);
$wallet->save();
Log::info('order_commission'.$this->commission->id.'更新合伙人钱包余额');
DB::commit();
Log::info('order_commission'.$this->commission->id.'佣金解冻完成');
CommissionUnfreezeComplete::dispatch($this->commission);
}catch (\Exception){
DB::rollBack();
Log::info('order_commission'.$this->commission->id.'佣金解冻失败');
}
}
}