疯狂的狮子li
2021-08-17 c271ffc066c35beafe40acfb63679555f1ed7d18
update 同步 ruoyi 自定义限流 新功能
已修改2个文件
38 ■■■■ 文件已修改
ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/utils/download.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java
@@ -1,5 +1,6 @@
package com.ruoyi.framework.config;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.config.properties.RedissonProperties;
import org.redisson.Redisson;
@@ -16,6 +17,7 @@
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import java.io.IOException;
import java.util.HashMap;
@@ -90,8 +92,7 @@
    }
    @Bean
    public DefaultRedisScript<Long> limitScript()
    {
    public DefaultRedisScript<Long> limitScript() {
        DefaultRedisScript<Long> redisScript = new DefaultRedisScript<>();
        redisScript.setScriptText(limitScriptText());
        redisScript.setResultType(Long.class);
@@ -101,20 +102,21 @@
    /**
     * 限流脚本
     */
    private String limitScriptText()
    {
        return "local key = KEYS[1]\n" +
            "local count = tonumber(ARGV[1])\n" +
            "local time = tonumber(ARGV[2])\n" +
            "local current = redis.call('get', key);\n" +
            "if current and tonumber(current) > count then\n" +
            "    return current;\n" +
            "end\n" +
            "current = redis.call('incr', key)\n" +
            "if tonumber(current) == 1 then\n" +
            "    redis.call('expire', key, time)\n" +
            "end\n" +
            "return current;";
    private String limitScriptText() {
        return StrUtil.builder()
            .append("local key = KEYS[1]\n")
            .append("local count = tonumber(ARGV[1])\n")
            .append("local time = tonumber(ARGV[2])\n")
            .append("local current = redis.call('get', key);\n")
            .append("if current and tonumber(current) > count then\n")
            .append("    return current;\n")
            .append("end\n")
            .append("current = redis.call('incr', key)\n")
            .append("if tonumber(current) == 1 then\n")
            .append("    redis.call('expire', key, time)\n")
            .append("end\n")
            .append("return current;")
            .toString();
    }
}
ruoyi-ui/src/utils/download.js
@@ -44,8 +44,8 @@
          for (const key of Object.keys(value)) {
            if (value[key] !== null && typeof (value[key]) !== 'undefined') {
              let params = propName + '[' + key + ']';
              let subPart = encodeURIComponent(params) + "="
              urlparams += subPart + encodeURIComponent(value[key]) + "&";
              let subPart = encodeURIComponent(params) + '=';
              urlparams += subPart + encodeURIComponent(value[key]) + '&';
            }
          }
        } else {