update 优化 防重 与 限流 功能支持国际化消息返回
This commit is contained in:
parent
56feff0455
commit
2ff36d81a1
@ -36,3 +36,5 @@ no.update.permission=您没有修改数据的权限,请联系管理员添加
|
|||||||
no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
|
no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
|
||||||
no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
|
no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
|
||||||
no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]
|
no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]
|
||||||
|
repeat.submit.message=不允许重复提交,请稍候再试
|
||||||
|
rate.limiter.message="访问过于频繁,请稍候再试"
|
||||||
|
@ -36,3 +36,5 @@ no.update.permission=You do not have permission to modify data,please contact
|
|||||||
no.delete.permission=You do not have permission to delete data,please contact your administrator to add permissions [{0}]
|
no.delete.permission=You do not have permission to delete data,please contact your administrator to add permissions [{0}]
|
||||||
no.export.permission=You do not have permission to export data,please contact your administrator to add permissions [{0}]
|
no.export.permission=You do not have permission to export data,please contact your administrator to add permissions [{0}]
|
||||||
no.view.permission=You do not have permission to view data,please contact your administrator to add permissions [{0}]
|
no.view.permission=You do not have permission to view data,please contact your administrator to add permissions [{0}]
|
||||||
|
repeat.submit.message=Repeat submit is not allowed, please try again later
|
||||||
|
rate.limiter.message=Visit too frequently, please try again later
|
||||||
|
@ -36,3 +36,5 @@ no.update.permission=您没有修改数据的权限,请联系管理员添加
|
|||||||
no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
|
no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
|
||||||
no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
|
no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
|
||||||
no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]
|
no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]
|
||||||
|
repeat.submit.message=不允许重复提交,请稍候再试
|
||||||
|
rate.limiter.message="访问过于频繁,请稍候再试"
|
||||||
|
@ -22,8 +22,8 @@ public @interface RepeatSubmit {
|
|||||||
TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
|
TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提示消息
|
* 提示消息 支持国际化 格式为 {code}
|
||||||
*/
|
*/
|
||||||
String message() default "不允许重复提交,请稍候再试";
|
String message() default "{repeat.submit.message}";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -117,7 +117,7 @@ public class TestDemoController extends BaseController {
|
|||||||
@ApiOperation("新增测试单表")
|
@ApiOperation("新增测试单表")
|
||||||
@SaCheckPermission("demo:demo:add")
|
@SaCheckPermission("demo:demo:add")
|
||||||
@Log(title = "测试单表", businessType = BusinessType.INSERT)
|
@Log(title = "测试单表", businessType = BusinessType.INSERT)
|
||||||
@RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS, message = "不允许重复提交")
|
@RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS, message = "{repeat.submit.message}")
|
||||||
@PostMapping()
|
@PostMapping()
|
||||||
public R<Void> add(@RequestBody TestDemoBo bo) {
|
public R<Void> add(@RequestBody TestDemoBo bo) {
|
||||||
// 使用校验工具对标 @Validated(AddGroup.class) 注解
|
// 使用校验工具对标 @Validated(AddGroup.class) 注解
|
||||||
|
@ -3,6 +3,7 @@ package com.ruoyi.framework.aspectj;
|
|||||||
import com.ruoyi.common.annotation.RateLimiter;
|
import com.ruoyi.common.annotation.RateLimiter;
|
||||||
import com.ruoyi.common.enums.LimitType;
|
import com.ruoyi.common.enums.LimitType;
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
|
import com.ruoyi.common.utils.MessageUtils;
|
||||||
import com.ruoyi.common.utils.ServletUtils;
|
import com.ruoyi.common.utils.ServletUtils;
|
||||||
import com.ruoyi.common.utils.redis.RedisUtils;
|
import com.ruoyi.common.utils.redis.RedisUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -37,7 +38,7 @@ public class RateLimiterAspect {
|
|||||||
}
|
}
|
||||||
long number = RedisUtils.rateLimiter(combineKey, rateType, count, time);
|
long number = RedisUtils.rateLimiter(combineKey, rateType, count, time);
|
||||||
if (number == -1) {
|
if (number == -1) {
|
||||||
throw new ServiceException("访问过于频繁,请稍候再试");
|
throw new ServiceException(MessageUtils.message("rate.limiter.message"));
|
||||||
}
|
}
|
||||||
log.info("限制令牌 => {}, 剩余令牌 => {}, 缓存key => '{}'", count, number, combineKey);
|
log.info("限制令牌 => {}, 剩余令牌 => {}, 缓存key => '{}'", count, number, combineKey);
|
||||||
} catch (ServiceException e) {
|
} catch (ServiceException e) {
|
||||||
|
@ -8,6 +8,7 @@ import com.ruoyi.common.constant.Constants;
|
|||||||
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
import com.ruoyi.common.utils.JsonUtils;
|
import com.ruoyi.common.utils.JsonUtils;
|
||||||
|
import com.ruoyi.common.utils.MessageUtils;
|
||||||
import com.ruoyi.common.utils.ServletUtils;
|
import com.ruoyi.common.utils.ServletUtils;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.common.utils.redis.RedisUtils;
|
import com.ruoyi.common.utils.redis.RedisUtils;
|
||||||
@ -71,7 +72,11 @@ public class RepeatSubmitAspect {
|
|||||||
RedisUtils.setCacheObject(cacheRepeatKey, "", interval, TimeUnit.MILLISECONDS);
|
RedisUtils.setCacheObject(cacheRepeatKey, "", interval, TimeUnit.MILLISECONDS);
|
||||||
KEY_CACHE.set(cacheRepeatKey);
|
KEY_CACHE.set(cacheRepeatKey);
|
||||||
} else {
|
} else {
|
||||||
throw new ServiceException(repeatSubmit.message());
|
String message = repeatSubmit.message();
|
||||||
|
if (StringUtils.startsWith(message, "{") && StringUtils.endsWith(message, "}")) {
|
||||||
|
message = MessageUtils.message(StringUtils.substring(message, 1, message.length() - 1));
|
||||||
|
}
|
||||||
|
throw new ServiceException(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user