From 578b2108007f090859f44aefa9e19417085aa691 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=91=E5=B9=B4=E6=A2=A6=E4=B8=8E=E7=A0=96?=
<2847127106@qq.com>
Date: Tue, 20 Aug 2024 11:29:53 +0800
Subject: [PATCH 1/4] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/muyu/common/core/text/Convert.java | 33 +++++++++++--------
1 file changed, 19 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/muyu/common/core/text/Convert.java b/src/main/java/com/muyu/common/core/text/Convert.java
index fb57cb9..b2312d3 100644
--- a/src/main/java/com/muyu/common/core/text/Convert.java
+++ b/src/main/java/com/muyu/common/core/text/Convert.java
@@ -699,28 +699,33 @@ public class Convert {
*
* @return 字符串
*/
- public static String str (Object obj, Charset charset) {
- if (null == obj) {
+ public static String str(Object obj, Charset charset) {
+ if (obj == null) {
return null;
}
if (obj instanceof String) {
+ // 如果已经是String,则直接返回
return (String) obj;
- } else if (obj instanceof byte[] || obj instanceof Byte[]) {
- if (obj instanceof byte[]) {
- return str((byte[]) obj, charset);
- } else {
- Byte[] bytes = (Byte[]) obj;
- int length = bytes.length;
- byte[] dest = new byte[length];
- for (int i = 0 ; i < length ; i++) {
- dest[i] = bytes[i];
- }
- return str(dest, charset);
+ } else if (obj instanceof byte[]) {
+ // 如果是byte[],则使用charset进行编码转换
+ return new String((byte[]) obj, charset);
+ } else if (obj instanceof Byte[]) {
+ // 如果是Byte[],先转换为byte[],再进行编码转换
+ Byte[] bytes = (Byte[]) obj;
+ byte[] dest = new byte[bytes.length];
+ for (int i = 0; i < bytes.length; i++) {
+ dest[i] = bytes[i].byteValue(); // 使用byteValue()来避免自动拆箱
}
+ return new String(dest, charset);
} else if (obj instanceof ByteBuffer) {
- return str((ByteBuffer) obj, charset);
+ // 如果是ByteBuffer,则根据position和limit进行转换
+ ByteBuffer buffer = (ByteBuffer) obj;
+ byte[] bytes = new byte[buffer.remaining()];
+ buffer.get(bytes); // 从buffer中读取到字节数组
+ return new String(bytes, charset);
}
+ // 如果都不是,则调用对象的toString方法,这里不使用charset
return obj.toString();
}
From 00e6b971926e7a0561cd1a43eed37d2d66aea308 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=91=E5=B9=B4=E6=A2=A6=E4=B8=8E=E7=A0=96?=
<2847127106@qq.com>
Date: Tue, 20 Aug 2024 11:39:58 +0800
Subject: [PATCH 2/4] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/muyu/common/core/text/Convert.java | 40 ++++++++++---------
1 file changed, 21 insertions(+), 19 deletions(-)
diff --git a/src/main/java/com/muyu/common/core/text/Convert.java b/src/main/java/com/muyu/common/core/text/Convert.java
index b2312d3..2ee360a 100644
--- a/src/main/java/com/muyu/common/core/text/Convert.java
+++ b/src/main/java/com/muyu/common/core/text/Convert.java
@@ -1,6 +1,7 @@
package com.muyu.common.core.text;
import com.muyu.common.core.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -15,6 +16,7 @@ import java.util.Set;
*
* @author muyu
*/
+@Slf4j
public class Convert {
/**
* 转换为字符串
@@ -687,7 +689,12 @@ public class Convert {
* @return 字符串
*/
public static String str (Object obj, String charsetName) {
- return str(obj, Charset.forName(charsetName));
+ try{
+ return str(obj, Charset.forName(charsetName));
+ }catch (Exception exception){
+ log.error("字符转换异常: [{}-{}] -> {}",obj,charsetName,exception.getMessage(),exception);
+ throw new RuntimeException(exception);
+ }
}
/**
@@ -700,32 +707,27 @@ public class Convert {
* @return 字符串
*/
public static String str(Object obj, Charset charset) {
- if (obj == null) {
+ if (null == obj) {
return null;
}
if (obj instanceof String) {
- // 如果已经是String,则直接返回
return (String) obj;
- } else if (obj instanceof byte[]) {
- // 如果是byte[],则使用charset进行编码转换
- return new String((byte[]) obj, charset);
- } else if (obj instanceof Byte[]) {
- // 如果是Byte[],先转换为byte[],再进行编码转换
- Byte[] bytes = (Byte[]) obj;
- byte[] dest = new byte[bytes.length];
- for (int i = 0; i < bytes.length; i++) {
- dest[i] = bytes[i].byteValue(); // 使用byteValue()来避免自动拆箱
+ } else if (obj instanceof byte[] || obj instanceof Byte[]) {
+ if (obj instanceof byte[]) {
+ return str((byte[]) obj, charset);
+ } else {
+ Byte[] bytes = (Byte[]) obj;
+ int length = bytes.length;
+ byte[] dest = new byte[length];
+ for (int i = 0 ; i < length ; i++) {
+ dest[i] = bytes[i];
+ }
+ return str(dest, charset);
}
- return new String(dest, charset);
} else if (obj instanceof ByteBuffer) {
- // 如果是ByteBuffer,则根据position和limit进行转换
- ByteBuffer buffer = (ByteBuffer) obj;
- byte[] bytes = new byte[buffer.remaining()];
- buffer.get(bytes); // 从buffer中读取到字节数组
- return new String(bytes, charset);
+ return str((ByteBuffer) obj, charset);
}
- // 如果都不是,则调用对象的toString方法,这里不使用charset
return obj.toString();
}
From ed1842ed49a250b2993bbb8294e9e28861484c05 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=91=E5=B9=B4=E6=A2=A6=E4=B8=8E=E7=A0=96?=
<2847127106@qq.com>
Date: Tue, 20 Aug 2024 14:25:42 +0800
Subject: [PATCH 3/4] =?UTF-8?q?=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/java/com/muyu/common/core/text/Convert.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/main/java/com/muyu/common/core/text/Convert.java b/src/main/java/com/muyu/common/core/text/Convert.java
index 2ee360a..667534e 100644
--- a/src/main/java/com/muyu/common/core/text/Convert.java
+++ b/src/main/java/com/muyu/common/core/text/Convert.java
@@ -689,9 +689,11 @@ public class Convert {
* @return 字符串
*/
public static String str (Object obj, String charsetName) {
+ System.out.println(obj);
try{
return str(obj, Charset.forName(charsetName));
}catch (Exception exception){
+ System.out.println("字符转换异常: [{"+obj+"}-{"+charsetName+"}] -> {"+exception.getMessage()+"}");
log.error("字符转换异常: [{}-{}] -> {}",obj,charsetName,exception.getMessage(),exception);
throw new RuntimeException(exception);
}
From 94c5ef4416f5e9576fd063e9b57b0a4fd934ad19 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=91=E5=B9=B4=E6=A2=A6=E4=B8=8E=E7=A0=96?=
<2847127106@qq.com>
Date: Tue, 20 Aug 2024 20:46:57 +0800
Subject: [PATCH 4/4] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E6=BA=90=E7=B1=BB=E5=9E=8B=E5=AD=97=E5=85=B8,=E5=AE=A1?=
=?UTF-8?q?=E6=A0=B8=E7=8A=B6=E6=80=81=E5=AD=97=E5=85=B8,=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3=E8=B0=83=E7=94=A8=E5=AD=97=E5=85=B8=E7=9A=84=E6=9E=9A?=
=?UTF-8?q?=E4=B8=BE=E4=B8=8E=E6=A0=A1=E9=AA=8C=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../muyu/common/core/enums/SysApiState.java | 38 +++++++++++++++++
.../muyu/common/core/enums/SysCheckState.java | 40 ++++++++++++++++++
.../com/muyu/common/core/enums/SysDBType.java | 41 +++++++++++++++++++
.../validation/IsSysApiStateValidator.java | 22 ++++++++++
.../validation/IsSysCheckStateValidator.java | 22 ++++++++++
.../core/validation/IsSysDBTypeValidator.java | 22 ++++++++++
.../core/validation/custom/IsSysApiState.java | 29 +++++++++++++
.../validation/custom/IsSysCheckState.java | 29 +++++++++++++
.../core/validation/custom/IsSysDBType.java | 29 +++++++++++++
...ot.autoconfigure.AutoConfiguration.imports | 3 ++
10 files changed, 275 insertions(+)
create mode 100644 src/main/java/com/muyu/common/core/enums/SysApiState.java
create mode 100644 src/main/java/com/muyu/common/core/enums/SysCheckState.java
create mode 100644 src/main/java/com/muyu/common/core/enums/SysDBType.java
create mode 100644 src/main/java/com/muyu/common/core/validation/IsSysApiStateValidator.java
create mode 100644 src/main/java/com/muyu/common/core/validation/IsSysCheckStateValidator.java
create mode 100644 src/main/java/com/muyu/common/core/validation/IsSysDBTypeValidator.java
create mode 100644 src/main/java/com/muyu/common/core/validation/custom/IsSysApiState.java
create mode 100644 src/main/java/com/muyu/common/core/validation/custom/IsSysCheckState.java
create mode 100644 src/main/java/com/muyu/common/core/validation/custom/IsSysDBType.java
diff --git a/src/main/java/com/muyu/common/core/enums/SysApiState.java b/src/main/java/com/muyu/common/core/enums/SysApiState.java
new file mode 100644
index 0000000..57fd160
--- /dev/null
+++ b/src/main/java/com/muyu/common/core/enums/SysApiState.java
@@ -0,0 +1,38 @@
+package com.muyu.common.core.enums;
+
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * @Author: 胡杨
+ * @Name: SysApiState
+ * @Description: 接口调用字典
+ * @CreatedDate: 2024/8/20 下午7:56
+ * @FilePath: com.muyu.common.core.enums
+ */
+
+@Getter
+public enum SysApiState {
+ OFF("off", "开启"),
+ ON("on", "停用");
+
+ private final String code;
+ private final String info;
+
+ SysApiState(String code, String info) {
+ this.code = code;
+ this.info = info;
+ }
+
+ /**
+ * 鉴别参数是否是启用状态
+ * @param code 需鉴别参数
+ * @return 如果存在返回结果turn,否则返回false
+ */
+ public static boolean isCode(String code){
+ return Arrays.stream(values())
+ .map(SysApiState::getCode)
+ .anyMatch(c -> c.equals(code));
+ }
+}
diff --git a/src/main/java/com/muyu/common/core/enums/SysCheckState.java b/src/main/java/com/muyu/common/core/enums/SysCheckState.java
new file mode 100644
index 0000000..55098d3
--- /dev/null
+++ b/src/main/java/com/muyu/common/core/enums/SysCheckState.java
@@ -0,0 +1,40 @@
+package com.muyu.common.core.enums;
+
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * @Author: 胡杨
+ * @Name: SysCheckState
+ * @Description: 审核状态字典
+ * @CreatedDate: 2024/8/20 下午8:01
+ * @FilePath: com.muyu.common.core.enums
+ */
+
+@Getter
+public enum SysCheckState {
+ UN("un", "未审核"),
+ YES("yes", "审核通过"),
+ NO("no", "审核驳回");
+
+ private final String code;
+ private final String info;
+
+ SysCheckState(String code, String info) {
+ this.code = code;
+ this.info = info;
+ }
+
+ /**
+ * 鉴别参数是否是枚举的值
+ *
+ * @param code 需鉴别参数
+ * @return 如果存在返回结果turn, 否则返回false
+ */
+ public static boolean isCode(String code) {
+ return Arrays.stream(values())
+ .map(SysCheckState::getCode)
+ .anyMatch(c -> c.equals(code));
+ }
+}
diff --git a/src/main/java/com/muyu/common/core/enums/SysDBType.java b/src/main/java/com/muyu/common/core/enums/SysDBType.java
new file mode 100644
index 0000000..15cb1a3
--- /dev/null
+++ b/src/main/java/com/muyu/common/core/enums/SysDBType.java
@@ -0,0 +1,41 @@
+package com.muyu.common.core.enums;
+
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * @Author: 胡杨
+ * @Name: SysDBType
+ * @Description: 数据源类型字典
+ * @CreatedDate: 2024/8/20 下午8:22
+ * @FilePath: com.muyu.common.core.enums
+ */
+
+@Getter
+public enum SysDBType {
+ MYSQL("mysql", "Mysql数据库"),
+ REDIS("redis", "Redis数据库"),
+ ES("es", "Es数据库"),
+ OTHER("other", "其他");
+
+ private final String code;
+ private final String info;
+
+ SysDBType(String code, String info) {
+ this.code = code;
+ this.info = info;
+ }
+
+ /**
+ * 鉴别参数是否是枚举的值
+ *
+ * @param code 需鉴别参数
+ * @return 如果存在返回结果turn, 否则返回false
+ */
+ public static boolean isCode(String code) {
+ return Arrays.stream(values())
+ .map(SysDBType::getCode)
+ .anyMatch(c -> c.equals(code));
+ }
+}
diff --git a/src/main/java/com/muyu/common/core/validation/IsSysApiStateValidator.java b/src/main/java/com/muyu/common/core/validation/IsSysApiStateValidator.java
new file mode 100644
index 0000000..747be45
--- /dev/null
+++ b/src/main/java/com/muyu/common/core/validation/IsSysApiStateValidator.java
@@ -0,0 +1,22 @@
+package com.muyu.common.core.validation;
+
+
+import com.muyu.common.core.enums.*;
+import com.muyu.common.core.validation.custom.*;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+
+/**
+ * @Author: 胡杨
+ * @Name: IsSysApiState
+ * @Description: 接口调用字典判断
+ * @CreatedDate: 2024/8/20 下午8:07
+ * @FilePath: com.muyu.common.core.validation
+ */
+
+public class IsSysApiStateValidator implements ConstraintValidator {
+ @Override
+ public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
+ return SysApiState.isCode(s);
+ }
+}
diff --git a/src/main/java/com/muyu/common/core/validation/IsSysCheckStateValidator.java b/src/main/java/com/muyu/common/core/validation/IsSysCheckStateValidator.java
new file mode 100644
index 0000000..bde6f3c
--- /dev/null
+++ b/src/main/java/com/muyu/common/core/validation/IsSysCheckStateValidator.java
@@ -0,0 +1,22 @@
+package com.muyu.common.core.validation;
+
+
+import com.muyu.common.core.enums.*;
+import com.muyu.common.core.validation.custom.*;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+
+/**
+ * @Author: 胡杨
+ * @Name: SysCheckState
+ * @Description: 审核状态字典判断
+ * @CreatedDate: 2024/8/20 下午8:09
+ * @FilePath: com.muyu.common.core.validation
+ */
+
+public class IsSysCheckStateValidator implements ConstraintValidator {
+ @Override
+ public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
+ return SysCheckState.isCode(s);
+ }
+}
diff --git a/src/main/java/com/muyu/common/core/validation/IsSysDBTypeValidator.java b/src/main/java/com/muyu/common/core/validation/IsSysDBTypeValidator.java
new file mode 100644
index 0000000..f6bebf5
--- /dev/null
+++ b/src/main/java/com/muyu/common/core/validation/IsSysDBTypeValidator.java
@@ -0,0 +1,22 @@
+package com.muyu.common.core.validation;
+
+
+import com.muyu.common.core.enums.*;
+import com.muyu.common.core.validation.custom.*;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+
+/**
+ * @Author: 胡杨
+ * @Name: SysDBType
+ * @Description: 数据源类型字典
+ * @CreatedDate: 2024/8/20 下午8:26
+ * @FilePath: com.muyu.common.core.validation
+ */
+
+public class IsSysDBTypeValidator implements ConstraintValidator {
+ @Override
+ public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
+ return SysDBType.isCode(s);
+ }
+}
diff --git a/src/main/java/com/muyu/common/core/validation/custom/IsSysApiState.java b/src/main/java/com/muyu/common/core/validation/custom/IsSysApiState.java
new file mode 100644
index 0000000..42bf957
--- /dev/null
+++ b/src/main/java/com/muyu/common/core/validation/custom/IsSysApiState.java
@@ -0,0 +1,29 @@
+package com.muyu.common.core.validation.custom;
+
+import com.muyu.common.core.validation.*;
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
+
+import java.lang.annotation.*;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * @Author: 胡杨
+ * @Name: IsSysApiState
+ * @Description: 接口调用字典
+ * @CreatedDate: 2024/8/20 下午8:07
+ * @FilePath: com.muyu.common.core.validation.custom
+ */
+
+@Target({ElementType.FIELD})
+@Retention(RUNTIME)
+@Documented
+@Constraint(validatedBy = IsSysApiStateValidator.class)
+public @interface IsSysApiState {
+ String message() default "数据字典:[接口调用字典] - 参数不合法";
+
+ Class>[] groups() default {};
+
+ Class extends Payload>[] payload() default {};
+}
diff --git a/src/main/java/com/muyu/common/core/validation/custom/IsSysCheckState.java b/src/main/java/com/muyu/common/core/validation/custom/IsSysCheckState.java
new file mode 100644
index 0000000..0bb7341
--- /dev/null
+++ b/src/main/java/com/muyu/common/core/validation/custom/IsSysCheckState.java
@@ -0,0 +1,29 @@
+package com.muyu.common.core.validation.custom;
+
+import com.muyu.common.core.validation.*;
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
+
+import java.lang.annotation.*;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * @Author: 胡杨
+ * @Name: SysCheckState
+ * @Description: 审核状态字典
+ * @CreatedDate: 2024/8/20 下午8:09
+ * @FilePath: com.muyu.common.core.validation.custom
+ */
+
+@Target({ElementType.FIELD})
+@Retention(RUNTIME)
+@Documented
+@Constraint(validatedBy = IsSysCheckStateValidator.class)
+public @interface IsSysCheckState {
+ String message() default "数据字典:[审核状态字典] - 参数不合法";
+
+ Class>[] groups() default {};
+
+ Class extends Payload>[] payload() default {};
+}
diff --git a/src/main/java/com/muyu/common/core/validation/custom/IsSysDBType.java b/src/main/java/com/muyu/common/core/validation/custom/IsSysDBType.java
new file mode 100644
index 0000000..d4de54c
--- /dev/null
+++ b/src/main/java/com/muyu/common/core/validation/custom/IsSysDBType.java
@@ -0,0 +1,29 @@
+package com.muyu.common.core.validation.custom;
+
+import com.muyu.common.core.validation.*;
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
+
+import java.lang.annotation.*;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * @Author: 胡杨
+ * @Name: SysDBType
+ * @Description: 数据源类型字典
+ * @CreatedDate: 2024/8/20 下午8:26
+ * @FilePath: com.muyu.common.core.validation.custom
+ */
+
+@Target({ElementType.FIELD})
+@Retention(RUNTIME)
+@Documented
+@Constraint(validatedBy = IsSysDBTypeValidator.class)
+public @interface IsSysDBType {
+ String message() default "数据字典:[数据源类型字典] - 参数不合法";
+
+ Class>[] groups() default {};
+
+ Class extends Payload>[] payload() default {};
+}
diff --git a/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 17f73ec..0b7326f 100644
--- a/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,2 +1,5 @@
com.muyu.common.core.utils.SpringUtils
com.muyu.common.core.feign.FeginConfig
+com.muyu.common.core.validation.IsSysApiStateValidator
+com.muyu.common.core.validation.IsSysCheckStateValidator
+com.muyu.common.core.validation.IsSysDBTypeValidator