diff --git a/pom.xml b/pom.xml
index c395defd..da39c26a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,6 +30,7 @@
2.3.2
1.4.1
5.7.19
+ 3.0.4
1.2.8
3.5.0
2.11.0
@@ -163,6 +164,13 @@
${commons.fileupload.version}
+
+
+ com.github.ulisesbocchio
+ jasypt-spring-boot-starter
+ ${github.jasypt.version}
+
+
org.apache.velocity
diff --git a/ruoyi-common/pinn-common-extend/pom.xml b/ruoyi-common/pinn-common-extend/pom.xml
new file mode 100644
index 00000000..de153031
--- /dev/null
+++ b/ruoyi-common/pinn-common-extend/pom.xml
@@ -0,0 +1,42 @@
+
+
+ 4.0.0
+
+
+ com.ruoyi
+ ruoyi-common
+ 3.4.0
+
+
+ pinn-common-extend
+
+
+ pinn-common-extend扩展功能
+
+
+ 8
+ 8
+
+
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+
+
+
+ cn.hutool
+ hutool-all
+
+
+
+ com.github.ulisesbocchio
+ jasypt-spring-boot-starter
+
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/context/jasyptHandler.java b/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/context/jasyptHandler.java
new file mode 100644
index 00000000..d7ac4b23
--- /dev/null
+++ b/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/context/jasyptHandler.java
@@ -0,0 +1,33 @@
+package com.pinn.publicPackage.context;
+
+import org.jasypt.encryption.StringEncryptor;
+import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
+import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
+import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+/**
+ * jasypt上下文继承注册类
+ * 暂时不自定义
+ */
+@Component
+public class jasyptHandler {
+
+ @Bean("jasyptStringEncryptor")
+ public StringEncryptor stringEncryptor() {
+ PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
+ SimpleStringPBEConfig config = new SimpleStringPBEConfig();
+ // 配置解析的密码
+ config.setPassword("password");
+ config.setAlgorithm(StandardPBEByteEncryptor.DEFAULT_ALGORITHM);
+ config.setKeyObtentionIterations("1000");
+ config.setPoolSize("1");
+// config.setProviderName("SunJCE");
+ config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
+// config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
+ config.setStringOutputType("base64");
+ encryptor.setConfig(config);
+ return encryptor;
+ }
+}
diff --git a/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/encryption/MybatisPlusAES.java b/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/encryption/MybatisPlusAES.java
new file mode 100644
index 00000000..3b9feef4
--- /dev/null
+++ b/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/encryption/MybatisPlusAES.java
@@ -0,0 +1,20 @@
+package com.pinn.publicPackage.encryption;
+
+import cn.hutool.core.map.MapUtil;
+import com.pinn.publicPackage.utils.AESMybatisPlusUtils;
+
+import java.util.HashMap;
+
+/**
+ * plus插件数据安全保护
+ */
+public class MybatisPlusAES {
+ public static void main(String[] args) {
+ HashMap dataSource = MapUtil.newHashMap();
+ dataSource.put("url","jdbc:mysql://175.178.38.240:9033/ry_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8");
+ dataSource.put("username","nacos");
+ dataSource.put("password","nacos2233");
+
+ AESMybatisPlusUtils.encryptionDataSource(dataSource);
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/utils/AESMybatisPlusUtils.java b/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/utils/AESMybatisPlusUtils.java
new file mode 100644
index 00000000..f7600e5b
--- /dev/null
+++ b/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/utils/AESMybatisPlusUtils.java
@@ -0,0 +1,85 @@
+package com.pinn.publicPackage.utils;
+
+import ch.qos.logback.core.util.FileUtil;
+import cn.hutool.core.io.file.FileReader;
+import cn.hutool.core.io.file.FileWriter;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.AES;
+
+import java.io.File;
+import java.net.URL;
+import java.util.Map;
+
+public class AESMybatisPlusUtils {
+
+ //根目录下
+ final static String FILE_PATCH_KEY = "ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/EncryptKEY.properts";
+ final static String FILE_PATCH_URL = "ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/EncryptURL.yaml";
+ final static String FILE_PATCH_ALL = "ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/EncryptAll.yaml";
+ final static String CHARSET_UTF8 = "utf-8";
+ final static String LINE = "\r\n";
+
+ /**
+ * 打印密钥和加密串
+ * @param dataSource 集合
+ */
+ public static void encryptionDataSource(Map dataSource){
+ String url = encryptionData(dataSource.get("url"));
+ String username = encryptionData(dataSource.get("username"));
+ String password = encryptionData(dataSource.get("password"));
+
+ //保存在目录下
+ FileWriter writer = new FileWriter(new File(FILE_PATCH_ALL), CHARSET_UTF8);
+ writer.write("key: "+ genOrGetKey() + LINE,false);
+ writer.write("url: "+url + LINE,true);
+ writer.write("username: " +username + LINE,true);
+ writer.write("password: " +password+ LINE,true);
+ }
+
+
+ /**
+ * 打印密钥和加密串
+ * @param url dataSourceUrl
+ */
+ public static void encryptionUrl(String url){
+ String s = encryptionData(url);
+
+ //保存在目录下
+ FileWriter writer = new FileWriter(new File(FILE_PATCH_URL), CHARSET_UTF8);
+ File write = writer.write("url: "+s);
+ //查看路径
+ //FileUtil.fileToURL(write);
+ }
+
+ /**
+ * 获取密钥生成加密串
+ * @param data
+ * @return
+ */
+ private static String encryptionData(String data){
+ String key = genOrGetKey();
+ // 随机密钥加密
+ String result = AES.encrypt(data, key);
+ return "mpw:"+result;
+ }
+
+ /**
+ * 生成密钥或者获取密钥
+ */
+ public static String genOrGetKey(){
+ String randomKey = "";
+ FileReader fileReader = new FileReader(new File(FILE_PATCH_KEY));
+ String result = fileReader.readString();
+ if (ObjectUtil.isNull(result) || ObjectUtil.equals("",result)){
+ // 生成 16 位随机 AES 密钥
+ randomKey = AES.generateRandomKey();
+ FileWriter writer = new FileWriter(new File(FILE_PATCH_KEY), CHARSET_UTF8);
+ writer.write(randomKey);
+ }else {
+ randomKey = result;
+ }
+ return randomKey;
+ }
+
+
+}
diff --git a/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/utils/jasyptEncryptUtils.java b/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/utils/jasyptEncryptUtils.java
new file mode 100644
index 00000000..a630e015
--- /dev/null
+++ b/ruoyi-common/pinn-common-extend/src/main/java/com/pinn/publicPackage/utils/jasyptEncryptUtils.java
@@ -0,0 +1,125 @@
+package com.pinn.publicPackage.utils;
+
+import cn.hutool.core.io.file.FileWriter;
+import cn.hutool.core.map.MapUtil;
+import org.jasypt.encryption.StringEncryptor;
+import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
+import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
+import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * jasypt数据安全保护
+ */
+public class jasyptEncryptUtils {
+ //根目录下
+ final static String FILE_PATCH_ALL = "ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/JasyptAll.yaml";
+ final static String FILE_PATCH_DE = "ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/JasyptDe.yaml";
+ final static String CHARSET_UTF8 = "utf-8";
+ final static String LINE = "\r\n";
+ final static String PREFIX = "PINN@[";
+ final static String SUFFIX = "]";
+
+ /**
+ * Jasypt生成加密结果
+ *
+ * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
+ * @param value 待加密值
+ * @return
+ */
+ public static String encryptPwd(String password, String value) {
+ PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
+ encryptOr.setConfig(cryptOr(password));
+ String result = encryptOr.encrypt(value);
+ return result;
+ }
+
+ /**
+ * 解密
+ *
+ * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
+ * @param value 待解密密文
+ * @return
+ */
+ public static String decryptPwd(String password, String value) {
+ PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
+ encryptOr.setConfig(cryptOr(password));
+ String result = encryptOr.decrypt(value);
+ return result;
+ }
+
+ /**
+ * @param password salt
+ * @return
+ */
+ public static SimpleStringPBEConfig cryptOr(String password) {
+ SimpleStringPBEConfig config = new SimpleStringPBEConfig();
+ config.setPassword(password);
+// config.setAlgorithm(StandardPBEByteEncryptor.DEFAULT_ALGORITHM);
+// config.setKeyObtentionIterations("1000");
+ config.setPoolSize("1");
+// config.setProviderName(null);
+// config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
+// config.setStringOutputType("base64");
+
+ return config;
+ }
+
+ /**
+ * 打印密钥和加密串
+ * @param dataSource 集合
+ */
+ public static void decryptDataSource(Map dataSource){
+ String key = AESMybatisPlusUtils.genOrGetKey();
+ String url = decryptPwd(key,dataSource.get("url"));
+ String username = decryptPwd(key,dataSource.get("username"));
+ String password = decryptPwd(key,dataSource.get("password"));
+
+ //保存在目录下
+ FileWriter writer = new FileWriter(new File(FILE_PATCH_DE), CHARSET_UTF8);
+ writer.write("key: "+ key + LINE,false);
+ writer.write("url: " +url + LINE,true);
+ writer.write("username: " +username + LINE,true);
+ writer.write("password: " +password + LINE,true);
+ }
+
+ /**
+ * 打印密钥和加密串
+ * @param dataSource 集合
+ */
+ public static void encryptionDataSource(Map dataSource){
+ String key = AESMybatisPlusUtils.genOrGetKey();
+ String url = encryptPwd(key,dataSource.get("url"));
+ String username = encryptPwd(key,dataSource.get("username"));
+ String password = encryptPwd(key,dataSource.get("password"));
+
+ //保存在目录下
+ FileWriter writer = new FileWriter(new File(FILE_PATCH_ALL), CHARSET_UTF8);
+ writer.write("key: "+ key + LINE,false);
+ writer.write("url: " + PREFIX +url + SUFFIX + LINE,true);
+ writer.write("username: " + PREFIX +username + SUFFIX + LINE,true);
+ writer.write("password: " + PREFIX +password + SUFFIX + LINE,true);
+ }
+
+
+ public static void main(String[] args) {
+ HashMap dataSource = MapUtil.newHashMap();
+ dataSource.put("url","jdbc:mysql://175.178.38.240:9033/ry_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8");
+ dataSource.put("username","nacos");
+ dataSource.put("password","nacos2233");
+
+ encryptionDataSource(dataSource);
+
+
+/* HashMap dataSource2 = MapUtil.newHashMap();
+ dataSource2.put("url","tdAxOXA3+S2kSy2Rv8sfFujgdl46zQy+Cl7xVnC9pDhZrVwtHnCdOeco2zkvyZnMDfIl/uiBig3DYmU4HqGbQgwBeYdyqamHu9jGKxVI9RzlKVM4XiDae630G5hSwNzhndchz33PBUZ0IMdvB7pDcDs/Ug/5h8O47qQ0TQrTAOarKOFkZCoA7wNqaDhYJmZzTCAtvPadRx8qdNRKHsbswFtjqmCO+QrW");
+ dataSource2.put("username","ghFv/J1tegsx6a/kVdzwVQ==");
+ dataSource2.put("password","VNMRcA303/pklpGem3JQYP8T+GwZXwnC");
+
+ decryptDataSource(dataSource2);*/
+ }
+
+}
\ No newline at end of file
diff --git a/ruoyi-common/pinn-common-mybatisplus/src/main/resources/META-INF/spring.factories b/ruoyi-common/pinn-common-extend/src/main/resources/META-INF/spring.factories
similarity index 100%
rename from ruoyi-common/pinn-common-mybatisplus/src/main/resources/META-INF/spring.factories
rename to ruoyi-common/pinn-common-extend/src/main/resources/META-INF/spring.factories
diff --git a/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/EncryptAll.yaml b/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/EncryptAll.yaml
new file mode 100644
index 00000000..4fbc0d1b
--- /dev/null
+++ b/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/EncryptAll.yaml
@@ -0,0 +1,4 @@
+key: aa78fcbe21d77af8
+url: mpw:dxcuLSvupjcu/lXTFeah0+/5ZOqqpbJtimO6jhk7kqtseJxX31V3v+T6KXnp0SnBx9tXFE0sX3YQfsMYaRtVQo2vR+4+EhvkriJeh0oYADW8go/D7pIxxCi7dC3J5dj2zkRQXWBA2MKvSnmchqdq7VYdchlQwTSkubSz9li+PReBf4nDcFD878ZBNU1Hl7wBlnqPIhy1rfVBtbXnd2G2sw==
+username: mpw:XgSK4A04lw0/UQ0yaxjf4Q==
+password: mpw:ULp8g6eW4DkAlZfvgM2byQ==
diff --git a/ruoyi-common/pinn-common-mybatisplus/src/main/resources/mybatisPlus/EncryptKEY.properts b/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/EncryptKEY.properts
similarity index 100%
rename from ruoyi-common/pinn-common-mybatisplus/src/main/resources/mybatisPlus/EncryptKEY.properts
rename to ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/EncryptKEY.properts
diff --git a/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/JasyptAll.yaml b/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/JasyptAll.yaml
new file mode 100644
index 00000000..b2a22bfb
--- /dev/null
+++ b/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/JasyptAll.yaml
@@ -0,0 +1,4 @@
+key: aa78fcbe21d77af8
+url: PINN@[RDvIMG8MFQAINuVwgI59BimaqgkEOrcnY0vj8kYmZMmlRWwl+9rn7weZDNwon807LaYXZF+hme4/+Ye4d9LwHUS2IzOvz/nOqXoeqmPIMYNq2Cdt4AAIvtENj+Fnp4/XccSKfhAlA8pRarc/lk8F7l62ul5VsxKi8lUQatXDB1v1OCsNAzDowj2l7T0o/TzNrIHWl0b9yYcZZVGDnyYrkA==]
+username: PINN@[9LFA4aI0xDSxwlsyyoJf1w==]
+password: PINN@[AG6wLP/NWZx1UpBDYIHAcpQ62kjD7mfa]
diff --git a/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/JasyptDe.yaml b/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/JasyptDe.yaml
new file mode 100644
index 00000000..99122f83
--- /dev/null
+++ b/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/JasyptDe.yaml
@@ -0,0 +1,4 @@
+key: aa78fcbe21d77af8
+url: 'jdbc:mysql://175.178.38.240:9033/ry_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8'
+username: 'nacos'
+password: 'nacos2233'
diff --git a/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/数据安全说明.md b/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/数据安全说明.md
new file mode 100644
index 00000000..b95ac33f
--- /dev/null
+++ b/ruoyi-common/pinn-common-extend/src/main/resources/mybatisPlus/数据安全说明.md
@@ -0,0 +1,23 @@
+## 1、在MybatisPlusAES 输入对应信息 生成加密
+## 2、resources mybatisPlus下会追加EncryptKey
+## 3、如何启动是加上密钥
+
+```java
+// Jar 启动参数( idea 设置 Program arguments(编辑启动面板alt+R可以添加) , 服务器可以设置为启动环境变量 )
+--mpw.key=d1104d7c3b616f0b
+```
+
+
+## jasypt 加密解密
+## 1、在MybatisPlusAES 输入对应信息 生成加密
+## 2、resources mybatisPlus下会追加EncryptKey
+## 3、datasource配置上jasyptALL.yaml里面的数据
+## 4、配置jasypt解密到yaml中
+```yaml
+jasypt:
+ encryptor:
+ password: aa78fcbe21d77af8
+ property:
+ prefix: "PINN@["
+ suffix: "]"
+```
\ No newline at end of file
diff --git a/ruoyi-common/pinn-common-mybatisplus/src/main/resources/mybatisPlus/数据安全说明.md b/ruoyi-common/pinn-common-mybatisplus/src/main/resources/mybatisPlus/数据安全说明.md
deleted file mode 100644
index 672f1fdc..00000000
--- a/ruoyi-common/pinn-common-mybatisplus/src/main/resources/mybatisPlus/数据安全说明.md
+++ /dev/null
@@ -1,8 +0,0 @@
-## 1、在MybatisPlusAES 输入对应信息 生成加密
-## 2、resources mybatisPlus下会追加EncryptKey
-## 3、如何启动是加上密钥
-
-```java
-// Jar 启动参数( idea 设置 Program arguments(编辑启动面板alt+R可以添加) , 服务器可以设置为启动环境变量 )
---mpw.key=d1104d7c3b616f0b
-```
\ No newline at end of file
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 478395ae..c84b82f0 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -16,7 +16,7 @@
ruoyi-common-security
ruoyi-common-datascope
ruoyi-common-datasource
- pinn-common-mybatisPlus
+ pinn-common-extend
ruoyi-common
diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml
index a17fcf3e..4e1c7336 100644
--- a/ruoyi-modules/ruoyi-system/pom.xml
+++ b/ruoyi-modules/ruoyi-system/pom.xml
@@ -78,6 +78,17 @@
ruoyi-common-swagger
+
+
+ com.github.ulisesbocchio
+ jasypt-spring-boot-starter
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+
+