77 lines
2.0 KiB
PHP
77 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Jobs;
|
|
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Queue\SerializesModels;
|
|
use Illuminate\Queue\InteractsWithQueue;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
|
use App\Models\Live\AssetLog;
|
|
use App\Models\Live\Asset;
|
|
|
|
class MakeOldShareCash implements ShouldQueue
|
|
{
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
|
|
public $tries = 1;
|
|
protected $viewer_id;
|
|
protected $sharer_id;
|
|
/**
|
|
* Create a new job instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct($param)
|
|
{
|
|
$this->viewer_id = $param['viewer_id'];
|
|
$this->sharer_id = $param['sharer_id'];
|
|
}
|
|
|
|
/**
|
|
* Execute the job.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function handle()
|
|
{
|
|
$viewer_id = $this->viewer_id;
|
|
$sharer_id = $this->sharer_id;
|
|
if (empty($sharer_id) || empty($viewer_id)) {
|
|
return true;
|
|
}
|
|
try {
|
|
//开启事务
|
|
\DB::beginTransaction();
|
|
$share_values = 0.01;
|
|
//更新钱包
|
|
$asset = Asset::firstOrCreate(['viewer_id'=>$sharer_id]);
|
|
// $asset->increment('share_cash', $share_values);
|
|
$score = (($asset->share_cash * 100) + ($asset->cash * 100)) / 100;
|
|
//生成钱包变更记录
|
|
$this->storeAssetLog($sharer_id, $share_values, $score, $viewer_id);
|
|
//提交事务
|
|
\DB::commit();
|
|
return true;
|
|
} catch (\Exception $e) {
|
|
//回滚事务
|
|
\DB::rollback();
|
|
\Log::error($e->getMessage().';line-'.$e->getLine());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public function storeAssetLog($sharer_id, $share_values, $score, $viewer_id)
|
|
{
|
|
$log = new AssetLog;
|
|
$log->viewer_id = $sharer_id;
|
|
$log->num = $share_values;
|
|
$log->type = 2;
|
|
$log->log_id = $viewer_id;
|
|
$log->score = $score;
|
|
$log->is_hooked = 0;
|
|
$log->save();
|
|
return ;
|
|
}
|
|
}
|