list = new ArrayList<>();
+ list.add(head);
+ CollUtil.addAll(list, tail);
+ return list;
+ }
+
}
\ No newline at end of file
diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/LocalDateTimeUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/LocalDateTimeUtils.java
index 34e4d85f2f..b2fd55f63a 100644
--- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/LocalDateTimeUtils.java
+++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/LocalDateTimeUtils.java
@@ -236,6 +236,23 @@ public class LocalDateTimeUtils {
return LocalDateTime.now().with(TemporalAdjusters.firstDayOfYear()).with(LocalTime.MIN);
}
+ /**
+ * 获取最近 N 天的 0 点时刻序列(升序,含今天)
+ *
+ * 例:getLatestDays(3) 返回 [前天 00:00, 昨天 00:00, 今天 00:00]
+ *
+ * @param days 天数(含今天)
+ * @return 升序的 LocalDateTime 列表
+ */
+ public static List getLatestDays(int days) {
+ LocalDateTime today = getToday();
+ List dates = new ArrayList<>(days);
+ for (int i = days - 1; i >= 0; i--) {
+ dates.add(today.minusDays(i));
+ }
+ return dates;
+ }
+
public static List getDateRangeList(LocalDateTime startTime,
LocalDateTime endTime,
Integer interval) {
diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java
index d27498185b..fe348b64bf 100644
--- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java
+++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java
@@ -200,4 +200,14 @@ public class HttpUtils {
}
}
+ /**
+ * WebSocket URL 切换成 HTTP URL:ws:// → http://;wss:// → https://;其它格式原样保留
+ *
+ * @param url 原始 URL
+ * @return 切换协议后的 URL
+ */
+ public static String wsUrlToHttp(String url) {
+ return StrUtil.startWithIgnoreCase(url, "ws") ? "http" + url.substring(2) : url;
+ }
+
}
diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java
index ac42e3ec8d..6bb1608d8a 100644
--- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java
+++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java
@@ -22,6 +22,7 @@ import java.lang.reflect.Type;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
/**
* JSON 工具类
@@ -173,6 +174,23 @@ public class JsonUtils {
}
}
+ /**
+ * 解析 JSON 字符串成 Map,空字符串或解析失败返回 null
+ *
+ * @param text JSON 字符串
+ * @return Map 对象
+ */
+ public static Map parseMap(String text) {
+ if (StrUtil.isEmpty(text)) {
+ return null;
+ }
+ try {
+ return objectMapper.readValue(text, new TypeReference