27 lines
699 B
PHP
27 lines
699 B
PHP
<?php
|
|
|
|
namespace app\api\behavior;
|
|
|
|
use app\api\exception\ApiException;
|
|
use app\common\exception\EnumCode;
|
|
use think\Env;
|
|
use Lock\Lock;
|
|
|
|
class ActionAllowed
|
|
{
|
|
public function run(&$params)
|
|
{
|
|
$data = array_merge(['period' => Env::get('ACTION_ALLOWED.PERIOD', 1), 'max_count' => Env::get('ACTION_ALLOWED.MAX_COUNT', 1)], $params);
|
|
|
|
$key = Env::get('ACTION_ALLOWED.PRE_FIX', 'api') . $data['method'] . $data['key'];
|
|
|
|
$period = $data['period'];
|
|
|
|
$maxCount = $data['max_count'];
|
|
|
|
if (!Lock::isActionAllowed($key, $period, $maxCount)) {
|
|
throw new ApiException('操作频繁,请稍后再试!', EnumCode::ActionAllowedError);
|
|
}
|
|
}
|
|
}
|