69 lines
2.1 KiB
PHP
69 lines
2.1 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\Coin;
|
|||
|
|
use App\Models\CoinLog;
|
|||
|
|
use App\Http\Response\ResponseJson;
|
|||
|
|
use Illuminate\Support\Facades\Redis;
|
|||
|
|
|
|||
|
|
class CheckCoinSafe implements ShouldQueue
|
|||
|
|
{
|
|||
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|||
|
|
use ResponseJson;
|
|||
|
|
protected $user_id;
|
|||
|
|
/**
|
|||
|
|
* Create a new job instance.
|
|||
|
|
*
|
|||
|
|
* @return void
|
|||
|
|
*/
|
|||
|
|
public function __construct($user_id)
|
|||
|
|
{
|
|||
|
|
$this->user_id = $user_id;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Execute the job.
|
|||
|
|
*
|
|||
|
|
* @return void
|
|||
|
|
*/
|
|||
|
|
public function handle()
|
|||
|
|
{
|
|||
|
|
try {
|
|||
|
|
//coin账号
|
|||
|
|
$coin = Coin::where('user_id', $this->user_id)->first();
|
|||
|
|
if (empty($coin)) throw new \Exception("用户id:".$this->user_id.",coin账号不存在");
|
|||
|
|
//监听时间间隔 单位分钟
|
|||
|
|
$key = 'coin_safe_time';
|
|||
|
|
$coin_safe_time = Redis::get($key);
|
|||
|
|
if (empty($coin_safe_time)) {
|
|||
|
|
$coin_safe_time = 5;
|
|||
|
|
Redis::set($key, $coin_safe_time);
|
|||
|
|
}
|
|||
|
|
//监听分享用户数 单位个
|
|||
|
|
$num_key = 'coin_share_num';
|
|||
|
|
$coin_share_num = Redis::get($num_key);
|
|||
|
|
if (empty($coin_share_num)) {
|
|||
|
|
$coin_share_num = 10;
|
|||
|
|
Redis::set($num_key, $coin_share_num);
|
|||
|
|
}
|
|||
|
|
$start_time = date('Y-m-d H:i:s', time() - $coin_safe_time * 60);
|
|||
|
|
$end_time = date('Y-m-d H:i:s');
|
|||
|
|
$count = CoinLog::where('user_id', $this->user_id)->where('type', 'INVIT')->where('remark', "商家入驻")->whereBetween('created_at', [$start_time, $end_time])->count();
|
|||
|
|
if ($count >= $coin_share_num) {
|
|||
|
|
$coin->is_safe = 0;
|
|||
|
|
$coin->save();
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
} catch (\Exception $e) {
|
|||
|
|
$this->getError($e);
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|