Sfoglia il codice sorgente

配置国际语言支持

yq 3 anni fa
parent
commit
20898f67c5

+ 2 - 1
src/main/java/com/usky/dxtop/common/BufferedImageLuminanceSource.java → src/main/java/com/usky/dxtop/common/utils/BufferedImageLuminanceSource.java

@@ -1,4 +1,4 @@
-package com.usky.dxtop.common;
+package com.usky.dxtop.common.utils;
 
 import com.google.zxing.LuminanceSource;
 
@@ -7,6 +7,7 @@ import java.awt.geom.AffineTransform;
 import java.awt.image.BufferedImage;
 
 /**
+ * 二维码生成
  * @author yq
  * @date 2021/8/6 13:37
  */

+ 4 - 1
src/main/java/com/usky/dxtop/common/QRCodeUtil.java → src/main/java/com/usky/dxtop/common/utils/QRCodeUtil.java

@@ -1,4 +1,4 @@
-package com.usky.dxtop.common;
+package com.usky.dxtop.common.utils;
 
 import java.awt.BasicStroke;
 import java.awt.Graphics;
@@ -22,6 +22,9 @@ import com.google.zxing.common.BitMatrix;
 import com.google.zxing.common.HybridBinarizer;
 import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
 
+/**
+ * 二维码生成
+ */
 public class QRCodeUtil {
     private static final String CHARSET = "utf-8";
     private static final String FORMAT_NAME = "JPG";

+ 1 - 1
src/main/java/com/usky/dxtop/framework/config/CaptchaConfig.java

@@ -63,7 +63,7 @@ public class CaptchaConfig
         // KAPTCHA_SESSION_KEY
         properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath");
         // 验证码文本生成器
-        properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.ruoyi.framework.config.KaptchaTextCreator");
+        properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.usky.dxtop.framework.config.KaptchaTextCreator");
         // 验证码文本字符间距 默认为2
         properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3");
         // 验证码文本字符长度 默认为5

+ 5 - 5
src/main/java/com/usky/dxtop/framework/config/ResourcesConfig.java

@@ -27,11 +27,11 @@ public class ResourcesConfig implements WebMvcConfigurer
     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry)
     {
-        /** 本地文件上传路径 */
-        registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**").addResourceLocations("file:" + RuoYiConfig.getProfile() + "/");
-
-        /** swagger配置 */
-        registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
+//        /** 本地文件上传路径 */
+//        registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**").addResourceLocations("file:" + RuoYiConfig.getProfile() + "/");
+//
+//        /** swagger配置 */
+//        registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
     }
 
     /**

+ 64 - 0
src/main/java/com/usky/dxtop/framework/config/ThreadPoolConfig.java

@@ -0,0 +1,64 @@
+package com.usky.dxtop.framework.config;
+
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+import com.usky.dxtop.common.utils.Threads;
+import org.apache.commons.lang3.concurrent.BasicThreadFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+
+/**
+ * 线程池配置
+ *
+ * @author ruoyi
+ **/
+@Configuration
+public class ThreadPoolConfig
+{
+    // 核心线程池大小
+    private int corePoolSize = 50;
+
+    // 最大可创建的线程数
+    private int maxPoolSize = 200;
+
+    // 队列最大长度
+    private int queueCapacity = 1000;
+
+    // 线程池维护线程所允许的空闲时间
+    private int keepAliveSeconds = 300;
+
+    @Bean(name = "threadPoolTaskExecutor")
+    public ThreadPoolTaskExecutor threadPoolTaskExecutor()
+    {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        executor.setMaxPoolSize(maxPoolSize);
+        executor.setCorePoolSize(corePoolSize);
+        executor.setQueueCapacity(queueCapacity);
+        executor.setKeepAliveSeconds(keepAliveSeconds);
+        // 线程池对拒绝任务(无线程可用)的处理策略
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        return executor;
+    }
+
+    /**
+     * 执行周期性或定时任务
+     */
+    @Bean(name = "scheduledExecutorService")
+    protected ScheduledExecutorService scheduledExecutorService()
+    {
+        return new ScheduledThreadPoolExecutor(corePoolSize,
+                new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build())
+        {
+            @Override
+            protected void afterExecute(Runnable r, Throwable t)
+            {
+                super.afterExecute(r, t);
+                Threads.printException(r, t);
+            }
+        };
+    }
+}

+ 5 - 12
src/main/resources/application-dev.properties

@@ -74,29 +74,22 @@ spring.redis.jedis.pool.max-idle=300
 spring.redis.jedis.pool.min-idle=5
 spring.redis.jedis.pool.max-wait=1000
 
-# 令牌自定义标识
+# token
 token.header: Authorization
-# 令牌密钥
 token.secret: abcdefghijklmnopqrstuvwxyz
-# 令牌有效期(默认30分钟)
 token.expireTime: 30
 
-
-# 防止XSS攻击
-# 过滤开关
+# xss
 xss.enabled: true
-# 排除链接(多个用逗号分隔)
 xss.excludes: /system/notice
-# 匹配链接
 xss.urlPatterns: /system/*,/monitor/*,/tool/*
 
-
-# 项目相关配置
-# 名称
+# project
 ruoyi.name: RuoYi
 ruoyi.version: 3.6.0
 ruoyi.copyrightYear: 2021
 ruoyi.demoEnabled: true
 ruoyi.addressEnabled: false
-ruoyi.captchaType: math         
+ruoyi.captchaType: math
+
 

+ 3 - 0
src/main/resources/application.properties

@@ -9,3 +9,6 @@ spring.servlet.multipart.max-file-size=10MB
 spring.servlet.multipart.max-request-size=10MB
 id.workerId=${random.long(1,63)}
 
+spring.messages.encoding=UTF-8
+spring.messages.basename=i18n.messages
+

+ 37 - 0
src/main/resources/i18n/messages.properties

@@ -0,0 +1,37 @@
+#错误消息
+not.null=* 必须填写
+user.jcaptcha.error=验证码错误
+user.jcaptcha.expire=验证码已失效
+user.not.exists=用户不存在/密码错误
+user.password.not.match=用户不存在/密码错误
+user.password.retry.limit.count=密码输入错误{0}次
+user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定10分钟
+user.password.delete=对不起,您的账号已被删除
+user.blocked=用户已封禁,请联系管理员
+role.blocked=角色已封禁,请联系管理员
+user.logout.success=退出成功
+
+length.not.valid=长度必须在{min}到{max}个字符之间
+
+user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头
+user.password.not.valid=* 5-50个字符
+
+user.email.not.valid=邮箱格式错误
+user.mobile.phone.number.not.valid=手机号格式错误
+user.login.success=登录成功
+user.register.success=注册成功
+user.notfound=请重新登录
+user.forcelogout=管理员强制退出,请重新登录
+user.unknown.error=未知错误,请重新登录
+
+##文件上传消息
+upload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB!
+upload.filename.exceed.length=上传的文件名最长{0}个字符
+
+##权限
+no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
+no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]
+no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]
+no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
+no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
+no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]