From 6c186e39cd57d4d6843e02b835341aad4e8613cc Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Thu, 3 Jan 2019 21:13:36 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E5=88=86=E8=B4=A6=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 53 +++++++++++++------ .../java/com/yexuejc/base/util/ObjUtil.java | 2 +- .../java/com/yexuejc/base/util/RegexUtil.java | 8 +-- .../java/com/yexuejc/base/util/StrUtil.java | 8 +-- 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index 6bd77e8..ec99732 100644 --- a/pom.xml +++ b/pom.xml @@ -10,6 +10,7 @@ ${project.artifactId} https://github.com/yexuejc/yexuejc-base + Common toolkits based on JDK8 packaging @@ -50,6 +51,11 @@ 2.6 1.60 20.0 + + UTF-8 + UTF-8 + + UTF-8 @@ -150,17 +156,17 @@ - - - - - - - - - - - + + + + + + + + + + + @@ -185,14 +191,14 @@ - - - + + + - - - + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + package + + jar + + + + org.apache.maven.plugins maven-gpg-plugin diff --git a/src/main/java/com/yexuejc/base/util/ObjUtil.java b/src/main/java/com/yexuejc/base/util/ObjUtil.java index c2f3bee..cc90419 100644 --- a/src/main/java/com/yexuejc/base/util/ObjUtil.java +++ b/src/main/java/com/yexuejc/base/util/ObjUtil.java @@ -10,7 +10,7 @@ import java.util.*; * @author maxf * @version 1.0 * @ClassName ObjUtil - * @Description + * @Description 对象工具:对类的操作 * @date 2018/12/28 15:54 */ public class ObjUtil { diff --git a/src/main/java/com/yexuejc/base/util/RegexUtil.java b/src/main/java/com/yexuejc/base/util/RegexUtil.java index 5c7daa6..11e14f4 100644 --- a/src/main/java/com/yexuejc/base/util/RegexUtil.java +++ b/src/main/java/com/yexuejc/base/util/RegexUtil.java @@ -6,9 +6,11 @@ import java.util.regex.Pattern; /** * 正则验证 * - * @author yexue - * @expl - * @time 2017年11月9日 上午11:01:24 + * @author maxf + * @version 1.3.4 + * @ClassName RegexUtil + * @Description + * @date 2019/1/3 9:33 */ public class RegexUtil { private RegexUtil() { diff --git a/src/main/java/com/yexuejc/base/util/StrUtil.java b/src/main/java/com/yexuejc/base/util/StrUtil.java index 55c07c2..6cf384d 100644 --- a/src/main/java/com/yexuejc/base/util/StrUtil.java +++ b/src/main/java/com/yexuejc/base/util/StrUtil.java @@ -92,10 +92,10 @@ public final class StrUtil { } /** - * 生成11位编号,可以用作订单号,有很小几率出现重复,需要做异常处理
- * 左边第一位为正负标识:正数1 负数0
- * 剩余位数为UUID的hashcode值
- * 可以再生成的编号基础上嵌入其他标识编码 + *

生成11位编号,可以用作订单号,有很小几率出现重复,需要做异常处理

+ *

左边第一位为正负标识:正数1 负数0

+ *

剩余位数为UUID的hashcode值

+ *

可以再生成的编号基础上嵌入其他标识编码

* * @return */ From c9863373fe4ef02c6f9b08c007a0d747af3bb490 Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Mon, 7 Jan 2019 17:18:52 +0800 Subject: [PATCH 02/23] =?UTF-8?q?=E6=94=AF=E4=BB=98=E8=B7=91=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yexuejc/base/util/ObjUtil.java | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/yexuejc/base/util/ObjUtil.java b/src/main/java/com/yexuejc/base/util/ObjUtil.java index cc90419..1c180fd 100644 --- a/src/main/java/com/yexuejc/base/util/ObjUtil.java +++ b/src/main/java/com/yexuejc/base/util/ObjUtil.java @@ -2,6 +2,7 @@ package com.yexuejc.base.util; import java.io.*; import java.lang.reflect.Field; +import java.sql.Timestamp; import java.util.*; /** @@ -116,7 +117,7 @@ public class ObjUtil { } } Object o = f.get(obj); - if (null == o || o.getClass().isPrimitive() || o instanceof String || o instanceof Enum) { + if (null == o || isPrimitive(o) || o instanceof String || o instanceof Enum) { if (null == o && !putNull) { continue; } @@ -133,6 +134,23 @@ public class ObjUtil { if (bodyList.size() > 0) { objMap.put(fName, bodyList); } + } else if (o instanceof Map) { + Map map = (Map) o; + if (map.size() > 0) { + objMap.put(fName, map); + } + } else if (o instanceof Set) { + Set list = (Set) o; + Set bodyList = new HashSet(); + list.forEach(it -> { + if (null != it) { + Map underlineMap = getUnderlineMap(it, isAnnotationAll, putNull); + bodyList.add(underlineMap); + } + }); + if (bodyList.size() > 0) { + objMap.put(fName, bodyList); + } } else { Map underlineMap = getUnderlineMap(o, isAnnotationAll, putNull); objMap.put(fName, underlineMap); @@ -144,6 +162,27 @@ public class ObjUtil { return objMap; } + /** + * 判断是否基本类型(包括String,BigDecimal,Number) + * + * @param obj + * @return + */ + public static boolean isPrimitive(Object obj) { + if (null == obj) { + return false; + } + boolean b = obj.getClass().isPrimitive() + || obj instanceof Integer || obj instanceof Character || obj instanceof Boolean + || obj instanceof Number || obj instanceof String || obj instanceof Double || obj instanceof Float + || obj instanceof Short || obj instanceof Long || obj instanceof Byte || obj instanceof Date + ; + if (b) { + return true; + } + return false; + } + public static void main(String[] args) { B a = new B(); From e7e89563d9a78aa7630074d77ba42dbeb084239e Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Mon, 7 Jan 2019 17:20:07 +0800 Subject: [PATCH 03/23] =?UTF-8?q?1.3.5=20objUtil=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPDATE.md | 6 ++++++ pom.xml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/UPDATE.md b/UPDATE.md index 4be0bb5..bc29bdb 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -1,6 +1,12 @@ yexuejc-base 更新记录 ------------------ +#### version :1.3.5 +**time:2019-1-7 17:19:22**
+**branch:** master
+**update:**
+>1. objUtil 增加兼容类型 +# #### version :1.3.4 **time:2019-1-2 20:32:12**
**branch:** master
diff --git a/pom.xml b/pom.xml index ec99732..533e815 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ top.yexuejc yexuejc-base - 1.3.4 + 1.3.5 ${project.artifactId} https://github.com/yexuejc/yexuejc-base From 3b83e22ac702448657a5c56977ffe358ef088e9f Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Thu, 10 Jan 2019 14:54:56 +0800 Subject: [PATCH 04/23] =?UTF-8?q?json=E6=94=AF=E6=8C=81=E4=B8=8B=E5=88=92?= =?UTF-8?q?=E7=BA=BF=E3=80=81=E9=A9=BC=E5=B3=B0=E4=BA=92=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/yexuejc/base/util/JsonUtil.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/yexuejc/base/util/JsonUtil.java b/src/main/java/com/yexuejc/base/util/JsonUtil.java index f92a315..b6682af 100644 --- a/src/main/java/com/yexuejc/base/util/JsonUtil.java +++ b/src/main/java/com/yexuejc/base/util/JsonUtil.java @@ -12,6 +12,7 @@ import java.io.InputStream; import java.util.Map; import java.util.logging.Logger; + /** * json工具类,基于jackson * @@ -47,6 +48,8 @@ public class JsonUtil { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); objectMapper.setDateFormat(DateUtil.DATE_TIME_FORMAT); + //驼峰下划线互转 + objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); } /** From 1f4d31f8421c449112f1bac000bf6553374a6227 Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Thu, 10 Jan 2019 14:55:42 +0800 Subject: [PATCH 05/23] =?UTF-8?q?1.3.6=20json=E6=94=AF=E6=8C=81=E4=B8=8B?= =?UTF-8?q?=E5=88=92=E7=BA=BF=E3=80=81=E9=A9=BC=E5=B3=B0=E4=BA=92=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPDATE.md | 436 ++++++++++++++++++++++--------------------- pom.xml | 550 +++++++++++++++++++++++++++--------------------------- 2 files changed, 496 insertions(+), 490 deletions(-) diff --git a/UPDATE.md b/UPDATE.md index bc29bdb..7b52183 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -1,216 +1,222 @@ -yexuejc-base 更新记录 ------------------- - -#### version :1.3.5 -**time:2019-1-7 17:19:22**
-**branch:** master
-**update:**
->1. objUtil 增加兼容类型 -# -#### version :1.3.4 -**time:2019-1-2 20:32:12**
-**branch:** master
-**update:**
->1. objUtil list类型修复 -# -#### version :1.3.3 -**time:2019-1-2 14:06:47**
-**branch:** master
-**update:**
->1. MoneyUtil 扩展元转分 -# -#### version :1.3.2 -**time:2019-1-2 14:06:47**
-**branch:** master
-**update:**
->1. objUtil 枚举类型修复 -# -#### version :1.3.1 -**time:2019-1-2 14:06:47**
-**branch:** master
-**update:**
->1. objUtil 增加类字段(驼峰)转换成下划线 -# -#### version :1.3.0 -**time:2018-12-30 16:47:50**
-**branch:** master
-**update:**
->1. 移交发布到maven中央仓库 ->2. 移交后变更groupId 为`top.yexuejc` ->3. 源码发布由`成都极致思维网络科技有限公司`维护,github开源地址不变,gitee从组织[ICC(InCloudCode)](https://gitee.com/incloudcode)转移到[成都极致思维网络科技有限公司/yexuejc-base](https://gitee.com/jzsw-it/yexuejc-base) - -# -#### version :1.2.9 -**time:2018-12-29 14:51:33**
-**branch:** master
-**update:**
->1. 获取RSA密钥增加以输入流的形式获取密钥 - -# -#### version :1.2.6 -**time:2018-12-21 14:58:49**
-**branch:** master
-**update:**
->1. RSA 验签增加初始化方法 - -# -#### version :1.2.8 -**time:2018-12-28 20:10:14**
-**branch:** master
-**update:**
->1. 新增[ObjUtil](src/main/java/com/yexuejc/base/util/ObjUtil.java) 对类(对象)进行处理,提供深度克隆 - -# -#### version :1.2.6 -**time:2018-12-21 14:58:49**
-**branch:** master
-**update:**
->1. RSA 验签增加初始化方法 - -# -#### version :1.2.7 -**time:2018-12-24 15:31:01**
-**branch:** master
-**update:**
->1. FileUtil增加base64转File `base64ToFile()` - -# -#### version :1.2.6 -**time:2018-12-21 14:58:49**
-**branch:** master
-**update:**
->1. RSA 验签增加初始化方法 - -# -#### version :1.2.5 -**time:2018-12-20 13:13:23**
-**branch:** master
-**update:**
->1. 丰富[JsonUtil](src/main/java/com/yexuejc/base/util/JsonUtil.java),支持直接对Map泛型转换 - -# -#### version :1.2.4 -**time:2018-11-27 14:46:04**
-**branch:** master
-**update:**
->1. 工具类的优化 ->2.规范代码 - -# -#### version :1.2.3 -**time:2018-11-23 16:45:42**
-**branch:** master
-**update:**
->1. 修复RSA加密(签名)时选择的Base64(encodeBase64URLSafeString、encodeBase64String)区分 -# -#### version :1.2.1 -**time:2018-11-9 15:05:06**
-**branch:** master
-**update:**
->1. 优化resps -# -#### version :1.2.2 -**time:2018-11-20 20:20:12**
-**branch:** master
-**update:**
->1. 优化RSA 加解密 ->1. 增加RSA 签名 -# -#### version :1.2.1 -**time:2018-11-9 15:05:06**
-**branch:** master
-**update:**
->1. 优化resps -# -#### version :1.2.0 -**time:2018-10-19 11:38:20**
-**branch:** master
-**update:**
->1. 增加异步线程处理工具 -```$java -SysUtil.threadRun(() -> { - //异步执行代码块 -} -``` -# - -#### version :1.1.9 -**time:2018-9-23 11:57:36**
-**branch:** master
-**update:**
->1. 优化工具类包名:不向下兼容,升级请修改 ->2. 升级JWT工具类:更改为单例模式,可配置参数 -# - -#### version :1.1.8 -**time:2018-9-3 19:29:56**
-**branch:** master
-**update:**
->1. 增肌图片处理工具类 ->2. 增肌3des工具类 ->3. 增肌RSA工具类 ->4. 优化其他工具类 -# -#### version :1.1.7 -**time:2018-8-17 11:22:50**
-**branch:** master
-**update:**
->1. 优化ApiVO -# - -#### version :1.1.6 -**time:2018-7-7 11:32:56**
-**branch:** master
-**update:**
->1. maven仓库更新 -# - -#### version :1.1.5 -**time:2018-6-19 22:16:34**
-**branch:** master
-**update:**
->1. 优化ApiVO - -# -#### version :1.1.4 -**time:2018-6-14 22:27:59**
-**branch:** master
-**update:**
->1. 统一编码:UTF-8 - -# -#### version :1.1.3 -**time:2018年6月2日12:16:58**
-**branch:** master
-**update:**
->1. 修改正则RegexUtils.java ->2. 修改正则StrUtil.java->扩展genUUID() - -# -#### version :1.1.2 -**time:** 2018-5-16 15:03:28
-**branch:** master
-**update:**
->1. 修改依赖 - -# -#### version :1.1.1 -**time:** 2018-5-12 22:25:05
-**branch:** master
-**update:**
->1. 添加RSA -# - -##### version :1.1.0 -**time:** 2018-5-12 22:25:05
-**branch:** master
-**update:**
->1. 添加支持加密功能 -# - -#### version :1.0.0 -**time:** 2018-1-31 12:16:10
-**branch:** master
-**update:**
->1. 基于java8开发的web应用工具包 +yexuejc-base 更新记录 +------------------ + +#### version :1.3.6 +**time:2019-1-10 14:55:13**
+**branch:** master
+**update:**
+>1. json增加下划线、驼峰互转 +# +#### version :1.3.5 +**time:2019-1-7 17:19:22**
+**branch:** master
+**update:**
+>1. objUtil 增加兼容类型 +# +#### version :1.3.4 +**time:2019-1-2 20:32:12**
+**branch:** master
+**update:**
+>1. objUtil list类型修复 +# +#### version :1.3.3 +**time:2019-1-2 14:06:47**
+**branch:** master
+**update:**
+>1. MoneyUtil 扩展元转分 +# +#### version :1.3.2 +**time:2019-1-2 14:06:47**
+**branch:** master
+**update:**
+>1. objUtil 枚举类型修复 +# +#### version :1.3.1 +**time:2019-1-2 14:06:47**
+**branch:** master
+**update:**
+>1. objUtil 增加类字段(驼峰)转换成下划线 +# +#### version :1.3.0 +**time:2018-12-30 16:47:50**
+**branch:** master
+**update:**
+>1. 移交发布到maven中央仓库 +>2. 移交后变更groupId 为`top.yexuejc` +>3. 源码发布由`成都极致思维网络科技有限公司`维护,github开源地址不变,gitee从组织[ICC(InCloudCode)](https://gitee.com/incloudcode)转移到[成都极致思维网络科技有限公司/yexuejc-base](https://gitee.com/jzsw-it/yexuejc-base) + +# +#### version :1.2.9 +**time:2018-12-29 14:51:33**
+**branch:** master
+**update:**
+>1. 获取RSA密钥增加以输入流的形式获取密钥 + +# +#### version :1.2.6 +**time:2018-12-21 14:58:49**
+**branch:** master
+**update:**
+>1. RSA 验签增加初始化方法 + +# +#### version :1.2.8 +**time:2018-12-28 20:10:14**
+**branch:** master
+**update:**
+>1. 新增[ObjUtil](src/main/java/com/yexuejc/base/util/ObjUtil.java) 对类(对象)进行处理,提供深度克隆 + +# +#### version :1.2.6 +**time:2018-12-21 14:58:49**
+**branch:** master
+**update:**
+>1. RSA 验签增加初始化方法 + +# +#### version :1.2.7 +**time:2018-12-24 15:31:01**
+**branch:** master
+**update:**
+>1. FileUtil增加base64转File `base64ToFile()` + +# +#### version :1.2.6 +**time:2018-12-21 14:58:49**
+**branch:** master
+**update:**
+>1. RSA 验签增加初始化方法 + +# +#### version :1.2.5 +**time:2018-12-20 13:13:23**
+**branch:** master
+**update:**
+>1. 丰富[JsonUtil](src/main/java/com/yexuejc/base/util/JsonUtil.java),支持直接对Map泛型转换 + +# +#### version :1.2.4 +**time:2018-11-27 14:46:04**
+**branch:** master
+**update:**
+>1. 工具类的优化 +>2.规范代码 + +# +#### version :1.2.3 +**time:2018-11-23 16:45:42**
+**branch:** master
+**update:**
+>1. 修复RSA加密(签名)时选择的Base64(encodeBase64URLSafeString、encodeBase64String)区分 +# +#### version :1.2.1 +**time:2018-11-9 15:05:06**
+**branch:** master
+**update:**
+>1. 优化resps +# +#### version :1.2.2 +**time:2018-11-20 20:20:12**
+**branch:** master
+**update:**
+>1. 优化RSA 加解密 +>1. 增加RSA 签名 +# +#### version :1.2.1 +**time:2018-11-9 15:05:06**
+**branch:** master
+**update:**
+>1. 优化resps +# +#### version :1.2.0 +**time:2018-10-19 11:38:20**
+**branch:** master
+**update:**
+>1. 增加异步线程处理工具 +```$java +SysUtil.threadRun(() -> { + //异步执行代码块 +} +``` +# + +#### version :1.1.9 +**time:2018-9-23 11:57:36**
+**branch:** master
+**update:**
+>1. 优化工具类包名:不向下兼容,升级请修改 +>2. 升级JWT工具类:更改为单例模式,可配置参数 +# + +#### version :1.1.8 +**time:2018-9-3 19:29:56**
+**branch:** master
+**update:**
+>1. 增肌图片处理工具类 +>2. 增肌3des工具类 +>3. 增肌RSA工具类 +>4. 优化其他工具类 +# +#### version :1.1.7 +**time:2018-8-17 11:22:50**
+**branch:** master
+**update:**
+>1. 优化ApiVO +# + +#### version :1.1.6 +**time:2018-7-7 11:32:56**
+**branch:** master
+**update:**
+>1. maven仓库更新 +# + +#### version :1.1.5 +**time:2018-6-19 22:16:34**
+**branch:** master
+**update:**
+>1. 优化ApiVO + +# +#### version :1.1.4 +**time:2018-6-14 22:27:59**
+**branch:** master
+**update:**
+>1. 统一编码:UTF-8 + +# +#### version :1.1.3 +**time:2018年6月2日12:16:58**
+**branch:** master
+**update:**
+>1. 修改正则RegexUtils.java +>2. 修改正则StrUtil.java->扩展genUUID() + +# +#### version :1.1.2 +**time:** 2018-5-16 15:03:28
+**branch:** master
+**update:**
+>1. 修改依赖 + +# +#### version :1.1.1 +**time:** 2018-5-12 22:25:05
+**branch:** master
+**update:**
+>1. 添加RSA +# + +##### version :1.1.0 +**time:** 2018-5-12 22:25:05
+**branch:** master
+**update:**
+>1. 添加支持加密功能 +# + +#### version :1.0.0 +**time:** 2018-1-31 12:16:10
+**branch:** master
+**update:**
+>1. 基于java8开发的web应用工具包 # \ No newline at end of file diff --git a/pom.xml b/pom.xml index 533e815..d0fd9d6 100644 --- a/pom.xml +++ b/pom.xml @@ -1,276 +1,276 @@ - - - 4.0.0 - - top.yexuejc - yexuejc-base - 1.3.5 - - ${project.artifactId} - https://github.com/yexuejc/yexuejc-base - Common toolkits based on JDK8 packaging - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - - - - - - yexuejc - yexuejc@gmail.com - Chengdu Ultimate Thinking Network Technology Co., Ltd. - +8 - - - - - - scm:git:https://github.com/yexuejc/yexuejc-base.git - - - scm:git:https://github.com/yexuejc/yexuejc-base.git - - https://github.com/yexuejc/yexuejc-base - - - - https://nexus.yexuejc.club/repository/ - https://nexus.mcworle.com/repository/ - http://maven.aliyun.com/nexus/content/groups/public - https://jitpack.io - 0.7.0 - true - 1.8 - 1.1.0.Final - 1.10 - 2.6 - 1.60 - 20.0 - - UTF-8 - UTF-8 - - UTF-8 - - - - - - io.jsonwebtoken - jjwt - ${jjwt.version} - - - - javax.validation - validation-api - ${validation-api.version} - - - - commons-codec - commons-codec - ${commons-codec.version} - compile - - - - commons-io - commons-io - ${commons-io.version} - - - - org.bouncycastle - bcprov-jdk15on - ${bcprov-jdk15on.version} - - - - com.google.guava - guava - ${guava.version} - - - - - - ${project.artifactId} - - - org.apache.maven.plugins - maven-compiler-plugin - - UTF-8 - 8 - 8 - - - - - org.apache.maven.plugins - maven-source-plugin - 3.0.1 - - - attach-sources - - jar-no-fork - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - build-info - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - yexuejc-nexus-public - yexuejc-nexus-public - ${repos.yexuejc.url}maven-public/ - - - aliyun-nexus-public - aliyun-nexus-public - ${repos.aliyun.url} - - - jitpack.io - ${repos.jitpack.url} - - - - - - - - - - - - - - - - - - - - - releases - nexus-release - ${repos.mcworle.url}maven-releases/ - - - snapshots - nexus-snapshots - ${repos.mcworle.url}maven-snapshots/ - - - - - - sonatype-oss-release - - - - org.apache.maven.plugins - maven-source-plugin - - - attach-sources - - jar-no-fork - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - - - package - - jar - - - - - - org.apache.maven.plugins - maven-gpg-plugin - - - sign-artifacts - verify - - sign - - - - - - - - + + + 4.0.0 + + top.yexuejc + yexuejc-base + 1.3.6 + + ${project.artifactId} + https://github.com/yexuejc/yexuejc-base + Common toolkits based on JDK8 packaging + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + + yexuejc + yexuejc@gmail.com + Chengdu Ultimate Thinking Network Technology Co., Ltd. + +8 + + + + + + scm:git:https://github.com/yexuejc/yexuejc-base.git + + + scm:git:https://github.com/yexuejc/yexuejc-base.git + + https://github.com/yexuejc/yexuejc-base + + + + https://nexus.yexuejc.club/repository/ + https://nexus.mcworle.com/repository/ + http://maven.aliyun.com/nexus/content/groups/public + https://jitpack.io + 0.7.0 + true + 1.8 + 1.1.0.Final + 1.10 + 2.6 + 1.60 + 20.0 + + UTF-8 + UTF-8 + + UTF-8 + + + + + + io.jsonwebtoken + jjwt + ${jjwt.version} + + + + javax.validation + validation-api + ${validation-api.version} + + + + commons-codec + commons-codec + ${commons-codec.version} + compile + + + + commons-io + commons-io + ${commons-io.version} + + + + org.bouncycastle + bcprov-jdk15on + ${bcprov-jdk15on.version} + + + + com.google.guava + guava + ${guava.version} + + + + + + ${project.artifactId} + + + org.apache.maven.plugins + maven-compiler-plugin + + UTF-8 + 8 + 8 + + + + + org.apache.maven.plugins + maven-source-plugin + 3.0.1 + + + attach-sources + + jar-no-fork + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + build-info + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + yexuejc-nexus-public + yexuejc-nexus-public + ${repos.yexuejc.url}maven-public/ + + + aliyun-nexus-public + aliyun-nexus-public + ${repos.aliyun.url} + + + jitpack.io + ${repos.jitpack.url} + + + + + + + + + + + + + + + + + + + + + releases + nexus-release + ${repos.mcworle.url}maven-releases/ + + + snapshots + nexus-snapshots + ${repos.mcworle.url}maven-snapshots/ + + + + + + sonatype-oss-release + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar-no-fork + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + package + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-artifacts + verify + + sign + + + + + + + + \ No newline at end of file From 763616c67dd8cdede200c993b434affb58c37256 Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Fri, 11 Jan 2019 10:03:54 +0800 Subject: [PATCH 06/23] =?UTF-8?q?1.3.7=20=E5=9B=9E=E6=BB=9A1.3.6=E8=87=B31?= =?UTF-8?q?.3.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPDATE.md | 7 +++++++ pom.xml | 2 +- src/main/java/com/yexuejc/base/util/JsonUtil.java | 6 ++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/UPDATE.md b/UPDATE.md index 7b52183..dd6c38e 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -1,6 +1,13 @@ yexuejc-base 更新记录 ------------------ +#### version :1.3.7 +**time:2019-1-11 10:02:03**
+**branch:** master
+**update:**
+>1. 考虑到向下兼容,回滚1.3.6【json增加下划线、驼峰互转】,考虑更优方案(解决加入下个版本) +# + #### version :1.3.6 **time:2019-1-10 14:55:13**
**branch:** master
diff --git a/pom.xml b/pom.xml index d0fd9d6..39bbe15 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ top.yexuejc yexuejc-base - 1.3.6 + 1.3.7 ${project.artifactId} https://github.com/yexuejc/yexuejc-base diff --git a/src/main/java/com/yexuejc/base/util/JsonUtil.java b/src/main/java/com/yexuejc/base/util/JsonUtil.java index b6682af..8165fd8 100644 --- a/src/main/java/com/yexuejc/base/util/JsonUtil.java +++ b/src/main/java/com/yexuejc/base/util/JsonUtil.java @@ -12,7 +12,6 @@ import java.io.InputStream; import java.util.Map; import java.util.logging.Logger; - /** * json工具类,基于jackson * @@ -48,6 +47,10 @@ public class JsonUtil { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); objectMapper.setDateFormat(DateUtil.DATE_TIME_FORMAT); + } + + //TODO 待优化 + public static void initSnakeCase() { //驼峰下划线互转 objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); } @@ -109,7 +112,6 @@ public class JsonUtil { return pojo; } - /** * Json字符串转换为Java对象 * From 873bfcbe9fa356f35c6af850e98e201ac7091307 Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Fri, 11 Jan 2019 10:24:46 +0800 Subject: [PATCH 07/23] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yexuejc/base/util/JsonUtil.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/com/yexuejc/base/util/JsonUtil.java b/src/main/java/com/yexuejc/base/util/JsonUtil.java index 8165fd8..99522e3 100644 --- a/src/main/java/com/yexuejc/base/util/JsonUtil.java +++ b/src/main/java/com/yexuejc/base/util/JsonUtil.java @@ -225,4 +225,20 @@ public class JsonUtil { } return json; } + + /** + * 格式化输出 + * + * @param obj 需要输出对象 + * @return 格式化后的字符串 + */ + public static String formatPrinter(Object obj) { + String json = null; + try { + json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj); + } catch (JsonProcessingException e) { + log.warning("json to Object JsonProcessingException.\n" + e.getMessage()); + } + return json; + } } \ No newline at end of file From 70c4fb67b100aba6e3263f964adce79ff554a42b Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Fri, 11 Jan 2019 13:28:38 +0800 Subject: [PATCH 08/23] =?UTF-8?q?1.3.8=20ToUeProperty=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=20ignore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPDATE.md | 7 +++++++ pom.xml | 2 +- src/main/java/com/yexuejc/base/util/ObjUtil.java | 11 +++++++---- src/main/java/com/yexuejc/base/util/ToUeProperty.java | 6 ++++++ 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/UPDATE.md b/UPDATE.md index dd6c38e..3f18143 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -1,6 +1,13 @@ yexuejc-base 更新记录 ------------------ +#### version :1.3.8 +**time:2019-1-11 13:28:12**
+**branch:** master
+**update:**
+>1. [ToUeProperty](src/main/java/com/yexuejc/base/util/ToUeProperty.java) 增加 ignore +# + #### version :1.3.7 **time:2019-1-11 10:02:03**
**branch:** master
diff --git a/pom.xml b/pom.xml index 39bbe15..9d26ffd 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ top.yexuejc yexuejc-base - 1.3.7 + 1.3.8 ${project.artifactId} https://github.com/yexuejc/yexuejc-base diff --git a/src/main/java/com/yexuejc/base/util/ObjUtil.java b/src/main/java/com/yexuejc/base/util/ObjUtil.java index 1c180fd..2943974 100644 --- a/src/main/java/com/yexuejc/base/util/ObjUtil.java +++ b/src/main/java/com/yexuejc/base/util/ObjUtil.java @@ -109,13 +109,19 @@ public class ObjUtil { fName = StrUtil.camelToUnderline(f.getName()); } boolean annotationPresent = f.isAnnotationPresent(ToUeProperty.class); + boolean ignore = false; if (annotationPresent) { ToUeProperty annotation = f.getAnnotation(ToUeProperty.class); + ignore = annotation.ignore(); String value = annotation.value(); if (StrUtil.isNotEmpty(value)) { fName = value; } } + //忽略 + if (ignore) { + continue; + } Object o = f.get(obj); if (null == o || isPrimitive(o) || o instanceof String || o instanceof Enum) { if (null == o && !putNull) { @@ -175,15 +181,13 @@ public class ObjUtil { boolean b = obj.getClass().isPrimitive() || obj instanceof Integer || obj instanceof Character || obj instanceof Boolean || obj instanceof Number || obj instanceof String || obj instanceof Double || obj instanceof Float - || obj instanceof Short || obj instanceof Long || obj instanceof Byte || obj instanceof Date - ; + || obj instanceof Short || obj instanceof Long || obj instanceof Byte || obj instanceof Date; if (b) { return true; } return false; } - public static void main(String[] args) { B a = new B(); a.nameFirst = "张三"; @@ -251,7 +255,6 @@ public class ObjUtil { } } - /** *

深度克隆对象

*

diff --git a/src/main/java/com/yexuejc/base/util/ToUeProperty.java b/src/main/java/com/yexuejc/base/util/ToUeProperty.java index 4398c63..63d7fdd 100644 --- a/src/main/java/com/yexuejc/base/util/ToUeProperty.java +++ b/src/main/java/com/yexuejc/base/util/ToUeProperty.java @@ -11,4 +11,10 @@ public @interface ToUeProperty { * @return */ String value() default ""; + + /** + * 是否忽略该字段,默认false + * @return + */ + boolean ignore() default false; } \ No newline at end of file From f1aa91c81d2ed11512e66e4d5d136f7e47f26768 Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Fri, 11 Jan 2019 16:49:34 +0800 Subject: [PATCH 09/23] =?UTF-8?q?=E5=85=AC=E7=A7=81=E9=92=A5=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yexuejc/base/encrypt/RSA.java | 12 +- .../java/com/yexuejc/base/encrypt/RSA2.java | 128 ++++++++++++++++-- 2 files changed, 123 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/yexuejc/base/encrypt/RSA.java b/src/main/java/com/yexuejc/base/encrypt/RSA.java index 6fc9010..14b322d 100644 --- a/src/main/java/com/yexuejc/base/encrypt/RSA.java +++ b/src/main/java/com/yexuejc/base/encrypt/RSA.java @@ -1,24 +1,22 @@ package com.yexuejc.base.encrypt; - import org.apache.commons.codec.binary.Base64; import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.UnsupportedEncodingException; +import java.io.*; import java.security.*; +import java.security.cert.Certificate; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; +import java.util.Enumeration; import java.util.HashMap; import java.util.Map; - /** * RSA加解密 配置模式 * @@ -71,7 +69,6 @@ public class RSA { */ public static SignAlgorithm signAlgorithm = SignAlgorithm.SHA1withRSA; - /** * 生成密钥对 * @@ -123,7 +120,6 @@ public class RSA { return keyPairMap; } - /** * 得到公钥 * @@ -203,7 +199,6 @@ public class RSA { } } - /** * 私钥加密 * @@ -310,7 +305,6 @@ public class RSA { private static Signature signature; - /** * /** * 私钥签名:默认算法SHA1withRSA diff --git a/src/main/java/com/yexuejc/base/encrypt/RSA2.java b/src/main/java/com/yexuejc/base/encrypt/RSA2.java index 2e86afd..68e7099 100644 --- a/src/main/java/com/yexuejc/base/encrypt/RSA2.java +++ b/src/main/java/com/yexuejc/base/encrypt/RSA2.java @@ -2,14 +2,8 @@ package com.yexuejc.base.encrypt; import com.yexuejc.base.util.StrUtil; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.UnrecoverableKeyException; +import java.io.*; +import java.security.*; import java.security.cert.Certificate; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; @@ -192,4 +186,122 @@ public class RSA2 { return (RSAPrivateKey) ks.getKey(alias, password.toCharArray()); } + /** + * 证书格式转换 JKS(xx.keystore) 转 PKCS12(xx.pfx) + * + * @param inPath 证书输入文件路径 + * @param outPath 证书输出文件路径 + * @param oPwd 原证书密码 + * @param nPwd 新证书密码(为空同原证书密码一致) + */ + public static void cover2Pfx(String inPath, String outPath, String oPwd, String nPwd) { + try { + FileInputStream fis = new FileInputStream(inPath); + FileOutputStream out = new FileOutputStream(outPath); + if (nPwd == null) { + nPwd = oPwd; + } + cover2Pfx(fis, out, oPwd.toCharArray(), nPwd.toCharArray()); + out.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 证书格式转换 JKS(xx.keystore) 转 PKCS12(xx.pfx) + * + * @param fis 证书输入文件流 + * @param out 证书输出文件流[自行关闭->out.close()] + * @param oPwd 原证书密码 + * @param nPwd 新证书密码(为空同原证书密码一致) + */ + public static void cover2Pfx(FileInputStream fis, FileOutputStream out, char[] oPwd, char[] nPwd) { + try { + KeyStore inputKeyStore = KeyStore.getInstance("JKS"); + cover(fis, out, oPwd, nPwd, inputKeyStore, "PKCS12"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 证书格式转换 PKCS12(xx.pfx) 转 JKS(xx.keystore) + * + * @param inPath 证书输入文件路径 + * @param outPath 证书输出文件路径 + * @param oPwd 原证书密码 + * @param nPwd 新证书密码(为空同原证书密码一致) + */ + public static void cover2keyStore(String inPath, String outPath, String oPwd, String nPwd) { + try { + FileInputStream fis = new FileInputStream(inPath); + FileOutputStream out = new FileOutputStream(outPath); + if (nPwd == null) { + nPwd = oPwd; + } + cover2keyStore(fis, out, oPwd.toCharArray(), nPwd.toCharArray()); + out.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + /** + * 证书格式转换 PKCS12(xx.pfx) 转 JKS(xx.keystore) + * + * @param fis 证书输入文件流 + * @param out 证书输出文件流[自行关闭->out.close()] + * @param oPwd 原证书密码 + * @param nPwd 新证书密码(为空同原证书密码一致) + */ + public static void cover2keyStore(FileInputStream fis, FileOutputStream out, char[] oPwd, char[] nPwd) { + try { + KeyStore inputKeyStore = KeyStore.getInstance("PKCS12"); + cover(fis, out, oPwd, nPwd, inputKeyStore, "JKS"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 证书转换操作 + * + * @param fis 证书输入文件流 + * @param out 证书输出文件流[自行关闭->out.close()] + * @param oPwd 原证书密码 + * @param nPwd 新证书密码(为空同原证书密码一致) + * @param inputKeyStore 输入格式 + * @param type 目标类型 + * @throws IOException + * @throws NoSuchAlgorithmException + * @throws CertificateException + * @throws KeyStoreException + * @throws UnrecoverableKeyException + */ + public static void cover(FileInputStream fis, FileOutputStream out, char[] oPwd, char[] nPwd, KeyStore inputKeyStore, String type) throws IOException, NoSuchAlgorithmException, CertificateException, KeyStoreException, UnrecoverableKeyException { + inputKeyStore.load(fis, oPwd); + fis.close(); + if (nPwd == null) { + nPwd = oPwd; + } + KeyStore outputKeyStore = KeyStore.getInstance(type); + outputKeyStore.load(null, nPwd); + Enumeration enums = inputKeyStore.aliases(); + while (enums.hasMoreElements()) { + String keyAlias = enums.nextElement(); + System.out.println("alias=[" + keyAlias + "]"); + if (inputKeyStore.isKeyEntry(keyAlias)) { + Key key = inputKeyStore.getKey(keyAlias, oPwd); + Certificate[] certChain = inputKeyStore.getCertificateChain(keyAlias); + outputKeyStore.setKeyEntry(keyAlias, key, nPwd, certChain); + } + } + outputKeyStore.store(out, nPwd); + } + + public static void main(String[] args) { + cover2Pfx("D:\\mykeystore.keystore", "D:\\m1.pfx", "123456", null); + } } From 03aaeff1bfe8c6b0e05bf324ca2ae81f165845bc Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Fri, 11 Jan 2019 16:51:02 +0800 Subject: [PATCH 10/23] 1.3.9 --- UPDATE.md | 7 +++++++ pom.xml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/UPDATE.md b/UPDATE.md index 3f18143..783562d 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -1,6 +1,13 @@ yexuejc-base 更新记录 ------------------ +#### version :1.3.9 +**time:2019-1-11 16:50:51**
+**branch:** master
+**update:**
+>1. RSA2 增加证书格式转换 JKS(xx.keystore) 、 PKCS12(xx.pfx)相互转换 +# + #### version :1.3.8 **time:2019-1-11 13:28:12**
**branch:** master
diff --git a/pom.xml b/pom.xml index 9d26ffd..c6ad955 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ top.yexuejc yexuejc-base - 1.3.8 + 1.3.9 ${project.artifactId} https://github.com/yexuejc/yexuejc-base From df43189a0c426870b6e9a41ce818534cbbfa5067 Mon Sep 17 00:00:00 2001 From: maxf <1107047387@qq.com> Date: Thu, 24 Jan 2019 13:21:15 +0800 Subject: [PATCH 11/23] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/yexuejc/base/encrypt/RSA.java | 7 ++----- src/main/java/com/yexuejc/base/util/JsonUtil.java | 3 ++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/yexuejc/base/encrypt/RSA.java b/src/main/java/com/yexuejc/base/encrypt/RSA.java index 14b322d..cbf84c7 100644 --- a/src/main/java/com/yexuejc/base/encrypt/RSA.java +++ b/src/main/java/com/yexuejc/base/encrypt/RSA.java @@ -7,15 +7,14 @@ import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import java.io.*; import java.security.*; -import java.security.cert.Certificate; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; -import java.util.Enumeration; import java.util.HashMap; import java.util.Map; +import java.util.logging.Logger; /** * RSA加解密 配置模式 @@ -26,7 +25,7 @@ import java.util.Map; * @date: 2018/5/15 14:39 */ public class RSA { - + private static Logger log = Logger.getLogger(RSA.class.getName()); public static final String CHARSET = "UTF-8"; public static final String RSA_ALGORITHM = "RSA"; /** @@ -116,7 +115,6 @@ public class RSA { Map keyPairMap = new HashMap(2); keyPairMap.put("publicKey", publicKeyStr); keyPairMap.put("privateKey", privateKeyStr); - return keyPairMap; } @@ -306,7 +304,6 @@ public class RSA { private static Signature signature; /** - * /** * 私钥签名:默认算法SHA1withRSA *

* 签名算法 {@link SignAlgorithm} diff --git a/src/main/java/com/yexuejc/base/util/JsonUtil.java b/src/main/java/com/yexuejc/base/util/JsonUtil.java index 99522e3..b7a4c6d 100644 --- a/src/main/java/com/yexuejc/base/util/JsonUtil.java +++ b/src/main/java/com/yexuejc/base/util/JsonUtil.java @@ -98,7 +98,6 @@ public class JsonUtil { */ public static T json2Obj(String json, Class cls) { T pojo = null; - try { pojo = objectMapper.readValue(json, cls); } catch (JsonParseException e) { @@ -107,6 +106,8 @@ public class JsonUtil { log.warning("json to Object JsonMappingException.\n" + e.getMessage()); } catch (IOException e) { log.warning("json to Object IOException.\n" + e.getMessage()); + }catch (Exception e){ + e.printStackTrace(); } return pojo; From 831ba7b866a0d32847fe540cbbaad4c0f58ae453 Mon Sep 17 00:00:00 2001 From: yexuejc <1107047387@qq.com> Date: Mon, 13 Apr 2020 20:49:18 +0800 Subject: [PATCH 12/23] =?UTF-8?q?1.4.0=20=E4=BC=98=E5=8C=96Execl=20?= =?UTF-8?q?=E5=92=8C=20Jwt=20=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 21 +++++++++++++--- .../yexuejc/base/util/ExcelImportUtil.java | 25 +++++++++++++++++++ .../java/com/yexuejc/base/util/JwtUtil.java | 15 +++++++++++ 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index c6ad955..17e2b50 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,7 @@ 2.6 1.60 20.0 + 3.13 UTF-8 UTF-8 @@ -96,6 +97,18 @@ guava ${guava.version} + + + org.apache.poi + poi + ${apache-poi.version} + + + org.apache.poi + poi-ooxml + ${apache-poi.version} + + @@ -201,7 +214,7 @@ - releases nexus-release @@ -212,9 +225,9 @@ nexus-snapshots ${repos.yexuejc.url}maven-snapshots/ - --> - + + diff --git a/src/main/java/com/yexuejc/base/util/ExcelImportUtil.java b/src/main/java/com/yexuejc/base/util/ExcelImportUtil.java index bf4e6af..9cc1cf6 100644 --- a/src/main/java/com/yexuejc/base/util/ExcelImportUtil.java +++ b/src/main/java/com/yexuejc/base/util/ExcelImportUtil.java @@ -1,5 +1,15 @@ package com.yexuejc.base.util; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + /** * excel 格式验证工具 * @@ -48,5 +58,20 @@ public class ExcelImportUtil { return true; } + public void readExcel(String path) throws IOException { + Workbook wb = null; + if (isExcel2007(path)) { + wb = new XSSFWorkbook(new FileInputStream(new File(path))); + } else if (isExcel2003(path)) { + wb = new HSSFWorkbook(new FileInputStream(new File(path))); + } else { + throw new NullPointerException("请上传excel文件"); + } + Sheet sheet = wb.getSheetAt(0); + for (int i = 2; i < sheet.getLastRowNum() + 1; i++) { + Row row = sheet.getRow(i); + } + } + } \ No newline at end of file diff --git a/src/main/java/com/yexuejc/base/util/JwtUtil.java b/src/main/java/com/yexuejc/base/util/JwtUtil.java index fde70fb..0fa4172 100644 --- a/src/main/java/com/yexuejc/base/util/JwtUtil.java +++ b/src/main/java/com/yexuejc/base/util/JwtUtil.java @@ -124,4 +124,19 @@ public class JwtUtil { return JsonUtil.json2Obj(subject, cls); } + /** + * 解密token为字符串 + * + * @param token + * @return + */ + public String parseStr(String token) { + String subject = null; + try { + subject = Jwts.parser().setSigningKey(JWT_SIGNATURE_KEY).parseClaimsJws(token).getBody().getSubject(); + } catch (Exception e) { + e.printStackTrace(); + } + return subject; + } } From 9d160bdede796b6a36d49c86f731942d2ac394d7 Mon Sep 17 00:00:00 2001 From: yexuejc <1107047387@qq.com> Date: Mon, 13 Apr 2020 20:49:32 +0800 Subject: [PATCH 13/23] =?UTF-8?q?1.4.0=20=E4=BC=98=E5=8C=96Execl=20?= =?UTF-8?q?=E5=92=8C=20Jwt=20=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 17e2b50..f4835f2 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ top.yexuejc yexuejc-base - 1.3.9 + 1.4.0 ${project.artifactId} https://github.com/yexuejc/yexuejc-base From 0d66a62e6c27bbe6d5c9ac885409c561eb6d3dc9 Mon Sep 17 00:00:00 2001 From: maxiaofeng Date: Mon, 18 May 2020 12:03:57 +0800 Subject: [PATCH 14/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=20https://nexus.yexuejc.club/=20=E4=B8=BA=20?= =?UTF-8?q?https://nexus.yexuejc.top/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index c6ad955..6e60a7d 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ - https://nexus.yexuejc.club/repository/ + https://nexus.yexuejc.top/repository/ https://nexus.mcworle.com/repository/ http://maven.aliyun.com/nexus/content/groups/public https://jitpack.io @@ -217,12 +217,12 @@ releases nexus-release - ${repos.mcworle.url}maven-releases/ + ${repos.yexuejc.url}maven-releases/ snapshots nexus-snapshots - ${repos.mcworle.url}maven-snapshots/ + ${repos.yexuejc.url}maven-snapshots/ From 7f1b49df9372184c15a2331d799e90cf42e05899 Mon Sep 17 00:00:00 2001 From: maxiaofeng Date: Mon, 18 May 2020 12:08:18 +0800 Subject: [PATCH 15/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPDATE.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/UPDATE.md b/UPDATE.md index 783562d..e391edc 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -1,6 +1,14 @@ yexuejc-base 更新记录 ------------------ +#### version :1.4.0 +**time:2020-5-18 12:06:14**
+**branch:** master
+**update:**
+>1. 更新仓库地址 https://nexus.yexuejc.club/ 为 https://nexus.yexuejc.top/ +>2. 优化Execl 和 Jwt 工具 +# + #### version :1.3.9 **time:2019-1-11 16:50:51**
**branch:** master
From 9d7d7331c3fb702f82a65bf4912e79c22762065c Mon Sep 17 00:00:00 2001 From: yexuejc <1107047387@qq.com> Date: Sun, 31 Jan 2021 13:12:13 +0800 Subject: [PATCH 16/23] =?UTF-8?q?1.4.1=20=E5=8D=87=E7=BA=A7=E6=89=80?= =?UTF-8?q?=E6=9C=89=E4=BE=9D=E8=B5=96=EF=BC=8C=E5=A2=9E=E5=8A=A0DateTimeU?= =?UTF-8?q?til=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 134 ++++++++-------- UPDATE.md | 13 ++ pom.xml | 123 ++++++++------- .../com/yexuejc/base/util/DateTimeUtil.java | 143 +++++++++++------- .../com/yexuejc/base/util/ToUeProperty.java | 8 + 5 files changed, 243 insertions(+), 178 deletions(-) diff --git a/README.md b/README.md index e9fc362..488de4d 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,67 @@ -yexuejc-base 基于jdk8常用工具包 ----------------------- -源码地址:
-github:https://github.com/yexuejc/yexuejc-base -gitee:https://gitee.com/jzsw-it/yexuejc-base - -### 说明 ->1. 支持环境:java8 ->2. 该工具包基于springboot提取,按理说适用于所有java工程 ->3. 其中依赖jjwt、validation-api,排除请使用 -> ``` -> -> -> xxx -> xxxx -> -> -> ``` -> ->4. `1.1.9` 升级JWT为单例类 ->5. `1.2.3` 修复RSA加密(签名)Base64Url 问题,如需使用RSA请使用1.2.3+ ->##### 6. 从`1.3.0`开始,版本维护转由`成都极致思维网络科技有限公司`向maven中央仓库发布版本,同时变更组织`groupId`为`top.yexuejc`。使用者请尽快升级到`1.3.0`以上(1.3.0代码向下兼容) - - -### 使用 ->yexuejc.base.version=1.3.0 - -pom.xml -``` - - - top.yexuejc - yexuejc-base - ${yexuejc.base.version} - - -``` - -#### 附:1.3.0之前的使用方式 -pom.xml -``` - - - com.yexuejc.base - yexuejc-base - 1.3.0以下 - - - - - yexuejc-nexus-public - yexuejc-nexus-public - https://nexus.yexuejc.club/repository/maven-public/ - - -``` - -### 工具文档 -[Wiki](WIKI.md) - -### 更新日志 -[更新记录](UPDATE.md) - -#### 项目发展 -本工程项目由maxf基于日常使用,从[yexuejc-springboot](https://github.com/yexuejc/yexuejc-springboot.git)(_准备移交版本控制_)中抽离开源独立发展,后续增加许多常用工具包。 -使用者逐渐增多后考虑可靠性和稳定性原则,移交版本控制给`成都极致思维网络科技有限公司`管理,maven包直接发布到中央仓库。 -开源工程项目仍然保持继续维护和欢迎更多愿意贡献的小伙伴参与。 +yexuejc-base 基于jdk8常用工具包 +---------------------- +源码地址:
+github:https://github.com/yexuejc/yexuejc-base +gitee:https://gitee.com/jzsw-it/yexuejc-base + +### 说明 +>1. 支持环境:java8 +>2. 该工具包基于springboot提取,按理说适用于所有java工程 +>3. 其中依赖jjwt、validation-api,排除请使用 +> ``` +> +> +> xxx +> xxxx +> +> +> ``` +> +>4. `1.1.9` 升级JWT为单例类 +>5. `1.2.3` 修复RSA加密(签名)Base64Url 问题,如需使用RSA请使用1.2.3+ +>##### 6. 从`1.3.0`开始,变更组织`groupId`为`top.yexuejc`。使用者请尽快升级到`1.3.0`以上(1.3.0代码向下兼容) + + +### 使用 +>yexuejc.base.version=1.4.1 + +pom.xml +``` + + + top.yexuejc + yexuejc-base + ${yexuejc.base.version} + + +``` + +#### 附:1.3.0之前的使用方式 +pom.xml +``` + + + com.yexuejc.base + yexuejc-base + 1.3.0以下 + + + + + yexuejc-nexus-public + yexuejc-nexus-public + https://nexus.yexuejc.club/repository/maven-public/ + + +``` + +### 工具文档 +[Wiki](WIKI.md) + +### 更新日志 +[更新记录](UPDATE.md) + +#### 项目发展 +本工程项目由maxf基于日常使用,从[yexuejc-springboot](https://github.com/yexuejc/yexuejc-springboot.git)(_准备移交版本控制_)中抽离开源独立发展,后续增加许多常用工具包。 +使用者逐渐增多后考虑可靠性和稳定性原则,移交版本控制给`成都极致思维网络科技有限公司`管理,maven包直接发布到中央仓库。 +开源工程项目仍然保持继续维护和欢迎更多愿意贡献的小伙伴参与。 diff --git a/UPDATE.md b/UPDATE.md index 783562d..60151df 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -1,6 +1,19 @@ yexuejc-base 更新记录 ------------------ +#### version :1.4.1 +**time:2021-1-31 12:59:24**
+**branch:** master
+**update:**
+>1. 升级所有依赖 +>1. 增加DateTimeUtil类的功能 +# +#### version :1.4.0 +**time:2020-04-13 20:49:32**
+**branch:** master
+**update:**
+>1. 优化Execl 和 Jwt 工具 +# #### version :1.3.9 **time:2019-1-11 16:50:51**
**branch:** master
diff --git a/pom.xml b/pom.xml index f4835f2..4713a52 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ top.yexuejc yexuejc-base - 1.4.0 + 1.4.1 ${project.artifactId} https://github.com/yexuejc/yexuejc-base @@ -39,19 +39,19 @@ - https://nexus.yexuejc.club/repository/ - https://nexus.mcworle.com/repository/ + https://nexus.yexuejc.top/repository/ + https://nexus.hm3981.com/repository/ http://maven.aliyun.com/nexus/content/groups/public https://jitpack.io - 0.7.0 + 0.9.1 true 1.8 - 1.1.0.Final - 1.10 - 2.6 - 1.60 - 20.0 - 3.13 + 3.0.0 + 1.15 + 2.8.0 + 1.68 + 30.1-jre + 5.0.0 UTF-8 UTF-8 @@ -67,9 +67,15 @@ ${jjwt.version} + + + + + + - javax.validation - validation-api + jakarta.validation + jakarta.validation-api ${validation-api.version} @@ -118,6 +124,7 @@ org.apache.maven.plugins maven-compiler-plugin + 3.8.1 UTF-8 8 @@ -128,7 +135,7 @@ org.apache.maven.plugins maven-source-plugin - 3.0.1 + 3.2.1 attach-sources @@ -139,48 +146,50 @@ - - org.springframework.boot - spring-boot-maven-plugin - - - - build-info - - - - - - true - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -226,16 +235,16 @@ ${repos.yexuejc.url}maven-snapshots/ - - diff --git a/src/main/java/com/yexuejc/base/util/DateTimeUtil.java b/src/main/java/com/yexuejc/base/util/DateTimeUtil.java index 50533e5..6b0729b 100644 --- a/src/main/java/com/yexuejc/base/util/DateTimeUtil.java +++ b/src/main/java/com/yexuejc/base/util/DateTimeUtil.java @@ -148,6 +148,55 @@ public class DateTimeUtil { return date; } + /** + * LocalDate 转 Date + * + * @param localDate + * @return + */ + public static Date parseDate(LocalDate localDate) { + ZoneId zone = ZoneId.systemDefault(); + Instant instant = localDate.atStartOfDay().atZone(zone).toInstant(); + return Date.from(instant); + } + + /** + * LocalDateTime 转 Date + * + * @param localDateTime + * @return + */ + public static Date parseDate(LocalDateTime localDateTime) { + ZoneId zoneId = ZoneId.systemDefault(); + ZonedDateTime zdt = localDateTime.atZone(zoneId); + return Date.from(zdt.toInstant()); + } + + /** + * LocalTime 转 Date + * + * @param localTime 时间 + * @return 当前日期的指定时间 + */ + public static Date parseDate(LocalTime localTime) { + LocalDate localDate = LocalDate.now(); + return parseDate(localDate, localTime); + } + + /** + * LocalDate + LocalTime 转 Date + * + * @param localDate 日期 + * @param localTime 时间 + * @return 指定日期的指定时间 + */ + public static Date parseDate(LocalDate localDate, LocalTime localTime) { + LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime); + ZoneId zone = ZoneId.systemDefault(); + Instant instant = localDateTime.atZone(zone).toInstant(); + return Date.from(instant); + } + /** * Date 转 ZonedDateTime * @@ -172,30 +221,6 @@ public class DateTimeUtil { return instant.atZone(zoneId).toLocalDateTime(); } - /** - * LocalDateTime 转 Date - * - * @param localDateTime - * @return - */ - public static Date parseLocalDateTime(LocalDateTime localDateTime) { - ZoneId zoneId = ZoneId.systemDefault(); - ZonedDateTime zdt = localDateTime.atZone(zoneId); - return Date.from(zdt.toInstant()); - } - - /** - * LocalDate 转 Date - * - * @param localDate - * @return - */ - public static Date parseData(LocalDate localDate) { - ZoneId zone = ZoneId.systemDefault(); - Instant instant = localDate.atStartOfDay().atZone(zone).toInstant(); - return Date.from(instant); - } - /** * Date 转 LocalDate * @@ -204,9 +229,8 @@ public class DateTimeUtil { */ public static LocalDate parseLocalDate(Date date) { Instant instant = date.toInstant(); - ZoneId zone = ZoneId.systemDefault(); - LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); - return localDateTime.toLocalDate(); + ZoneId zoneId = ZoneId.systemDefault(); + return instant.atZone(zoneId).toLocalDate(); } /** @@ -223,30 +247,40 @@ public class DateTimeUtil { } /** - * Date 转 LocalTime + * Long 转 LocalDateTime * - * @param localTime - * @return 当前日期的指定时间 + * @param timestamp 13位(毫秒) + * @return */ - public static Date parseDate(LocalTime localTime) { - LocalDate localDate = LocalDate.now(); - return parseDate(localDate, localTime); + public static LocalDateTime parseLocalDateTime13(long timestamp) { + Instant instant = Instant.ofEpochMilli(timestamp); + ZoneId zone = ZoneId.systemDefault(); + return LocalDateTime.ofInstant(instant, zone); } /** - * Date 转 LocalTime + * Long 转 LocalDateTime * - * @param localDate - * @param localTime - * @return 指定日期的指定时间 + * @param timestamp 10位(秒) + * @return */ - public static Date parseDate(LocalDate localDate, LocalTime localTime) { - LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime); + public static LocalDateTime parseLocalDateTime10(long timestamp) { + Instant instant = Instant.ofEpochMilli(timestamp * 1000); ZoneId zone = ZoneId.systemDefault(); - Instant instant = localDateTime.atZone(zone).toInstant(); - return Date.from(instant); + return LocalDateTime.ofInstant(instant, zone); } + /** + * LocalDateTime 转 Long + * + * @param localDateTime + * @return 13位(毫秒) + */ + public static long parseLong(LocalDateTime localDateTime) { + ZoneId zone = ZoneId.systemDefault(); + Instant instant = localDateTime.atZone(zone).toInstant(); + return instant.toEpochMilli(); + } /** * 格式化时间
* 格式 yyyy-MM-dd HH:mm:ss @@ -255,7 +289,7 @@ public class DateTimeUtil { * @return */ public static String format(LocalDateTime dateTime) { - return format(dateTime, ""); + return format(dateTime, null); } /** @@ -273,22 +307,23 @@ public class DateTimeUtil { return df.format(dateTime); } - /** public static void main(String[] args) { - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - System.out.println(df.format(zonedDateTime2Date(ZonedDateTime.now()))); - System.out.println(df2.format(date2ZonedDateTime(new Date()))); - System.out.println(getWeek4First()); - System.out.println(format(getWeek4First(LocalDate.parse("2018-02-10")).atTime(LocalTime.MIN))); - System.out.println(format(getWeek4Last(LocalDate.parse("2018-02-10")).atTime(LocalTime.MAX))); + /** public static void main(String[] args) { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + System.out.println(df.format(zonedDateTime2Date(ZonedDateTime.now()))); + System.out.println(df2.format(date2ZonedDateTime(new Date()))); - System.out.println(format(getMonth4First().atTime(LocalTime.MIN))); - System.out.println(format(getMonth4Last().atTime(LocalTime.MAX))); + System.out.println(getWeek4First()); + System.out.println(format(getWeek4First(LocalDate.parse("2018-02-10")).atTime(LocalTime.MIN))); + System.out.println(format(getWeek4Last(LocalDate.parse("2018-02-10")).atTime(LocalTime.MAX))); - System.out.println(format(getYear4First().atTime(LocalTime.MIN))); - System.out.println(format(getYear4Last().atTime(LocalTime.MAX))); + System.out.println(format(getMonth4First().atTime(LocalTime.MIN))); + System.out.println(format(getMonth4Last().atTime(LocalTime.MAX))); - }*/ + System.out.println(format(getYear4First().atTime(LocalTime.MIN))); + System.out.println(format(getYear4Last().atTime(LocalTime.MAX))); + + }*/ } diff --git a/src/main/java/com/yexuejc/base/util/ToUeProperty.java b/src/main/java/com/yexuejc/base/util/ToUeProperty.java index 63d7fdd..4cac11e 100644 --- a/src/main/java/com/yexuejc/base/util/ToUeProperty.java +++ b/src/main/java/com/yexuejc/base/util/ToUeProperty.java @@ -2,18 +2,26 @@ package com.yexuejc.base.util; import java.lang.annotation.*; +/** + * json转换时的格式指定 + * + * @author: yexuejc + * @date: 2021-01-31 12:48:29 + */ @Target({ElementType.FIELD, ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ToUeProperty { /** * 字段名,默认该字段转下划线 + * * @return */ String value() default ""; /** * 是否忽略该字段,默认false + * * @return */ boolean ignore() default false; From 1711fc8a0db35f0f3b1998133de9252fde38d00d Mon Sep 17 00:00:00 2001 From: yexuejc <1107047387@qq.com> Date: Sun, 31 Jan 2021 13:57:53 +0800 Subject: [PATCH 17/23] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPDATE.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/UPDATE.md b/UPDATE.md index 60151df..fab0aad 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -9,10 +9,11 @@ yexuejc-base 更新记录 >1. 增加DateTimeUtil类的功能 # #### version :1.4.0 -**time:2020-04-13 20:49:32**
+**time:2020-5-18 12:06:14**
**branch:** master
**update:**
->1. 优化Execl 和 Jwt 工具 +>1. 更新仓库地址 https://nexus.yexuejc.club/ 为 https://nexus.yexuejc.top/ +>2. 优化Execl 和 Jwt 工具 # #### version :1.3.9 **time:2019-1-11 16:50:51**
From 2cdcf4fc7c24e10fdd811bfc0b63283f57901064 Mon Sep 17 00:00:00 2001 From: yexuejc <1107047387@qq.com> Date: Wed, 3 Feb 2021 11:40:11 +0800 Subject: [PATCH 18/23] =?UTF-8?q?1.4.2=20=E4=BC=98=E5=8C=96=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=BD=AC=E6=8D=A2=E6=A0=BC=E5=BC=8F=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=B3=A8=E8=A7=A3=20ToUeProperty=20=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E4=B8=BA=E6=97=B6=E9=97=B4=E6=88=B3=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../java/com/yexuejc/base/pojo/PagerVO.java | 4 +- .../com/yexuejc/base/util/DateTimeUtil.java | 47 ++++- .../java/com/yexuejc/base/util/DateUtil.java | 2 +- .../java/com/yexuejc/base/util/ObjUtil.java | 171 +++++------------- .../com/yexuejc/base/util/ToUeProperty.java | 21 +++ .../com/yexuejc/base/util/ObjUtilTest.java | 154 ++++++++++++++++ 7 files changed, 271 insertions(+), 130 deletions(-) create mode 100644 src/test/java/com/yexuejc/base/util/ObjUtilTest.java diff --git a/pom.xml b/pom.xml index 4713a52..7b5bb77 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ top.yexuejc yexuejc-base - 1.4.1 + 1.4.2 ${project.artifactId} https://github.com/yexuejc/yexuejc-base diff --git a/src/main/java/com/yexuejc/base/pojo/PagerVO.java b/src/main/java/com/yexuejc/base/pojo/PagerVO.java index 3e20341..e23aeda 100644 --- a/src/main/java/com/yexuejc/base/pojo/PagerVO.java +++ b/src/main/java/com/yexuejc/base/pojo/PagerVO.java @@ -1,9 +1,9 @@ package com.yexuejc.base.pojo; import com.yexuejc.base.util.JsonUtil; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotNull; /** * 分页 VO diff --git a/src/main/java/com/yexuejc/base/util/DateTimeUtil.java b/src/main/java/com/yexuejc/base/util/DateTimeUtil.java index 6b0729b..2c3ff3b 100644 --- a/src/main/java/com/yexuejc/base/util/DateTimeUtil.java +++ b/src/main/java/com/yexuejc/base/util/DateTimeUtil.java @@ -13,6 +13,10 @@ import java.util.Date; * @date: 2018/3/27 10:44 */ public class DateTimeUtil { + public static String DATE_PATTERN = "yyyy-MM-dd"; + public static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + public static String DATE_TIME_MS_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS"; + private DateTimeUtil() { } @@ -281,6 +285,45 @@ public class DateTimeUtil { Instant instant = localDateTime.atZone(zone).toInstant(); return instant.toEpochMilli(); } + + /** + * LocalDate 转 Long + * + * @param localDate + * @return 13位(毫秒)最后3位为0 + */ + public static long parseLong(LocalDate localDate) { + ZoneId zone = ZoneId.systemDefault(); + Instant instant = localDate.atStartOfDay(zone).toInstant(); + return instant.toEpochMilli(); + } + + /** + * 格式化时间
+ * 格式 yyyy-MM-dd HH:mm:ss + * + * @param dateTime + * @return + */ + public static String format(LocalDate dateTime) { + return format(dateTime, null); + } + + /** + * 格式化时间 + * + * @param dateTime + * @param pattern 格式 默认:yyyy-MM-dd + * @return + */ + public static String format(LocalDate dateTime, String pattern) { + if (StrUtil.isEmpty(pattern)) { + pattern = DATE_PATTERN; + } + DateTimeFormatter df = DateTimeFormatter.ofPattern(pattern); + return df.format(dateTime); + } + /** * 格式化时间
* 格式 yyyy-MM-dd HH:mm:ss @@ -300,8 +343,8 @@ public class DateTimeUtil { * @return */ public static String format(LocalDateTime dateTime, String pattern) { - if (pattern.isEmpty()) { - pattern = "yyyy-MM-dd HH:mm:ss"; + if (StrUtil.isEmpty(pattern)) { + pattern = DATE_TIME_PATTERN; } DateTimeFormatter df = DateTimeFormatter.ofPattern(pattern); return df.format(dateTime); diff --git a/src/main/java/com/yexuejc/base/util/DateUtil.java b/src/main/java/com/yexuejc/base/util/DateUtil.java index 3053c21..7cd93fe 100644 --- a/src/main/java/com/yexuejc/base/util/DateUtil.java +++ b/src/main/java/com/yexuejc/base/util/DateUtil.java @@ -21,7 +21,7 @@ public class DateUtil { public static DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); public static DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm:ss"); - public static DateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static DateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); public static String DAY_START_TIME = "00:00:00"; public static String DAY_END_TIME = "23:59:59"; diff --git a/src/main/java/com/yexuejc/base/util/ObjUtil.java b/src/main/java/com/yexuejc/base/util/ObjUtil.java index 2943974..0ecf378 100644 --- a/src/main/java/com/yexuejc/base/util/ObjUtil.java +++ b/src/main/java/com/yexuejc/base/util/ObjUtil.java @@ -2,7 +2,8 @@ package com.yexuejc.base.util; import java.io.*; import java.lang.reflect.Field; -import java.sql.Timestamp; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.*; /** @@ -110,6 +111,7 @@ public class ObjUtil { } boolean annotationPresent = f.isAnnotationPresent(ToUeProperty.class); boolean ignore = false; + Class toType = null; if (annotationPresent) { ToUeProperty annotation = f.getAnnotation(ToUeProperty.class); ignore = annotation.ignore(); @@ -117,17 +119,57 @@ public class ObjUtil { if (StrUtil.isNotEmpty(value)) { fName = value; } + if (!annotation.type().getClass().equals(ObjUtil.class)) { + toType = annotation.type(); + } } //忽略 if (ignore) { continue; } Object o = f.get(obj); + if (null == o && !putNull) { + continue; + } if (null == o || isPrimitive(o) || o instanceof String || o instanceof Enum) { - if (null == o && !putNull) { - continue; + objMap.put(fName, o); + } else if (o instanceof Date) { + if (toType != null) { + Date date = (Date) o; + if (toType.equals(Integer.class)) { + objMap.put(fName, (int) date.getTime() / 1000); + } else if (toType.equals(Long.class)) { + objMap.put(fName, date.getTime()); + } + } else { + objMap.put(fName, o); + } + } else if (o instanceof LocalDate) { + if (toType != null) { + LocalDate date = (LocalDate) o; + if (toType.equals(Integer.class)) { + objMap.put(fName, (int) DateTimeUtil.parseLong(date) / 1000); + } else if (toType.equals(Long.class)) { + objMap.put(fName, DateTimeUtil.parseLong(date)); + } else if (toType.equals(String.class)) { + objMap.put(fName, DateTimeUtil.format(date)); + } + } else { + objMap.put(fName, o); + } + } else if (o instanceof LocalDateTime) { + if (toType != null) { + LocalDateTime date = (LocalDateTime) o; + if (toType.equals(Integer.class)) { + objMap.put(fName, (int) DateTimeUtil.parseLong(date) / 1000); + } else if (toType.equals(Long.class)) { + objMap.put(fName, DateTimeUtil.parseLong(date)); + } else if (toType.equals(String.class)) { + objMap.put(fName, DateTimeUtil.format(date)); + } + } else { + objMap.put(fName, o); } - objMap.put(fName, f.get(obj)); } else if (o instanceof List) { List list = (List) o; List bodyList = new ArrayList(); @@ -181,80 +223,13 @@ public class ObjUtil { boolean b = obj.getClass().isPrimitive() || obj instanceof Integer || obj instanceof Character || obj instanceof Boolean || obj instanceof Number || obj instanceof String || obj instanceof Double || obj instanceof Float - || obj instanceof Short || obj instanceof Long || obj instanceof Byte || obj instanceof Date; + || obj instanceof Short || obj instanceof Long || obj instanceof Byte; if (b) { return true; } return false; } - public static void main(String[] args) { - B a = new B(); - a.nameFirst = "张三"; - a.ageInt = "5165458"; - a.testAss = "asdasdsad"; - a.setaM1("method1"); - a.setbM1("b1Mthod1"); - a.protectedStr = "protectedStr"; - C c = new C(); - c.ageInt = "test"; - a.c = c; - a.list = new ArrayList<>(); - a.list.add(c); - Map underlineMap = getUnderlineMap(a, false, false); - System.out.println(JsonUtil.obj2Json(underlineMap)); - } - - static class A implements Serializable { - private static final long serialVersionUID = -8462118058721865488L; - public String nameFirst; - public String ageInt; - private String aM1; - @ToUeProperty("p_str") - protected String protectedStr; - - public String getaM1() { - return aM1; - } - - public A setaM1(String aM1) { - this.aM1 = aM1; - return this; - } - } - - static class B extends A { - private static final long serialVersionUID = -8462118058721865488L; - public String testAss; - private String bM1; - private C c; - List list; - - public String getbM1() { - return bM1; - } - - public B setbM1(String bM1) { - this.bM1 = bM1; - return this; - } - } - - static class C extends A { - private static final long serialVersionUID = -8462118058721865488L; - public String testAss; - private String bM1; - - public String getbM1() { - return bM1; - } - - public C setbM1(String bM1) { - this.bM1 = bM1; - return this; - } - } - /** *

深度克隆对象

*

@@ -283,56 +258,4 @@ public class ObjUtil { return outer; } -// public static void main(String[] args) { -//// test1(); -//// test2(); -// -// } -// -// private static void test2() { -// B t = new B(); -// t.sex = "男"; -// t.age = 18; -// A test = new A(); -// test.name = "张三"; -// t.test = test; -// B b = depthClone(t); -// System.out.println(JsonUtil.obj2Json(b)); -// } -// -// static class A implements Serializable { -// private static final long serialVersionUID = -8462118058721865488L; -// public String name; -// } -// -// static class B implements Serializable { -// private static final long serialVersionUID = 3297717505428005316L; -// public int age; -// public String sex; -// public A test; -// } -// -// static class C implements Serializable { -// private static final long serialVersionUID = 3297717505428005316L; -// public int age; -// public String sex; -// public A test; -// } -// -// private static void test1() { -// ApiVO apiVO = new ApiVO(ApiVO.STATUS.S); -// apiVO.setMsg("asdsadsad"); -// apiVO.setObject1("sadsadsad"); -// -// Resps obj = new Resps<>(); -// obj.setSucc("安达圣斗士", "ok"); -// System.out.println(obj); -// apiVO.setObject2(obj); -// ApiVO apiVO1 = depthClone(apiVO); -// System.out.println(apiVO == apiVO1); -// System.out.println(JsonUtil.obj2Json(apiVO1)); -// System.out.println(JsonUtil.obj2Json(apiVO1.getObject1(String.class))); -// System.out.println(JsonUtil.obj2Json(apiVO1.getObject2(Resps.class))); -// System.out.println(apiVO1.getObject2(Resps.class) == obj); -// } } diff --git a/src/main/java/com/yexuejc/base/util/ToUeProperty.java b/src/main/java/com/yexuejc/base/util/ToUeProperty.java index 4cac11e..530c9f1 100644 --- a/src/main/java/com/yexuejc/base/util/ToUeProperty.java +++ b/src/main/java/com/yexuejc/base/util/ToUeProperty.java @@ -25,4 +25,25 @@ public @interface ToUeProperty { * @return */ boolean ignore() default false; + + /** + * 转换格式 + *

目前只支持

+ *

{@link java.util.Date}、{@link java.time.LocalDate}、{@link java.time.LocalDateTime} + * 转{@link Integer}(10位长度)、{@link Long}(13位长度)

+ * 其余无效 + * + * @return
+     * this                       in        out 
+ * {@link java.util.Date} {@link Integer} {@link Integer}10位长度时间戳
+ * {@link java.util.Date} {@link Long} {@link Long}13位长度时间戳
+ * {@link java.time.LocalDate} {@link Integer} {@link Integer}10位长度时间戳
+ * {@link java.time.LocalDate} {@link Long} {@link Long}13位长度时间戳(后三位为000)
+ * {@link java.time.LocalDateTime} {@link Integer} {@link Integer}10位长度时间戳
+ * {@link java.time.LocalDateTime} {@link Long} {@link Long}13位长度时间戳 + * + *
+ */ + Class type() default ObjUtil.class; + } \ No newline at end of file diff --git a/src/test/java/com/yexuejc/base/util/ObjUtilTest.java b/src/test/java/com/yexuejc/base/util/ObjUtilTest.java new file mode 100644 index 0000000..5a8a22f --- /dev/null +++ b/src/test/java/com/yexuejc/base/util/ObjUtilTest.java @@ -0,0 +1,154 @@ +package com.yexuejc.base.util; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * json化输出,改变属性名称,输出类型 {@link ObjUtil} + {@link ToUeProperty} 测试类 + * + * @author: yexuejc + * @date: 2021-02-03 10:02:55 + */ +class ObjUtilTest { + + public static void main(String[] args) { + start(); + } + + public static void start(){ + B a = new B(); + a.nameFirst = "张三"; + a.ageInt = "5165458"; + a.testAss = "asdasdsad"; + a.setaM1("method1"); + a.setbM1("b1Mthod1"); + a.protectedStr = "protectedStr"; + a.amount=new BigDecimal("3"); + a.time = LocalDateTime.now(); + a.dateTime=new Date(); + C c = new C(); + c.ageInt = "test"; + a.c = c; + a.list = new ArrayList<>(); + a.list.add(c); + Map underlineMap = ObjUtil.getUnderlineMap(a, false, false); + System.out.println(JsonUtil.formatPrinter(underlineMap)); + } + + static class A implements Serializable { + private static final long serialVersionUID = -8462118058721865488L; + public String nameFirst; + public String ageInt; + private String aM1; + @ToUeProperty("p_str") + protected String protectedStr; + + public String getaM1() { + return aM1; + } + + public A setaM1(String aM1) { + this.aM1 = aM1; + return this; + } + } + + static class B extends A { + private static final long serialVersionUID = -8462118058721865488L; + public String testAss; + private String bM1; + + @ToUeProperty(type = Integer.class) + public BigDecimal amount; + + @ToUeProperty(type = String.class) + public LocalDateTime time; + + public Date dateTime; + + private C c; + List list; + + public String getbM1() { + return bM1; + } + + public B setbM1(String bM1) { + this.bM1 = bM1; + return this; + } + } + + static class C extends A { + private static final long serialVersionUID = -8462118058721865488L; + public String testAss; + private String bM1; + + public String getbM1() { + return bM1; + } + + public C setbM1(String bM1) { + this.bM1 = bM1; + return this; + } + } + +// public static void main(String[] args) { +//// test1(); +//// test2(); +// +// } +// +// private static void test2() { +// B t = new B(); +// t.sex = "男"; +// t.age = 18; +// A test = new A(); +// test.name = "张三"; +// t.test = test; +// B b = depthClone(t); +// System.out.println(JsonUtil.obj2Json(b)); +// } +// +// static class A implements Serializable { +// private static final long serialVersionUID = -8462118058721865488L; +// public String name; +// } +// +// static class B implements Serializable { +// private static final long serialVersionUID = 3297717505428005316L; +// public int age; +// public String sex; +// public A test; +// } +// +// static class C implements Serializable { +// private static final long serialVersionUID = 3297717505428005316L; +// public int age; +// public String sex; +// public A test; +// } +// +// private static void test1() { +// ApiVO apiVO = new ApiVO(ApiVO.STATUS.S); +// apiVO.setMsg("asdsadsad"); +// apiVO.setObject1("sadsadsad"); +// +// Resps obj = new Resps<>(); +// obj.setSucc("安达圣斗士", "ok"); +// System.out.println(obj); +// apiVO.setObject2(obj); +// ApiVO apiVO1 = depthClone(apiVO); +// System.out.println(apiVO == apiVO1); +// System.out.println(JsonUtil.obj2Json(apiVO1)); +// System.out.println(JsonUtil.obj2Json(apiVO1.getObject1(String.class))); +// System.out.println(JsonUtil.obj2Json(apiVO1.getObject2(Resps.class))); +// System.out.println(apiVO1.getObject2(Resps.class) == obj); +// } +} \ No newline at end of file From 58d713e025076f992a3bc0a0a15f5708e98de774 Mon Sep 17 00:00:00 2001 From: yexuejc <1107047387@qq.com> Date: Sat, 6 Feb 2021 11:41:51 +0800 Subject: [PATCH 19/23] =?UTF-8?q?1.4.3=20DateTimeUtil=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/yexuejc/base/util/DateTimeUtil.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/yexuejc/base/util/DateTimeUtil.java b/src/main/java/com/yexuejc/base/util/DateTimeUtil.java index 2c3ff3b..97041fe 100644 --- a/src/main/java/com/yexuejc/base/util/DateTimeUtil.java +++ b/src/main/java/com/yexuejc/base/util/DateTimeUtil.java @@ -14,6 +14,7 @@ import java.util.Date; */ public class DateTimeUtil { public static String DATE_PATTERN = "yyyy-MM-dd"; + public static String TIME_PATTERN = "HH:mm:ss"; public static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; public static String DATE_TIME_MS_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS"; From 471da3dbcbfa8628578ac91b9ec7923a58a0994f Mon Sep 17 00:00:00 2001 From: yexuejc <1107047387@qq.com> Date: Sat, 6 Feb 2021 11:43:45 +0800 Subject: [PATCH 20/23] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPDATE.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/UPDATE.md b/UPDATE.md index fab0aad..aef15f4 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -1,6 +1,19 @@ yexuejc-base 更新记录 ------------------ +#### version :1.4.3 +**time:2021-2-6 11:42:49**
+**branch:** master
+**update:**
+>1. DateTimeUtil类增加时间格式 +# +#### version :1.4.2 +**time:2021-2-3 11:40:11**
+**branch:** master
+**update:**
+>1. 优化时间转换格式 +>2. 增加注解 ToUeProperty 转换时间为时间戳的功能 +# #### version :1.4.1 **time:2021-1-31 12:59:24**
**branch:** master
From d602d4370ed5a83090559ac577861cf8c436302e Mon Sep 17 00:00:00 2001 From: yexuejc <1107047387@qq.com> Date: Sat, 6 Feb 2021 11:44:54 +0800 Subject: [PATCH 21/23] pom 1.4.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7b5bb77..1163c67 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ top.yexuejc yexuejc-base - 1.4.2 + 1.4.3 ${project.artifactId} https://github.com/yexuejc/yexuejc-base From 5a96c23882974b5920ae494bf817e542a36bcaed Mon Sep 17 00:00:00 2001 From: yexuejc <1107047387@qq.com> Date: Sat, 24 Apr 2021 00:52:35 +0800 Subject: [PATCH 22/23] =?UTF-8?q?1.4.4=20JsonUtil=E7=B1=BB=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=A0=BC=E5=BC=8F=E5=8C=96=E5=87=BA=E7=8E=B0=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E5=8C=BA=E5=B7=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPDATE.md | 6 +++++ pom.xml | 2 +- .../java/com/yexuejc/base/util/JsonUtil.java | 23 ++++++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/UPDATE.md b/UPDATE.md index aef15f4..37be89b 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -1,6 +1,12 @@ yexuejc-base 更新记录 ------------------ +#### version :1.4.4 +**time:2021-4-24 00:41:31**
+**branch:** master
+**update:**
+>1. JsonUtil类修复格式化出现的时区差:现使用TimeZone.getDefault()时区 +# #### version :1.4.3 **time:2021-2-6 11:42:49**
**branch:** master
diff --git a/pom.xml b/pom.xml index 1163c67..fb9b02a 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ top.yexuejc yexuejc-base - 1.4.3 + 1.4.4 ${project.artifactId} https://github.com/yexuejc/yexuejc-base diff --git a/src/main/java/com/yexuejc/base/util/JsonUtil.java b/src/main/java/com/yexuejc/base/util/JsonUtil.java index b7a4c6d..2225370 100644 --- a/src/main/java/com/yexuejc/base/util/JsonUtil.java +++ b/src/main/java/com/yexuejc/base/util/JsonUtil.java @@ -10,6 +10,7 @@ import com.fasterxml.jackson.databind.type.MapType; import java.io.IOException; import java.io.InputStream; import java.util.Map; +import java.util.TimeZone; import java.util.logging.Logger; /** @@ -46,6 +47,8 @@ public class JsonUtil { objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); + //设置一下时区,可以和程序同步避免时区问题 + objectMapper.setTimeZone(TimeZone.getDefault()); objectMapper.setDateFormat(DateUtil.DATE_TIME_FORMAT); } @@ -55,6 +58,15 @@ public class JsonUtil { objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); } + /** + * 这个设置不能改变JsonUtil自带的objectMapper设置,只能修改传入objMapper的设置 + * @param objMapper + */ + public static void initSnakeCase(ObjectMapper objMapper) { + //驼峰下划线互转 + objMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); + } + /** * 每调用一次生成一个全新的ObjectMapper供特殊场景使用,与通用ObjectMapper没有关系 * @@ -66,6 +78,15 @@ public class JsonUtil { return objectMapper; } + /** + * 返回 ObjectMapper对象,供外部设置特定参数 + * + * @return + */ + public static ObjectMapper getObjectMapper() { + return objectMapper; + } + /** * 将json转换为某个类 * @@ -106,7 +127,7 @@ public class JsonUtil { log.warning("json to Object JsonMappingException.\n" + e.getMessage()); } catch (IOException e) { log.warning("json to Object IOException.\n" + e.getMessage()); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } From 3b0cdc832b4dcd9ce01dee81921070526e72d83b Mon Sep 17 00:00:00 2001 From: yexuejc-vm-win10 <1107047387@qq.com> Date: Sun, 8 May 2022 13:52:23 +0800 Subject: [PATCH 23/23] =?UTF-8?q?update=20=E5=BF=BD=E7=95=A5=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a4b6368..8a8c25b 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ build/ nbbuild/ dist/ nbdist/ -.nb-gradle/ \ No newline at end of file +.nb-gradle/ +*.iml~