";
-// System.out.println(EscapeUtil.clean(html));
-// System.out.println(EscapeUtil.escape(html));
-// System.out.println(EscapeUtil.unescape(html));
-// }
}
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/ip/IpUtils.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/ip/IpUtils.java
index 87d22d5..cc374ae 100644
--- a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/ip/IpUtils.java
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/ip/IpUtils.java
@@ -14,6 +14,11 @@ import java.net.UnknownHostException;
*/
public class IpUtils
{
+ /**
+ * 获取ip地址
+ * @param request
+ * @return
+ */
public static String getIpAddr(HttpServletRequest request)
{
if (request == null)
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/security/Base64.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/security/Base64.java
index ec094db..06b480c 100644
--- a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/security/Base64.java
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/security/Base64.java
@@ -3,7 +3,6 @@ package cn.chenc.framework.core.util.security;
/**
* Base64工具类
*
- * @author ruoyi
*/
public final class Base64 {
static private final int BASELENGTH = 128;
diff --git a/secret-boot-framework-demo/common-demo/pom.xml b/secret-boot-framework-demo/common-demo/pom.xml
index 8e8f730..4ecb170 100644
--- a/secret-boot-framework-demo/common-demo/pom.xml
+++ b/secret-boot-framework-demo/common-demo/pom.xml
@@ -5,11 +5,10 @@
通用demo
-
4.0.0
-
+
com.gitee.secretopen
common-demo
-
+
1.0-SNAPSHOT
@@ -108,6 +107,15 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+
+
+
org.apache.maven.plugins
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/SessionConfig.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/SessionConfig.java
deleted file mode 100644
index 8427ea0..0000000
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/SessionConfig.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package cn.chenc.framework.demo.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
-
-/**
- * @description: TODO
- * @author secret
- * @date 2021/4/2 15:18
- *
- */
-@Configuration
-@EnableRedisHttpSession
-public class SessionConfig {
-}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ThreadPoolConfig.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ThreadPoolConfig.java
index 9ebcc11..7a032ec 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ThreadPoolConfig.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ThreadPoolConfig.java
@@ -33,7 +33,7 @@ public class ThreadPoolConfig {
// 线程池维护线程所允许的空闲时间
private int keepAliveSeconds = 300;
- @Bean(name = "threadPoolTaskExecutor")
+ @Bean(name = {"threadPoolTaskExecutor"})
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setMaxPoolSize(maxPoolSize);
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/WebMvcConfig.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/WebMvcConfig.java
index f0a3241..225ec12 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/WebMvcConfig.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/WebMvcConfig.java
@@ -45,6 +45,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
.excludePathPatterns("/swagger-resources/**",
"/webjars/**", "/v2/**","swagger-ui.html",
"/swagger-ui.html/**",
+ "/static/**",
"/css/**",
"/data/**",
"/images/**",
@@ -54,21 +55,12 @@ public class WebMvcConfig implements WebMvcConfigurer {
}
-
-
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/static/**")
+ registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
- registry.addResourceHandler("swagger-ui.html")
- .addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("/webjars/**")
- .addResourceLocations("classpath:/META-INF/resources/webjars/");
-
-
}
-
}
diff --git a/secret-boot-framework-demo/pom.xml b/secret-boot-framework-demo/pom.xml
deleted file mode 100644
index 9fe0ec3..0000000
--- a/secret-boot-framework-demo/pom.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
- 4.0.0
-
- secret-boot-framework-demo
-
- demo案例
-
-
diff --git a/secret-boot-framework-demo/security-demo/pom.xml b/secret-boot-framework-demo/security-demo/pom.xml
index 9964448..be2a508 100644
--- a/secret-boot-framework-demo/security-demo/pom.xml
+++ b/secret-boot-framework-demo/security-demo/pom.xml
@@ -4,6 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
+ security-demo
com.gitee.secretopen
security-demo
1.0-SNAPSHOT
diff --git a/secret-boot-framework-dependencies/pom.xml b/secret-boot-framework-dependencies/pom.xml
index 0442a39..730fdd8 100644
--- a/secret-boot-framework-dependencies/pom.xml
+++ b/secret-boot-framework-dependencies/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.4.3
+ 2.4.5
4.0.0
@@ -19,27 +19,26 @@
1.8
1.5.0
2.4.3.RELEASE
- 1.1.21
- 8.0.16
+ 1.2.6
+ 8.0.25
2.8.0
1.4
1.9
3.8.0
- 1.10.9
+ 1.10.10
4.5.13
4.9.1
- 1.18.16
+ 1.18.20
3.0.0
- 30.1-jre
+ 30.1.1-jre
3.4.2
1.13.1
1.21
- 1.0.0-alpha
0.62.2
- 5.5.9
- 2.2.6
+ 5.6.5
+ 2.2.9
0.9.1
@@ -123,12 +122,6 @@
okhttp
${okhttp.version}
-
-
- me.zhyd.braum.spring.boot
- braum-spring-boot-starter
- ${braum.version}
-
commons-fileupload
diff --git a/secret-boot-framework-shiro/src/main/java/cn/chenc/framework/shiro/util/ShiroUtils.java b/secret-boot-framework-shiro/src/main/java/cn/chenc/framework/shiro/util/ShiroUtils.java
index 59688b5..1bee357 100644
--- a/secret-boot-framework-shiro/src/main/java/cn/chenc/framework/shiro/util/ShiroUtils.java
+++ b/secret-boot-framework-shiro/src/main/java/cn/chenc/framework/shiro/util/ShiroUtils.java
@@ -10,7 +10,7 @@ import org.apache.shiro.subject.Subject;
/**
* shiro 工具类
*
- * @author ruoyi
+ * @author secret
*/
public class ShiroUtils {
public static Subject getSubject() {
--
Gitee
From 93b877daff7f021445e01acbe2a1712d2623829b Mon Sep 17 00:00:00 2001
From: secret <1029693356@qq.com>
Date: Thu, 13 May 2021 14:46:01 +0800
Subject: [PATCH 04/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9Rsa=E5=B7=A5=E5=85=B7?=
=?UTF-8?q?=E7=B1=BB=EF=BC=8C=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E6=94=AF?=
=?UTF-8?q?=E6=8C=81=E8=A7=86=E9=A2=91=E3=80=81=E9=9F=B3=E9=A2=91=E6=A0=BC?=
=?UTF-8?q?=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../file/InvalidExtensionException.java | 16 +++++++
.../core/util/file/FileUploadUtils.java | 22 ++++-----
.../core/util/file/MimeTypeUtils.java | 10 ++++-
.../core/util/security/RsaEncryptUtil.java | 45 ++++++++++++++++---
4 files changed, 76 insertions(+), 17 deletions(-)
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/exception/file/InvalidExtensionException.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/exception/file/InvalidExtensionException.java
index 0e8cf80..b264a57 100644
--- a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/exception/file/InvalidExtensionException.java
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/exception/file/InvalidExtensionException.java
@@ -58,4 +58,20 @@ public class InvalidExtensionException extends FileUploadException {
super(allowedExtension, extension, filename);
}
}
+
+ public static class InvalidVideoExtensionException extends InvalidExtensionException {
+ private static final long serialVersionUID = 1L;
+
+ public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename) {
+ super(allowedExtension, extension, filename);
+ }
+ }
+
+ public static class InvalidAudioExtensionException extends InvalidExtensionException {
+ private static final long serialVersionUID = 1L;
+
+ public InvalidAudioExtensionException(String[] allowedExtension, String extension, String filename) {
+ super(allowedExtension, extension, filename);
+ }
+ }
}
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/file/FileUploadUtils.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/file/FileUploadUtils.java
index 71518ac..e378752 100644
--- a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/file/FileUploadUtils.java
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/file/FileUploadUtils.java
@@ -127,12 +127,10 @@ public class FileUploadUtils {
private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException {
File desc = new File(uploadDir + File.separator + fileName);
- if (!desc.getParentFile().exists()) {
- desc.getParentFile().mkdirs();
- }
- if (!desc.exists())
- {
- desc.createNewFile();
+ if (!desc.exists()) {
+ if (!desc.getParentFile().exists()) {
+ desc.getParentFile().mkdirs();
+ }
}
return desc;
}
@@ -165,14 +163,18 @@ public class FileUploadUtils {
if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION) {
throw new InvalidExtensionException.InvalidImageExtensionException(allowedExtension, extension,
fileName);
- }
- else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION) {
+ } else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION) {
throw new InvalidExtensionException.InvalidFlashExtensionException(allowedExtension, extension,
fileName);
- }
- else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION) {
+ } else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION) {
throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension,
fileName);
+ } else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION) {
+ throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension,
+ fileName);
+ } else if (allowedExtension == MimeTypeUtils.AUDIO_EXTENSION) {
+ throw new InvalidExtensionException.InvalidAudioExtensionException(allowedExtension, extension,
+ fileName);
}
else {
throw new InvalidExtensionException(allowedExtension, extension, fileName);
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/file/MimeTypeUtils.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/file/MimeTypeUtils.java
index 83f4809..f56ab52 100644
--- a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/file/MimeTypeUtils.java
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/file/MimeTypeUtils.java
@@ -22,11 +22,17 @@ public class MimeTypeUtils {
public static final String[] MEDIA_EXTENSION = { "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg",
"asf", "rm", "rmvb" };
+ public static final String[] VIDEO_EXTENSION = { "mp4", "wmv", "avi", "rmvb" };
+
+ public static final String[] AUDIO_EXTENSION = {"mp3", "wav", "wma"};
+
public static final String[] DEFAULT_ALLOWED_EXTENSION = {
// 图片
"bmp", "gif", "jpg", "jpeg", "png",
- //媒体
- "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg", "asf", "rm", "rmvb",
+ // 视频格式
+ "mp4", "wmv", "avi", "rmvb",
+ // 音频格式
+ "mp3", "wav", "wma",
// word excel powerpoint
"doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt",
// 压缩文件
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/security/RsaEncryptUtil.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/security/RsaEncryptUtil.java
index 97acb87..4e70afb 100644
--- a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/security/RsaEncryptUtil.java
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/security/RsaEncryptUtil.java
@@ -18,13 +18,13 @@ import java.util.Map;
*
*/
public class RsaEncryptUtil {
- private static Map keyMap = new HashMap(); //用于封装随机产生的公钥与私钥
+ private static Map keyMap = new HashMap(); //用于封装随机产生的公钥与私钥
//
/**
* 随机生成密钥对
* @throws NoSuchAlgorithmException
*/
- public static void genKeyPair() throws NoSuchAlgorithmException {
+ public static Map genKeyPair() throws NoSuchAlgorithmException {
// KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
// 初始化密钥对生成器,密钥大小为96-1024位
@@ -37,8 +37,9 @@ public class RsaEncryptUtil {
// 得到私钥字符串
String privateKeyString = new String(Base64.encodeBase64((privateKey.getEncoded())));
// 将公钥和私钥保存到Map
- keyMap.put(0,publicKeyString); //0表示公钥
- keyMap.put(1,privateKeyString); //1表示私钥
+ keyMap.put("publicKey",publicKeyString);
+ keyMap.put("privateKey",privateKeyString);
+ return keyMap;
}
/**
* RSA公钥加密
@@ -51,7 +52,7 @@ public class RsaEncryptUtil {
* @throws Exception
* 加密过程中的异常信息
*/
- public static String encrypt( String str, String publicKey ) throws Exception{
+ public static String encryptByPublicKey( String str, String publicKey ) throws Exception{
//base64编码的公钥
byte[] decoded = Base64.decodeBase64(publicKey);
RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));
@@ -62,6 +63,40 @@ public class RsaEncryptUtil {
return outStr;
}
+ /**
+ * 公钥解密
+ *
+ * @param publicKeyString 公钥
+ * @param text 待解密的信息
+ * @return 解密后的文本
+ */
+ public static String decryptByPublicKey(String publicKeyString, String text) throws Exception {
+ X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyString));
+ KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+ PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
+ Cipher cipher = Cipher.getInstance("RSA");
+ cipher.init(Cipher.DECRYPT_MODE, publicKey);
+ byte[] result = cipher.doFinal(Base64.decodeBase64(text));
+ return new String(result);
+ }
+
+ /**
+ * 私钥加密
+ *
+ * @param privateKeyString 私钥
+ * @param text 待加密的信息
+ * @return 加密后的文本
+ */
+ public static String encryptByPrivateKey(String privateKeyString, String text) throws Exception {
+ PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyString));
+ KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+ PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
+ Cipher cipher = Cipher.getInstance("RSA");
+ cipher.init(Cipher.ENCRYPT_MODE, privateKey);
+ byte[] result = cipher.doFinal(text.getBytes());
+ return Base64.encodeBase64String(result);
+ }
+
/**
* RSA私钥解密
*
--
Gitee
From ef92bb1d7c4584a72b5993e6175cee03072f1b52 Mon Sep 17 00:00:00 2001
From: secret <1029693356@qq.com>
Date: Thu, 13 May 2021 17:26:11 +0800
Subject: [PATCH 05/10] =?UTF-8?q?=E6=9B=B4=E6=96=B0easyexcel=E6=A8=A1?=
=?UTF-8?q?=E5=9D=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../CustomerDefaultConverterLoader.java | 4 +-
.../converters/LocalDateTimeConverter.java | 2 +-
.../NumberToLocalDateTimeConverter.java | 4 +-
.../excel/listener/ExcelListener.java | 26 +-
.../framework/excel/util/EasyExcelUtil.java | 387 ++++++++++++++++--
5 files changed, 388 insertions(+), 35 deletions(-)
diff --git a/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/config/CustomerDefaultConverterLoader.java b/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/config/CustomerDefaultConverterLoader.java
index df7bccf..80d562b 100644
--- a/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/config/CustomerDefaultConverterLoader.java
+++ b/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/config/CustomerDefaultConverterLoader.java
@@ -89,7 +89,7 @@ public class CustomerDefaultConverterLoader {
private void setConverter(DefaultConverterLoader converters, Field field) throws IllegalAccessException {
if (WRITE_CONVERTER.equalsIgnoreCase(field.getName())) {
Map map = new HashMap<>(32);
- //我的LocalDateTimeConverter
+ //我们扩展的自定义转化器
putWriteConverter(map, new LocalDateTimeConverter());
putAllConverter(map,new NumberToLocalDateTimeConverter());
//以下jar包自带的Converter
@@ -111,7 +111,7 @@ public class CustomerDefaultConverterLoader {
field.set(converters, map);
} else if (ALL_CONVERTER.equalsIgnoreCase(field.getName())) {
Map map = new HashMap<>(64);
- //我的LocalDateTimeConverter
+ //我们扩展的自定义转化器
putAllConverter(map, new LocalDateTimeConverter());
putAllConverter(map,new NumberToLocalDateTimeConverter());
//以下jar包自带的Converter
diff --git a/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/converters/LocalDateTimeConverter.java b/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/converters/LocalDateTimeConverter.java
index b817bd9..5d360a4 100644
--- a/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/converters/LocalDateTimeConverter.java
+++ b/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/converters/LocalDateTimeConverter.java
@@ -14,7 +14,7 @@ import java.time.format.DateTimeFormatter;
import java.util.Objects;
/**
- * @description: TODO
+ * @description: 自定义转化器,将String转化为LocalDateTime
* @author 陈_C
* @date 2020/8/26 16:32
*
diff --git a/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/converters/NumberToLocalDateTimeConverter.java b/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/converters/NumberToLocalDateTimeConverter.java
index b342f15..e587381 100644
--- a/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/converters/NumberToLocalDateTimeConverter.java
+++ b/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/converters/NumberToLocalDateTimeConverter.java
@@ -18,7 +18,7 @@ import java.util.GregorianCalendar;
import java.util.Objects;
/**
- * @description: TODO
+ * @description: 自定义转化器,将Number转化为LocalDateTime
* @author 陈_C
* @date 2020/8/26 16:32
*
@@ -59,7 +59,7 @@ public class NumberToLocalDateTimeConverter implements Converter
DateTimeFormat annotation = contentProperty.getField().getAnnotation(DateTimeFormat.class);
// LocalDate localDate = LocalDate.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern(Objects.nonNull(annotation) ? annotation.value() : READ_PATTERN));
// LocalDateTime localDateTime = localDate.atStartOfDay();
-
+ //excel中日期是从1900/00/00开始,日期类型数据格式实际上是与1900/00/00之间的天数差
Calendar calendar = new GregorianCalendar(1900,0,0);
Date gregorianDate = calendar.getTime();
String formatExcelDate = DateUtils.format(DateUtils.addDay(gregorianDate, Integer.parseInt(cellData.getNumberValue().toString())), DateUtils.YYYYMMDD);
diff --git a/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/listener/ExcelListener.java b/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/listener/ExcelListener.java
index 35b24e9..4bddb5b 100644
--- a/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/listener/ExcelListener.java
+++ b/secret-boot-framework-excel/src/main/java/cn/chenc/framework/excel/listener/ExcelListener.java
@@ -2,6 +2,7 @@ package cn.chenc.framework.excel.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
+import org.apache.poi.ss.formula.functions.T;
import java.util.ArrayList;
import java.util.List;
@@ -15,14 +16,31 @@ import java.util.List;
public class ExcelListener extends AnalysisEventListener {
//可以通过实例获取该值
private List