Commit 1442e125 by 袁伟铭

1.0.0

parent 88aba3f9
...@@ -117,6 +117,7 @@ public class LimitAspect { ...@@ -117,6 +117,7 @@ public class LimitAspect {
*/ */
private String buildLimitKey(Limit limit, JoinPoint joinPoint, Method signatureMethod) { private String buildLimitKey(Limit limit, JoinPoint joinPoint, Method signatureMethod) {
String limitKey = null; String limitKey = null;
String prefix = limit.prefix();
String key = limit.key(); String key = limit.key();
key = StringUtils.isBlank(key) ? signatureMethod.getName() : key; key = StringUtils.isBlank(key) ? signatureMethod.getName() : key;
LimitType limitType = limit.limitType(); LimitType limitType = limit.limitType();
...@@ -124,13 +125,13 @@ public class LimitAspect { ...@@ -124,13 +125,13 @@ public class LimitAspect {
Object[] args = joinPoint.getArgs(); Object[] args = joinPoint.getArgs();
switch (limitType) { switch (limitType) {
case IP: case IP:
limitKey = BaseCacheKeys.rateLimitKey(LimitType.IP, key, HttpRequestUtils.getClientIp()); limitKey = BaseCacheKeys.rateLimitKey(LimitType.IP, prefix, key, HttpRequestUtils.getClientIp());
break; break;
case USER: case USER:
// 按用户登录id限流 // 按用户登录id限流
ApiTokenVo apiTokenVo = ContextUtils.getUserContext(); ApiTokenVo apiTokenVo = ContextUtils.getUserContext();
if (apiTokenVo != null) { if (apiTokenVo != null) {
limitKey = BaseCacheKeys.rateLimitKey(LimitType.USER, key, String.valueOf(apiTokenVo.getUserId())); limitKey = BaseCacheKeys.rateLimitKey(LimitType.USER, prefix, key, String.valueOf(apiTokenVo.getUserId()));
} else { } else {
log.warn(">> 未找到登录用户信息,限流失败: {}", joinPoint); log.warn(">> 未找到登录用户信息,限流失败: {}", joinPoint);
} }
...@@ -146,7 +147,7 @@ public class LimitAspect { ...@@ -146,7 +147,7 @@ public class LimitAspect {
break; break;
} }
String fieldValue = getPojoField(field, args[0]); String fieldValue = getPojoField(field, args[0]);
limitKey = BaseCacheKeys.rateLimitKey(LimitType.POJO_FIELD, key, fieldValue); limitKey = BaseCacheKeys.rateLimitKey(LimitType.POJO_FIELD, prefix, key, fieldValue);
break; break;
case PARAM: case PARAM:
int keyIndex = limit.keyParamIndex(); int keyIndex = limit.keyParamIndex();
...@@ -154,13 +155,13 @@ public class LimitAspect { ...@@ -154,13 +155,13 @@ public class LimitAspect {
if (keyIndex < 0 || args == null || args.length < (keyIndex + 1) || args[keyIndex] == null) { if (keyIndex < 0 || args == null || args.length < (keyIndex + 1) || args[keyIndex] == null) {
log.warn(">> 未找到参数或参数值为空,限流失败: {}, keyParamIndex={}", joinPoint, keyIndex); log.warn(">> 未找到参数或参数值为空,限流失败: {}, keyParamIndex={}", joinPoint, keyIndex);
} else if (isValidKeyParamType(args[keyIndex])) { } else if (isValidKeyParamType(args[keyIndex])) {
limitKey = BaseCacheKeys.rateLimitKey(LimitType.PARAM, key, String.valueOf(args[keyIndex])); limitKey = BaseCacheKeys.rateLimitKey(LimitType.PARAM, prefix, key, String.valueOf(args[keyIndex]));
} else { } else {
log.warn(">> 设置的参数不是string/long/int/short/byte类型,限流失败: {}", joinPoint); log.warn(">> 设置的参数不是string/long/int/short/byte类型,限流失败: {}", joinPoint);
} }
break; break;
case KEY: case KEY:
limitKey = BaseCacheKeys.rateLimitKey(LimitType.KEY, key); limitKey = BaseCacheKeys.rateLimitKey(LimitType.KEY, prefix, key);
break; break;
default: default:
// nothing to do // nothing to do
......
...@@ -43,23 +43,28 @@ public abstract class BaseCacheKeys { ...@@ -43,23 +43,28 @@ public abstract class BaseCacheKeys {
* 构建限流Key * 构建限流Key
* *
* @param type * @param type
* @param prefix
* @param key * @param key
* @return * @return
*/ */
public static String rateLimitKey(LimitType type, String key) { public static String rateLimitKey(LimitType type, String prefix, String key) {
return rateLimitKey(type, key, null); return rateLimitKey(type, prefix, key, null);
} }
/** /**
* 构建限流key * 构建限流key
* *
* @param type * @param type
* @param prefix
* @param key * @param key
* @param param * @param param
* @return * @return
*/ */
public static String rateLimitKey(LimitType type, String key, String param) { public static String rateLimitKey(LimitType type, String prefix, String key, String param) {
String result = RATE_LIMIT; String result = RATE_LIMIT;
if (StringUtils.isNotBlank(prefix)) {
result = PREFIX + prefix + ".";
}
switch (type) { switch (type) {
case IP: case IP:
result += "ip."; result += "ip.";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment