fix: 优化LimitAspect中RedisScript类型及ObjUtil判断

close https://github.com/elunez/eladmin-mp/issues/47
This commit is contained in:
Jie Zheng 2025-01-11 10:28:49 +08:00
parent 987c5ec779
commit c474e0f3ee

View File

@ -15,6 +15,7 @@
*/
package me.zhengjie.aspect;
import cn.hutool.core.util.ObjUtil;
import com.google.common.collect.ImmutableList;
import me.zhengjie.annotation.Limit;
import me.zhengjie.exception.BadRequestException;
@ -71,9 +72,9 @@ public class LimitAspect {
ImmutableList<Object> keys = ImmutableList.of(StringUtils.join(limit.prefix(), "_", key, "_", request.getRequestURI().replace("/","_")));
String luaScript = buildLuaScript();
RedisScript<Number> redisScript = new DefaultRedisScript<>(luaScript, Number.class);
Number count = redisTemplate.execute(redisScript, keys, limit.count(), limit.period());
if (null != count && count.intValue() <= limit.count()) {
RedisScript<Long> redisScript = new DefaultRedisScript<>(luaScript, Long.class);
Long count = redisTemplate.execute(redisScript, keys, limit.count(), limit.period());
if (ObjUtil.isNotNull(count) && count.intValue() <= limit.count()) {
logger.info("第{}次访问key为 {},描述为 [{}] 的接口", count, keys, limit.name());
return joinPoint.proceed();
} else {