2023-01-29 10:26:52 +08:00

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