diff --git a/server/HoneyBox/src/HoneyBox.Admin.Business/Extensions/FlexibleDateTimeConverter.cs b/server/HoneyBox/src/HoneyBox.Admin.Business/Extensions/FlexibleDateTimeConverter.cs
new file mode 100644
index 00000000..2a8ff9c7
--- /dev/null
+++ b/server/HoneyBox/src/HoneyBox.Admin.Business/Extensions/FlexibleDateTimeConverter.cs
@@ -0,0 +1,124 @@
+using System.Globalization;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace HoneyBox.Admin.Business.Extensions;
+
+///
+/// 灵活的日期时间 JSON 转换器
+/// 支持多种日期格式:ISO 8601、"yyyy-MM-dd HH:mm:ss"、"yyyy-MM-dd HH:mm" 等
+///
+public class FlexibleDateTimeConverter : JsonConverter
+{
+ private static readonly string[] DateFormats = new[]
+ {
+ "yyyy-MM-dd HH:mm:ss",
+ "yyyy-MM-dd HH:mm",
+ "yyyy-MM-dd",
+ "yyyy/MM/dd HH:mm:ss",
+ "yyyy/MM/dd HH:mm",
+ "yyyy/MM/dd",
+ "MM/dd/yyyy HH:mm:ss",
+ "MM/dd/yyyy",
+ };
+
+ public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ {
+ if (reader.TokenType == JsonTokenType.Null)
+ {
+ return null;
+ }
+
+ if (reader.TokenType == JsonTokenType.String)
+ {
+ var dateString = reader.GetString();
+
+ if (string.IsNullOrWhiteSpace(dateString))
+ {
+ return null;
+ }
+
+ // 尝试标准 ISO 8601 格式
+ if (DateTime.TryParse(dateString, CultureInfo.InvariantCulture, DateTimeStyles.None, out var result))
+ {
+ return result;
+ }
+
+ // 尝试自定义格式
+ foreach (var format in DateFormats)
+ {
+ if (DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
+ {
+ return result;
+ }
+ }
+
+ throw new JsonException($"无法解析日期时间: {dateString}");
+ }
+
+ throw new JsonException($"意外的 JSON 令牌类型: {reader.TokenType}");
+ }
+
+ public override void Write(Utf8JsonWriter writer, DateTime? value, JsonSerializerOptions options)
+ {
+ if (value.HasValue)
+ {
+ writer.WriteStringValue(value.Value.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+ else
+ {
+ writer.WriteNullValue();
+ }
+ }
+}
+
+///
+/// 非空日期时间转换器
+///
+public class FlexibleDateTimeNonNullableConverter : JsonConverter
+{
+ private static readonly string[] DateFormats = new[]
+ {
+ "yyyy-MM-dd HH:mm:ss",
+ "yyyy-MM-dd HH:mm",
+ "yyyy-MM-dd",
+ "yyyy/MM/dd HH:mm:ss",
+ "yyyy/MM/dd HH:mm",
+ "yyyy/MM/dd",
+ };
+
+ public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ {
+ if (reader.TokenType == JsonTokenType.String)
+ {
+ var dateString = reader.GetString();
+
+ if (string.IsNullOrWhiteSpace(dateString))
+ {
+ return default;
+ }
+
+ if (DateTime.TryParse(dateString, CultureInfo.InvariantCulture, DateTimeStyles.None, out var result))
+ {
+ return result;
+ }
+
+ foreach (var format in DateFormats)
+ {
+ if (DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
+ {
+ return result;
+ }
+ }
+
+ throw new JsonException($"无法解析日期时间: {dateString}");
+ }
+
+ throw new JsonException($"意外的 JSON 令牌类型: {reader.TokenType}");
+ }
+
+ public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
+ {
+ writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+}
diff --git a/server/HoneyBox/src/HoneyBox.Admin.Business/Models/Goods/GoodsModels.cs b/server/HoneyBox/src/HoneyBox.Admin.Business/Models/Goods/GoodsModels.cs
index 02e20e94..4f59aeb3 100644
--- a/server/HoneyBox/src/HoneyBox.Admin.Business/Models/Goods/GoodsModels.cs
+++ b/server/HoneyBox/src/HoneyBox.Admin.Business/Models/Goods/GoodsModels.cs
@@ -1,4 +1,6 @@
using HoneyBox.Admin.Business.Models;
+using HoneyBox.Admin.Business.Extensions;
+using System.Text.Json.Serialization;
namespace HoneyBox.Admin.Business.Models.Goods;
@@ -103,16 +105,19 @@ public class GoodsCreateRequest
///
/// 福利屋开始时间
///
+ [JsonConverter(typeof(FlexibleDateTimeConverter))]
public DateTime? FlwStartTime { get; set; }
///
/// 福利屋结束时间
///
+ [JsonConverter(typeof(FlexibleDateTimeConverter))]
public DateTime? FlwEndTime { get; set; }
///
/// 开放时间
///
+ [JsonConverter(typeof(FlexibleDateTimeConverter))]
public DateTime? OpenTime { get; set; }
///
diff --git a/server/HoneyBox/src/HoneyBox.Core/Services/WelfareService.cs b/server/HoneyBox/src/HoneyBox.Core/Services/WelfareService.cs
index 32dbbdcb..6a207742 100644
--- a/server/HoneyBox/src/HoneyBox.Core/Services/WelfareService.cs
+++ b/server/HoneyBox/src/HoneyBox.Core/Services/WelfareService.cs
@@ -597,6 +597,9 @@ public class WelfareService : IWelfareService
var now = DateTime.Now;
IQueryable query;
+ _logger.LogInformation("GetFuliwuListAsync: userId={UserId}, type={Type}, page={Page}, userTotalConsumption={Consumption}, now={Now}",
+ userId, type, page, userTotalConsumption, now);
+
if (type == 1)
{
// type=1 进行中:Status=1, IsOpen=0, 且开奖时间未到
@@ -623,6 +626,8 @@ public class WelfareService : IWelfareService
var total = await query.CountAsync();
var lastPage = (int)Math.Ceiling((double)total / paginate);
+ _logger.LogInformation("GetFuliwuListAsync: total={Total}, lastPage={LastPage}", total, lastPage);
+
// 分页查询
var goods = await query
.Skip((page - 1) * paginate)