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[] 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[] 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[] 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