From d8130f9d6e022f5e87af051176776a43e6a2a0ff Mon Sep 17 00:00:00 2001 From: acgist <289547414@qq.com> Date: Wed, 10 May 2023 16:09:55 +0800 Subject: [PATCH] =?UTF-8?q?[*]=20=E6=AF=8F=E6=97=A5=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- taoyao-client-android/taoyao/.gitignore | 2 +- .../taoyao/boot/src/main/AndroidManifest.xml | 2 +- .../com/acgist/taoyao/boot/model/Header.java | 16 +- .../com/acgist/taoyao/boot/model/Message.java | 81 ++-- .../acgist/taoyao/boot/model/MessageCode.java | 16 +- .../taoyao/boot/utils/CloseableUtils.java | 6 +- .../acgist/taoyao/boot/utils/DateUtils.java | 60 +-- .../com/acgist/taoyao/boot/utils/IdUtils.java | 13 +- .../acgist/taoyao/boot/utils/JSONUtils.java | 31 +- .../acgist/taoyao/boot/utils/ListUtils.java | 5 +- .../acgist/taoyao/boot/utils/MapUtils.java | 37 +- .../client/src/main/AndroidManifest.xml | 7 +- .../client/src/main/res/values/colors.xml | 2 +- .../client/src/main/res/values/settings.xml | 2 +- .../client/src/main/res/values/strings.xml | 2 +- .../client/src/main/res/values/themes.xml | 2 +- .../client/src/main/res/xml/backup_rules.xml | 4 +- .../main/res/xml/data_extraction_rules.xml | 2 +- .../com/acgist/taoyao/boot/model/Header.java | 2 +- .../com/acgist/taoyao/boot/model/Message.java | 94 +++-- .../acgist/taoyao/boot/model/MessageCode.java | 12 +- .../acgist/taoyao/boot/utils/DateUtils.java | 284 +++++++------ .../acgist/taoyao/boot/utils/JSONUtils.java | 375 +++++++++--------- .../acgist/taoyao/boot/utils/MapUtils.java | 37 +- 24 files changed, 546 insertions(+), 548 deletions(-) diff --git a/taoyao-client-android/taoyao/.gitignore b/taoyao-client-android/taoyao/.gitignore index d7ef50e..cb21238 100644 --- a/taoyao-client-android/taoyao/.gitignore +++ b/taoyao-client-android/taoyao/.gitignore @@ -4,4 +4,4 @@ media/deps -local.properties \ No newline at end of file +local.properties diff --git a/taoyao-client-android/taoyao/boot/src/main/AndroidManifest.xml b/taoyao-client-android/taoyao/boot/src/main/AndroidManifest.xml index a5918e6..8bdb7e1 100644 --- a/taoyao-client-android/taoyao/boot/src/main/AndroidManifest.xml +++ b/taoyao-client-android/taoyao/boot/src/main/AndroidManifest.xml @@ -1,4 +1,4 @@ - \ No newline at end of file + diff --git a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/Header.java b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/Header.java index c428fc3..dbbb4de 100644 --- a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/Header.java +++ b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/Header.java @@ -7,7 +7,7 @@ import java.io.Serializable; * * @author acgist */ -public class Header implements Serializable { +public class Header implements Cloneable, Serializable { private static final long serialVersionUID = 1L; @@ -24,20 +24,20 @@ public class Header implements Serializable { */ private String signal; - @Override - public Header clone() { - return new Header(this.v, this.id, this.signal); - } - public Header() { } public Header(String v, Long id, String signal) { - this.v = v; - this.id = id; + this.v = v; + this.id = id; this.signal = signal; } + @Override + public Header clone() { + return new Header(this.v, this.id, this.signal); + } + public String getV() { return this.v; } diff --git a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/Message.java b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/Message.java index d18b2ad..4232505 100644 --- a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/Message.java +++ b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/Message.java @@ -7,7 +7,6 @@ import org.apache.commons.lang3.StringUtils; import java.io.Serializable; - /** * 消息 * 接口、信令、媒体信令通用消息模型 @@ -40,31 +39,22 @@ public class Message implements Cloneable, Serializable { * 消息主体 */ private Object body; - - /** - * @param messageCode 状态编码 - */ - public void setCode(MessageCode messageCode) { - this.setCode(messageCode, null); + + public Message() { } - /** - * @param messageCode 状态编码 - * @param message 状态描述 - * - * @return this - */ - public Message setCode(MessageCode messageCode, String message) { - this.code = messageCode.getCode(); - this.message = StringUtils.isEmpty(message) ? messageCode.getMessage() : message; - return this; + public Message(String code, String message, Header header, Object body) { + this.code = code; + this.message = message; + this.header = header; + this.body = body; } /** * @return 成功消息 */ public static final Message success() { - return success(null); + return Message.success(null); } /** @@ -83,7 +73,7 @@ public class Message implements Cloneable, Serializable { * @return 失败消息 */ public static final Message fail() { - return fail(null, null, null); + return Message.fail(null, null, null); } /** @@ -92,7 +82,7 @@ public class Message implements Cloneable, Serializable { * @return 失败消息 */ public static final Message fail(MessageCode messageCode) { - return fail(messageCode, null, null); + return Message.fail(messageCode, null, null); } /** @@ -102,15 +92,16 @@ public class Message implements Cloneable, Serializable { * @return 失败消息 */ public static final Message fail(MessageCode messageCode, Object body) { - return fail(messageCode, null, body); + return Message.fail(messageCode, null, body); } /** * @param message 状态描述 + * * @return 失败消息 */ public static final Message fail(String message) { - return fail(null, message, null); + return Message.fail(null, message, null); } /** @@ -120,7 +111,7 @@ public class Message implements Cloneable, Serializable { * @return 失败消息 */ public static final Message fail(String message, Object body) { - return fail(null, message, body); + return Message.fail(null, message, body); } /** @@ -130,7 +121,7 @@ public class Message implements Cloneable, Serializable { * @return 失败消息 */ public static final Message fail(MessageCode messageCode, String message) { - return fail(messageCode, message, null); + return Message.fail(messageCode, message, null); } /** @@ -152,6 +143,25 @@ public class Message implements Cloneable, Serializable { return new Message(this.code, this.message, this.header.clone(), this.body); } + /** + * @param messageCode 状态编码 + */ + public void setCode(MessageCode messageCode) { + this.setCode(messageCode, null); + } + + /** + * @param messageCode 状态编码 + * @param message 状态描述 + * + * @return this + */ + public Message setCode(MessageCode messageCode, String message) { + this.code = messageCode.getCode(); + this.message = StringUtils.isEmpty(message) ? messageCode.getMessage() : message; + return this; + } + /** * 克隆消息排除消息主体 * @@ -162,31 +172,24 @@ public class Message implements Cloneable, Serializable { } /** - * @return Map消息主体 + * @return 消息主体 */ public T body() { return (T) this.body; } + /** + * @return 是否成功 + */ + public boolean isSuccess() { + return CODE_0000.equals(this.code); + } + @Override public String toString() { return JSONUtils.toJSON(this); } - public Message() { - } - - public Message(String code, String message, Header header, Object body) { - this.code = code; - this.message = message; - this.header = header; - this.body = body; - } - - public boolean isSuccess() { - return CODE_0000.equals(this.code); - } - public String getCode() { return this.code; } diff --git a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java index ac555c5..2c43cc9 100644 --- a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java +++ b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java @@ -2,7 +2,7 @@ package com.acgist.taoyao.boot.model; /** * 状态编码 - *

+ * * 1xxx = 前置错误 * 2xxx = 内部错误 * 3xxx = 请求错误 @@ -38,7 +38,7 @@ public enum MessageCode { CODE_9999("9999", 500, "未知错误"); /** - * HTTP状态编码前缀 + * HTTP Status前缀 */ private static final String HTTP_STATUS = "3"; @@ -47,7 +47,7 @@ public enum MessageCode { */ private final String code; /** - * 状态数值 + * 状态数值(HTTP Status) */ private final Integer status; /** @@ -56,18 +56,19 @@ public enum MessageCode { private final String message; private MessageCode(String code, Integer status, String message) { - this.code = code; - this.status = status; + this.code = code; + this.status = status; this.message = message; } /** * @param code 状态编码 + * * @return 状态编码 */ public static final MessageCode of(String code) { final MessageCode[] values = MessageCode.values(); - for (MessageCode value : values) { + for (final MessageCode value : values) { if (value.code.equals(code)) { return value; } @@ -77,10 +78,11 @@ public enum MessageCode { /** * @param status HTTP Status + * * @return 状态编码 */ public static final MessageCode of(Integer status) { - return of(HTTP_STATUS + status); + return MessageCode.of(HTTP_STATUS + status); } public String getCode() { diff --git a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/CloseableUtils.java b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/CloseableUtils.java index 0e0fcbf..7119b11 100644 --- a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/CloseableUtils.java +++ b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/CloseableUtils.java @@ -1,5 +1,7 @@ package com.acgist.taoyao.boot.utils; +import android.util.Log; + import java.io.Closeable; /** @@ -23,7 +25,7 @@ public final class CloseableUtils { closeable.close(); } } catch (Exception e) { - // TODO:日志 + Log.e(CloseableUtils.class.getSimpleName(), "关闭资源异常", e); } } @@ -38,7 +40,7 @@ public final class CloseableUtils { closeable.close(); } } catch (Exception e) { - // TODO:日志 + Log.e(CloseableUtils.class.getSimpleName(), "关闭资源异常", e); } } diff --git a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java index 77821dc..2384db4 100644 --- a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java +++ b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java @@ -15,15 +15,12 @@ import java.util.Objects; */ public final class DateUtils { - private DateUtils() { - } - /** * 日期 * * @author acgist */ - public static enum DateStyle { + public enum DateStyle { YYMMDD("yyMMdd"), YYYYMMDD("yyyyMMdd"), @@ -51,6 +48,7 @@ public final class DateUtils { public DateTimeFormatter getDateTimeFormatter() { return this.dateTimeFormatter; } + } /** @@ -58,7 +56,7 @@ public final class DateUtils { * * @author acgist */ - public static enum TimeStyle { + public enum TimeStyle { HH24("HH"), HH24MM("HHmm"), @@ -97,17 +95,8 @@ public final class DateUtils { * * @author acgist */ - public static enum DateTimeStyle { + public enum DateTimeStyle { - // YYYY - YYYYMMDD_HH24_MM("yyyyMMdd HH:mm"), - YYYY_MM_DD_HH24_MM("yyyy-MM-dd HH:mm"), - YYYYMMDDHH24MMSS("yyyyMMddHHmmss"), - YYYYMMDDHH24MMSSSSS("yyyyMMddHHmmssSSS"), - YYYYMMDD_HH24_MM_SS("yyyyMMdd HH:mm:ss"), - YYYYMMDD_HH24_MM_SS_SSS("yyyyMMdd HH:mm:ss.SSS"), - YYYY_MM_DD_HH24_MM_SS("yyyy-MM-dd HH:mm:ss"), - YYYY_MM_DD_HH24_MM_SS_SSS("yyyy-MM-dd HH:mm:ss.SSS"), // YY YYMMDD_HH24_MM("yyMMdd HH:mm"), YY_MM_DD_HH24_MM("yy-MM-dd HH:mm"), @@ -117,6 +106,15 @@ public final class DateUtils { YYMMDD_HH24_MM_SS_SSS("yyMMdd HH:mm:ss.SSS"), YY_MM_DD_HH24_MM_SS("yy-MM-dd HH:mm:ss"), YY_MM_DD_HH24_MM_SS_SSS("yy-MM-dd HH:mm:ss.SSS"), + // YYYY + YYYYMMDD_HH24_MM("yyyyMMdd HH:mm"), + YYYY_MM_DD_HH24_MM("yyyy-MM-dd HH:mm"), + YYYYMMDDHH24MMSS("yyyyMMddHHmmss"), + YYYYMMDDHH24MMSSSSS("yyyyMMddHHmmssSSS"), + YYYYMMDD_HH24_MM_SS("yyyyMMdd HH:mm:ss"), + YYYYMMDD_HH24_MM_SS_SSS("yyyyMMdd HH:mm:ss.SSS"), + YYYY_MM_DD_HH24_MM_SS("yyyy-MM-dd HH:mm:ss"), + YYYY_MM_DD_HH24_MM_SS_SSS("yyyy-MM-dd HH:mm:ss.SSS"), // ISO YY_MM_DD_HH24_MM_SS_ISO("yy-MM-dd'T'HH:mm:ss"), YY_MM_DD_HH24_MM_SS_SSS_ISO("yy-MM-dd'T'HH:mm:ss.SSS"), @@ -151,26 +149,27 @@ public final class DateUtils { } } - - /** - * 生成时间戳 - * - * @return 时间戳 - * @see #buildTime(LocalDateTime) - */ - public static final String buildTime() { - return buildTime(LocalDateTime.now()); + + private DateUtils() { + } + + /** + * @return 时间戳 + * + * @see #buildTime(LocalDateTime) + */ + public static final String buildTime() { + return DateUtils.buildTime(LocalDateTime.now()); } /** - * 生成时间戳 - * * @param localDateTime 日期时间 + * * @return 时间戳 */ public static final String buildTime(LocalDateTime localDateTime) { if (Objects.isNull(localDateTime)) { - return buildTime(); + return DateUtils.buildTime(); } return DateTimeStyle.YYYYMMDDHH24MMSS.getDateTimeFormatter().format(localDateTime); } @@ -179,6 +178,7 @@ public final class DateUtils { * 日期转化 * * @param date Date + * * @return LocalDate */ public static final LocalDate toLocalDate(Date date) { @@ -189,6 +189,7 @@ public final class DateUtils { * 日期转化 * * @param date Date + * * @return LocalTime */ public static final LocalTime toLocalTime(Date date) { @@ -199,6 +200,7 @@ public final class DateUtils { * 日期转化 * * @param date Date + * * @return LocalDateTime */ public static final LocalDateTime toLocalDateTime(Date date) { @@ -209,6 +211,7 @@ public final class DateUtils { * 转换毫秒 * * @param localDateTime LocalDateTime + * * @return 毫秒 */ public static final long toMilli(LocalDateTime localDateTime) { @@ -220,6 +223,7 @@ public final class DateUtils { * * @param localDate LocalDate * @param format 格式 + * * @return 日期字符串 */ public static String format(LocalDate localDate, DateStyle format) { @@ -231,6 +235,7 @@ public final class DateUtils { * * @param localTime LocalTime * @param format 格式 + * * @return 时间字符串 */ public static String format(LocalTime localTime, TimeStyle format) { @@ -242,6 +247,7 @@ public final class DateUtils { * * @param localDateTime LocalDateTime * @param format 格式 + * * @return 日期时间字符串 */ public static String format(LocalDateTime localDateTime, DateTimeStyle format) { diff --git a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/IdUtils.java b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/IdUtils.java index 4fd2cb1..0d9c98f 100644 --- a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/IdUtils.java +++ b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/IdUtils.java @@ -9,6 +9,10 @@ import java.time.LocalDateTime; */ public final class IdUtils { + /** + * 最大索引 + */ + private static final int MAX_INDEX = 999; /** * 当前索引 */ @@ -17,13 +21,12 @@ public final class IdUtils { * 当前终端索引 */ private static int clientIndex = 99999; - /** - * 最大索引 - */ - private static final int MAX_INDEX = 999; + + private IdUtils() { + } /** - * @return 消息ID + * @return ID */ public static final long buildId() { int index; diff --git a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java index 38a9dcc..5ae62bb 100644 --- a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java +++ b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java @@ -21,8 +21,6 @@ import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -35,18 +33,19 @@ import java.util.TimeZone; */ public final class JSONUtils { - private JSONUtils() { - } - /** * Mapper(线程安全) */ - private static final ObjectMapper MAPPER = buildMapper(); + private static final ObjectMapper MAPPER = JSONUtils.buildMapper(); + + private JSONUtils() { + } /** * Java转JSON * * @param object Java + * * @return JSON */ public static final String toJSON(Object object) { @@ -65,6 +64,7 @@ public final class JSONUtils { * * @param Java类型 * @param json JSON + * * @return Java */ public static final T toJava(String json) { @@ -85,6 +85,7 @@ public final class JSONUtils { * @param Java类型 * @param json JSON * @param clazz Java类型 + * * @return Java */ public static final T toJava(String json, Class clazz) { @@ -104,6 +105,7 @@ public final class JSONUtils { * @param Java类型 * @param json JSON * @param type Java类型 + * * @return Java */ public static final T toJava(String json, TypeReference type) { @@ -123,11 +125,12 @@ public final class JSONUtils { * @param K类型 * @param V类型 * @param json JSON + * * @return Map */ public static final Map toMap(String json) { if (Objects.isNull(json)) { - return new HashMap<>(); + return Map.of(); } try { return MAPPER.readValue(json, new TypeReference>() { @@ -142,11 +145,12 @@ public final class JSONUtils { * * @param 元素类型 * @param json JSON + * * @return List */ public static final List toList(String json) { if (Objects.isNull(json)) { - return new ArrayList<>(); + return List.of(); } try { return MAPPER.readValue(json, new TypeReference>() { @@ -159,14 +163,15 @@ public final class JSONUtils { /** * JSON转List * - * @param 元素类型 + * @param Java类型 * @param json JSON - * @param clazz 类型 + * @param clazz Java类型 + * * @return List */ public static final List toList(String json, Class clazz) { if (Objects.isNull(json)) { - return new ArrayList<>(); + return List.of(); } try { return MAPPER.readValue(json, new TypeReference>() { @@ -184,7 +189,7 @@ public final class JSONUtils { return mapper .setTimeZone(TimeZone.getDefault()) .setDateFormat(new SimpleDateFormat(DateUtils.DateTimeStyle.YYYY_MM_DD_HH24_MM_SS.getFormat())) - .registerModules(buildCustomModule(), buildJavaTimeModule()) + .registerModules(JSONUtils.buildCustomModule(), JSONUtils.buildJavaTimeModule()) .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS) .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) .setSerializationInclusion(Include.NON_NULL); @@ -196,7 +201,7 @@ public final class JSONUtils { private static final Module buildCustomModule() { final SimpleModule customModule = new SimpleModule("CustomModule"); // 注意不能转换Long类型数据:请求数据类型变化 -// customModule.addSerializer(Long.class, ToStringSerializer.instance); +// customModule.addSerializer(Long.class, ToStringSerializer.instance); return customModule; } diff --git a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/ListUtils.java b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/ListUtils.java index cbcaf68..11457ba 100644 --- a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/ListUtils.java +++ b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/ListUtils.java @@ -16,12 +16,11 @@ public final class ListUtils { } /** + * @param 集合类型 * @param list 集合 * @param function 执行函数 * - * @return 集合首个元素 - * - * @param 集合类型 + * @return 集合首个元素执行函数返回结果 */ public static final T getOnlyOne(List list, Function function) { if(list == null || list.isEmpty()) { diff --git a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/MapUtils.java b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/MapUtils.java index cbe92c7..835f30c 100644 --- a/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/MapUtils.java +++ b/taoyao-client-android/taoyao/boot/src/main/java/com/acgist/taoyao/boot/utils/MapUtils.java @@ -14,10 +14,9 @@ public final class MapUtils { } /** - * @param 参数泛型 - * + * @param 参数泛型 * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */ @@ -30,10 +29,9 @@ public final class MapUtils { } /** - * @param 参数泛型 - * - * @param body 消息主体 - * @param key 参数名称 + * @param 参数泛型 + * @param body 消息主体 + * @param key 参数名称 * @param defaultValue 参数默认值 * * @return 参数值 @@ -49,7 +47,7 @@ public final class MapUtils { /** * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */ @@ -62,17 +60,17 @@ public final class MapUtils { return null; } else if(object instanceof Long value) { return value; - } else if(object instanceof Integer value) { - return value.longValue(); } else if(object instanceof Double value) { return value.longValue(); + } else if(object instanceof Integer value) { + return value.longValue(); } return new BigDecimal(object.toString()).longValue(); } /** * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */ @@ -85,17 +83,17 @@ public final class MapUtils { return null; } else if(object instanceof Long value) { return value.doubleValue(); - } else if(object instanceof Integer value) { - return value.doubleValue(); } else if(object instanceof Double value) { return value; + } else if(object instanceof Integer value) { + return value.doubleValue(); } return new BigDecimal(object.toString()).doubleValue(); } /** * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */ @@ -108,17 +106,17 @@ public final class MapUtils { return null; } else if(object instanceof Long value) { return value.intValue(); - } else if(object instanceof Integer value) { - return value; } else if(object instanceof Double value) { return value.intValue(); + } else if(object instanceof Integer value) { + return value; } return new BigDecimal(object.toString()).intValue(); } /** * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */ @@ -136,10 +134,9 @@ public final class MapUtils { } /** - * @param 参数泛型 - * + * @param 参数泛型 * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */ diff --git a/taoyao-client-android/taoyao/client/src/main/AndroidManifest.xml b/taoyao-client-android/taoyao/client/src/main/AndroidManifest.xml index 74790f8..b5ae750 100644 --- a/taoyao-client-android/taoyao/client/src/main/AndroidManifest.xml +++ b/taoyao-client-android/taoyao/client/src/main/AndroidManifest.xml @@ -22,7 +22,6 @@ - @@ -32,13 +31,11 @@ android:exported="false" android:label="@string/title_activity_settings" android:theme="@style/Theme.Taoyao" /> - - + android:foregroundServiceType="camera|location|microphone|mediaProjection" /> - \ No newline at end of file + diff --git a/taoyao-client-android/taoyao/client/src/main/res/values/colors.xml b/taoyao-client-android/taoyao/client/src/main/res/values/colors.xml index cc3cb28..1e2df53 100644 --- a/taoyao-client-android/taoyao/client/src/main/res/values/colors.xml +++ b/taoyao-client-android/taoyao/client/src/main/res/values/colors.xml @@ -6,4 +6,4 @@ #FF3700B3 #FF03DAC5 #FF018786 - \ No newline at end of file + diff --git a/taoyao-client-android/taoyao/client/src/main/res/values/settings.xml b/taoyao-client-android/taoyao/client/src/main/res/values/settings.xml index e6c8214..00a86bf 100644 --- a/taoyao-client-android/taoyao/client/src/main/res/values/settings.xml +++ b/taoyao-client-android/taoyao/client/src/main/res/values/settings.xml @@ -48,4 +48,4 @@ 1 "'TAOYAO' yyyy-MM-dd HH:mm:ss" - \ No newline at end of file + diff --git a/taoyao-client-android/taoyao/client/src/main/res/values/strings.xml b/taoyao-client-android/taoyao/client/src/main/res/values/strings.xml index 1283510..a9b1eb7 100644 --- a/taoyao-client-android/taoyao/client/src/main/res/values/strings.xml +++ b/taoyao-client-android/taoyao/client/src/main/res/values/strings.xml @@ -14,4 +14,4 @@ 终端标识 信令帐号 信令密码 - \ No newline at end of file + diff --git a/taoyao-client-android/taoyao/client/src/main/res/values/themes.xml b/taoyao-client-android/taoyao/client/src/main/res/values/themes.xml index 4f0c360..80637d0 100644 --- a/taoyao-client-android/taoyao/client/src/main/res/values/themes.xml +++ b/taoyao-client-android/taoyao/client/src/main/res/values/themes.xml @@ -11,4 +11,4 @@ ?attr/colorPrimaryVariant - \ No newline at end of file + diff --git a/taoyao-client-android/taoyao/client/src/main/res/xml/backup_rules.xml b/taoyao-client-android/taoyao/client/src/main/res/xml/backup_rules.xml index 92b352b..0729482 100644 --- a/taoyao-client-android/taoyao/client/src/main/res/xml/backup_rules.xml +++ b/taoyao-client-android/taoyao/client/src/main/res/xml/backup_rules.xml @@ -1,2 +1,4 @@ - \ No newline at end of file + + + diff --git a/taoyao-client-android/taoyao/client/src/main/res/xml/data_extraction_rules.xml b/taoyao-client-android/taoyao/client/src/main/res/xml/data_extraction_rules.xml index e46addb..f8cf996 100644 --- a/taoyao-client-android/taoyao/client/src/main/res/xml/data_extraction_rules.xml +++ b/taoyao-client-android/taoyao/client/src/main/res/xml/data_extraction_rules.xml @@ -1,4 +1,4 @@ - \ No newline at end of file + diff --git a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Header.java b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Header.java index 9c3e681..c1cbf90 100644 --- a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Header.java +++ b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Header.java @@ -20,7 +20,7 @@ import lombok.Setter; @Builder @NoArgsConstructor @AllArgsConstructor -public class Header implements Serializable { +public class Header implements Cloneable, Serializable { private static final long serialVersionUID = 1L; diff --git a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Message.java b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Message.java index 89a4022..6caa3af 100644 --- a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Message.java +++ b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Message.java @@ -1,7 +1,6 @@ package com.acgist.taoyao.boot.model; import java.io.Serializable; -import java.util.Map; import org.apache.commons.lang3.StringUtils; @@ -62,43 +61,17 @@ public class Message implements Cloneable, Serializable { } public Message(String code, String message, Header header, Object body) { - this.code = code; + this.code = code; this.message = message; - this.header = header; - this.body = body; + this.header = header; + this.body = body; } - /** - * @param code 状态编码 - */ - public void setCode(String code) { - this.code = code; - } - - /** - * @param messageCode 状态编码 - */ - public void setCode(MessageCode messageCode) { - this.setCode(messageCode, null); - } - - /** - * @param messageCode 状态编码 - * @param message 状态描述 - * - * @return this - */ - public Message setCode(MessageCode messageCode, String message) { - this.code = messageCode.getCode(); - this.message = StringUtils.isEmpty(message) ? messageCode.getMessage() : message; - return this; - } - /** * @return 成功消息 */ public static final Message success() { - return success(null); + return Message.success(null); } /** @@ -117,7 +90,7 @@ public class Message implements Cloneable, Serializable { * @return 失败消息 */ public static final Message fail() { - return fail(null, null, null); + return Message.fail(null, null, null); } /** @@ -126,7 +99,7 @@ public class Message implements Cloneable, Serializable { * @return 失败消息 */ public static final Message fail(MessageCode messageCode) { - return fail(messageCode, null, null); + return Message.fail(messageCode, null, null); } /** @@ -136,7 +109,7 @@ public class Message implements Cloneable, Serializable { * @return 失败消息 */ public static final Message fail(MessageCode messageCode, Object body) { - return fail(messageCode, null, body); + return Message.fail(messageCode, null, body); } /** @@ -145,7 +118,7 @@ public class Message implements Cloneable, Serializable { * @return 失败消息 */ public static final Message fail(String message) { - return fail(null, message, null); + return Message.fail(null, message, null); } /** @@ -155,7 +128,7 @@ public class Message implements Cloneable, Serializable { * @return 失败消息 */ public static final Message fail(String message, Object body) { - return fail(null, message, body); + return Message.fail(null, message, body); } /** @@ -165,7 +138,7 @@ public class Message implements Cloneable, Serializable { * @return 失败消息 */ public static final Message fail(MessageCode messageCode, String message) { - return fail(messageCode, message, null); + return Message.fail(messageCode, message, null); } /** @@ -186,6 +159,25 @@ public class Message implements Cloneable, Serializable { public Message clone() { return new Message(this.code, this.message, this.header.clone(), this.body); } + + /** + * @param messageCode 状态编码 + */ + public void setCode(MessageCode messageCode) { + this.setCode(messageCode, null); + } + + /** + * @param messageCode 状态编码 + * @param message 状态描述 + * + * @return this + */ + public Message setCode(MessageCode messageCode, String message) { + this.code = messageCode.getCode(); + this.message = StringUtils.isEmpty(message) ? messageCode.getMessage() : message; + return this; + } /** * 克隆消息排除消息主体 @@ -197,19 +189,25 @@ public class Message implements Cloneable, Serializable { } /** - * @return Map消息主体 + * @return 消息主体 */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - public Map body() { - if(this.body instanceof Map map) { - return map; - } else if(this.body == null) { - return Map.of(); - } else { - throw MessageCodeException.of("信令主体类型错误:" + this.body); - } + @SuppressWarnings("unchecked") + public T body() { + return (T) this.body; } - + + /** + * 注解不会自动生成 + * + * @param code 状态编码 + */ + public void setCode(String code) { + this.code = code; + } + + /** + * @return 是否成功 + */ public boolean isSuccess() { return CODE_0000.equals(this.code); } diff --git a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java index 5f47d35..5d5f90c 100644 --- a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java +++ b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java @@ -41,7 +41,7 @@ public enum MessageCode { CODE_9999("9999", 500, "未知错误"); /** - * HTTP状态编码前缀 + * HTTP Status前缀 */ private static final String HTTP_STATUS = "3"; @@ -50,7 +50,7 @@ public enum MessageCode { */ private final String code; /** - * 状态数值 + * 状态数值(HTTP Status) */ private final Integer status; /** @@ -59,8 +59,8 @@ public enum MessageCode { private final String message; private MessageCode(String code, Integer status, String message) { - this.code = code; - this.status = status; + this.code = code; + this.status = status; this.message = message; } @@ -71,7 +71,7 @@ public enum MessageCode { */ public static final MessageCode of(String code) { final MessageCode[] values = MessageCode.values(); - for (MessageCode value : values) { + for (final MessageCode value : values) { if (value.code.equals(code)) { return value; } @@ -85,7 +85,7 @@ public enum MessageCode { * @return 状态编码 */ public static final MessageCode of(Integer status) { - return of(HTTP_STATUS + status); + return MessageCode.of(HTTP_STATUS + status); } } diff --git a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java index e0739fb..8b0fee7 100644 --- a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java +++ b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java @@ -16,9 +16,9 @@ import lombok.Getter; * @author acgist */ public final class DateUtils { - - private DateUtils() { - } + + private DateUtils() { + } /** * 日期 @@ -26,7 +26,7 @@ public final class DateUtils { * @author acgist */ @Getter - public static enum DateStyle { + public enum DateStyle { YYMMDD("yyMMdd"), YYYYMMDD("yyyyMMdd"), @@ -48,56 +48,47 @@ public final class DateUtils { } } - - /** - * 时间 - * - * @author acgist - */ - @Getter - public static enum TimeStyle { + + /** + * 时间 + * + * @author acgist + */ + @Getter + public enum TimeStyle { - HH24("HH"), - HH24MM("HHmm"), - HH24_MM("HH:mm"), - HH24MMSS("HHmmss"), - HH24_MM_SS("HH:mm:ss"), - HH24MMSSSSS("HHmmssSSS"), - HH24_MM_SS_SSS("HH:mm:ss.SSS"); + HH24("HH"), + HH24MM("HHmm"), + HH24_MM("HH:mm"), + HH24MMSS("HHmmss"), + HH24_MM_SS("HH:mm:ss"), + HH24MMSSSSS("HHmmssSSS"), + HH24_MM_SS_SSS("HH:mm:ss.SSS"); - /** - * 格式 - */ - private final String format; - /** - * 格式工具 - */ - private final DateTimeFormatter dateTimeFormatter; + /** + * 格式 + */ + private final String format; + /** + * 格式工具 + */ + private final DateTimeFormatter dateTimeFormatter; - private TimeStyle(String format) { - this.format = format; - this.dateTimeFormatter = DateTimeFormatter.ofPattern(format); - } + private TimeStyle(String format) { + this.format = format; + this.dateTimeFormatter = DateTimeFormatter.ofPattern(format); + } - } - + } + /** * 日期时间 * * @author acgist */ @Getter - public static enum DateTimeStyle { + public enum DateTimeStyle { - // YYYY - YYYYMMDD_HH24_MM("yyyyMMdd HH:mm"), - YYYY_MM_DD_HH24_MM("yyyy-MM-dd HH:mm"), - YYYYMMDDHH24MMSS("yyyyMMddHHmmss"), - YYYYMMDDHH24MMSSSSS("yyyyMMddHHmmssSSS"), - YYYYMMDD_HH24_MM_SS("yyyyMMdd HH:mm:ss"), - YYYYMMDD_HH24_MM_SS_SSS("yyyyMMdd HH:mm:ss.SSS"), - YYYY_MM_DD_HH24_MM_SS("yyyy-MM-dd HH:mm:ss"), - YYYY_MM_DD_HH24_MM_SS_SSS("yyyy-MM-dd HH:mm:ss.SSS"), // YY YYMMDD_HH24_MM("yyMMdd HH:mm"), YY_MM_DD_HH24_MM("yy-MM-dd HH:mm"), @@ -107,6 +98,15 @@ public final class DateUtils { YYMMDD_HH24_MM_SS_SSS("yyMMdd HH:mm:ss.SSS"), YY_MM_DD_HH24_MM_SS("yy-MM-dd HH:mm:ss"), YY_MM_DD_HH24_MM_SS_SSS("yy-MM-dd HH:mm:ss.SSS"), + // YYYY + YYYYMMDD_HH24_MM("yyyyMMdd HH:mm"), + YYYY_MM_DD_HH24_MM("yyyy-MM-dd HH:mm"), + YYYYMMDDHH24MMSS("yyyyMMddHHmmss"), + YYYYMMDDHH24MMSSSSS("yyyyMMddHHmmssSSS"), + YYYYMMDD_HH24_MM_SS("yyyyMMdd HH:mm:ss"), + YYYYMMDD_HH24_MM_SS_SSS("yyyyMMdd HH:mm:ss.SSS"), + YYYY_MM_DD_HH24_MM_SS("yyyy-MM-dd HH:mm:ss"), + YYYY_MM_DD_HH24_MM_SS_SSS("yyyy-MM-dd HH:mm:ss.SSS"), // ISO YY_MM_DD_HH24_MM_SS_ISO("yy-MM-dd'T'HH:mm:ss"), YY_MM_DD_HH24_MM_SS_SSS_ISO("yy-MM-dd'T'HH:mm:ss.SSS"), @@ -134,109 +134,105 @@ public final class DateUtils { } - /** - * 生成时间戳 - * - * @return 时间戳 - * - * @see #buildTime(LocalDateTime) - */ - public static final String buildTime() { - return buildTime(LocalDateTime.now()); - } + /** + * @return 时间戳 + * + * @see #buildTime(LocalDateTime) + */ + public static final String buildTime() { + return DateUtils.buildTime(LocalDateTime.now()); + } - /** - * 生成时间戳 - * - * @param localDateTime 日期时间 - * - * @return 时间戳 - */ - public static final String buildTime(LocalDateTime localDateTime) { - if (Objects.isNull(localDateTime)) { - return buildTime(); - } - return DateTimeStyle.YYYYMMDDHH24MMSS.getDateTimeFormatter().format(localDateTime); - } - - /** - * 日期转化 - * - * @param date Date - * - * @return LocalDate - */ - public static final LocalDate toLocalDate(Date date) { - return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); - } - - /** - * 日期转化 - * - * @param date Date - * - * @return LocalTime - */ - public static final LocalTime toLocalTime(Date date) { - return date.toInstant().atZone(ZoneId.systemDefault()).toLocalTime(); - } + /** + * @param localDateTime 日期时间 + * + * @return 时间戳 + */ + public static final String buildTime(LocalDateTime localDateTime) { + if (Objects.isNull(localDateTime)) { + return DateUtils.buildTime(); + } + return DateTimeStyle.YYYYMMDDHH24MMSS.getDateTimeFormatter().format(localDateTime); + } + + /** + * 日期转化 + * + * @param date Date + * + * @return LocalDate + */ + public static final LocalDate toLocalDate(Date date) { + return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + } + + /** + * 日期转化 + * + * @param date Date + * + * @return LocalTime + */ + public static final LocalTime toLocalTime(Date date) { + return date.toInstant().atZone(ZoneId.systemDefault()).toLocalTime(); + } - /** - * 日期转化 - * - * @param date Date - * - * @return LocalDateTime - */ - public static final LocalDateTime toLocalDateTime(Date date) { - return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); - } + /** + * 日期转化 + * + * @param date Date + * + * @return LocalDateTime + */ + public static final LocalDateTime toLocalDateTime(Date date) { + return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + } - /** - * 转换毫秒 - * - * @param localDateTime LocalDateTime - * - * @return 毫秒 - */ - public static final long toMilli(LocalDateTime localDateTime) { - return localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); - } - - /** - * 格式化日期 - * - * @param localDate LocalDate - * @param format 格式 - * - * @return 日期字符串 - */ - public static String format(LocalDate localDate, DateStyle format) { - return localDate != null && format != null ? format.getDateTimeFormatter().format(localDate) : null; - } - - /** - * 格式化时间 - * - * @param localTime LocalTime - * @param format 格式 - * - * @return 时间字符串 - */ - public static String format(LocalTime localTime, TimeStyle format) { - return localTime != null && format != null ? format.getDateTimeFormatter().format(localTime) : null; - } - - /** - * 格式化日期时间 - * - * @param localDateTime LocalDateTime - * @param format 格式 - * - * @return 日期时间字符串 - */ - public static String format(LocalDateTime localDateTime, DateTimeStyle format) { - return localDateTime != null && format != null ? format.getDateTimeFormatter().format(localDateTime) : null; - } + /** + * 转换毫秒 + * + * @param localDateTime LocalDateTime + * + * @return 毫秒 + */ + public static final long toMilli(LocalDateTime localDateTime) { + return localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); + } + + /** + * 格式化日期 + * + * @param localDate LocalDate + * @param format 格式 + * + * @return 日期字符串 + */ + public static String format(LocalDate localDate, DateStyle format) { + return localDate != null && format != null ? format.getDateTimeFormatter().format(localDate) : null; + } + + /** + * 格式化时间 + * + * @param localTime LocalTime + * @param format 格式 + * + * @return 时间字符串 + */ + public static String format(LocalTime localTime, TimeStyle format) { + return localTime != null && format != null ? format.getDateTimeFormatter().format(localTime) : null; + } + + /** + * 格式化日期时间 + * + * @param localDateTime LocalDateTime + * @param format 格式 + * + * @return 日期时间字符串 + */ + public static String format(LocalDateTime localDateTime, DateTimeStyle format) { + return localDateTime != null && format != null ? format.getDateTimeFormatter().format(localDateTime) : null; + } } diff --git a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java index e9a8b6e..ad99270 100644 --- a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java +++ b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java @@ -11,9 +11,6 @@ import java.util.Objects; import java.util.TimeZone; import com.acgist.taoyao.boot.model.MessageCodeException; -import com.acgist.taoyao.boot.utils.DateUtils.DateStyle; -import com.acgist.taoyao.boot.utils.DateUtils.DateTimeStyle; -import com.acgist.taoyao.boot.utils.DateUtils.TimeStyle; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; @@ -37,196 +34,190 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; */ public final class JSONUtils { - private JSONUtils() { - } + /** + * Mapper(线程安全) + */ + private static final ObjectMapper MAPPER = JSONUtils.buildMapper(); + + private JSONUtils() { + } + + /** + * Java转JSON + * + * @param object Java + * + * @return JSON + */ + public static final String toJSON(Object object) { + if (Objects.isNull(object)) { + return null; + } + try { + return MAPPER.writeValueAsString(object); + } catch (JsonProcessingException e) { + throw MessageCodeException.of(e, "Java转JSON失败:" + object); + } + } + + /** + * JSON转Java + * + * @param Java类型 + * @param json JSON + * + * @return Java + */ + public static final T toJava(String json) { + if (Objects.isNull(json)) { + return null; + } + try { + return MAPPER.readValue(json, new TypeReference() { + }); + } catch (IOException e) { + throw MessageCodeException.of(e, "JSON转Java失败:" + json); + } + } - /** - * Mapper(线程安全) - */ - private static final ObjectMapper MAPPER = buildMapper(); - - /** - * Java转JSON - * - * @param object Java - * - * @return JSON - */ - public static final String toJSON(Object object) { - if (Objects.isNull(object)) { - return null; - } - try { - return MAPPER.writeValueAsString(object); - } catch (JsonProcessingException e) { - throw MessageCodeException.of(e, "Java转JSON失败:" + object); - } - } - - /** - * JSON转Java - * - * @param Java类型 - * - * @param json JSON - * - * @return Java - */ - public static final T toJava(String json) { - if (Objects.isNull(json)) { - return null; - } - try { - return MAPPER.readValue(json, new TypeReference() { - }); - } catch (IOException e) { - throw MessageCodeException.of(e, "JSON转Java失败:" + json); - } - } + /** + * JSON转Java + * + * @param Java类型 + * @param json JSON + * @param clazz Java类型 + * + * @return Java + */ + public static final T toJava(String json, Class clazz) { + if (Objects.isNull(json) || Objects.isNull(clazz)) { + return null; + } + try { + return MAPPER.readValue(json, clazz); + } catch (IOException e) { + throw MessageCodeException.of(e, "JSON转Java失败:" + json); + } + } + + /** + * JSON转Java + * + * @param Java类型 + * @param json JSON + * @param type Java类型 + * + * @return Java + */ + public static final T toJava(String json, TypeReference type) { + if (Objects.isNull(json) || Objects.isNull(type)) { + return null; + } + try { + return MAPPER.readValue(json, type); + } catch (IOException e) { + throw MessageCodeException.of(e, "JSON转Java失败:" + json); + } + } - /** - * JSON转Java - * - * @param Java类型 - * - * @param json JSON - * @param clazz Java类型 - * - * @return Java - */ - public static final T toJava(String json, Class clazz) { - if (Objects.isNull(json) || Objects.isNull(clazz)) { - return null; - } - try { - return MAPPER.readValue(json, clazz); - } catch (IOException e) { - throw MessageCodeException.of(e, "JSON转Java失败:" + json); - } - } - - /** - * JSON转Java - * - * @param Java类型 - * - * @param json JSON - * @param type Java类型 - * - * @return Java - */ - public static final T toJava(String json, TypeReference type) { - if (Objects.isNull(json) || Objects.isNull(type)) { - return null; - } - try { - return MAPPER.readValue(json, type); - } catch (IOException e) { - throw MessageCodeException.of(e, "JSON转Java失败:" + json); - } - } + /** + * JSON转Map + * + * @param K类型 + * @param V类型 + * @param json JSON + * + * @return Map + */ + public static final Map toMap(String json) { + if (Objects.isNull(json)) { + return Map.of(); + } + try { + return MAPPER.readValue(json, new TypeReference>() { + }); + } catch (IOException e) { + throw MessageCodeException.of(e, "JSON转Map失败:" + json); + } + } - /** - * JSON转Map - * - * @param K类型 - * @param V类型 - * - * @param json JSON - * - * @return Map - */ - public static final Map toMap(String json) { - if (Objects.isNull(json)) { - return Map.of(); - } - try { - return MAPPER.readValue(json, new TypeReference>() { - }); - } catch (IOException e) { - throw MessageCodeException.of(e, "JSON转Map失败:" + json); - } - } - - /** - * JSON转List - * - * @param 元素类型 - * - * @param json JSON - * - * @return List - */ - public static final List toList(String json) { - if (Objects.isNull(json)) { - return List.of(); - } - try { - return MAPPER.readValue(json, new TypeReference>() { - }); - } catch (IOException e) { - throw MessageCodeException.of(e, "JSON转List失败:" + json); - } - } - - /** - * JSON转List - * - * @param 元素类型 - * - * @param json JSON - * @param clazz 类型 - * - * @return List - */ - public static final List toList(String json, Class clazz) { - if (Objects.isNull(json)) { - return List.of(); - } - try { - return MAPPER.readValue(json, new TypeReference>() { - }); - } catch (IOException e) { - throw MessageCodeException.of(e, "JSON转List失败:" + json); - } - } - - /** - * @return Mapper - */ - public static final ObjectMapper buildMapper() { - final ObjectMapper mapper = new ObjectMapper(); - return mapper - .setTimeZone(TimeZone.getDefault()) - .setDateFormat(new SimpleDateFormat(DateTimeStyle.YYYY_MM_DD_HH24_MM_SS.getFormat())) - .registerModules(buildCustomModule(), buildJavaTimeModule()) - .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS) - .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) - .setSerializationInclusion(Include.NON_NULL); - } - - /** - * @return Java类型转换模块 - */ - private static final Module buildCustomModule() { - final SimpleModule customModule = new SimpleModule("CustomModule"); - // 注意不能转换Long类型数据:请求数据类型变化 -// customModule.addSerializer(Long.class, ToStringSerializer.instance); - return customModule; - } - - /** - * @return Java时间类型模块 - */ - private static final JavaTimeModule buildJavaTimeModule() { - final JavaTimeModule javaTimeModule = new JavaTimeModule(); - javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(TimeStyle.HH24_MM_SS.getDateTimeFormatter())); - javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateStyle.YYYY_MM_DD.getDateTimeFormatter())); - javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeStyle.YYYY_MM_DD_HH24_MM_SS.getDateTimeFormatter())); - javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(TimeStyle.HH24_MM_SS.getDateTimeFormatter())); - javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateStyle.YYYY_MM_DD.getDateTimeFormatter())); - javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeStyle.YYYY_MM_DD_HH24_MM_SS.getDateTimeFormatter())); - return javaTimeModule; - } - + /** + * JSON转List + * + * @param 元素类型 + * @param json JSON + * + * @return List + */ + public static final List toList(String json) { + if (Objects.isNull(json)) { + return List.of(); + } + try { + return MAPPER.readValue(json, new TypeReference>() { + }); + } catch (IOException e) { + throw MessageCodeException.of(e, "JSON转List失败:" + json); + } + } + + /** + * JSON转List + * + * @param Java类型 + * @param json JSON + * @param clazz Java类型 + * + * @return List + */ + public static final List toList(String json, Class clazz) { + if (Objects.isNull(json)) { + return List.of(); + } + try { + return MAPPER.readValue(json, new TypeReference>() { + }); + } catch (IOException e) { + throw MessageCodeException.of(e, "JSON转List失败:" + json); + } + } + + /** + * @return Mapper + */ + public static final ObjectMapper buildMapper() { + final ObjectMapper mapper = new ObjectMapper(); + return mapper + .setTimeZone(TimeZone.getDefault()) + .setDateFormat(new SimpleDateFormat(DateUtils.DateTimeStyle.YYYY_MM_DD_HH24_MM_SS.getFormat())) + .registerModules(JSONUtils.buildCustomModule(), JSONUtils.buildJavaTimeModule()) + .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS) + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .setSerializationInclusion(Include.NON_NULL); + } + + /** + * @return Java类型转换模块 + */ + private static final Module buildCustomModule() { + final SimpleModule customModule = new SimpleModule("CustomModule"); + // 注意不能转换Long类型数据:请求数据类型变化 +// customModule.addSerializer(Long.class, ToStringSerializer.instance); + return customModule; + } + + /** + * @return Java时间类型模块 + */ + private static final JavaTimeModule buildJavaTimeModule() { + final JavaTimeModule javaTimeModule = new JavaTimeModule(); + javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateUtils.TimeStyle.HH24_MM_SS.getDateTimeFormatter())); + javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateUtils.DateStyle.YYYY_MM_DD.getDateTimeFormatter())); + javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateUtils.DateTimeStyle.YYYY_MM_DD_HH24_MM_SS.getDateTimeFormatter())); + javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateUtils.TimeStyle.HH24_MM_SS.getDateTimeFormatter())); + javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateUtils.DateStyle.YYYY_MM_DD.getDateTimeFormatter())); + javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateUtils.DateTimeStyle.YYYY_MM_DD_HH24_MM_SS.getDateTimeFormatter())); + return javaTimeModule; + } + } diff --git a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/MapUtils.java b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/MapUtils.java index cbe92c7..835f30c 100644 --- a/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/MapUtils.java +++ b/taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/MapUtils.java @@ -14,10 +14,9 @@ public final class MapUtils { } /** - * @param 参数泛型 - * + * @param 参数泛型 * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */ @@ -30,10 +29,9 @@ public final class MapUtils { } /** - * @param 参数泛型 - * - * @param body 消息主体 - * @param key 参数名称 + * @param 参数泛型 + * @param body 消息主体 + * @param key 参数名称 * @param defaultValue 参数默认值 * * @return 参数值 @@ -49,7 +47,7 @@ public final class MapUtils { /** * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */ @@ -62,17 +60,17 @@ public final class MapUtils { return null; } else if(object instanceof Long value) { return value; - } else if(object instanceof Integer value) { - return value.longValue(); } else if(object instanceof Double value) { return value.longValue(); + } else if(object instanceof Integer value) { + return value.longValue(); } return new BigDecimal(object.toString()).longValue(); } /** * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */ @@ -85,17 +83,17 @@ public final class MapUtils { return null; } else if(object instanceof Long value) { return value.doubleValue(); - } else if(object instanceof Integer value) { - return value.doubleValue(); } else if(object instanceof Double value) { return value; + } else if(object instanceof Integer value) { + return value.doubleValue(); } return new BigDecimal(object.toString()).doubleValue(); } /** * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */ @@ -108,17 +106,17 @@ public final class MapUtils { return null; } else if(object instanceof Long value) { return value.intValue(); - } else if(object instanceof Integer value) { - return value; } else if(object instanceof Double value) { return value.intValue(); + } else if(object instanceof Integer value) { + return value; } return new BigDecimal(object.toString()).intValue(); } /** * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */ @@ -136,10 +134,9 @@ public final class MapUtils { } /** - * @param 参数泛型 - * + * @param 参数泛型 * @param body 消息主体 - * @param key 参数名称 + * @param key 参数名称 * * @return 参数值 */