From eb9ba8ad7ce6e9f3ccd4d46503cb023abf58d29a Mon Sep 17 00:00:00 2001
From: secret <1029693356@qq.com>
Date: Sun, 6 Jun 2021 00:29:25 +0800
Subject: [PATCH 01/11] =?UTF-8?q?jpa=E6=89=A9=E5=B1=95api,=E5=8F=82?=
=?UTF-8?q?=E6=95=B0=E6=A0=A1=E9=AA=8C=E6=93=8D=E4=BD=9C,=E6=96=B0?=
=?UTF-8?q?=E5=A2=9Email=E5=B0=81=E8=A3=85=E6=A8=A1=E5=9D=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 6 +
pom.xml | 3 +-
secret-boot-framework-all/pom.xml | 9 +-
secret-boot-framework-cache/pom.xml | 3 +-
secret-boot-framework-captcha/pom.xml | 3 +-
secret-boot-framework-core/pom.xml | 7 +-
.../framework/core/context/SecretBanner.java | 2 +-
.../core/model/response/AjaxResult.java | 6 +
.../chenc/framework/core/util/AssertUtil.java | 48 ++
.../framework/core/util/ValidatorUtil.java | 92 ++++
.../common-demo/pom.xml | 2 +-
secret-boot-framework-demo/jpa-demo/pom.xml | 2 +-
.../security-demo/pom.xml | 2 +-
secret-boot-framework-demo/shiro-demo/pom.xml | 2 +-
secret-boot-framework-dependencies/pom.xml | 4 +-
secret-boot-framework-excel/pom.xml | 3 +-
secret-boot-framework-ffmpeg/pom.xml | 3 +-
secret-boot-framework-jpa/pom.xml | 3 +-
.../jpa/exception/RepositoryException.java | 96 ++++
.../jpa/exception/ServiceException.java | 95 ++++
.../jpa/repository/BaseRepository.java | 80 +++
.../jpa/repository/BaseRepositoryImpl.java | 483 ++++++++++++++++++
.../framework/jpa/service/BaseService.java | 95 ++++
.../jpa/service/BaseServiceImpl.java | 339 ++++++++++++
.../support/BaseJpaRepositoryFactoryBean.java | 48 ++
.../cn/chenc/framework/jpa/util/PageUtil.java | 132 +++++
.../framework/jpa/util/PageableUtil.java | 26 +
.../chenc/framework/jpa/util/SqlHelper.java | 162 ++++++
secret-boot-framework-mail/pom.xml | 27 +
.../mail/config/MailConfiguration.java | 37 ++
.../framework/mail/core/MailTemplate.java | 58 +++
.../mail/core/SecretMailTemplate.java | 94 ++++
secret-boot-framework-mybatisplus/pom.xml | 3 +-
secret-boot-framework-security/pom.xml | 3 +-
secret-boot-framework-shiro/pom.xml | 3 +-
35 files changed, 1948 insertions(+), 33 deletions(-)
create mode 100644 secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/AssertUtil.java
create mode 100644 secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/ValidatorUtil.java
create mode 100644 secret-boot-framework-jpa/src/main/java/cn/chenc/framework/jpa/exception/RepositoryException.java
create mode 100644 secret-boot-framework-jpa/src/main/java/cn/chenc/framework/jpa/exception/ServiceException.java
create mode 100644 secret-boot-framework-jpa/src/main/java/cn/chenc/framework/jpa/repository/BaseRepository.java
create mode 100644 secret-boot-framework-jpa/src/main/java/cn/chenc/framework/jpa/repository/BaseRepositoryImpl.java
create mode 100644 secret-boot-framework-jpa/src/main/java/cn/chenc/framework/jpa/service/BaseService.java
create mode 100644 secret-boot-framework-jpa/src/main/java/cn/chenc/framework/jpa/service/BaseServiceImpl.java
create mode 100644 secret-boot-framework-jpa/src/main/java/cn/chenc/framework/jpa/support/BaseJpaRepositoryFactoryBean.java
create mode 100644 secret-boot-framework-jpa/src/main/java/cn/chenc/framework/jpa/util/PageUtil.java
create mode 100644 secret-boot-framework-jpa/src/main/java/cn/chenc/framework/jpa/util/PageableUtil.java
create mode 100644 secret-boot-framework-jpa/src/main/java/cn/chenc/framework/jpa/util/SqlHelper.java
create mode 100644 secret-boot-framework-mail/pom.xml
create mode 100644 secret-boot-framework-mail/src/main/java/cn/chenc/framework/mail/config/MailConfiguration.java
create mode 100644 secret-boot-framework-mail/src/main/java/cn/chenc/framework/mail/core/MailTemplate.java
create mode 100644 secret-boot-framework-mail/src/main/java/cn/chenc/framework/mail/core/SecretMailTemplate.java
diff --git a/README.md b/README.md
index 9ff2456..3b58083 100644
--- a/README.md
+++ b/README.md
@@ -35,6 +35,12 @@ secret-boot脚手架(根据核心依赖版本长期更新,正常更新周期
**关于本框架详情介绍请看 [wiki说明文档](https://gitee.com/SecretOpen/secret-boot-framework/wikis/%E7%AE%80%E4%BB%8B?sort_id=3220070)**
+#### 互动交流群
+
+**企鹅群:635508577**
+
+
+
#### 使用方法
已发布到maven中央仓库,建议使用1.4.0+版本
diff --git a/pom.xml b/pom.xml
index b779e5a..fba5a1a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,6 +15,7 @@
secret-boot-framework-security
secret-boot-framework-dependencies
secret-boot-framework-shiro
+ secret-boot-framework-mail
@@ -22,7 +23,7 @@
com.gitee.secretopen
secret-boot-framework
- 1.5.0
+ 1.6.0
${project.groupId}:${project.artifactId}
secret-boot-framework是一个基于springboot的快速开发框架,实现开发中最基础的springboot、mybatis、redis整合,内置丰富的基础工具类,开箱即用
diff --git a/secret-boot-framework-all/pom.xml b/secret-boot-framework-all/pom.xml
index cf06cf5..3196b55 100644
--- a/secret-boot-framework-all/pom.xml
+++ b/secret-boot-framework-all/pom.xml
@@ -5,7 +5,7 @@
secret-boot-framework
com.gitee.secretopen
- 1.5.0
+ 1.6.0
4.0.0
@@ -15,37 +15,30 @@
com.gitee.secretopen
secret-boot-framework-core
- ${project.parent.version}
com.gitee.secretopen
secret-boot-framework-cache
- ${project.parent.version}
com.gitee.secretopen
secret-boot-framework-jpa
- ${project.parent.version}
com.gitee.secretopen
secret-boot-framework-captcha
- ${project.parent.version}
com.gitee.secretopen
secret-boot-framework-ffmpeg
- ${project.parent.version}
com.gitee.secretopen
secret-boot-framework-excel
- ${project.parent.version}
com.gitee.secretopen
secret-boot-framework-security
- ${project.parent.version}
diff --git a/secret-boot-framework-cache/pom.xml b/secret-boot-framework-cache/pom.xml
index e611448..6ffbf70 100644
--- a/secret-boot-framework-cache/pom.xml
+++ b/secret-boot-framework-cache/pom.xml
@@ -5,7 +5,7 @@
secret-boot-framework
com.gitee.secretopen
- 1.5.0
+ 1.6.0
${project.artifactId}
4.0.0
@@ -16,7 +16,6 @@
com.gitee.secretopen
secret-boot-framework-core
- ${project.parent.version}
diff --git a/secret-boot-framework-captcha/pom.xml b/secret-boot-framework-captcha/pom.xml
index 7c3a904..201d138 100644
--- a/secret-boot-framework-captcha/pom.xml
+++ b/secret-boot-framework-captcha/pom.xml
@@ -5,7 +5,7 @@
secret-boot-framework
com.gitee.secretopen
- 1.5.0
+ 1.6.0
${project.artifactId}
4.0.0
@@ -15,7 +15,6 @@
com.gitee.secretopen
secret-boot-framework-core
- ${project.parent.version}
diff --git a/secret-boot-framework-core/pom.xml b/secret-boot-framework-core/pom.xml
index c11bf1e..fe3d2a9 100644
--- a/secret-boot-framework-core/pom.xml
+++ b/secret-boot-framework-core/pom.xml
@@ -5,7 +5,7 @@
secret-boot-framework
com.gitee.secretopen
- 1.5.0
+ 1.6.0
${project.artifactId}
jar
@@ -37,6 +37,11 @@
spring-boot-starter-data-redis
true
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
com.google.guava
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/context/SecretBanner.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/context/SecretBanner.java
index fb27bed..08e5901 100644
--- a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/context/SecretBanner.java
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/context/SecretBanner.java
@@ -7,7 +7,7 @@ package cn.chenc.framework.core.context;
*
*/
public class SecretBanner {
- public static final String INIT_VERSION = "1.5.0";
+ public static final String INIT_VERSION = "1.6.0";
public static final String LOGO =
" ________ _______ ________ ________ _______ _________\n" +
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/model/response/AjaxResult.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/model/response/AjaxResult.java
index ec54e7b..fcfe853 100644
--- a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/model/response/AjaxResult.java
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/model/response/AjaxResult.java
@@ -146,4 +146,10 @@ public class AjaxResult extends HashMap
{
return new AjaxResult(code, msg, null);
}
+
+ @Override
+ public AjaxResult put(String key, Object value){
+ super.put(key,value);
+ return this;
+ }
}
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/AssertUtil.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/AssertUtil.java
new file mode 100644
index 0000000..e3cf848
--- /dev/null
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/AssertUtil.java
@@ -0,0 +1,48 @@
+package cn.chenc.framework.core.util;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.StrUtil;
+
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * @description: TODO
+ * @author secret
+ * @date 2021/6/5 23:17
+ *
+ */
+public class AssertUtil {
+
+ public static void isTrue(boolean expression, String message) {
+ if (!expression) {
+ throw new IllegalArgumentException(StrUtil.format(message, new Object[0]));
+ }
+ }
+
+ public static void isFalse(boolean expression, String message) {
+ isTrue(!expression, message);
+ }
+
+ public static void isNull(Object object, String message) {
+ isTrue(object == null, message);
+ }
+
+ public static void notNull(Object object, String message) {
+ isTrue(object != null, message);
+ }
+
+ public static void notEmpty(Collection> collection, String message) {
+ isTrue(CollectionUtil.isNotEmpty(collection), message);
+ }
+
+ public static void notEmpty(Map, ?> map, String message) {
+ isTrue(CollectionUtil.isNotEmpty(map), message);
+ }
+
+ public static void notEmpty(Object[] array, String message) {
+ isTrue(ArrayUtil.isNotEmpty(array), message);
+ }
+
+}
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/ValidatorUtil.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/ValidatorUtil.java
new file mode 100644
index 0000000..59fc5a8
--- /dev/null
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/ValidatorUtil.java
@@ -0,0 +1,92 @@
+package cn.chenc.framework.core.util;
+
+
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @description: TODO
+ * @author secret
+ * @date 2021/3/22 11:42
+ *
+ */
+public class ValidatorUtil {
+
+ private static Validator validator;
+
+ static {
+ validator = Validation.buildDefaultValidatorFactory().getValidator();
+ }
+
+ /**
+ * 校验对象
+ *
+ * @param object 待校验对象
+ * @param groups 待校验的组
+ * @return 返回消息list
+ */
+ public static List validateEntityAll(Object object, Class>... groups) {
+ List list=new ArrayList<>();
+ Set> constraintViolations = validator.validate(object, groups);
+ if (!constraintViolations.isEmpty()) {
+ constraintViolations.forEach(o -> {
+ list.add(o.getMessage());
+ });
+ }
+ return list;
+ }
+
+ /**
+ * 校验对象
+ *
+ * @param object 待校验对象
+ */
+ public static List validateEntityAll(Object object) {
+ List list=new ArrayList<>();
+ Set> constraintViolations = validator.validate(object);
+ if (!constraintViolations.isEmpty()) {
+ constraintViolations.forEach(o -> {
+ list.add(o.getMessage());
+ });
+ }
+ return list;
+ }
+
+ /**
+ * 校验对象
+ *
+ * @param object 待校验对象
+ * @param groups 待校验的组
+ * @return 返回单个校验消息
+ */
+ public static String validateEntityFirst(Object object, Class>... groups) {
+ Set> constraintViolations = validator.validate(object, groups);
+ if (!constraintViolations.isEmpty()) {
+ for(ConstraintViolation
+
+ ${project.groupId}
+ secret-boot-framework-dozer
+ ${secret-boot.version}
+
${project.groupId}
secret-boot-framework-excel
@@ -92,27 +97,27 @@
${project.groupId}
- secret-boot-framework-mybatisplus
+ secret-boot-framework-jpa
${secret-boot.version}
${project.groupId}
- secret-boot-framework-mail
+ secret-boot-framework-mybatisplus
${secret-boot.version}
${project.groupId}
- secret-boot-framework-poi
+ secret-boot-framework-mail
${secret-boot.version}
${project.groupId}
- secret-boot-framework-security
+ secret-boot-framework-poi
${secret-boot.version}
${project.groupId}
- secret-boot-framework-jpa
+ secret-boot-framework-security
${secret-boot.version}
--
Gitee
From 9b73dacfd330e734beb998b45e086292719d3f28 Mon Sep 17 00:00:00 2001
From: secret <1029693356@qq.com>
Date: Sat, 31 Jul 2021 02:06:23 +0800
Subject: [PATCH 07/11] =?UTF-8?q?common-demo=20=E9=9B=86=E6=88=90=E5=A4=9A?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 1 +
secret-boot-framework-all/pom.xml | 8 +-
.../cache/aspect/RedisCacheAspect.java | 12 +-
.../RedisService.java} | 4 +-
.../RedissLockService.java} | 4 +-
.../config/properties/DruidProperties.java | 155 +++++++++++++++++-
.../core/mutidatasource/DataSourceName.java | 2 +-
.../framework/demo/CommonDemoApplication.java | 4 +-
.../demo/aspect/MyRedisCacheAspect.java | 12 +-
.../framework/demo/config/DruidConfig.java | 82 +++++++++
.../demo/config/MyBatisPlusConfig.java | 30 +++-
.../demo/controller/RoleController.java | 31 ++++
.../demo/controller/UserController.java | 4 +-
.../cn/chenc/framework/demo/entity/Role.java | 52 ++++++
.../framework/demo/mapper/RoleMapper.java | 17 ++
.../framework/demo/service/RoleService.java | 15 ++
.../demo/service/impl/RoleServiceImpl.java | 31 ++++
.../src/main/resources/application-dev.yml | 59 +++++--
.../src/main/resources/mapper/RoleMapper.xml | 14 ++
.../demo/config/DemoSourceConfig.java | 22 +++
.../demo/controller/UserController.java | 5 +
.../framework/demo/dao/UserRepository.java | 5 +-
.../framework/demo/entity/UserEntity.java | 2 +-
.../framework/demo/service/UserService.java | 7 +-
.../demo/service/impl/UserServiceImpl.java | 11 +-
25 files changed, 540 insertions(+), 49 deletions(-)
rename secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/{util/RedisUtils.java => service/RedisService.java} (99%)
rename secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/{util/RedissLockUtil.java => service/RedissLockService.java} (98%)
create mode 100644 secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/DruidConfig.java
create mode 100644 secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/RoleController.java
create mode 100644 secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/Role.java
create mode 100644 secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/mapper/RoleMapper.java
create mode 100644 secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/service/RoleService.java
create mode 100644 secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/service/impl/RoleServiceImpl.java
create mode 100644 secret-boot-framework-demo/common-demo/src/main/resources/mapper/RoleMapper.xml
create mode 100644 secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/config/DemoSourceConfig.java
diff --git a/README.md b/README.md
index 968d683..d4a3c7f 100644
--- a/README.md
+++ b/README.md
@@ -28,6 +28,7 @@ secret-boot脚手架(根据核心依赖版本长期更新,正常更新周期
| secret-boot-framework-ffmpeg | ffmpet工具模块 |
| secret-boot-framework-jpa | jpa扩展模块 |
| secret-boot-framework-mybatis-plus | mybatis-plus扩展模块 |
+| secret-boot-framework-poi | poi封装模块 |
| secret-boot-framework-security | spring-security扩展模块 |
| secret-boot-framework-shiro | shiro扩展模块 |
diff --git a/secret-boot-framework-all/pom.xml b/secret-boot-framework-all/pom.xml
index 811bc4e..73c78eb 100644
--- a/secret-boot-framework-all/pom.xml
+++ b/secret-boot-framework-all/pom.xml
@@ -14,7 +14,7 @@
com.gitee.secretopen
- secret-boot-framework-core
+ secret-boot-framework-captcha
com.gitee.secretopen
@@ -26,7 +26,7 @@
com.gitee.secretopen
- secret-boot-framework-jpa
+ secret-boot-framework-core
com.gitee.secretopen
@@ -34,7 +34,7 @@
com.gitee.secretopen
- secret-boot-framework-captcha
+ secret-boot-framework-excel
com.gitee.secretopen
@@ -42,7 +42,7 @@
com.gitee.secretopen
- secret-boot-framework-excel
+ secret-boot-framework-jpa
com.gitee.secretopen
diff --git a/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/aspect/RedisCacheAspect.java b/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/aspect/RedisCacheAspect.java
index bb6e1b1..a8c6dda 100644
--- a/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/aspect/RedisCacheAspect.java
+++ b/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/aspect/RedisCacheAspect.java
@@ -1,7 +1,7 @@
package cn.chenc.framework.cache.aspect;
import cn.chenc.framework.cache.annotation.RedisCache;
-import cn.chenc.framework.cache.util.RedisUtils;
+import cn.chenc.framework.cache.service.RedisService;
import cn.chenc.framework.core.util.AspectUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
@@ -24,7 +24,7 @@ public class RedisCacheAspect {
private static final String BIZ_CACHE_PREFIX = "biz_cache_";
@Autowired
- private RedisUtils redisUtils;
+ private RedisService redisService;
@Pointcut(value = "@annotation(cn.chenc.framework.cache.annotation.RedisCache)")
public void pointcut() {
@@ -43,22 +43,22 @@ public class RedisCacheAspect {
if (flush) {
String classPrefix = AspectUtil.INSTANCE.getKey(point, BIZ_CACHE_PREFIX);
log.info("清空缓存 - {}*", classPrefix);
- redisUtils.delBatch(classPrefix);
+ redisService.delBatch(classPrefix);
return point.proceed();
}
String key = AspectUtil.INSTANCE.getKey(point, cache.key(), BIZ_CACHE_PREFIX);
- boolean hasKey = redisUtils.hasKey(key);
+ boolean hasKey = redisService.hasKey(key);
if (hasKey) {
try {
log.info("{}从缓存中获取数据", key);
- return redisUtils.get(key);
+ return redisService.get(key);
} catch (Exception e) {
log.error("从缓存中获取数据失败!", e);
}
}
//先执行业务
Object result = point.proceed();
- redisUtils.set(key, result, cache.expire(), cache.unit());
+ redisService.set(key, result, cache.expire(), cache.unit());
log.info("{}从数据库中获取数据", key);
return result;
}
diff --git a/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/util/RedisUtils.java b/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/service/RedisService.java
similarity index 99%
rename from secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/util/RedisUtils.java
rename to secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/service/RedisService.java
index 1ec6eb0..bc2108e 100644
--- a/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/util/RedisUtils.java
+++ b/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/service/RedisService.java
@@ -1,4 +1,4 @@
-package cn.chenc.framework.cache.util;
+package cn.chenc.framework.cache.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.*;
@@ -15,7 +15,7 @@ import java.util.concurrent.TimeUnit;
*
*/
@Component
-public class RedisUtils {
+public class RedisService {
@Autowired
private RedisTemplate redisTemplate;
diff --git a/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/util/RedissLockUtil.java b/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/service/RedissLockService.java
similarity index 98%
rename from secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/util/RedissLockUtil.java
rename to secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/service/RedissLockService.java
index 5e174f0..7c1d277 100644
--- a/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/util/RedissLockUtil.java
+++ b/secret-boot-framework-cache/src/main/java/cn/chenc/framework/cache/service/RedissLockService.java
@@ -1,4 +1,4 @@
-package cn.chenc.framework.cache.util;
+package cn.chenc.framework.cache.service;
import org.redisson.api.RLock;
import org.redisson.api.RMapCache;
@@ -12,7 +12,7 @@ import java.util.concurrent.TimeUnit;
* @date 2021/5/7 15:27
*
*/
-public class RedissLockUtil {
+public class RedissLockService {
private static RedissonClient redissonClient;
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/config/properties/DruidProperties.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/config/properties/DruidProperties.java
index 1ca4962..28ae511 100644
--- a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/config/properties/DruidProperties.java
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/config/properties/DruidProperties.java
@@ -9,6 +9,18 @@ import com.alibaba.druid.pool.DruidDataSource;
*
*/
public class DruidProperties {
+ private String connectionInitSqls;
+
+ private String driverClassName;
+
+ private String type;
+
+ private String url;
+
+ private String username;
+
+ private String password;
+
private int initialSize;
private int minIdle;
@@ -31,8 +43,11 @@ public class DruidProperties {
private boolean testOnReturn;
- public DruidDataSource dataSource(DruidDataSource datasource)
- {
+ public DruidDataSource dataSource(DruidDataSource datasource) {
+ datasource.setDriverClassName(driverClassName);
+ datasource.setUrl(this.url);
+ datasource.setUsername(this.username);
+ datasource.setPassword(this.password);
/** 配置初始化大小、最小、最大 */
datasource.setInitialSize(initialSize);
datasource.setMaxActive(maxActive);
@@ -60,4 +75,140 @@ public class DruidProperties {
datasource.setTestOnReturn(testOnReturn);
return datasource;
}
+
+ public String getConnectionInitSqls() {
+ return connectionInitSqls;
+ }
+
+ public void setConnectionInitSqls(String connectionInitSqls) {
+ this.connectionInitSqls = connectionInitSqls;
+ }
+
+ public String getDriverClassName() {
+ return driverClassName;
+ }
+
+ public void setDriverClassName(String driverClassName) {
+ this.driverClassName = driverClassName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public int getInitialSize() {
+ return initialSize;
+ }
+
+ public void setInitialSize(int initialSize) {
+ this.initialSize = initialSize;
+ }
+
+ public int getMinIdle() {
+ return minIdle;
+ }
+
+ public void setMinIdle(int minIdle) {
+ this.minIdle = minIdle;
+ }
+
+ public int getMaxActive() {
+ return maxActive;
+ }
+
+ public void setMaxActive(int maxActive) {
+ this.maxActive = maxActive;
+ }
+
+ public int getMaxWait() {
+ return maxWait;
+ }
+
+ public void setMaxWait(int maxWait) {
+ this.maxWait = maxWait;
+ }
+
+ public int getTimeBetweenEvictionRunsMillis() {
+ return timeBetweenEvictionRunsMillis;
+ }
+
+ public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {
+ this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
+ }
+
+ public int getMinEvictableIdleTimeMillis() {
+ return minEvictableIdleTimeMillis;
+ }
+
+ public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {
+ this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
+ }
+
+ public int getMaxEvictableIdleTimeMillis() {
+ return maxEvictableIdleTimeMillis;
+ }
+
+ public void setMaxEvictableIdleTimeMillis(int maxEvictableIdleTimeMillis) {
+ this.maxEvictableIdleTimeMillis = maxEvictableIdleTimeMillis;
+ }
+
+ public String getValidationQuery() {
+ return validationQuery;
+ }
+
+ public void setValidationQuery(String validationQuery) {
+ this.validationQuery = validationQuery;
+ }
+
+ public boolean isTestWhileIdle() {
+ return testWhileIdle;
+ }
+
+ public void setTestWhileIdle(boolean testWhileIdle) {
+ this.testWhileIdle = testWhileIdle;
+ }
+
+ public boolean isTestOnBorrow() {
+ return testOnBorrow;
+ }
+
+ public void setTestOnBorrow(boolean testOnBorrow) {
+ this.testOnBorrow = testOnBorrow;
+ }
+
+ public boolean isTestOnReturn() {
+ return testOnReturn;
+ }
+
+ public void setTestOnReturn(boolean testOnReturn) {
+ this.testOnReturn = testOnReturn;
+ }
}
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/mutidatasource/DataSourceName.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/mutidatasource/DataSourceName.java
index 4020a20..e6fb4c5 100644
--- a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/mutidatasource/DataSourceName.java
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/mutidatasource/DataSourceName.java
@@ -7,5 +7,5 @@ package cn.chenc.framework.core.mutidatasource;
*
*/
public interface DataSourceName {
- public final static String MASTER = "master";
+ public final static String MASTER = "masterDataSource";
}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java
index eb1e2d4..0e74b41 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java
@@ -2,6 +2,8 @@ package cn.chenc.framework.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
@@ -10,8 +12,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
* @date 2020/11/28 13:54
*
*/
-@SpringBootApplication
@EnableTransactionManagement
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class CommonDemoApplication {
public static void main(String[] args){
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/aspect/MyRedisCacheAspect.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/aspect/MyRedisCacheAspect.java
index c7615b3..de7c306 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/aspect/MyRedisCacheAspect.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/aspect/MyRedisCacheAspect.java
@@ -1,7 +1,7 @@
package cn.chenc.framework.demo.aspect;
import cn.chenc.framework.cache.annotation.RedisCache;
-import cn.chenc.framework.cache.util.RedisUtils;
+import cn.chenc.framework.cache.service.RedisService;
import cn.chenc.framework.core.util.AspectUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
@@ -24,7 +24,7 @@ public class MyRedisCacheAspect {
private static final String BIZ_CACHE_PREFIX = "biz_cache_";
@Autowired
- private RedisUtils redisUtils;
+ private RedisService redisService;
@Pointcut(value = "@annotation(cn.chenc.framework.cache.annotation.RedisCache)")
public void pointcut() {
@@ -43,22 +43,22 @@ public class MyRedisCacheAspect {
if (flush) {
String classPrefix = AspectUtil.INSTANCE.getKey(point, BIZ_CACHE_PREFIX);
log.info("清空缓存 - {}*", classPrefix);
- redisUtils.delBatch(classPrefix);
+ redisService.delBatch(classPrefix);
return point.proceed();
}
String key = AspectUtil.INSTANCE.getKey(point, cache.key(), BIZ_CACHE_PREFIX);
- boolean hasKey = redisUtils.hasKey(key);
+ boolean hasKey = redisService.hasKey(key);
if (hasKey) {
try {
log.info("{}从缓存中获取数据", key);
- return redisUtils.get(key);
+ return redisService.get(key);
} catch (Exception e) {
log.error("从缓存中获取数据失败!", e);
}
}
//先执行业务
Object result = point.proceed();
- redisUtils.set(key, result, cache.expire(), cache.unit());
+ redisService.set(key, result, cache.expire(), cache.unit());
log.info("{}从数据库中获取数据", key);
return result;
}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/DruidConfig.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/DruidConfig.java
new file mode 100644
index 0000000..e8b7815
--- /dev/null
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/DruidConfig.java
@@ -0,0 +1,82 @@
+package cn.chenc.framework.demo.config;
+
+import cn.chenc.framework.core.config.properties.DruidProperties;
+import cn.chenc.framework.core.mutidatasource.DataSourceName;
+import cn.chenc.framework.core.mutidatasource.DynamicDataSource;
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @description: druid 多数据源配置
+ * @author secret
+ * @date 2021/7/30 23:40
+ *
+ */
+@Configuration
+public class DruidConfig {
+
+ @Bean(name = "masterDruidProperties")
+ @ConfigurationProperties("spring.datasource.druid.master")
+ public DruidProperties masterDruidProperties(){
+ return new DruidProperties();
+ }
+
+ @Bean(name = "slaveDruidProperties")
+ @ConfigurationProperties("spring.datasource.druid.slave")
+ public DruidProperties slaveDruidProperties(){
+ return new DruidProperties();
+ }
+
+ @Bean
+ public DataSource masterDataSource(DruidProperties masterDruidProperties) {
+ DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
+ return masterDruidProperties.dataSource(dataSource);
+ }
+
+ @Bean
+ public DataSource slaveDataSource(DruidProperties slaveDruidProperties) {
+ DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
+ return slaveDruidProperties.dataSource(dataSource);
+ }
+
+ @Bean(name = "dynamicDataSource")
+ @Primary
+ public DynamicDataSource dataSource(Map dataSources) {
+ DynamicDataSource dynamicDataSource = new DynamicDataSource();
+ Map targetDataSources = new HashMap<>();
+ targetDataSources.putAll(dataSources);
+ dynamicDataSource.setTargetDataSources(targetDataSources);
+ dynamicDataSource.setDefaultTargetDataSource(dataSources.get("masterDataSource"));
+ dynamicDataSource.afterPropertiesSet();
+ // 遍历存入list中
+ for (Map.Entry entry : dataSources.entrySet()) {
+ DynamicDataSource.saveDataSourceTypeName(entry.getKey());
+ }
+ return dynamicDataSource;
+ }
+
+ /**
+ * 向spring容器暴露组合数据源JdbcTemplate
+ * @param dataSource
+ * @return
+ * @author secret
+ */
+ @Bean(name = "multipleDataJdbcTemplate")
+ public JdbcTemplate primaryJdbcTemplate(@Qualifier("dynamicDataSource") DataSource dataSource) {
+ return new JdbcTemplate(dataSource);
+ }
+
+
+
+}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java
index 8903dde..f7e8bce 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java
@@ -1,10 +1,25 @@
package cn.chenc.framework.demo.config;
+import com.alibaba.excel.metadata.GlobalConfiguration;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
+import com.baomidou.mybatisplus.autoconfigure.SpringBootVFS;
+import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import org.apache.ibatis.io.VFS;
+import org.apache.ibatis.plugin.Interceptor;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.type.JdbcType;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+import org.springframework.core.io.DefaultResourceLoader;
+
+import javax.sql.DataSource;
/**
* @description: mybatisplus配置
@@ -12,7 +27,7 @@ import org.springframework.context.annotation.Bean;
* @date 2020/3/21 21:56
*
*/
-//@Configuration
+@Configuration
public class MyBatisPlusConfig {
/**
@@ -31,4 +46,17 @@ public class MyBatisPlusConfig {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
+// @Bean
+// public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
+//
+// VFS.addImplClass(SpringBootVFS.class);
+// MybatisConfiguration configuration = new MybatisConfiguration();
+// final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
+// sessionFactory.setDataSource(dataSource);
+// sessionFactory.setConfiguration(configuration);
+// return sessionFactory.getObject();
+//
+// }
+
+
}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/RoleController.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/RoleController.java
new file mode 100644
index 0000000..7c39a1b
--- /dev/null
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/RoleController.java
@@ -0,0 +1,31 @@
+package cn.chenc.framework.demo.controller;
+
+import cn.chenc.framework.core.model.response.AjaxResult;
+import cn.chenc.framework.demo.entity.Role;
+import cn.chenc.framework.demo.service.RoleService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @description: TODO
+ * @author secret
+ * @date 2021/7/31 0:05
+ *
+ */
+@RestController
+@RequestMapping("/role")
+public class RoleController {
+
+ @Autowired
+ private RoleService roleService;
+
+ @GetMapping("/list")
+ public AjaxResult queryRolePageList(Role role){
+ IPage iPage=roleService.queryRolePageList(role);
+ return AjaxResult.success(iPage);
+ }
+}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
index 1a1f972..54cbdaf 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
@@ -46,8 +46,8 @@ public class UserController {
return ResultUtil.success(new User());
}
- @PostMapping("/list")
- public ResponseVO queryUserPageList(@RequestBody User user){
+ @GetMapping("/list")
+ public ResponseVO queryUserPageList(User user){
IPage iPage=userService.queryUserPageList(user);
return ResultUtil.success(iPage);
}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/Role.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/Role.java
new file mode 100644
index 0000000..261b8c0
--- /dev/null
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/Role.java
@@ -0,0 +1,52 @@
+package cn.chenc.framework.demo.entity;
+
+import cn.chenc.framework.mybatisplus.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+
+/**
+ * @description: TODO
+ * @author secret
+ * @date 2021/7/30 23:59
+ *
+ */
+public class Role extends BaseEntity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键id
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private String roleName;
+
+ private String roleCode;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getRoleName() {
+ return roleName;
+ }
+
+ public void setRoleName(String roleName) {
+ this.roleName = roleName;
+ }
+
+ public String getRoleCode() {
+ return roleCode;
+ }
+
+ public void setRoleCode(String roleCode) {
+ this.roleCode = roleCode;
+ }
+}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/mapper/RoleMapper.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/mapper/RoleMapper.java
new file mode 100644
index 0000000..058aa7c
--- /dev/null
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/mapper/RoleMapper.java
@@ -0,0 +1,17 @@
+package cn.chenc.framework.demo.mapper;
+
+import cn.chenc.framework.demo.entity.Role;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @description: TODO
+ * @author secret
+ * @date 2020/11/30 10:03
+ *
+ */
+@Mapper
+@Repository
+public interface RoleMapper extends BaseMapper {
+}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/service/RoleService.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/service/RoleService.java
new file mode 100644
index 0000000..3485c96
--- /dev/null
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/service/RoleService.java
@@ -0,0 +1,15 @@
+package cn.chenc.framework.demo.service;
+
+import cn.chenc.framework.demo.entity.Role;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @description: TODO
+ * @author secret
+ * @date 2020/11/30 10:06
+ *
+ */
+public interface RoleService extends IService {
+ IPage queryRolePageList(Role role);
+}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/service/impl/RoleServiceImpl.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/service/impl/RoleServiceImpl.java
new file mode 100644
index 0000000..4f961b7
--- /dev/null
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/service/impl/RoleServiceImpl.java
@@ -0,0 +1,31 @@
+package cn.chenc.framework.demo.service.impl;
+
+import cn.chenc.framework.core.annotation.ChangDataSource;
+import cn.chenc.framework.demo.entity.Role;
+import cn.chenc.framework.demo.mapper.RoleMapper;
+import cn.chenc.framework.demo.service.RoleService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * @description: TODO
+ * @author secret
+ * @date 2020/11/30 10:09
+ *
+ */
+@Service
+public class RoleServiceImpl extends ServiceImpl implements RoleService {
+
+ @Override
+ @ChangDataSource(name = "slaveDataSource")
+ public IPage queryRolePageList(Role role) {
+ IPage page=new Page(role.getPageIndex(),role.getPageSize());
+ IPage iPage=this.page(page,null);
+ return iPage;
+ }
+
+
+
+}
diff --git a/secret-boot-framework-demo/common-demo/src/main/resources/application-dev.yml b/secret-boot-framework-demo/common-demo/src/main/resources/application-dev.yml
index 6fa8d6d..0585a3d 100644
--- a/secret-boot-framework-demo/common-demo/src/main/resources/application-dev.yml
+++ b/secret-boot-framework-demo/common-demo/src/main/resources/application-dev.yml
@@ -6,24 +6,47 @@ server:
spring:
datasource:
druid:
- connection-init-sqls: set names utf8mb4
- driver-class-name: com.mysql.cj.jdbc.Driver
- initial-size: 5
- min-idle: 5
- max-active: 20
- # 配置获取连接等待超时的时间
- max-wait: 180000
- # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
- time-between-eviction-runs-millis: 180000
- # 配置一个连接在池中最小生存的时间,单位是毫秒
- min-evictable-idle-time-millis: 300000
- test-while-idle: true
- test-on-borrow: false
- test-on-return: false
- type: com.alibaba.druid.pool.DruidDataSource
- url: jdbc:mysql://127.0.0.1:3306/secret_framework?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT&rewriteBatchedStatements=true
- username: root
- password: 111111
+ master:
+ connection-init-sqls: set names utf8mb4
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ initial-size: 5
+ min-idle: 5
+ max-active: 20
+ # 配置获取连接等待超时的时间
+ max-wait: 180000
+ # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+ time-between-eviction-runs-millis: 180000
+ # 配置一个连接在池中最小生存的时间,单位是毫秒
+ min-evictable-idle-time-millis: 300000
+ # 配置一个连接在池中最大生存的时间,单位是毫秒
+ max-evictable-idle-time-millis: 900000
+ test-while-idle: true
+ test-on-borrow: false
+ test-on-return: false
+ type: com.alibaba.druid.pool.DruidDataSource
+ url: jdbc:mysql://127.0.0.1:3306/secret_framework?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT&rewriteBatchedStatements=true
+ username: root
+ password: 111111
+ slave:
+ connection-init-sqls: set names utf8mb4
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ initial-size: 5
+ min-idle: 5
+ max-active: 20
+ # 配置获取连接等待超时的时间
+ max-wait: 180000
+ # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+ time-between-eviction-runs-millis: 180000
+ # 配置一个连接在池中最小生存的时间,单位是毫秒
+ min-evictable-idle-time-millis: 300000
+ # 配置一个连接在池中最大生存的时间,单位是毫秒
+ max-evictable-idle-time-millis: 900000
+ test-while-idle: true
+ test-on-borrow: false
+ test-on-return: false
+ url: jdbc:mysql://127.0.0.1:3306/secret_framework_slave?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT&rewriteBatchedStatements=true
+ username: root
+ password: 111111
# Redis数据库索引(默认为0)
redis:
jedis:
diff --git a/secret-boot-framework-demo/common-demo/src/main/resources/mapper/RoleMapper.xml b/secret-boot-framework-demo/common-demo/src/main/resources/mapper/RoleMapper.xml
new file mode 100644
index 0000000..a1b1d80
--- /dev/null
+++ b/secret-boot-framework-demo/common-demo/src/main/resources/mapper/RoleMapper.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/config/DemoSourceConfig.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/config/DemoSourceConfig.java
new file mode 100644
index 0000000..1e9bd26
--- /dev/null
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/config/DemoSourceConfig.java
@@ -0,0 +1,22 @@
+package cn.chenc.framework.demo.config;
+
+import cn.chenc.framework.jpa.support.BaseJpaRepositoryFactoryBean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+/**
+ * @description: TODO
+ * @author secret
+ * @date 2021/7/21 20:47
+ *
+ */
+@Configuration
+@EnableJpaRepositories(
+ // 设置Repository所在位置
+ basePackages = { "cn.chenc.framework.demo.dao" },
+ // 覆盖SpringBoot提供的默认配置
+ repositoryFactoryBeanClass = BaseJpaRepositoryFactoryBean.class)
+public class DemoSourceConfig {
+
+}
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
index 37a423e..8f016ab 100644
--- a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
@@ -38,4 +38,9 @@ public class UserController {
return AjaxResult.success();
}
+ @GetMapping("/baseApiPage")
+ public Page baseApiPage(UserEntity userEntity) throws Exception {
+ return userService.baseApiPage(userEntity);
+ }
+
}
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/dao/UserRepository.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/dao/UserRepository.java
index 756c3ba..60c69d8 100644
--- a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/dao/UserRepository.java
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/dao/UserRepository.java
@@ -1,8 +1,10 @@
package cn.chenc.framework.demo.dao;
import cn.chenc.framework.demo.entity.UserEntity;
+import cn.chenc.framework.jpa.repository.BaseRepository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
/**
* @description: TODO
@@ -10,7 +12,8 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
* @date 2021/5/14 15:26
*
*/
-public interface UserRepository extends JpaRepository, JpaSpecificationExecutor {
+@Repository
+public interface UserRepository extends BaseRepository {//JpaRepository, JpaSpecificationExecutor {
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/entity/UserEntity.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/entity/UserEntity.java
index 594090d..016d755 100644
--- a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/entity/UserEntity.java
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/entity/UserEntity.java
@@ -11,7 +11,7 @@ import java.time.LocalDateTime;
* @author secret
* @date 2021/5/14 14:51
*
- */
+ */
@Entity
@Table(name = "user", schema = "secret_framework")
public class UserEntity extends BaseEntity implements Serializable {
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/UserService.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/UserService.java
index d734cff..bc49213 100644
--- a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/UserService.java
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/UserService.java
@@ -1,8 +1,11 @@
package cn.chenc.framework.demo.service;
+
import cn.chenc.framework.demo.entity.UserEntity;
+import cn.chenc.framework.jpa.service.BaseService;
import org.springframework.data.domain.Page;
+import javax.persistence.criteria.CriteriaBuilder;
import java.util.List;
/**
@@ -11,11 +14,13 @@ import java.util.List;
* @date 2021/5/14 15:45
*
*/
-public interface UserService {
+public interface UserService extends BaseService {
List queryAll();
Page queryUserPageList(UserEntity userEntity);
void insertUser(UserEntity userEntity);
+
+ Page baseApiPage(UserEntity userEntity) throws Exception;
}
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/impl/UserServiceImpl.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/impl/UserServiceImpl.java
index ea759bc..add58d6 100644
--- a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/impl/UserServiceImpl.java
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/impl/UserServiceImpl.java
@@ -4,6 +4,9 @@ import cn.chenc.framework.core.util.StringUtils;
import cn.chenc.framework.demo.dao.UserRepository;
import cn.chenc.framework.demo.entity.UserEntity;
import cn.chenc.framework.demo.service.UserService;
+import cn.chenc.framework.jpa.repository.BaseRepository;
+import cn.chenc.framework.jpa.service.BaseServiceImpl;
+import cn.chenc.framework.jpa.util.PageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
@@ -26,7 +29,7 @@ import java.util.List;
*
*/
@Service
-public class UserServiceImpl implements UserService {
+public class UserServiceImpl extends BaseServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@@ -60,4 +63,10 @@ public class UserServiceImpl implements UserService {
userRepository.save(userEntity);
}
+ @Override
+ public Page baseApiPage(UserEntity userEntity) throws Exception {
+ Page page = userRepository.getListByObject(userEntity,PageRequest.of(0,10));
+ return page;
+ }
+
}
--
Gitee
From a1eb6d74c34e7fd6e6c6f92719320becc252d339 Mon Sep 17 00:00:00 2001
From: secret <1029693356@qq.com>
Date: Sun, 1 Aug 2021 01:38:58 +0800
Subject: [PATCH 08/11] =?UTF-8?q?common-demo=20=E9=9B=86=E6=88=90poi?=
=?UTF-8?q?=E6=A8=A1=E5=9D=97demo?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../chenc/framework/core/util/DateUtils.java | 69 ++++++++++++++
.../framework/core/util/DateUtilsTest.java | 10 ++
.../common-demo/pom.xml | 12 ++-
.../framework/demo/CommonDemoApplication.java | 1 -
.../framework/demo/config/DruidConfig.java | 2 -
.../framework/demo/config/ExcelConfig.java | 91 ++++++++-----------
.../demo/config/MyBatisPlusConfig.java | 14 ---
.../demo/controller/RoleController.java | 1 -
.../demo/controller/UserController.java | 39 ++++++++
.../converters/MyLocalDateTimeConverter.java | 64 ++++++-------
.../cn/chenc/framework/demo/entity/Dict.java | 36 ++++++++
.../cn/chenc/framework/demo/entity/User.java | 4 +
.../src/main/resources/application-dev.yml | 24 +++++
.../demo/config/DemoSourceConfig.java | 1 -
.../demo/controller/UserController.java | 1 -
.../framework/demo/dao/UserRepository.java | 2 -
.../framework/demo/entity/UserEntity.java | 3 +-
.../framework/demo/service/UserService.java | 1 -
.../demo/service/impl/UserServiceImpl.java | 2 -
.../mail/config/MailConfiguration.java | 7 +-
.../chenc/framework/poi/util/ExcelUtil.java | 7 +-
.../framework/poi/util/ReflectUtils.java | 9 ++
22 files changed, 283 insertions(+), 117 deletions(-)
create mode 100644 secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/Dict.java
diff --git a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/DateUtils.java b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/DateUtils.java
index f991e6b..9f71367 100644
--- a/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/DateUtils.java
+++ b/secret-boot-framework-core/src/main/java/cn/chenc/framework/core/util/DateUtils.java
@@ -10,6 +10,7 @@ import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
+import java.util.regex.Pattern;
public class DateUtils extends org.apache.commons.lang3.time.DateUtils{
public static final String YYYYMMDDHHMMSS = "yyyy-MM-dd HH:mm:ss";
@@ -403,6 +404,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils{
return localDateTime;
}
+ public static LocalDateTime parseLocalDateTime(String dateStr){
+ String patten = getDateFormat(dateStr);
+ Date date = parse(dateStr,patten);
+ return dateToLocalDateTime(date);
+ }
+
/**
* 日期路径 即年/月/日 如2018/08/08
*/
@@ -440,4 +447,66 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils{
// long sec = diff % nd % nh % nm / ns;
return day + "天" + hour + "小时" + min + "分钟";
}
+
+ /**
+ * 常规自动日期格式识别
+ * @param str 时间字符串
+ * @return String
+ * @author secret
+ * 如:1998-09-27 -> yyyy-MM-dd
+ */
+ public static String getDateFormat(String str){
+ boolean year = false;
+ Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
+ if(pattern.matcher(str.substring(0, 4)).matches()) {
+ year = true;
+ }
+ StringBuilder sb = new StringBuilder();
+ int index = 0;
+ if(!year) {
+ if(str.contains("月") || str.contains("-") || str.contains("/")) {
+ if(Character.isDigit(str.charAt(0))) {
+ index = 1;
+ }
+ }else {
+ index = 3;
+ }
+ }
+ for (int i = 0; i < str.length(); i++) {
+ char chr = str.charAt(i);
+ if(Character.isDigit(chr)) {
+ if(index==0) {
+ sb.append("y");
+ }
+ if(index==1) {
+ sb.append("M");
+ }
+ if(index==2) {
+ sb.append("d");
+ }
+ if(index==3) {
+ sb.append("H");
+ }
+ if(index==4) {
+ sb.append("m");
+ }
+ if(index==5) {
+ sb.append("s");
+ }
+ if(index==6) {
+ sb.append("S");
+ }
+ }else {
+ if(i>0) {
+ char lastChar = str.charAt(i-1);
+ if(Character.isDigit(lastChar)) {
+ index++;
+ }
+ }
+ sb.append(chr);
+ }
+ }
+ return sb.toString();
+ }
+
}
diff --git a/secret-boot-framework-core/src/test/java/cn/chenc/framework/core/util/DateUtilsTest.java b/secret-boot-framework-core/src/test/java/cn/chenc/framework/core/util/DateUtilsTest.java
index 8d2b26f..2d15df1 100644
--- a/secret-boot-framework-core/src/test/java/cn/chenc/framework/core/util/DateUtilsTest.java
+++ b/secret-boot-framework-core/src/test/java/cn/chenc/framework/core/util/DateUtilsTest.java
@@ -1,8 +1,11 @@
package cn.chenc.framework.core.util;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
import org.junit.jupiter.api.Test;
+import java.time.LocalDateTime;
import java.util.Date;
import java.util.Map;
@@ -14,6 +17,13 @@ import java.util.Map;
*/
public class DateUtilsTest {
+ @Test
+ public void parseDate(){
+ Date date = DateUtils.parse("1998-09-27");
+ DateTime dateTime = DateUtil.parseDate("1998-09-27");
+ LocalDateTime localDateTime = DateUtils.parseLocalDateTime("1998-09-27");
+ }
+
@Test
public void getCurrentWeekTest(){
Map map1=DateUtils.getCurrentWeek(false);
diff --git a/secret-boot-framework-demo/common-demo/pom.xml b/secret-boot-framework-demo/common-demo/pom.xml
index 4b0d847..97642eb 100644
--- a/secret-boot-framework-demo/common-demo/pom.xml
+++ b/secret-boot-framework-demo/common-demo/pom.xml
@@ -38,13 +38,21 @@
com.gitee.secretopen
secret-boot-framework-cache
+
+
+
+
com.gitee.secretopen
- secret-boot-framework-excel
+ secret-boot-framework-captcha
com.gitee.secretopen
- secret-boot-framework-captcha
+ secret-boot-framework-mail
+
+
+ com.gitee.secretopen
+ secret-boot-framework-poi
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java
index 0e74b41..fbf91fd 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java
@@ -3,7 +3,6 @@ package cn.chenc.framework.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/DruidConfig.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/DruidConfig.java
index e8b7815..9837977 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/DruidConfig.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/DruidConfig.java
@@ -1,12 +1,10 @@
package cn.chenc.framework.demo.config;
import cn.chenc.framework.core.config.properties.DruidProperties;
-import cn.chenc.framework.core.mutidatasource.DataSourceName;
import cn.chenc.framework.core.mutidatasource.DynamicDataSource;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ExcelConfig.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ExcelConfig.java
index b0ba542..1b267a4 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ExcelConfig.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ExcelConfig.java
@@ -1,19 +1,8 @@
package cn.chenc.framework.demo.config;
-import cn.chenc.framework.demo.converters.MyLocalDateTimeConverter;
-import cn.chenc.framework.excel.config.CustomerDefaultConverterLoader;
-import cn.chenc.framework.excel.converters.LocalDateTimeConverter;
-import cn.chenc.framework.excel.converters.NumberToLocalDateTimeConverter;
-import com.alibaba.excel.converters.Converter;
-import com.alibaba.excel.converters.ConverterKeyBuild;
-import com.alibaba.excel.converters.DefaultConverterLoader;
+//import cn.chenc.framework.excel.config.CustomerDefaultConverterLoader;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-
-import java.lang.reflect.Field;
-import java.util.Map;
/**
* @description: TODO
@@ -22,45 +11,45 @@ import java.util.Map;
*
*/
@Configuration
-@AutoConfigureAfter(CustomerDefaultConverterLoader.class)
+//@AutoConfigureAfter(CustomerDefaultConverterLoader.class)
public class ExcelConfig {
- //存放写时用到的converter
- private static final String ALL_CONVERTER = "allConverter";
- //存放所有的converter
- private static final String WRITE_CONVERTER = "defaultWriteConverter";
-
- @Bean
- @Primary
- public DefaultConverterLoader addConverter() throws IllegalAccessException {
- DefaultConverterLoader converters = new DefaultConverterLoader();
- Field[] fields = converters.getClass().getDeclaredFields();
- for (Field field : fields) {
- field.setAccessible(true);
- if (field.getType() == Map.class) {
- Map oldMap = (Map) field.get(converters);
- if (oldMap != null && !oldMap.isEmpty()) {
- if (WRITE_CONVERTER.equalsIgnoreCase(field.getName())) {
- putWriteConverter(oldMap, new LocalDateTimeConverter());
- putAllConverter(oldMap,new NumberToLocalDateTimeConverter());
- putWriteConverter(oldMap, new MyLocalDateTimeConverter());
- } else if (ALL_CONVERTER.equalsIgnoreCase(field.getName())) {
- putAllConverter(oldMap, new LocalDateTimeConverter());
- putAllConverter(oldMap,new NumberToLocalDateTimeConverter());
- putWriteConverter(oldMap, new MyLocalDateTimeConverter());
- }
- field.set(converters, oldMap);
- }
- }
- }
- return converters;
- }
-
- private void putWriteConverter(Map map, Converter converter) {
- map.put(ConverterKeyBuild.buildKey(converter.supportJavaTypeKey()), converter);
- }
-
- private void putAllConverter(Map map, Converter converter) {
- map.put(ConverterKeyBuild.buildKey(converter.supportJavaTypeKey(), converter.supportExcelTypeKey()), converter);
- }
+// //存放写时用到的converter
+// private static final String ALL_CONVERTER = "allConverter";
+// //存放所有的converter
+// private static final String WRITE_CONVERTER = "defaultWriteConverter";
+//
+// @Bean
+// @Primary
+// public DefaultConverterLoader addConverter() throws IllegalAccessException {
+// DefaultConverterLoader converters = new DefaultConverterLoader();
+// Field[] fields = converters.getClass().getDeclaredFields();
+// for (Field field : fields) {
+// field.setAccessible(true);
+// if (field.getType() == Map.class) {
+// Map oldMap = (Map) field.get(converters);
+// if (oldMap != null && !oldMap.isEmpty()) {
+// if (WRITE_CONVERTER.equalsIgnoreCase(field.getName())) {
+// putWriteConverter(oldMap, new LocalDateTimeConverter());
+// putAllConverter(oldMap,new NumberToLocalDateTimeConverter());
+// putWriteConverter(oldMap, new MyLocalDateTimeConverter());
+// } else if (ALL_CONVERTER.equalsIgnoreCase(field.getName())) {
+// putAllConverter(oldMap, new LocalDateTimeConverter());
+// putAllConverter(oldMap,new NumberToLocalDateTimeConverter());
+// putWriteConverter(oldMap, new MyLocalDateTimeConverter());
+// }
+// field.set(converters, oldMap);
+// }
+// }
+// }
+// return converters;
+// }
+//
+// private void putWriteConverter(Map map, Converter converter) {
+// map.put(ConverterKeyBuild.buildKey(converter.supportJavaTypeKey()), converter);
+// }
+//
+// private void putAllConverter(Map map, Converter converter) {
+// map.put(ConverterKeyBuild.buildKey(converter.supportJavaTypeKey(), converter.supportExcelTypeKey()), converter);
+// }
}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java
index f7e8bce..3c6f379 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java
@@ -1,25 +1,11 @@
package cn.chenc.framework.demo.config;
-import com.alibaba.excel.metadata.GlobalConfiguration;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
-import com.baomidou.mybatisplus.autoconfigure.SpringBootVFS;
-import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
-import org.apache.ibatis.io.VFS;
-import org.apache.ibatis.plugin.Interceptor;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.apache.ibatis.type.JdbcType;
-import org.mybatis.spring.SqlSessionFactoryBean;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.core.env.Environment;
-import org.springframework.core.io.DefaultResourceLoader;
-
-import javax.sql.DataSource;
/**
* @description: mybatisplus配置
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/RoleController.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/RoleController.java
index 7c39a1b..524b131 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/RoleController.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/RoleController.java
@@ -6,7 +6,6 @@ import cn.chenc.framework.demo.service.RoleService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
index 54cbdaf..66cdb7b 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
@@ -1,16 +1,26 @@
package cn.chenc.framework.demo.controller;
import cn.chenc.framework.core.annotation.PreAuthorize;
+import cn.chenc.framework.core.model.AbstractDictData;
import cn.chenc.framework.core.model.response.AjaxResult;
import cn.chenc.framework.core.model.response.ResponseVO;
import cn.chenc.framework.core.model.response.ResultUtil;
+import cn.chenc.framework.core.util.DictUtils;
+import cn.chenc.framework.core.util.file.FileUtils;
+import cn.chenc.framework.demo.entity.Dict;
import cn.chenc.framework.demo.entity.User;
import cn.chenc.framework.demo.service.UserService;
+import cn.chenc.framework.mail.core.MailTemplate;
+import cn.chenc.framework.poi.util.ExcelUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* @description: TODO
* @author secret
@@ -25,6 +35,9 @@ public class UserController {
private UserService userService;
@Autowired
RedisTemplate redisTemplate;
+ @Autowired
+ private MailTemplate mailTemplate;
+
@GetMapping("/test")
public ResponseVO test(){
@@ -73,5 +86,31 @@ public class UserController {
return AjaxResult.success();
}
+ @GetMapping("/testMail")
+ public AjaxResult testMail(){
+ mailTemplate.sendSimpleMail("1029693356@qq.com","邮件标题","发送邮件测试");
+ return AjaxResult.success();
+ }
+
+ @GetMapping("/testExportPoi")
+ public AjaxResult testExportPoi(){
+ ExcelUtil excelUtil = new ExcelUtil(User.class);
+ List list = userService.list();
+ List dictList = new ArrayList<>();
+ Dict dict = new Dict();
+ dict.setDictLabel("男");
+ dict.setDictValue("0");
+ dictList.add(dict);
+ DictUtils.setDictCache("user_sex",dictList);
+ return excelUtil.exportExcel(list,"导出用户列表");
+ }
+
+ @GetMapping("/testImportPoi")
+ public AjaxResult testImportPoi() throws Exception{
+ ExcelUtil excelUtil = new ExcelUtil(User.class);
+ File file = new File("E:\\upload\\secret-boot-framework\\upload\\导入用户列表.xlsx");
+ List list = excelUtil.importExcel(FileUtils.openInputStream(file));
+ return AjaxResult.success(list);
+ }
}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/converters/MyLocalDateTimeConverter.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/converters/MyLocalDateTimeConverter.java
index 4a15577..e2f3b65 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/converters/MyLocalDateTimeConverter.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/converters/MyLocalDateTimeConverter.java
@@ -1,12 +1,14 @@
package cn.chenc.framework.demo.converters;
-import com.alibaba.excel.annotation.format.DateTimeFormat;
-import com.alibaba.excel.converters.Converter;
-import com.alibaba.excel.enums.CellDataTypeEnum;
-import com.alibaba.excel.metadata.CellData;
-import com.alibaba.excel.metadata.GlobalConfiguration;
-import com.alibaba.excel.metadata.property.ExcelContentProperty;
+//import com.alibaba.excel.annotation.format.DateTimeFormat;
+//import com.alibaba.excel.converters.Converter;
+//import com.alibaba.excel.enums.CellDataTypeEnum;
+//import com.alibaba.excel.metadata.CellData;
+//import com.alibaba.excel.metadata.GlobalConfiguration;
+//import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -14,12 +16,12 @@ import java.time.format.DateTimeFormatter;
import java.util.Objects;
/**
- * @description: TODO
+ * @description: easyexcel自定义格式转化器
* @author 陈_C
* @date 2020/8/26 16:32
*
*/
-public class MyLocalDateTimeConverter implements Converter {
+public class MyLocalDateTimeConverter /*implements Converter*/ {
/**
* 不使用{@code @LocalDateTimeFormat}注解指定日期格式时,默认会使用该格式.
@@ -32,15 +34,15 @@ public class MyLocalDateTimeConverter implements Converter {
private static final String READ_PATTERN = "yyyy-MM-dd";
- @Override
- public Class supportJavaTypeKey() {
- return LocalDateTime.class;
- }
-
- @Override
- public CellDataTypeEnum supportExcelTypeKey() {
- return CellDataTypeEnum.STRING;
- }
+// @Override
+// public Class supportJavaTypeKey() {
+// return LocalDateTime.class;
+// }
+//
+// @Override
+// public CellDataTypeEnum supportExcelTypeKey() {
+// return CellDataTypeEnum.STRING;
+// }
/**
* 这里读的时候会调用
@@ -50,15 +52,15 @@ public class MyLocalDateTimeConverter implements Converter {
* @param globalConfiguration 全局配置 (NotNull)
* @return 读取到内存中的数据
*/
- @Override
- public LocalDateTime convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
- 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();
-// return LocalDateTime.parse(cellData.getStringValue(),
-// DateTimeFormatter.ofPattern(Objects.nonNull(annotation) ? annotation.value() : DEFAULT_PATTERN));
- return localDateTime;
- }
+// @Override
+// public LocalDateTime convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
+// 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();
+//// return LocalDateTime.parse(cellData.getStringValue(),
+//// DateTimeFormatter.ofPattern(Objects.nonNull(annotation) ? annotation.value() : DEFAULT_PATTERN));
+// return localDateTime;
+// }
/**
@@ -69,10 +71,10 @@ public class MyLocalDateTimeConverter implements Converter {
* @param globalConfiguration 全局配置 (NotNull)
* @return 写出到excel文件的数据
*/
- @Override
- public CellData convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
- DateTimeFormat annotation = contentProperty.getField().getAnnotation(DateTimeFormat.class);
- return new CellData(value.format(DateTimeFormatter.ofPattern(Objects.nonNull(annotation) ? annotation.value() : DEFAULT_PATTERN)));
- }
+// @Override
+// public CellData convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
+// DateTimeFormat annotation = contentProperty.getField().getAnnotation(DateTimeFormat.class);
+// return new CellData(value.format(DateTimeFormatter.ofPattern(Objects.nonNull(annotation) ? annotation.value() : DEFAULT_PATTERN)));
+// }
}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/Dict.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/Dict.java
new file mode 100644
index 0000000..cb46aa5
--- /dev/null
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/Dict.java
@@ -0,0 +1,36 @@
+package cn.chenc.framework.demo.entity;
+
+import cn.chenc.framework.core.model.AbstractDictData;
+
+import java.io.Serializable;
+
+/**
+ * @description: TODO
+ * @author secret
+ * @date 2021/7/31 23:06
+ *
+ */
+public class Dict implements AbstractDictData, Serializable {
+
+ private String dictLabel;
+
+ private String dictValue;
+
+ public void setDictLabel(String dictLabel) {
+ this.dictLabel = dictLabel;
+ }
+
+ public void setDictValue(String dictValue) {
+ this.dictValue = dictValue;
+ }
+
+ @Override
+ public String getDictLabel() {
+ return dictLabel;
+ }
+
+ @Override
+ public String getDictValue() {
+ return dictValue;
+ }
+}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/User.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/User.java
index eca74d9..2049e97 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/User.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/User.java
@@ -1,6 +1,7 @@
package cn.chenc.framework.demo.entity;
import cn.chenc.framework.mybatisplus.model.BaseEntity;
+import cn.chenc.framework.poi.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -30,16 +31,19 @@ public class User extends BaseEntity implements Serializable {
/**
* 用户名
*/
+ @Excel(name="用户名")
private String username;
/**
* 性别,0:女,1男
*/
+ @Excel(name="性别",dictType = "user_sex")
private Integer sex;
/**
* 生日
*/
+ @Excel(name="生日",dateFormat = "yyyy-MM-dd")
private LocalDateTime birthday;
@TableField(exist = false)
diff --git a/secret-boot-framework-demo/common-demo/src/main/resources/application-dev.yml b/secret-boot-framework-demo/common-demo/src/main/resources/application-dev.yml
index 0585a3d..7b878dd 100644
--- a/secret-boot-framework-demo/common-demo/src/main/resources/application-dev.yml
+++ b/secret-boot-framework-demo/common-demo/src/main/resources/application-dev.yml
@@ -63,6 +63,27 @@ spring:
timeout: 5000ms
# 默认的数据过期时间
expire: 2592000
+ mail:
+ #smtp服务主机 qq邮箱则为smtp.qq.com
+ host: smtp.qq.com
+ #服务协议
+ protocol: smtp
+ # 编码集
+ default-encoding: UTF-8
+ #发送邮件的账户
+ username: 1029693356@qq.com
+ #授权码
+ password: wtktmncfdiivbejh
+ test-connection: false
+ # 服务端口
+ port: 587
+ properties:
+ mail:
+ smtp:
+ auth: true
+ starttls:
+ enable: true
+ required: true
#日志
logging:
@@ -70,5 +91,8 @@ logging:
root: debug
# org.springframework.scheduling: INFO
+#secret-config
+secret-config:
+ profile: E:\upload\secret-boot-framework
####################################自定义配置##########################################
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/config/DemoSourceConfig.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/config/DemoSourceConfig.java
index 1e9bd26..7592d09 100644
--- a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/config/DemoSourceConfig.java
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/config/DemoSourceConfig.java
@@ -3,7 +3,6 @@ package cn.chenc.framework.demo.config;
import cn.chenc.framework.jpa.support.BaseJpaRepositoryFactoryBean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* @description: TODO
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
index 8f016ab..b6b0b93 100644
--- a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
@@ -5,7 +5,6 @@ import cn.chenc.framework.demo.entity.UserEntity;
import cn.chenc.framework.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
-import org.springframework.web.bind.annotation.*;
import java.util.List;
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/dao/UserRepository.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/dao/UserRepository.java
index 60c69d8..87a64f9 100644
--- a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/dao/UserRepository.java
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/dao/UserRepository.java
@@ -2,8 +2,6 @@ package cn.chenc.framework.demo.dao;
import cn.chenc.framework.demo.entity.UserEntity;
import cn.chenc.framework.jpa.repository.BaseRepository;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
/**
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/entity/UserEntity.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/entity/UserEntity.java
index 016d755..e51dc5b 100644
--- a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/entity/UserEntity.java
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/entity/UserEntity.java
@@ -2,7 +2,6 @@ package cn.chenc.framework.demo.entity;
import cn.chenc.framework.jpa.model.BaseEntity;
-import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
@@ -11,7 +10,7 @@ import java.time.LocalDateTime;
* @author secret
* @date 2021/5/14 14:51
*
- */
+ */
@Entity
@Table(name = "user", schema = "secret_framework")
public class UserEntity extends BaseEntity implements Serializable {
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/UserService.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/UserService.java
index bc49213..f86c494 100644
--- a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/UserService.java
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/UserService.java
@@ -5,7 +5,6 @@ import cn.chenc.framework.demo.entity.UserEntity;
import cn.chenc.framework.jpa.service.BaseService;
import org.springframework.data.domain.Page;
-import javax.persistence.criteria.CriteriaBuilder;
import java.util.List;
/**
diff --git a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/impl/UserServiceImpl.java b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/impl/UserServiceImpl.java
index add58d6..c1a1e80 100644
--- a/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/impl/UserServiceImpl.java
+++ b/secret-boot-framework-demo/jpa-demo/src/main/java/cn/chenc/framework/demo/service/impl/UserServiceImpl.java
@@ -4,9 +4,7 @@ import cn.chenc.framework.core.util.StringUtils;
import cn.chenc.framework.demo.dao.UserRepository;
import cn.chenc.framework.demo.entity.UserEntity;
import cn.chenc.framework.demo.service.UserService;
-import cn.chenc.framework.jpa.repository.BaseRepository;
import cn.chenc.framework.jpa.service.BaseServiceImpl;
-import cn.chenc.framework.jpa.util.PageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
diff --git a/secret-boot-framework-mail/src/main/java/cn/chenc/framework/mail/config/MailConfiguration.java b/secret-boot-framework-mail/src/main/java/cn/chenc/framework/mail/config/MailConfiguration.java
index 6915d80..18605c1 100644
--- a/secret-boot-framework-mail/src/main/java/cn/chenc/framework/mail/config/MailConfiguration.java
+++ b/secret-boot-framework-mail/src/main/java/cn/chenc/framework/mail/config/MailConfiguration.java
@@ -2,10 +2,8 @@ package cn.chenc.framework.mail.config;
import cn.chenc.framework.mail.core.MailTemplate;
import cn.chenc.framework.mail.core.SecretMailTemplate;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.mail.MailProperties;
-import org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
@@ -19,7 +17,6 @@ import javax.annotation.Resource;
*
*/
@Configuration
-@AutoConfigureAfter(MailSenderAutoConfiguration.class)
public class MailConfiguration {
@Resource
@@ -29,7 +26,7 @@ public class MailConfiguration {
private MailProperties mailProperties;
@Bean
- @ConditionalOnBean({MailProperties.class, JavaMailSender.class})
+ @ConditionalOnClass({MailProperties.class, JavaMailSender.class})
public MailTemplate mailTemplate() {
return new SecretMailTemplate(mailSender,mailProperties);
}
diff --git a/secret-boot-framework-poi/src/main/java/cn/chenc/framework/poi/util/ExcelUtil.java b/secret-boot-framework-poi/src/main/java/cn/chenc/framework/poi/util/ExcelUtil.java
index bfe737c..1dd00ee 100644
--- a/secret-boot-framework-poi/src/main/java/cn/chenc/framework/poi/util/ExcelUtil.java
+++ b/secret-boot-framework-poi/src/main/java/cn/chenc/framework/poi/util/ExcelUtil.java
@@ -26,6 +26,7 @@ import java.io.*;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.text.DecimalFormat;
+import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -596,7 +597,11 @@ public class ExcelUtil {
String dictType = attr.dictType();
if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value))
{
- cell.setCellValue(DateUtils.format((Date) value, dateFormat));
+ if(value instanceof LocalDateTime){
+ cell.setCellValue(cn.hutool.core.date.DateUtil.format((LocalDateTime) value,dateFormat));
+ } else {
+ cell.setCellValue(DateUtils.format((Date) value, dateFormat));
+ }
}
else if (StringUtils.isNotEmpty(readConverterExp) && StringUtils.isNotNull(value))
{
diff --git a/secret-boot-framework-poi/src/main/java/cn/chenc/framework/poi/util/ReflectUtils.java b/secret-boot-framework-poi/src/main/java/cn/chenc/framework/poi/util/ReflectUtils.java
index 93f0311..cc6ebd6 100644
--- a/secret-boot-framework-poi/src/main/java/cn/chenc/framework/poi/util/ReflectUtils.java
+++ b/secret-boot-framework-poi/src/main/java/cn/chenc/framework/poi/util/ReflectUtils.java
@@ -10,6 +10,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.*;
+import java.time.LocalDateTime;
import java.util.Date;
/**
@@ -159,6 +160,14 @@ public class ReflectUtils {
} else {
args[i] = DateUtil.getJavaDate((Double) args[i]);
}
+ } else if(cs[i] == LocalDateTime.class){
+ if (args[i] instanceof String) {
+ args[i] = DateUtils.parseLocalDateTime(args[i].toString());
+ } else if(args[i] instanceof Date){
+ args[i] = DateUtils.dateToLocalDateTime((Date) args[i]);
+ } else {
+ args[i] = DateUtil.getLocalDateTime((Double) args[i]);
+ }
} else if (cs[i] == boolean.class || cs[i] == Boolean.class) {
args[i] = Convert.toBool(args[i]);
}
--
Gitee
From f86a5013e0315f405812222bfa69fffa196a3847 Mon Sep 17 00:00:00 2001
From: secret <1029693356@qq.com>
Date: Sun, 1 Aug 2021 16:09:49 +0800
Subject: [PATCH 09/11] =?UTF-8?q?common-demo=20=E9=9B=86=E6=88=90dozer=20d?=
=?UTF-8?q?emo?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 8 +++---
.../common-demo/pom.xml | 4 +++
.../framework/demo/CommonDemoApplication.java | 1 +
.../framework/demo/config/ExcelConfig.java | 1 -
.../demo/config/MyBatisPlusConfig.java | 4 ---
.../demo/controller/UserController.java | 16 ++++++++++++
.../converters/MyLocalDateTimeConverter.java | 7 ------
.../chenc/framework/demo/entity/UserCopy.java | 25 +++++++++++++++++++
secret-boot-framework-dependencies/pom.xml | 25 +++++++++----------
.../dozer/component/DozerTemplate.java | 8 +++---
.../dozer/config/DozerConfiguration.java | 2 +-
.../dozer/properties/DozerProperties.java | 2 --
.../mail/config/MailConfiguration.java | 7 +++---
13 files changed, 70 insertions(+), 40 deletions(-)
create mode 100644 secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/UserCopy.java
diff --git a/pom.xml b/pom.xml
index 640e4a2..f2f18ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,7 +36,7 @@
3.2.1
- 2.9.1
+ 3.3.0
1.6
@@ -100,15 +100,15 @@
org.apache.maven.plugins
maven-javadoc-plugin
${maven-javadoc-plugin.version}
-
- -Xdoclint:none
-
package
jar
+
+ -Xdoclint:none
+
diff --git a/secret-boot-framework-demo/common-demo/pom.xml b/secret-boot-framework-demo/common-demo/pom.xml
index 97642eb..e786c40 100644
--- a/secret-boot-framework-demo/common-demo/pom.xml
+++ b/secret-boot-framework-demo/common-demo/pom.xml
@@ -54,6 +54,10 @@
com.gitee.secretopen
secret-boot-framework-poi
+
+ com.gitee.secretopen
+ secret-boot-framework-dozer
+
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java
index fbf91fd..9e2810b 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/CommonDemoApplication.java
@@ -3,6 +3,7 @@ package cn.chenc.framework.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ExcelConfig.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ExcelConfig.java
index 1b267a4..066db05 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ExcelConfig.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/ExcelConfig.java
@@ -1,7 +1,6 @@
package cn.chenc.framework.demo.config;
//import cn.chenc.framework.excel.config.CustomerDefaultConverterLoader;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Configuration;
/**
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java
index 3c6f379..1504f5c 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/config/MyBatisPlusConfig.java
@@ -27,10 +27,6 @@ public class MyBatisPlusConfig {
return interceptor;
}
- @Bean
- public ConfigurationCustomizer configurationCustomizer() {
- return configuration -> configuration.setUseDeprecatedExecutor(false);
- }
// @Bean
// public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
index 66cdb7b..e6985eb 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/controller/UserController.java
@@ -1,6 +1,7 @@
package cn.chenc.framework.demo.controller;
import cn.chenc.framework.core.annotation.PreAuthorize;
+import cn.chenc.framework.core.component.AbstractJwtTemplate;
import cn.chenc.framework.core.model.AbstractDictData;
import cn.chenc.framework.core.model.response.AjaxResult;
import cn.chenc.framework.core.model.response.ResponseVO;
@@ -9,12 +10,16 @@ import cn.chenc.framework.core.util.DictUtils;
import cn.chenc.framework.core.util.file.FileUtils;
import cn.chenc.framework.demo.entity.Dict;
import cn.chenc.framework.demo.entity.User;
+import cn.chenc.framework.demo.entity.UserCopy;
import cn.chenc.framework.demo.service.UserService;
+import cn.chenc.framework.dozer.component.DozerTemplate;
import cn.chenc.framework.mail.core.MailTemplate;
import cn.chenc.framework.poi.util.ExcelUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.mail.MailProperties;
import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.*;
import java.io.File;
@@ -37,6 +42,8 @@ public class UserController {
RedisTemplate redisTemplate;
@Autowired
private MailTemplate mailTemplate;
+ @Autowired
+ private DozerTemplate dozerTemplate;
@GetMapping("/test")
@@ -113,4 +120,13 @@ public class UserController {
return AjaxResult.success(list);
}
+ @GetMapping("/testDozer")
+ public AjaxResult testDozer() {
+ User user = new User();
+ user.setUsername("secret");
+ user.setSex(0);
+ UserCopy userCopy = dozerTemplate.map(user, UserCopy.class);
+ return AjaxResult.success(userCopy);
+ }
+
}
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/converters/MyLocalDateTimeConverter.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/converters/MyLocalDateTimeConverter.java
index e2f3b65..027e355 100644
--- a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/converters/MyLocalDateTimeConverter.java
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/converters/MyLocalDateTimeConverter.java
@@ -8,13 +8,6 @@ package cn.chenc.framework.demo.converters;
//import com.alibaba.excel.metadata.GlobalConfiguration;
//import com.alibaba.excel.metadata.property.ExcelContentProperty;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Objects;
-
/**
* @description: easyexcel自定义格式转化器
* @author 陈_C
diff --git a/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/UserCopy.java b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/UserCopy.java
new file mode 100644
index 0000000..d51b26f
--- /dev/null
+++ b/secret-boot-framework-demo/common-demo/src/main/java/cn/chenc/framework/demo/entity/UserCopy.java
@@ -0,0 +1,25 @@
+package cn.chenc.framework.demo.entity;
+
+import cn.chenc.framework.poi.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @description: TODO
+ * @author secret
+ * @date 2021/8/1 15:57
+ *
+ */
+@Data
+public class UserCopy implements Serializable {
+ /**
+ * 用户名
+ */
+ private String username;
+
+ /**
+ * 性别,0:女,1男
+ */
+ private Integer sex;
+}
diff --git a/secret-boot-framework-dependencies/pom.xml b/secret-boot-framework-dependencies/pom.xml
index 6475897..7251c2d 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.5
+ 2.5.3
4.0.0
@@ -21,26 +21,25 @@
1.8
1.6.0
- 2.4.3.RELEASE
1.2.6
- 8.0.25
+ 8.0.26
- 2.8.0
+ 2.11.0
1.4
1.9
3.8.0
- 1.10.10
+ 1.10.11
4.5.13
4.9.1
1.18.20
3.0.0
30.1.1-jre
- 3.4.2
- 1.13.1
+ 3.4.3.1
+ 1.14.1
1.21
0.62.2
- 5.6.5
+ 5.7.6
2.2.9
4.1.2
@@ -48,12 +47,12 @@
1.7.1
- 3.15.4
+ 3.16.1
6.5.2
3.2.1
- 2.9.1
+ 3.3.0
1.6
@@ -334,15 +333,15 @@
org.apache.maven.plugins
maven-javadoc-plugin
${maven-javadoc-plugin.version}
-
- -Xdoclint:none
-
package
jar
+
+ -Xdoclint:none
+
diff --git a/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/component/DozerTemplate.java b/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/component/DozerTemplate.java
index 08319d9..0b9bdcb 100644
--- a/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/component/DozerTemplate.java
+++ b/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/component/DozerTemplate.java
@@ -26,7 +26,7 @@ public class DozerTemplate {
}
/**
- * Constructs new instance of destinationClass and performs mapping between from source
+ * 构造destinationClass的新实例,并在源代码之间执行映射
*
* @param source
* @param destinationClass
@@ -51,7 +51,7 @@ public class DozerTemplate {
}
/**
- * Performs mapping between source and destination objects
+ * 在源对象和目标对象之间执行映射
*
* @param source
* @param destination
@@ -64,7 +64,7 @@ public class DozerTemplate {
}
/**
- * Constructs new instance of destinationClass and performs mapping between from source
+ * 构造destinationClass的新实例,并在源代码之间执行映射
*
* @param source
* @param destinationClass
@@ -80,7 +80,7 @@ public class DozerTemplate {
}
/**
- * Performs mapping between source and destination objects
+ * 在源对象和目标对象之间执行映射
*
* @param source
* @param destination
diff --git a/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/config/DozerConfiguration.java b/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/config/DozerConfiguration.java
index 0c33395..3cb6c77 100644
--- a/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/config/DozerConfiguration.java
+++ b/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/config/DozerConfiguration.java
@@ -36,7 +36,7 @@ public class DozerConfiguration {
}
@Bean
- public DozerTemplate getDozerUtil(Mapper mapper) {
+ public DozerTemplate dozerTemplate(Mapper mapper) {
return new DozerTemplate(mapper);
}
diff --git a/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/properties/DozerProperties.java b/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/properties/DozerProperties.java
index bc34d8f..644184d 100644
--- a/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/properties/DozerProperties.java
+++ b/secret-boot-framework-dozer/src/main/java/cn/chenc/framework/dozer/properties/DozerProperties.java
@@ -4,7 +4,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
-import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Arrays;
@@ -17,7 +16,6 @@ import java.util.stream.Stream;
* @date 2021/7/26 23:01
*
*/
-@Component
@ConfigurationProperties(prefix = "dozer")
public class DozerProperties {
private static final ResourcePatternResolver PATTERN_RESOLVER = new PathMatchingResourcePatternResolver();
diff --git a/secret-boot-framework-mail/src/main/java/cn/chenc/framework/mail/config/MailConfiguration.java b/secret-boot-framework-mail/src/main/java/cn/chenc/framework/mail/config/MailConfiguration.java
index 18605c1..5fcff7a 100644
--- a/secret-boot-framework-mail/src/main/java/cn/chenc/framework/mail/config/MailConfiguration.java
+++ b/secret-boot-framework-mail/src/main/java/cn/chenc/framework/mail/config/MailConfiguration.java
@@ -2,14 +2,13 @@ package cn.chenc.framework.mail.config;
import cn.chenc.framework.mail.core.MailTemplate;
import cn.chenc.framework.mail.core.SecretMailTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.mail.MailProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
-import javax.annotation.Resource;
-
/**
* @description: 邮件配置
* @author secret
@@ -19,10 +18,10 @@ import javax.annotation.Resource;
@Configuration
public class MailConfiguration {
- @Resource
+ @Autowired
private JavaMailSender mailSender;
- @Resource
+ @Autowired
private MailProperties mailProperties;
@Bean
--
Gitee
From d55facce49eaae425ad9e5b65ec0c8d6c8dfe981 Mon Sep 17 00:00:00 2001
From: secret <1029693356@qq.com>
Date: Sun, 1 Aug 2021 16:18:25 +0800
Subject: [PATCH 10/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=201.6.0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 10 +++++-----
.../security/repository/RedisTokenRepositoryImpl.java | 3 +--
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index d4a3c7f..f28a160 100644
--- a/README.md
+++ b/README.md
@@ -52,7 +52,7 @@ secret-boot脚手架(根据核心依赖版本长期更新,正常更新周期
com.gitee.secretopen
secret-boot-framework-dependencies
- 1.5.0
+ 1.6.0
pom
import
@@ -62,18 +62,18 @@ secret-boot脚手架(根据核心依赖版本长期更新,正常更新周期
com.gitee.secretopen
secret-boot-framework-all
- 1.5.0
+ 1.6.0
```
#### 核心依赖
| 组件 | 版本 |
| ---- | ---- |
-| springboot | 2.4.3 |
-| mybatis-plus | 3.4.2 |
+| springboot | 2.5.3 |
+| mybatis-plus | 3.4.3 |
| mysql | 5.7/8.x |
| redis | |
-| hutool | 5.5.9 |
+| hutool | |
#### 截图

diff --git a/secret-boot-framework-security/src/main/java/cn/chenc/framework/security/repository/RedisTokenRepositoryImpl.java b/secret-boot-framework-security/src/main/java/cn/chenc/framework/security/repository/RedisTokenRepositoryImpl.java
index 0b9825b..f0f9c73 100644
--- a/secret-boot-framework-security/src/main/java/cn/chenc/framework/security/repository/RedisTokenRepositoryImpl.java
+++ b/secret-boot-framework-security/src/main/java/cn/chenc/framework/security/repository/RedisTokenRepositoryImpl.java
@@ -9,7 +9,6 @@ import org.springframework.data.redis.core.ScanOptions;
import org.springframework.security.web.authentication.rememberme.PersistentRememberMeToken;
import org.springframework.security.web.authentication.rememberme.PersistentTokenRepository;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -163,7 +162,7 @@ public class RedisTokenRepositoryImpl implements PersistentTokenRepository {
return;
}
}
- } catch (IOException ex) {
+ } catch (Exception ex) {
log.warn("token remove exception", ex);
}
}
--
Gitee
From 56e9220201d0a6ba1e97b4d42b2d4064a65d79d9 Mon Sep 17 00:00:00 2001
From: secret <1029693356@qq.com>
Date: Sun, 1 Aug 2021 16:39:14 +0800
Subject: [PATCH 11/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=201.6.0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index f28a160..48b1c3e 100644
--- a/README.md
+++ b/README.md
@@ -27,6 +27,7 @@ secret-boot脚手架(根据核心依赖版本长期更新,正常更新周期
| secret-boot-framework-excel | excel工具模块 |
| secret-boot-framework-ffmpeg | ffmpet工具模块 |
| secret-boot-framework-jpa | jpa扩展模块 |
+| secret-boot-framework-mail | mail封装模块 |
| secret-boot-framework-mybatis-plus | mybatis-plus扩展模块 |
| secret-boot-framework-poi | poi封装模块 |
| secret-boot-framework-security | spring-security扩展模块 |
--
Gitee