update 同步 ruoyi 自定义限流 新功能

This commit is contained in:
疯狂的狮子li 2021-08-17 14:34:29 +08:00
parent 896939ce4e
commit c271ffc066
2 changed files with 20 additions and 18 deletions

View File

@ -1,5 +1,6 @@
package com.ruoyi.framework.config; package com.ruoyi.framework.config;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.config.properties.RedissonProperties; import com.ruoyi.framework.config.properties.RedissonProperties;
import org.redisson.Redisson; import org.redisson.Redisson;
@ -16,6 +17,7 @@ import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
@ -90,8 +92,7 @@ public class RedisConfig extends CachingConfigurerSupport {
} }
@Bean @Bean
public DefaultRedisScript<Long> limitScript() public DefaultRedisScript<Long> limitScript() {
{
DefaultRedisScript<Long> redisScript = new DefaultRedisScript<>(); DefaultRedisScript<Long> redisScript = new DefaultRedisScript<>();
redisScript.setScriptText(limitScriptText()); redisScript.setScriptText(limitScriptText());
redisScript.setResultType(Long.class); redisScript.setResultType(Long.class);
@ -101,20 +102,21 @@ public class RedisConfig extends CachingConfigurerSupport {
/** /**
* 限流脚本 * 限流脚本
*/ */
private String limitScriptText() private String limitScriptText() {
{ return StrUtil.builder()
return "local key = KEYS[1]\n" + .append("local key = KEYS[1]\n")
"local count = tonumber(ARGV[1])\n" + .append("local count = tonumber(ARGV[1])\n")
"local time = tonumber(ARGV[2])\n" + .append("local time = tonumber(ARGV[2])\n")
"local current = redis.call('get', key);\n" + .append("local current = redis.call('get', key);\n")
"if current and tonumber(current) > count then\n" + .append("if current and tonumber(current) > count then\n")
" return current;\n" + .append(" return current;\n")
"end\n" + .append("end\n")
"current = redis.call('incr', key)\n" + .append("current = redis.call('incr', key)\n")
"if tonumber(current) == 1 then\n" + .append("if tonumber(current) == 1 then\n")
" redis.call('expire', key, time)\n" + .append(" redis.call('expire', key, time)\n")
"end\n" + .append("end\n")
"return current;"; .append("return current;")
.toString();
} }
} }

View File

@ -44,8 +44,8 @@ export function downLoadExcel(url, params) {
for (const key of Object.keys(value)) { for (const key of Object.keys(value)) {
if (value[key] !== null && typeof (value[key]) !== 'undefined') { if (value[key] !== null && typeof (value[key]) !== 'undefined') {
let params = propName + '[' + key + ']'; let params = propName + '[' + key + ']';
let subPart = encodeURIComponent(params) + "=" let subPart = encodeURIComponent(params) + '=';
urlparams += subPart + encodeURIComponent(value[key]) + "&"; urlparams += subPart + encodeURIComponent(value[key]) + '&';
} }
} }
} else { } else {