新增缓存列表菜单功能
This commit is contained in:
		
							parent
							
								
									abb88d622a
								
							
						
					
					
						commit
						9d7e32fb07
					
				@ -6,12 +6,13 @@ import java.util.concurrent.TimeUnit;
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import javax.imageio.ImageIO;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import com.ruoyi.common.config.RuoYiConfig;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.util.FastByteArrayOutputStream;
 | 
			
		||||
import org.springframework.web.bind.annotation.GetMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
import com.google.code.kaptcha.Producer;
 | 
			
		||||
import com.ruoyi.common.config.RuoYiConfig;
 | 
			
		||||
import com.ruoyi.common.constant.CacheConstants;
 | 
			
		||||
import com.ruoyi.common.constant.Constants;
 | 
			
		||||
import com.ruoyi.common.core.domain.AjaxResult;
 | 
			
		||||
import com.ruoyi.common.core.redis.RedisCache;
 | 
			
		||||
@ -54,7 +55,7 @@ public class CaptchaController
 | 
			
		||||
 | 
			
		||||
        // 保存验证码信息
 | 
			
		||||
        String uuid = IdUtils.simpleUUID();
 | 
			
		||||
        String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
 | 
			
		||||
        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
 | 
			
		||||
 | 
			
		||||
        String capStr = null, code = null;
 | 
			
		||||
        BufferedImage image = null;
 | 
			
		||||
 | 
			
		||||
@ -1,19 +1,25 @@
 | 
			
		||||
package com.ruoyi.web.controller.monitor;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Properties;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.data.redis.core.RedisCallback;
 | 
			
		||||
import org.springframework.data.redis.core.RedisTemplate;
 | 
			
		||||
import org.springframework.security.access.prepost.PreAuthorize;
 | 
			
		||||
import org.springframework.web.bind.annotation.DeleteMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.GetMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.PathVariable;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
import com.ruoyi.common.constant.CacheConstants;
 | 
			
		||||
import com.ruoyi.common.core.domain.AjaxResult;
 | 
			
		||||
import com.ruoyi.common.utils.StringUtils;
 | 
			
		||||
import com.ruoyi.system.domain.SysCache;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 缓存监控
 | 
			
		||||
@ -27,6 +33,16 @@ public class CacheController
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private RedisTemplate<String, String> redisTemplate;
 | 
			
		||||
 | 
			
		||||
    private final static List<SysCache> caches = new ArrayList<SysCache>();
 | 
			
		||||
    {
 | 
			
		||||
        caches.add(new SysCache(CacheConstants.LOGIN_TOKEN_KEY, "用户信息"));
 | 
			
		||||
        caches.add(new SysCache(CacheConstants.SYS_CONFIG_KEY, "配置信息"));
 | 
			
		||||
        caches.add(new SysCache(CacheConstants.SYS_DICT_KEY, "数据字典"));
 | 
			
		||||
        caches.add(new SysCache(CacheConstants.CAPTCHA_CODE_KEY, "验证码"));
 | 
			
		||||
        caches.add(new SysCache(CacheConstants.REPEAT_SUBMIT_KEY, "防重提交"));
 | 
			
		||||
        caches.add(new SysCache(CacheConstants.RATE_LIMIT_KEY, "限流处理"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
 | 
			
		||||
    @GetMapping()
 | 
			
		||||
    public AjaxResult getInfo() throws Exception
 | 
			
		||||
@ -50,4 +66,54 @@ public class CacheController
 | 
			
		||||
        result.put("commandStats", pieList);
 | 
			
		||||
        return AjaxResult.success(result);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
 | 
			
		||||
    @GetMapping("/getNames")
 | 
			
		||||
    public AjaxResult cache()
 | 
			
		||||
    {
 | 
			
		||||
        return AjaxResult.success(caches);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
 | 
			
		||||
    @GetMapping("/getKeys/{cacheName}")
 | 
			
		||||
    public AjaxResult getCacheKeys(@PathVariable String cacheName)
 | 
			
		||||
    {
 | 
			
		||||
        Set<String> cacheKyes = redisTemplate.keys(cacheName + "*");
 | 
			
		||||
        return AjaxResult.success(cacheKyes);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
 | 
			
		||||
    @GetMapping("/getValue/{cacheName}/{cacheKey}")
 | 
			
		||||
    public AjaxResult getCacheValue(@PathVariable String cacheName, @PathVariable String cacheKey)
 | 
			
		||||
    {
 | 
			
		||||
        String cacheValue = redisTemplate.opsForValue().get(cacheKey);
 | 
			
		||||
        SysCache sysCache = new SysCache(cacheName, cacheKey, cacheValue);
 | 
			
		||||
        return AjaxResult.success(sysCache);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
 | 
			
		||||
    @DeleteMapping("/clearCacheName/{cacheName}")
 | 
			
		||||
    public AjaxResult clearCacheName(@PathVariable String cacheName)
 | 
			
		||||
    {
 | 
			
		||||
        Collection<String> cacheKeys = redisTemplate.keys(cacheName + "*");
 | 
			
		||||
        redisTemplate.delete(cacheKeys);
 | 
			
		||||
        return AjaxResult.success();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
 | 
			
		||||
    @DeleteMapping("/clearCacheKey/{cacheKey}")
 | 
			
		||||
    public AjaxResult clearCacheKey(@PathVariable String cacheKey)
 | 
			
		||||
    {
 | 
			
		||||
        redisTemplate.delete(cacheKey);
 | 
			
		||||
        return AjaxResult.success();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
 | 
			
		||||
    @DeleteMapping("/clearCacheAll")
 | 
			
		||||
    public AjaxResult clearCacheAll()
 | 
			
		||||
    {
 | 
			
		||||
        Collection<String> cacheKeys = redisTemplate.keys("*");
 | 
			
		||||
        redisTemplate.delete(cacheKeys);
 | 
			
		||||
        return AjaxResult.success();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.PathVariable;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
import com.ruoyi.common.annotation.Log;
 | 
			
		||||
import com.ruoyi.common.constant.Constants;
 | 
			
		||||
import com.ruoyi.common.constant.CacheConstants;
 | 
			
		||||
import com.ruoyi.common.core.controller.BaseController;
 | 
			
		||||
import com.ruoyi.common.core.domain.AjaxResult;
 | 
			
		||||
import com.ruoyi.common.core.domain.model.LoginUser;
 | 
			
		||||
@ -42,7 +42,7 @@ public class SysUserOnlineController extends BaseController
 | 
			
		||||
    @GetMapping("/list")
 | 
			
		||||
    public TableDataInfo list(String ipaddr, String userName)
 | 
			
		||||
    {
 | 
			
		||||
        Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY + "*");
 | 
			
		||||
        Collection<String> keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
 | 
			
		||||
        List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
 | 
			
		||||
        for (String key : keys)
 | 
			
		||||
        {
 | 
			
		||||
@ -86,7 +86,7 @@ public class SysUserOnlineController extends BaseController
 | 
			
		||||
    @DeleteMapping("/{tokenId}")
 | 
			
		||||
    public AjaxResult forceLogout(@PathVariable String tokenId)
 | 
			
		||||
    {
 | 
			
		||||
        redisCache.deleteObject(Constants.LOGIN_TOKEN_KEY + tokenId);
 | 
			
		||||
        redisCache.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
 | 
			
		||||
        return AjaxResult.success();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@ import java.lang.annotation.ElementType;
 | 
			
		||||
import java.lang.annotation.Retention;
 | 
			
		||||
import java.lang.annotation.RetentionPolicy;
 | 
			
		||||
import java.lang.annotation.Target;
 | 
			
		||||
import com.ruoyi.common.constant.Constants;
 | 
			
		||||
import com.ruoyi.common.constant.CacheConstants;
 | 
			
		||||
import com.ruoyi.common.enums.LimitType;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -21,7 +21,7 @@ public @interface RateLimiter
 | 
			
		||||
    /**
 | 
			
		||||
     * 限流key
 | 
			
		||||
     */
 | 
			
		||||
    public String key() default Constants.RATE_LIMIT_KEY;
 | 
			
		||||
    public String key() default CacheConstants.RATE_LIMIT_KEY;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 限流时间,单位秒
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,39 @@
 | 
			
		||||
package com.ruoyi.common.constant;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 缓存的key 常量
 | 
			
		||||
 * 
 | 
			
		||||
 * @author ruoyi
 | 
			
		||||
 */
 | 
			
		||||
public class CacheConstants
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * 登录用户 redis key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String LOGIN_TOKEN_KEY = "login_tokens:";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 验证码 redis key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String CAPTCHA_CODE_KEY = "captcha_codes:";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 参数管理 cache key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String SYS_CONFIG_KEY = "sys_config:";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 字典管理 cache key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String SYS_DICT_KEY = "sys_dict:";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 防重提交 redis key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String REPEAT_SUBMIT_KEY = "repeat_submit:";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 限流 redis key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String RATE_LIMIT_KEY = "rate_limit:";
 | 
			
		||||
}
 | 
			
		||||
@ -59,26 +59,6 @@ public class Constants
 | 
			
		||||
     */
 | 
			
		||||
    public static final String LOGIN_FAIL = "Error";
 | 
			
		||||
 
 | 
			
		||||
    /**
 | 
			
		||||
     * 验证码 redis key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String CAPTCHA_CODE_KEY = "captcha_codes:";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 登录用户 redis key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String LOGIN_TOKEN_KEY = "login_tokens:";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 防重提交 redis key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String REPEAT_SUBMIT_KEY = "repeat_submit:";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 限流 redis key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String RATE_LIMIT_KEY = "rate_limit:";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 验证码有效期(分钟)
 | 
			
		||||
     */
 | 
			
		||||
@ -124,16 +104,6 @@ public class Constants
 | 
			
		||||
     */
 | 
			
		||||
    public static final String JWT_AUTHORITIES = "authorities";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 参数管理 cache key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String SYS_CONFIG_KEY = "sys_config:";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 字典管理 cache key
 | 
			
		||||
     */
 | 
			
		||||
    public static final String SYS_DICT_KEY = "sys_dict:";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 资源映射路径 前缀
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ package com.ruoyi.common.utils;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import com.alibaba.fastjson2.JSONArray;
 | 
			
		||||
import com.ruoyi.common.constant.Constants;
 | 
			
		||||
import com.ruoyi.common.constant.CacheConstants;
 | 
			
		||||
import com.ruoyi.common.core.domain.entity.SysDictData;
 | 
			
		||||
import com.ruoyi.common.core.redis.RedisCache;
 | 
			
		||||
import com.ruoyi.common.utils.spring.SpringUtils;
 | 
			
		||||
@ -169,7 +169,7 @@ public class DictUtils
 | 
			
		||||
     */
 | 
			
		||||
    public static void clearDictCache()
 | 
			
		||||
    {
 | 
			
		||||
        Collection<String> keys = SpringUtils.getBean(RedisCache.class).keys(Constants.SYS_DICT_KEY + "*");
 | 
			
		||||
        Collection<String> keys = SpringUtils.getBean(RedisCache.class).keys(CacheConstants.SYS_DICT_KEY + "*");
 | 
			
		||||
        SpringUtils.getBean(RedisCache.class).deleteObject(keys);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -181,6 +181,6 @@ public class DictUtils
 | 
			
		||||
     */
 | 
			
		||||
    public static String getCacheKey(String configKey)
 | 
			
		||||
    {
 | 
			
		||||
        return Constants.SYS_DICT_KEY + configKey;
 | 
			
		||||
        return CacheConstants.SYS_DICT_KEY + configKey;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
import com.alibaba.fastjson2.JSON;
 | 
			
		||||
import com.ruoyi.common.annotation.RepeatSubmit;
 | 
			
		||||
import com.ruoyi.common.constant.Constants;
 | 
			
		||||
import com.ruoyi.common.constant.CacheConstants;
 | 
			
		||||
import com.ruoyi.common.core.redis.RedisCache;
 | 
			
		||||
import com.ruoyi.common.filter.RepeatedlyRequestWrapper;
 | 
			
		||||
import com.ruoyi.common.utils.StringUtils;
 | 
			
		||||
@ -63,7 +63,7 @@ public class SameUrlDataInterceptor extends RepeatSubmitInterceptor
 | 
			
		||||
        String submitKey = StringUtils.trimToEmpty(request.getHeader(header));
 | 
			
		||||
 | 
			
		||||
        // 唯一标识(指定key + url + 消息头)
 | 
			
		||||
        String cacheRepeatKey = Constants.REPEAT_SUBMIT_KEY + url + submitKey;
 | 
			
		||||
        String cacheRepeatKey = CacheConstants.REPEAT_SUBMIT_KEY + url + submitKey;
 | 
			
		||||
 | 
			
		||||
        Object sessionObj = redisCache.getCacheObject(cacheRepeatKey);
 | 
			
		||||
        if (sessionObj != null)
 | 
			
		||||
 | 
			
		||||
@ -7,6 +7,7 @@ import org.springframework.security.authentication.BadCredentialsException;
 | 
			
		||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 | 
			
		||||
import org.springframework.security.core.Authentication;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
import com.ruoyi.common.constant.CacheConstants;
 | 
			
		||||
import com.ruoyi.common.constant.Constants;
 | 
			
		||||
import com.ruoyi.common.core.domain.entity.SysUser;
 | 
			
		||||
import com.ruoyi.common.core.domain.model.LoginUser;
 | 
			
		||||
@ -17,8 +18,8 @@ import com.ruoyi.common.exception.user.CaptchaExpireException;
 | 
			
		||||
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
 | 
			
		||||
import com.ruoyi.common.utils.DateUtils;
 | 
			
		||||
import com.ruoyi.common.utils.MessageUtils;
 | 
			
		||||
import com.ruoyi.common.utils.StringUtils;
 | 
			
		||||
import com.ruoyi.common.utils.ServletUtils;
 | 
			
		||||
import com.ruoyi.common.utils.StringUtils;
 | 
			
		||||
import com.ruoyi.common.utils.ip.IpUtils;
 | 
			
		||||
import com.ruoyi.framework.manager.AsyncManager;
 | 
			
		||||
import com.ruoyi.framework.manager.factory.AsyncFactory;
 | 
			
		||||
@ -103,7 +104,7 @@ public class SysLoginService
 | 
			
		||||
     */
 | 
			
		||||
    public void validateCaptcha(String username, String code, String uuid)
 | 
			
		||||
    {
 | 
			
		||||
        String verifyKey = Constants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
 | 
			
		||||
        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
 | 
			
		||||
        String captcha = redisCache.getCacheObject(verifyKey);
 | 
			
		||||
        redisCache.deleteObject(verifyKey);
 | 
			
		||||
        if (captcha == null)
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ package com.ruoyi.framework.web.service;
 | 
			
		||||
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
import com.ruoyi.common.constant.CacheConstants;
 | 
			
		||||
import com.ruoyi.common.constant.Constants;
 | 
			
		||||
import com.ruoyi.common.constant.UserConstants;
 | 
			
		||||
import com.ruoyi.common.core.domain.entity.SysUser;
 | 
			
		||||
@ -100,7 +101,7 @@ public class SysRegisterService
 | 
			
		||||
     */
 | 
			
		||||
    public void validateCaptcha(String username, String code, String uuid)
 | 
			
		||||
    {
 | 
			
		||||
        String verifyKey = Constants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
 | 
			
		||||
        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
 | 
			
		||||
        String captcha = redisCache.getCacheObject(verifyKey);
 | 
			
		||||
        redisCache.deleteObject(verifyKey);
 | 
			
		||||
        if (captcha == null)
 | 
			
		||||
 | 
			
		||||
@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
import com.ruoyi.common.constant.CacheConstants;
 | 
			
		||||
import com.ruoyi.common.constant.Constants;
 | 
			
		||||
import com.ruoyi.common.core.domain.model.LoginUser;
 | 
			
		||||
import com.ruoyi.common.core.redis.RedisCache;
 | 
			
		||||
@ -220,6 +221,6 @@ public class TokenService
 | 
			
		||||
 | 
			
		||||
    private String getTokenKey(String uuid)
 | 
			
		||||
    {
 | 
			
		||||
        return Constants.LOGIN_TOKEN_KEY + uuid;
 | 
			
		||||
        return CacheConstants.LOGIN_TOKEN_KEY + uuid;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,81 @@
 | 
			
		||||
package com.ruoyi.system.domain;
 | 
			
		||||
 | 
			
		||||
import com.ruoyi.common.utils.StringUtils;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 缓存信息
 | 
			
		||||
 * 
 | 
			
		||||
 * @author ruoyi
 | 
			
		||||
 */
 | 
			
		||||
public class SysCache
 | 
			
		||||
{
 | 
			
		||||
    /** 缓存名称 */
 | 
			
		||||
    private String cacheName = "";
 | 
			
		||||
 | 
			
		||||
    /** 缓存键名 */
 | 
			
		||||
    private String cacheKey = "";
 | 
			
		||||
 | 
			
		||||
    /** 缓存内容 */
 | 
			
		||||
    private String cacheValue = "";
 | 
			
		||||
 | 
			
		||||
    /** 备注 */
 | 
			
		||||
    private String remark = "";
 | 
			
		||||
 | 
			
		||||
    public SysCache()
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public SysCache(String cacheName, String remark)
 | 
			
		||||
    {
 | 
			
		||||
        this.cacheName = cacheName;
 | 
			
		||||
        this.remark = remark;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public SysCache(String cacheName, String cacheKey, String cacheValue)
 | 
			
		||||
    {
 | 
			
		||||
        this.cacheName = StringUtils.replace(cacheName, ":", "");
 | 
			
		||||
        this.cacheKey = StringUtils.replace(cacheKey, cacheName, "");
 | 
			
		||||
        this.cacheValue = cacheValue;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getCacheName()
 | 
			
		||||
    {
 | 
			
		||||
        return cacheName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setCacheName(String cacheName)
 | 
			
		||||
    {
 | 
			
		||||
        this.cacheName = cacheName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getCacheKey()
 | 
			
		||||
    {
 | 
			
		||||
        return cacheKey;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setCacheKey(String cacheKey)
 | 
			
		||||
    {
 | 
			
		||||
        this.cacheKey = cacheKey;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getCacheValue()
 | 
			
		||||
    {
 | 
			
		||||
        return cacheValue;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setCacheValue(String cacheValue)
 | 
			
		||||
    {
 | 
			
		||||
        this.cacheValue = cacheValue;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getRemark()
 | 
			
		||||
    {
 | 
			
		||||
        return remark;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setRemark(String remark)
 | 
			
		||||
    {
 | 
			
		||||
        this.remark = remark;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +1,12 @@
 | 
			
		||||
package com.ruoyi.system.service.impl;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import javax.annotation.PostConstruct;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import com.ruoyi.common.annotation.DataSource;
 | 
			
		||||
import com.ruoyi.common.constant.Constants;
 | 
			
		||||
import com.ruoyi.common.constant.CacheConstants;
 | 
			
		||||
import com.ruoyi.common.constant.UserConstants;
 | 
			
		||||
import com.ruoyi.common.core.redis.RedisCache;
 | 
			
		||||
import com.ruoyi.common.core.text.Convert;
 | 
			
		||||
@ -11,11 +16,6 @@ import com.ruoyi.common.utils.StringUtils;
 | 
			
		||||
import com.ruoyi.system.domain.SysConfig;
 | 
			
		||||
import com.ruoyi.system.mapper.SysConfigMapper;
 | 
			
		||||
import com.ruoyi.system.service.ISysConfigService;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import javax.annotation.PostConstruct;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 参数配置 服务层实现
 | 
			
		||||
@ -181,7 +181,7 @@ public class SysConfigServiceImpl implements ISysConfigService
 | 
			
		||||
    @Override
 | 
			
		||||
    public void clearConfigCache()
 | 
			
		||||
    {
 | 
			
		||||
        Collection<String> keys = redisCache.keys(Constants.SYS_CONFIG_KEY + "*");
 | 
			
		||||
        Collection<String> keys = redisCache.keys(CacheConstants.SYS_CONFIG_KEY + "*");
 | 
			
		||||
        redisCache.deleteObject(keys);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -221,6 +221,6 @@ public class SysConfigServiceImpl implements ISysConfigService
 | 
			
		||||
     */
 | 
			
		||||
    private String getCacheKey(String configKey)
 | 
			
		||||
    {
 | 
			
		||||
        return Constants.SYS_CONFIG_KEY + configKey;
 | 
			
		||||
        return CacheConstants.SYS_CONFIG_KEY + configKey;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -7,3 +7,51 @@ export function getCache() {
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 查询缓存名称列表
 | 
			
		||||
export function listCacheName() {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/monitor/cache/getNames',
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 查询缓存键名列表
 | 
			
		||||
export function listCacheKey(cacheName) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/monitor/cache/getKeys/' + cacheName,
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 查询缓存内容
 | 
			
		||||
export function getCacheValue(cacheName, cacheKey) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/monitor/cache/getValue/' + cacheName + '/' + cacheKey,
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 清理指定名称缓存
 | 
			
		||||
export function clearCacheName(cacheName) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/monitor/cache/clearCacheName/' + cacheName,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 清理指定键名缓存
 | 
			
		||||
export function clearCacheKey(cacheKey) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/monitor/cache/clearCacheKey/' + cacheKey,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 清理全部缓存
 | 
			
		||||
export function clearCacheAll() {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/monitor/cache/clearCacheAll',
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								ruoyi-ui/src/assets/icons/svg/redis-list.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								ruoyi-ui/src/assets/icons/svg/redis-list.svg
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1656035183065" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3395" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
 | 
			
		||||
</style></defs><path d="M958.88 730.06H65.12c-18.28 0-33.12-14.82-33.12-33.12V68.91c0-18.29 14.83-33.12 33.12-33.12h893.77c18.28 0 33.12 14.82 33.12 33.12v628.03c-0.01 18.3-14.84 33.12-33.13 33.12zM98.23 663.83h827.53v-561.8H98.23v561.8z" p-id="3396"></path><path d="M512 954.55c-18.28 0-33.12-14.82-33.12-33.12V733.92c0-18.29 14.83-33.12 33.12-33.12s33.12 14.82 33.12 33.12v187.51c0 18.3-14.84 33.12-33.12 33.12z" p-id="3397"></path><path d="M762.01 988.21H261.99c-18.28 0-33.12-14.82-33.12-33.12 0-18.29 14.83-33.12 33.12-33.12h500.03c18.28 0 33.12 14.82 33.12 33.12-0.01 18.29-14.84 33.12-33.13 33.12zM514.74 578.55c-21.63 0-43.31-3.87-64.21-11.65-45.95-17.13-82.49-51.13-102.86-95.74-5.07-11.08-0.19-24.19 10.89-29.26 11.08-5.09 24.19-0.18 29.26 10.91 15.5 33.88 43.25 59.7 78.14 72.71 34.93 12.99 72.79 11.64 106.66-3.85 33.22-15.17 58.8-42.26 72.03-76.3 4.42-11.37 17.21-17.01 28.57-12.58 11.36 4.42 16.99 17.22 12.57 28.58-17.42 44.82-51.1 80.5-94.82 100.47-24.34 11.12-50.25 16.71-76.23 16.71z" p-id="3398"></path><path d="M325.27 528.78c-1.66 0-3.34-0.18-5.02-0.57-11.88-2.77-19.28-14.63-16.49-26.51l18.84-81c1.34-5.82 5-10.84 10.13-13.92 5.09-3.09 11.3-3.96 17.03-2.41l80.51 21.43c11.79 3.14 18.8 15.23 15.67 27.02-3.15 11.79-15.42 18.75-27.02 15.65l-58.49-15.57-13.69 58.81c-2.37 10.2-11.45 17.07-21.47 17.07zM360.8 351.01c-2.65 0-5.37-0.49-8-1.51-11.36-4.41-16.99-17.21-12.59-28.57 17.4-44.79 51.06-80.47 94.8-100.48 92.15-42.06 201.25-1.39 243.31 90.68 5.07 11.08 0.19 24.19-10.89 29.26-11.13 5.07-24.19 0.17-29.26-10.91-31.97-69.91-114.9-100.82-184.79-68.86-33.22 15.19-58.8 42.28-71.99 76.29-3.41 8.74-11.75 14.1-20.59 14.1z" p-id="3399"></path><path d="M684.68 376.74c-1.47 0-2.95-0.15-4.42-0.44l-81.61-16.68c-11.94-2.45-19.64-14.11-17.21-26.06 2.44-11.96 14.1-19.64 26.04-17.22l59.29 12.12 10.23-59.5c2.05-12 13.52-20.19 25.48-18.01 12.03 2.06 20.09 13.48 18.02 25.5l-14.08 81.96a22.089 22.089 0 0 1-9.29 14.49c-3.7 2.51-8.03 3.84-12.45 3.84z" p-id="3400"></path></svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.6 KiB  | 
							
								
								
									
										22
									
								
								ruoyi-ui/src/views/monitor/cache/index.vue
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								ruoyi-ui/src/views/monitor/cache/index.vue
									
									
									
									
										vendored
									
									
								
							@ -71,7 +71,7 @@ import { getCache } from "@/api/monitor/cache";
 | 
			
		||||
import echarts from "echarts";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "Server",
 | 
			
		||||
  name: "Cache",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      // 统计命令信息
 | 
			
		||||
@ -79,8 +79,8 @@ export default {
 | 
			
		||||
      // 使用内存
 | 
			
		||||
      usedmemory: null,
 | 
			
		||||
      // cache信息
 | 
			
		||||
      cache: [],
 | 
			
		||||
    };
 | 
			
		||||
      cache: []
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    this.getList();
 | 
			
		||||
@ -109,8 +109,8 @@ export default {
 | 
			
		||||
              data: response.data.commandStats,
 | 
			
		||||
              animationEasing: "cubicInOut",
 | 
			
		||||
              animationDuration: 1000,
 | 
			
		||||
            },
 | 
			
		||||
          ],
 | 
			
		||||
            }
 | 
			
		||||
          ]
 | 
			
		||||
        });
 | 
			
		||||
        this.usedmemory = echarts.init(this.$refs.usedmemory, "macarons");
 | 
			
		||||
        this.usedmemory.setOption({
 | 
			
		||||
@ -130,17 +130,17 @@ export default {
 | 
			
		||||
                {
 | 
			
		||||
                  value: parseFloat(this.cache.info.used_memory_human),
 | 
			
		||||
                  name: "内存消耗",
 | 
			
		||||
                },
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
          ],
 | 
			
		||||
                }
 | 
			
		||||
              ]
 | 
			
		||||
            }
 | 
			
		||||
          ]
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    // 打开加载层
 | 
			
		||||
    openLoading() {
 | 
			
		||||
      this.$modal.loading("正在加载缓存监控数据,请稍候!");
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										241
									
								
								ruoyi-ui/src/views/monitor/cache/list.vue
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										241
									
								
								ruoyi-ui/src/views/monitor/cache/list.vue
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,241 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <el-row :gutter="10">
 | 
			
		||||
      <el-col :span="8">
 | 
			
		||||
        <el-card style="height: calc(100vh - 125px)">
 | 
			
		||||
          <div slot="header">
 | 
			
		||||
            <span>缓存列表</span>
 | 
			
		||||
            <el-button
 | 
			
		||||
              style="float: right; padding: 3px 0"
 | 
			
		||||
              type="text"
 | 
			
		||||
              icon="el-icon-refresh-right"
 | 
			
		||||
              @click="refreshCacheNames()"
 | 
			
		||||
            ></el-button>
 | 
			
		||||
          </div>
 | 
			
		||||
          <el-table
 | 
			
		||||
            v-loading="loading"
 | 
			
		||||
            :data="cacheNames"
 | 
			
		||||
            :height="tableHeight"
 | 
			
		||||
            highlight-current-row
 | 
			
		||||
            @row-click="getCacheKeys"
 | 
			
		||||
            style="width: 100%"
 | 
			
		||||
          >
 | 
			
		||||
            <el-table-column
 | 
			
		||||
              label="序号"
 | 
			
		||||
              width="60"
 | 
			
		||||
              type="index"
 | 
			
		||||
            ></el-table-column>
 | 
			
		||||
 | 
			
		||||
            <el-table-column
 | 
			
		||||
              label="缓存名称"
 | 
			
		||||
              align="center"
 | 
			
		||||
              prop="cacheName"
 | 
			
		||||
              :show-overflow-tooltip="true"
 | 
			
		||||
              :formatter="nameFormatter"
 | 
			
		||||
            ></el-table-column>
 | 
			
		||||
 | 
			
		||||
            <el-table-column
 | 
			
		||||
              label="备注"
 | 
			
		||||
              align="center"
 | 
			
		||||
              prop="remark"
 | 
			
		||||
              :show-overflow-tooltip="true"
 | 
			
		||||
            />
 | 
			
		||||
            <el-table-column
 | 
			
		||||
              label="操作"
 | 
			
		||||
              width="60"
 | 
			
		||||
              align="center"
 | 
			
		||||
              class-name="small-padding fixed-width"
 | 
			
		||||
            >
 | 
			
		||||
              <template slot-scope="scope">
 | 
			
		||||
                <el-button
 | 
			
		||||
                  size="mini"
 | 
			
		||||
                  type="text"
 | 
			
		||||
                  icon="el-icon-delete"
 | 
			
		||||
                  @click="handleClearCacheName(scope.row)"
 | 
			
		||||
                ></el-button>
 | 
			
		||||
              </template>
 | 
			
		||||
            </el-table-column>
 | 
			
		||||
          </el-table>
 | 
			
		||||
        </el-card>
 | 
			
		||||
      </el-col>
 | 
			
		||||
 | 
			
		||||
      <el-col :span="8">
 | 
			
		||||
        <el-card style="height: calc(100vh - 125px)">
 | 
			
		||||
          <div slot="header">
 | 
			
		||||
            <span>键名列表</span>
 | 
			
		||||
            <el-button
 | 
			
		||||
              style="float: right; padding: 3px 0"
 | 
			
		||||
              type="text"
 | 
			
		||||
              icon="el-icon-refresh-right"
 | 
			
		||||
              @click="refreshCacheKeys()"
 | 
			
		||||
            ></el-button>
 | 
			
		||||
          </div>
 | 
			
		||||
          <el-table
 | 
			
		||||
            v-loading="subLoading"
 | 
			
		||||
            :data="cacheKeys"
 | 
			
		||||
            :height="tableHeight"
 | 
			
		||||
            highlight-current-row
 | 
			
		||||
            @row-click="handleCacheValue"
 | 
			
		||||
            style="width: 100%"
 | 
			
		||||
          >
 | 
			
		||||
            <el-table-column
 | 
			
		||||
              label="序号"
 | 
			
		||||
              width="60"
 | 
			
		||||
              type="index"
 | 
			
		||||
            ></el-table-column>
 | 
			
		||||
            <el-table-column
 | 
			
		||||
              label="缓存键名"
 | 
			
		||||
              align="center"
 | 
			
		||||
              :show-overflow-tooltip="true"
 | 
			
		||||
              :formatter="keyFormatter"
 | 
			
		||||
            >
 | 
			
		||||
            </el-table-column>
 | 
			
		||||
            <el-table-column
 | 
			
		||||
              label="操作"
 | 
			
		||||
              width="60"
 | 
			
		||||
              align="center"
 | 
			
		||||
              class-name="small-padding fixed-width"
 | 
			
		||||
            >
 | 
			
		||||
              <template slot-scope="scope">
 | 
			
		||||
                <el-button
 | 
			
		||||
                  size="mini"
 | 
			
		||||
                  type="text"
 | 
			
		||||
                  icon="el-icon-delete"
 | 
			
		||||
                  @click="handleClearCacheKey(scope.row)"
 | 
			
		||||
                ></el-button>
 | 
			
		||||
              </template>
 | 
			
		||||
            </el-table-column>
 | 
			
		||||
          </el-table>
 | 
			
		||||
        </el-card>
 | 
			
		||||
      </el-col>
 | 
			
		||||
 | 
			
		||||
      <el-col :span="8">
 | 
			
		||||
        <el-card :bordered="false" style="height: calc(100vh - 125px)">
 | 
			
		||||
          <div slot="header">
 | 
			
		||||
            <span>缓存内容</span>
 | 
			
		||||
            <el-button
 | 
			
		||||
              style="float: right; padding: 3px 0"
 | 
			
		||||
              type="text"
 | 
			
		||||
              icon="el-icon-refresh-right"
 | 
			
		||||
              @click="handleClearCacheAll()"
 | 
			
		||||
              >清理全部</el-button
 | 
			
		||||
            >
 | 
			
		||||
          </div>
 | 
			
		||||
          <el-form :model="form">
 | 
			
		||||
            <el-row :gutter="32">
 | 
			
		||||
              <el-col :offset="1" :span="22">
 | 
			
		||||
                <el-form-item label="缓存名称:" prop="cacheName">
 | 
			
		||||
                  <el-input v-model="cacheForm.cacheName" :readOnly="true" />
 | 
			
		||||
                </el-form-item>
 | 
			
		||||
              </el-col>
 | 
			
		||||
              <el-col :offset="1" :span="22">
 | 
			
		||||
                <el-form-item label="缓存键名:" prop="cacheKey">
 | 
			
		||||
                  <el-input v-model="cacheForm.cacheKey" :readOnly="true" />
 | 
			
		||||
                </el-form-item>
 | 
			
		||||
              </el-col>
 | 
			
		||||
              <el-col :offset="1" :span="22">
 | 
			
		||||
                <el-form-item label="缓存内容:" prop="cacheValue">
 | 
			
		||||
                  <el-input
 | 
			
		||||
                    v-model="cacheForm.cacheValue"
 | 
			
		||||
                    type="textarea"
 | 
			
		||||
                    :rows="8"
 | 
			
		||||
                    :readOnly="true"
 | 
			
		||||
                  />
 | 
			
		||||
                </el-form-item>
 | 
			
		||||
              </el-col>
 | 
			
		||||
            </el-row>
 | 
			
		||||
          </el-form>
 | 
			
		||||
        </el-card>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { listCacheName, listCacheKey, getCacheValue, clearCacheName, clearCacheKey, clearCacheAll } from "@/api/monitor/cache";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "CacheList",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      cacheNames: [],
 | 
			
		||||
      cacheKeys: [],
 | 
			
		||||
      cacheForm: {},
 | 
			
		||||
      loading: true,
 | 
			
		||||
      subLoading: false,
 | 
			
		||||
      nowCacheName: "",
 | 
			
		||||
      tableHeight: window.innerHeight - 200
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    this.getCacheNames();
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    /** 查询缓存名称列表 */
 | 
			
		||||
    getCacheNames() {
 | 
			
		||||
      this.loading = true;
 | 
			
		||||
      listCacheName().then(response => {
 | 
			
		||||
        this.cacheNames = response.data;
 | 
			
		||||
        this.loading = false;
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    /** 刷新缓存名称列表 */
 | 
			
		||||
    refreshCacheNames() {
 | 
			
		||||
      this.getCacheNames();
 | 
			
		||||
      this.$modal.msgSuccess("刷新缓存列表成功");
 | 
			
		||||
    },
 | 
			
		||||
    /** 清理指定名称缓存 */
 | 
			
		||||
    handleClearCacheName(row) {
 | 
			
		||||
      clearCacheName(row.cacheName).then(response => {
 | 
			
		||||
        this.$modal.msgSuccess("清理缓存名称[" + this.nowCacheName + "]成功");
 | 
			
		||||
        this.getCacheKeys();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    /** 查询缓存键名列表 */
 | 
			
		||||
    getCacheKeys(row) {
 | 
			
		||||
      const cacheName = row !== undefined ? row.cacheName : this.nowCacheName;
 | 
			
		||||
      if (cacheName === "") {
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      this.subLoading = true;
 | 
			
		||||
      listCacheKey(cacheName).then(response => {
 | 
			
		||||
        this.cacheKeys = response.data;
 | 
			
		||||
        this.subLoading = false;
 | 
			
		||||
        this.nowCacheName = cacheName;
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    /** 刷新缓存键名列表 */
 | 
			
		||||
    refreshCacheKeys() {
 | 
			
		||||
      this.getCacheKeys();
 | 
			
		||||
      this.$modal.msgSuccess("刷新键名列表成功");
 | 
			
		||||
    },
 | 
			
		||||
    /** 清理指定键名缓存 */
 | 
			
		||||
    handleClearCacheKey(cacheKey) {
 | 
			
		||||
      clearCacheKey(cacheKey).then(response => {
 | 
			
		||||
        this.$modal.msgSuccess("清理缓存键名[" + cacheKey + "]成功");
 | 
			
		||||
        this.getCacheKeys();
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    /** 列表前缀去除 */
 | 
			
		||||
    nameFormatter(row) {
 | 
			
		||||
      return row.cacheName.replace(":", "");
 | 
			
		||||
    },
 | 
			
		||||
    /** 键名前缀去除 */
 | 
			
		||||
    keyFormatter(cacheKey) {
 | 
			
		||||
      return cacheKey.replace(this.nowCacheName, "");
 | 
			
		||||
    },
 | 
			
		||||
    /** 查询缓存内容详细 */
 | 
			
		||||
    handleCacheValue(cacheKey) {
 | 
			
		||||
      getCacheValue(this.nowCacheName, cacheKey).then(response => {
 | 
			
		||||
        this.cacheForm = response.data;
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    /** 清理全部缓存 */
 | 
			
		||||
    handleClearCacheAll() {
 | 
			
		||||
      clearCacheAll().then(response => {
 | 
			
		||||
        this.$modal.msgSuccess("清理全部缓存成功");
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@ -176,9 +176,10 @@ insert into sys_menu values('110',  '定时任务', '2',   '2', 'job',        'm
 | 
			
		||||
insert into sys_menu values('111',  '数据监控', '2',   '3', 'druid',      'monitor/druid/index',      '', 1, 0, 'C', '0', '0', 'monitor:druid:list',      'druid',         'admin', sysdate(), '', null, '数据监控菜单');
 | 
			
		||||
insert into sys_menu values('112',  '服务监控', '2',   '4', 'server',     'monitor/server/index',     '', 1, 0, 'C', '0', '0', 'monitor:server:list',     'server',        'admin', sysdate(), '', null, '服务监控菜单');
 | 
			
		||||
insert into sys_menu values('113',  '缓存监控', '2',   '5', 'cache',      'monitor/cache/index',      '', 1, 0, 'C', '0', '0', 'monitor:cache:list',      'redis',         'admin', sysdate(), '', null, '缓存监控菜单');
 | 
			
		||||
insert into sys_menu values('114',  '表单构建', '3',   '1', 'build',      'tool/build/index',         '', 1, 0, 'C', '0', '0', 'tool:build:list',         'build',         'admin', sysdate(), '', null, '表单构建菜单');
 | 
			
		||||
insert into sys_menu values('115',  '代码生成', '3',   '2', 'gen',        'tool/gen/index',           '', 1, 0, 'C', '0', '0', 'tool:gen:list',           'code',          'admin', sysdate(), '', null, '代码生成菜单');
 | 
			
		||||
insert into sys_menu values('116',  '系统接口', '3',   '3', 'swagger',    'tool/swagger/index',       '', 1, 0, 'C', '0', '0', 'tool:swagger:list',       'swagger',       'admin', sysdate(), '', null, '系统接口菜单');
 | 
			
		||||
insert into sys_menu values('114',  '缓存列表', '2',   '6', 'cacheList',  'monitor/cache/list',       '', 1, 0, 'C', '0', '0', 'monitor:cache:list',      'redis-list',    'admin', sysdate(), '', null, '缓存列表菜单');
 | 
			
		||||
insert into sys_menu values('115',  '表单构建', '3',   '1', 'build',      'tool/build/index',         '', 1, 0, 'C', '0', '0', 'tool:build:list',         'build',         'admin', sysdate(), '', null, '表单构建菜单');
 | 
			
		||||
insert into sys_menu values('116',  '代码生成', '3',   '2', 'gen',        'tool/gen/index',           '', 1, 0, 'C', '0', '0', 'tool:gen:list',           'code',          'admin', sysdate(), '', null, '代码生成菜单');
 | 
			
		||||
insert into sys_menu values('117',  '系统接口', '3',   '3', 'swagger',    'tool/swagger/index',       '', 1, 0, 'C', '0', '0', 'tool:swagger:list',       'swagger',       'admin', sysdate(), '', null, '系统接口菜单');
 | 
			
		||||
-- 三级菜单
 | 
			
		||||
insert into sys_menu values('500',  '操作日志', '108', '1', 'operlog',    'monitor/operlog/index',    '', 1, 0, 'C', '0', '0', 'monitor:operlog:list',    'form',          'admin', sysdate(), '', null, '操作日志菜单');
 | 
			
		||||
insert into sys_menu values('501',  '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', '', 1, 0, 'C', '0', '0', 'monitor:logininfor:list', 'logininfor',    'admin', sysdate(), '', null, '登录日志菜单');
 | 
			
		||||
@ -308,6 +309,7 @@ insert into sys_role_menu values ('2', '113');
 | 
			
		||||
insert into sys_role_menu values ('2', '114');
 | 
			
		||||
insert into sys_role_menu values ('2', '115');
 | 
			
		||||
insert into sys_role_menu values ('2', '116');
 | 
			
		||||
insert into sys_role_menu values ('2', '117');
 | 
			
		||||
insert into sys_role_menu values ('2', '500');
 | 
			
		||||
insert into sys_role_menu values ('2', '501');
 | 
			
		||||
insert into sys_role_menu values ('2', '1000');
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user