love_php/app/Jobs/CheckCoinSafe.php
2026-04-02 09:20:51 +08:00

69 lines
2.1 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}
}
}