Commit 87630ecd9271e74fe0e008371588d0f61e151ea3
1 parent
dbdc5868
上传文件中文文件名转为拼音、Long类型精度丢失问题 issues/I24KXI、达梦数据库兼容修改
Showing
4 changed files
with
58 additions
and
1 deletions
jeecg-boot/jeecg-boot-base/jeecg-boot-base-core/pom.xml
@@ -76,6 +76,12 @@ | @@ -76,6 +76,12 @@ | ||
76 | <version>${commons.version}</version> | 76 | <version>${commons.version}</version> |
77 | </dependency> | 77 | </dependency> |
78 | 78 | ||
79 | + <!-- 拼音库 --> | ||
80 | + <dependency> | ||
81 | + <groupId>com.belerweb</groupId> | ||
82 | + <artifactId>pinyin4j</artifactId> | ||
83 | + <version>${pinyin4j.version}</version> | ||
84 | + </dependency> | ||
79 | <!-- freemarker --> | 85 | <!-- freemarker --> |
80 | <dependency> | 86 | <dependency> |
81 | <groupId>org.springframework.boot</groupId> | 87 | <groupId>org.springframework.boot</groupId> |
jeecg-boot/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java
1 | package org.jeecg.common.util; | 1 | package org.jeecg.common.util; |
2 | 2 | ||
3 | +import cn.hutool.core.util.StrUtil; | ||
4 | +import cn.hutool.extra.pinyin.PinyinUtil; | ||
3 | import lombok.extern.slf4j.Slf4j; | 5 | import lombok.extern.slf4j.Slf4j; |
4 | import org.jeecg.common.constant.CommonConstant; | 6 | import org.jeecg.common.constant.CommonConstant; |
5 | import org.jeecg.common.constant.DataBaseConstant; | 7 | import org.jeecg.common.constant.DataBaseConstant; |
@@ -16,10 +18,15 @@ import java.io.InputStream; | @@ -16,10 +18,15 @@ import java.io.InputStream; | ||
16 | import java.sql.Connection; | 18 | import java.sql.Connection; |
17 | import java.sql.DatabaseMetaData; | 19 | import java.sql.DatabaseMetaData; |
18 | import java.sql.SQLException; | 20 | import java.sql.SQLException; |
21 | +import java.util.regex.Matcher; | ||
22 | +import java.util.regex.Pattern; | ||
19 | 23 | ||
20 | @Slf4j | 24 | @Slf4j |
21 | public class CommonUtils { | 25 | public class CommonUtils { |
22 | 26 | ||
27 | + //中文正则 | ||
28 | + private static Pattern ZHONGWEN_PATTERN = Pattern.compile("[\u4e00-\u9fa5]"); | ||
29 | + | ||
23 | public static String uploadOnlineImage(byte[] data,String basePath,String bizPath,String uploadType){ | 30 | public static String uploadOnlineImage(byte[] data,String basePath,String bizPath,String uploadType){ |
24 | String dbPath = null; | 31 | String dbPath = null; |
25 | String fileName = "image" + Math.round(Math.random() * 100000000000L); | 32 | String fileName = "image" + Math.round(Math.random() * 100000000000L); |
@@ -68,9 +75,28 @@ public class CommonUtils { | @@ -68,9 +75,28 @@ public class CommonUtils { | ||
68 | } | 75 | } |
69 | //替换上传文件名字的特殊字符 | 76 | //替换上传文件名字的特殊字符 |
70 | fileName = fileName.replace("=","").replace(",","").replace("&","").replace("#", ""); | 77 | fileName = fileName.replace("=","").replace(",","").replace("&","").replace("#", ""); |
78 | + //替换上传文件名字中的中文 | ||
79 | + if(ifContainChinese(fileName)){ | ||
80 | + fileName= PinyinUtil.getPinyin(fileName, StrUtil.EMPTY); | ||
81 | + } | ||
82 | + //替换上传文件名字中的空格 | ||
83 | + fileName=fileName.replaceAll("\\s",""); | ||
71 | return fileName; | 84 | return fileName; |
72 | } | 85 | } |
73 | 86 | ||
87 | + // java 判断字符串里是否包含中文字符 | ||
88 | + public static boolean ifContainChinese(String str) { | ||
89 | + if(str.getBytes().length == str.length()){ | ||
90 | + return false; | ||
91 | + }else{ | ||
92 | + Matcher m = ZHONGWEN_PATTERN.matcher(str); | ||
93 | + if (m.find()) { | ||
94 | + return true; | ||
95 | + } | ||
96 | + return false; | ||
97 | + } | ||
98 | + } | ||
99 | + | ||
74 | /** | 100 | /** |
75 | * 统一全局上传 | 101 | * 统一全局上传 |
76 | * @Return: java.lang.String | 102 | * @Return: java.lang.String |
@@ -129,7 +155,7 @@ public class CommonUtils { | @@ -129,7 +155,7 @@ public class CommonUtils { | ||
129 | String dbType = md.getDatabaseProductName().toLowerCase(); | 155 | String dbType = md.getDatabaseProductName().toLowerCase(); |
130 | if(dbType.indexOf("mysql")>=0) { | 156 | if(dbType.indexOf("mysql")>=0) { |
131 | DB_TYPE = DataBaseConstant.DB_TYPE_MYSQL; | 157 | DB_TYPE = DataBaseConstant.DB_TYPE_MYSQL; |
132 | - }else if(dbType.indexOf("oracle")>=0) { | 158 | + }else if(dbType.indexOf("oracle")>=0 ||dbType.indexOf("dm")>=0) { |
133 | DB_TYPE = DataBaseConstant.DB_TYPE_ORACLE; | 159 | DB_TYPE = DataBaseConstant.DB_TYPE_ORACLE; |
134 | }else if(dbType.indexOf("sqlserver")>=0||dbType.indexOf("sql server")>=0) { | 160 | }else if(dbType.indexOf("sqlserver")>=0||dbType.indexOf("sql server")>=0) { |
135 | DB_TYPE = DataBaseConstant.DB_TYPE_SQLSERVER; | 161 | DB_TYPE = DataBaseConstant.DB_TYPE_SQLSERVER; |
jeecg-boot/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java
1 | package org.jeecg.config; | 1 | package org.jeecg.config; |
2 | 2 | ||
3 | +import com.fasterxml.jackson.databind.ObjectMapper; | ||
4 | +import com.fasterxml.jackson.databind.module.SimpleModule; | ||
5 | +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; | ||
3 | import org.springframework.beans.factory.annotation.Value; | 6 | import org.springframework.beans.factory.annotation.Value; |
4 | import org.springframework.boot.actuate.trace.http.InMemoryHttpTraceRepository; | 7 | import org.springframework.boot.actuate.trace.http.InMemoryHttpTraceRepository; |
5 | import org.springframework.context.annotation.Bean; | 8 | import org.springframework.context.annotation.Bean; |
6 | import org.springframework.context.annotation.Conditional; | 9 | import org.springframework.context.annotation.Conditional; |
7 | import org.springframework.context.annotation.Configuration; | 10 | import org.springframework.context.annotation.Configuration; |
11 | +import org.springframework.http.converter.HttpMessageConverter; | ||
12 | +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; | ||
8 | import org.springframework.web.cors.CorsConfiguration; | 13 | import org.springframework.web.cors.CorsConfiguration; |
9 | import org.springframework.web.cors.UrlBasedCorsConfigurationSource; | 14 | import org.springframework.web.cors.UrlBasedCorsConfigurationSource; |
10 | import org.springframework.web.filter.CorsFilter; | 15 | import org.springframework.web.filter.CorsFilter; |
@@ -12,6 +17,8 @@ import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry | @@ -12,6 +17,8 @@ import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry | ||
12 | import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; | 17 | import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; |
13 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | 18 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; |
14 | 19 | ||
20 | +import java.util.List; | ||
21 | + | ||
15 | /** | 22 | /** |
16 | * Spring Boot 2.0 解决跨域问题 | 23 | * Spring Boot 2.0 解决跨域问题 |
17 | * | 24 | * |
@@ -65,6 +72,22 @@ public class WebMvcConfiguration implements WebMvcConfigurer { | @@ -65,6 +72,22 @@ public class WebMvcConfiguration implements WebMvcConfigurer { | ||
65 | } | 72 | } |
66 | 73 | ||
67 | /** | 74 | /** |
75 | + * 添加Long转json精度丢失是配置 | ||
76 | + * @Return: void | ||
77 | + */ | ||
78 | + @Override | ||
79 | + public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { | ||
80 | + MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); | ||
81 | + ObjectMapper objectMapper = new ObjectMapper(); | ||
82 | + SimpleModule simpleModule = new SimpleModule(); | ||
83 | + simpleModule.addSerializer(Long.class, ToStringSerializer.instance); | ||
84 | + simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); | ||
85 | + objectMapper.registerModule(simpleModule); | ||
86 | + jackson2HttpMessageConverter.setObjectMapper(objectMapper); | ||
87 | + converters.add(jackson2HttpMessageConverter); | ||
88 | + } | ||
89 | + | ||
90 | + /** | ||
68 | * SpringBootAdmin的Httptrace不见了 | 91 | * SpringBootAdmin的Httptrace不见了 |
69 | * https://blog.csdn.net/u013810234/article/details/110097201 | 92 | * https://blog.csdn.net/u013810234/article/details/110097201 |
70 | */ | 93 | */ |
@@ -72,4 +95,5 @@ public class WebMvcConfiguration implements WebMvcConfigurer { | @@ -72,4 +95,5 @@ public class WebMvcConfiguration implements WebMvcConfigurer { | ||
72 | public InMemoryHttpTraceRepository getInMemoryHttpTrace(){ | 95 | public InMemoryHttpTraceRepository getInMemoryHttpTrace(){ |
73 | return new InMemoryHttpTraceRepository(); | 96 | return new InMemoryHttpTraceRepository(); |
74 | } | 97 | } |
98 | + | ||
75 | } | 99 | } |
jeecg-boot/pom.xml
@@ -45,6 +45,7 @@ | @@ -45,6 +45,7 @@ | ||
45 | <justauth-spring-boot-starter.version>1.3.2</justauth-spring-boot-starter.version> | 45 | <justauth-spring-boot-starter.version>1.3.2</justauth-spring-boot-starter.version> |
46 | <dom4j.version>1.6.1</dom4j.version> | 46 | <dom4j.version>1.6.1</dom4j.version> |
47 | <qiniu-java-sdk.version>7.2.23</qiniu-java-sdk.version> | 47 | <qiniu-java-sdk.version>7.2.23</qiniu-java-sdk.version> |
48 | + <pinyin4j.version>2.5.1</pinyin4j.version> | ||
48 | </properties> | 49 | </properties> |
49 | 50 | ||
50 | <modules> | 51 | <modules> |