From a6cfb49ba8fb52ff7c6eb1e52b678c9687d1063c Mon Sep 17 00:00:00 2001
From: wxd <123@qq.com>
Date: Fri, 12 Apr 2024 15:32:34 +0800
Subject: [PATCH] =?UTF-8?q?=E5=85=A8=E5=B1=80=E9=85=8D=E7=BD=AE=E6=97=A5?=
=?UTF-8?q?=E6=9C=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Filter/JsonTimeSpanConverter.cs | 24 +++++++++++++++
.../PeisHttpApiHostModule.cs | 30 ++++++++++++++++++-
2 files changed, 53 insertions(+), 1 deletion(-)
create mode 100644 src/Shentun.Peis.HttpApi.Host/Filter/JsonTimeSpanConverter.cs
diff --git a/src/Shentun.Peis.HttpApi.Host/Filter/JsonTimeSpanConverter.cs b/src/Shentun.Peis.HttpApi.Host/Filter/JsonTimeSpanConverter.cs
new file mode 100644
index 0000000..900df86
--- /dev/null
+++ b/src/Shentun.Peis.HttpApi.Host/Filter/JsonTimeSpanConverter.cs
@@ -0,0 +1,24 @@
+using System.Text.Json;
+using System;
+using System.Text.Json.Serialization;
+
+namespace Shentun.Peis.Filter
+{
+ ///
+ /// 转换时间
+ ///
+ public class JsonTimeSpanConverter : JsonConverter
+ {
+ public override TimeSpan Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ {
+ var value = reader.GetString();
+ return TimeSpan.TryParse(value, out var timeSpan) ? timeSpan : new TimeSpan();
+ }
+
+ public override void Write(Utf8JsonWriter writer, TimeSpan value, JsonSerializerOptions options)
+ {
+ var timeSpanString = value.ToString();
+ writer.WriteStringValue(timeSpanString);
+ }
+ }
+}
diff --git a/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs b/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs
index 4a698ce..aaf9bdb 100644
--- a/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs
+++ b/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs
@@ -52,6 +52,9 @@ using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Http;
using Shentun.Peis.Filter;
using Shentun.Peis.VirtualPath;
+using System.Text.Encodings.Web;
+using System.Text.Unicode;
+using Volo.Abp.Json;
namespace Shentun.Peis;
[DependsOn(
@@ -104,7 +107,7 @@ public class PeisHttpApiHostModule : AbpModule
ConfigureCors(context, configuration);
ConfigureSwaggerServices(context, configuration);
-
+ ConfigureJsonOptions(); //全局配置api返回值中的日期默认格式
//密码策略配置
context.Services.Configure(opt =>
@@ -178,6 +181,31 @@ public class PeisHttpApiHostModule : AbpModule
}
+ ///
+ /// 全局转换日期格式
+ ///
+ private void ConfigureJsonOptions()
+ {
+ //context.Services.AddControllers().AddJsonOptions(options =>
+ //{
+ // options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
+ // options.JsonSerializerOptions.PropertyNamingPolicy = null;
+ //});
+ Configure(x =>
+ {
+ x.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
+ x.JsonSerializerOptions.PropertyNamingPolicy = null;
+ x.JsonSerializerOptions.Converters.Add(new JsonTimeSpanConverter());
+ });
+
+ Configure(x =>
+ {
+ x.DefaultDateTimeFormat = "yyyy-MM-dd HH:mm:ss";
+ });
+ }
+
+
+
private void ConfigureAuthentication(ServiceConfigurationContext context)
{
context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme);