IStation.Application.SqiAirp/IStation.Application.SqiAirp.csproj
@@ -25,7 +25,7 @@ </ItemGroup> <ItemGroup> <PackageReference Include="Yw.Application.Core" Version="1.1.8" /> <PackageReference Include="Yw.Application.Core" Version="1.2.1" /> </ItemGroup> <ItemGroup> IStation.Entry.SqiAirp/IStation.Entry.SqiAirp.csproj
@@ -17,12 +17,12 @@ </ProjectExtensions> <ItemGroup> <PackageReference Include="Yw.Application.ArtImage.Core" Version="1.0.1" /> <PackageReference Include="Yw.Application.Assets.Core" Version="1.1.3" /> <PackageReference Include="Yw.Application.Basic.Core" Version="1.1.3" /> <PackageReference Include="Yw.Application.Dict.Core" Version="1.0.3" /> <PackageReference Include="Yw.Application.Monitor.Core" Version="1.4.1" /> <PackageReference Include="Yw.Application.Unit.Core" Version="1.0.4" /> <PackageReference Include="Yw.Application.ArtImage.Core" Version="1.0.6" /> <PackageReference Include="Yw.Application.Assets.Core" Version="1.1.5" /> <PackageReference Include="Yw.Application.Basic.Core" Version="1.1.4" /> <PackageReference Include="Yw.Application.Dict.Core" Version="1.0.4" /> <PackageReference Include="Yw.Application.Monitor.Core" Version="1.4.4" /> <PackageReference Include="Yw.Application.Unit.Core" Version="1.0.5" /> </ItemGroup> <ItemGroup> IStation.Entry.SqiAirp/IStation.Entry.SqiAirp.csproj.user
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <NameOfLastUsedPublishProfile>D:\WorkData\git\istation\sqi-airp\IStation.Entry.SqiAirp\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile> <NameOfLastUsedPublishProfile>D:\WorkData\git\istation\SqiAirp\IStation.Entry.SqiAirp\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile> </PropertyGroup> </Project> IStation.Entry.SqiAirp/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,7 +4,7 @@ --> <Project> <PropertyGroup> <_PublishTargetUrl>D:\WorkData\git\istation\sqi-airp\IStation.Entry.SqiAirp\bin\Release\net6.0\publish\</_PublishTargetUrl> <History>True|2023-10-07T04:25:54.8757007Z;True|2023-10-07T12:13:15.0880517+08:00;True|2023-10-07T12:12:39.1803333+08:00;True|2023-10-07T12:02:22.4047422+08:00;True|2023-09-26T15:07:05.5606369+08:00;True|2023-09-25T16:53:00.5107971+08:00;True|2023-09-25T16:49:56.9145285+08:00;True|2023-09-25T14:28:29.4414039+08:00;True|2023-09-25T11:19:00.8735501+08:00;True|2023-09-21T13:54:19.1780900+08:00;True|2023-09-21T13:16:00.2957740+08:00;True|2023-09-21T11:28:36.3091944+08:00;True|2023-09-21T11:18:20.1060798+08:00;True|2023-09-13T16:00:49.4080881+08:00;True|2023-09-11T13:53:38.8582724+08:00;True|2023-09-01T10:32:37.4923361+08:00;True|2023-08-30T16:52:43.1952609+08:00;True|2023-08-30T13:41:35.0430741+08:00;True|2023-08-28T14:53:24.2454140+08:00;True|2023-08-28T13:50:55.9362462+08:00;True|2023-08-28T10:00:17.0366755+08:00;True|2023-08-25T15:41:23.8727088+08:00;True|2023-08-24T16:47:54.1391198+08:00;True|2023-08-24T16:40:29.0473991+08:00;True|2023-08-22T15:02:27.5312918+08:00;True|2023-08-22T11:18:43.6918732+08:00;True|2023-08-21T15:10:42.9223597+08:00;True|2023-08-21T14:21:08.1887373+08:00;True|2023-08-21T11:56:07.5304445+08:00;True|2023-08-18T16:57:57.0506312+08:00;True|2023-08-18T13:51:54.9145260+08:00;True|2023-08-17T14:52:44.6557301+08:00;True|2023-08-17T14:15:19.8255432+08:00;True|2023-08-17T14:03:01.1586247+08:00;True|2023-08-17T11:46:51.6685579+08:00;True|2023-08-16T11:12:27.1684542+08:00;True|2023-08-15T16:59:09.4901359+08:00;True|2023-08-10T14:08:04.8032876+08:00;True|2023-08-10T13:55:01.9698355+08:00;True|2023-08-10T10:43:44.0440039+08:00;True|2023-08-10T10:12:03.9359243+08:00;True|2023-08-09T15:07:46.6906781+08:00;True|2023-08-09T13:12:06.7912004+08:00;True|2023-08-09T10:23:24.5864225+08:00;True|2023-08-08T17:38:10.4753030+08:00;True|2023-08-08T12:56:08.9783211+08:00;True|2023-08-06T09:18:33.3703637+08:00;True|2023-08-03T11:01:58.9814864+08:00;True|2023-08-03T10:26:08.4681748+08:00;True|2023-08-02T20:33:35.0425049+08:00;True|2023-08-02T17:31:18.4675932+08:00;True|2023-08-02T16:04:16.8761862+08:00;True|2023-08-02T13:48:38.9129192+08:00;True|2023-08-02T13:45:00.6546267+08:00;True|2023-08-01T15:26:25.0389689+08:00;True|2023-08-01T14:08:10.9121758+08:00;True|2023-07-31T13:35:10.1220213+08:00;True|2023-07-31T09:20:11.2607880+08:00;True|2023-07-28T13:44:35.4317136+08:00;True|2023-07-27T10:40:46.5453757+08:00;True|2023-07-27T09:16:57.7421426+08:00;True|2023-07-26T17:10:56.0976913+08:00;True|2023-07-26T12:01:33.5766311+08:00;True|2023-07-25T18:07:38.5726960+08:00;True|2023-07-25T17:42:39.3625959+08:00;True|2023-07-25T17:04:09.8723273+08:00;True|2023-07-25T16:28:14.1819137+08:00;True|2023-07-24T14:11:28.2113907+08:00;True|2023-07-24T12:05:09.0376032+08:00;True|2023-07-24T09:36:39.6541522+08:00;True|2023-07-19T12:25:56.9887829+08:00;True|2023-07-17T13:00:04.0123733+08:00;True|2023-07-13T12:13:14.7927242+08:00;True|2023-07-13T11:46:24.1368807+08:00;True|2023-07-13T10:24:33.1684712+08:00;True|2023-06-26T11:38:29.6648988+08:00;True|2023-06-21T16:17:40.6226554+08:00;True|2023-06-21T13:30:18.8163322+08:00;True|2023-06-21T13:19:43.9290154+08:00;True|2023-06-21T11:35:28.3376504+08:00;</History> <_PublishTargetUrl>D:\WorkData\git\istation\SqiAirp\IStation.Entry.SqiAirp\bin\Release\net6.0\publish\</_PublishTargetUrl> <History>True|2023-10-19T01:56:48.5150728Z;True|2023-10-18T14:59:01.0684811+08:00;True|2023-10-17T16:12:58.7322358+08:00;True|2023-10-07T12:25:54.8757007+08:00;True|2023-10-07T12:13:15.0880517+08:00;True|2023-10-07T12:12:39.1803333+08:00;True|2023-10-07T12:02:22.4047422+08:00;True|2023-09-26T15:07:05.5606369+08:00;True|2023-09-25T16:53:00.5107971+08:00;True|2023-09-25T16:49:56.9145285+08:00;True|2023-09-25T14:28:29.4414039+08:00;True|2023-09-25T11:19:00.8735501+08:00;True|2023-09-21T13:54:19.1780900+08:00;True|2023-09-21T13:16:00.2957740+08:00;True|2023-09-21T11:28:36.3091944+08:00;True|2023-09-21T11:18:20.1060798+08:00;True|2023-09-13T16:00:49.4080881+08:00;True|2023-09-11T13:53:38.8582724+08:00;True|2023-09-01T10:32:37.4923361+08:00;True|2023-08-30T16:52:43.1952609+08:00;True|2023-08-30T13:41:35.0430741+08:00;True|2023-08-28T14:53:24.2454140+08:00;True|2023-08-28T13:50:55.9362462+08:00;True|2023-08-28T10:00:17.0366755+08:00;True|2023-08-25T15:41:23.8727088+08:00;True|2023-08-24T16:47:54.1391198+08:00;True|2023-08-24T16:40:29.0473991+08:00;True|2023-08-22T15:02:27.5312918+08:00;True|2023-08-22T11:18:43.6918732+08:00;True|2023-08-21T15:10:42.9223597+08:00;True|2023-08-21T14:21:08.1887373+08:00;True|2023-08-21T11:56:07.5304445+08:00;True|2023-08-18T16:57:57.0506312+08:00;True|2023-08-18T13:51:54.9145260+08:00;True|2023-08-17T14:52:44.6557301+08:00;True|2023-08-17T14:15:19.8255432+08:00;True|2023-08-17T14:03:01.1586247+08:00;True|2023-08-17T11:46:51.6685579+08:00;True|2023-08-16T11:12:27.1684542+08:00;True|2023-08-15T16:59:09.4901359+08:00;True|2023-08-10T14:08:04.8032876+08:00;True|2023-08-10T13:55:01.9698355+08:00;True|2023-08-10T10:43:44.0440039+08:00;True|2023-08-10T10:12:03.9359243+08:00;True|2023-08-09T15:07:46.6906781+08:00;True|2023-08-09T13:12:06.7912004+08:00;True|2023-08-09T10:23:24.5864225+08:00;True|2023-08-08T17:38:10.4753030+08:00;True|2023-08-08T12:56:08.9783211+08:00;True|2023-08-06T09:18:33.3703637+08:00;True|2023-08-03T11:01:58.9814864+08:00;True|2023-08-03T10:26:08.4681748+08:00;True|2023-08-02T20:33:35.0425049+08:00;True|2023-08-02T17:31:18.4675932+08:00;True|2023-08-02T16:04:16.8761862+08:00;True|2023-08-02T13:48:38.9129192+08:00;True|2023-08-02T13:45:00.6546267+08:00;True|2023-08-01T15:26:25.0389689+08:00;True|2023-08-01T14:08:10.9121758+08:00;True|2023-07-31T13:35:10.1220213+08:00;True|2023-07-31T09:20:11.2607880+08:00;True|2023-07-28T13:44:35.4317136+08:00;True|2023-07-27T10:40:46.5453757+08:00;True|2023-07-27T09:16:57.7421426+08:00;True|2023-07-26T17:10:56.0976913+08:00;True|2023-07-26T12:01:33.5766311+08:00;True|2023-07-25T18:07:38.5726960+08:00;True|2023-07-25T17:42:39.3625959+08:00;True|2023-07-25T17:04:09.8723273+08:00;True|2023-07-25T16:28:14.1819137+08:00;True|2023-07-24T14:11:28.2113907+08:00;True|2023-07-24T12:05:09.0376032+08:00;True|2023-07-24T09:36:39.6541522+08:00;True|2023-07-19T12:25:56.9887829+08:00;True|2023-07-17T13:00:04.0123733+08:00;True|2023-07-13T12:13:14.7927242+08:00;True|2023-07-13T11:46:24.1368807+08:00;True|2023-07-13T10:24:33.1684712+08:00;True|2023-06-26T11:38:29.6648988+08:00;True|2023-06-21T16:17:40.6226554+08:00;True|2023-06-21T13:30:18.8163322+08:00;True|2023-06-21T13:19:43.9290154+08:00;True|2023-06-21T11:35:28.3376504+08:00;</History> </PropertyGroup> </Project> IStation.Service.SqiAirp/IStation.Service.SqiAirp.csproj
@@ -17,10 +17,10 @@ </ItemGroup> <ItemGroup> <PackageReference Include="Yw.Service.Assets.Core" Version="1.0.8" /> <PackageReference Include="Yw.Service.Dict.Core" Version="1.0.3" /> <PackageReference Include="Yw.Service.Monitor.Core" Version="1.2.5" /> <PackageReference Include="Yw.Service.Unit.Core" Version="1.0.3" /> <PackageReference Include="Yw.Service.Assets.Core" Version="1.1.0" /> <PackageReference Include="Yw.Service.Dict.Core" Version="1.0.4" /> <PackageReference Include="Yw.Service.Monitor.Core" Version="1.2.8" /> <PackageReference Include="Yw.Service.Unit.Core" Version="1.0.4" /> </ItemGroup> <ItemGroup> IStation.WebApi.SqiAirp/Converters/DateTimeNullableJsonConverter.cs
@@ -13,7 +13,12 @@ /// </summary> public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { return string.IsNullOrEmpty(reader.GetString()) ? default(DateTime?) : DateTime.Parse(reader.GetString()); var msg = reader.GetString(); if (string.IsNullOrEmpty(msg)) { return default; } return DateTime.Parse(msg); } /// <summary> @@ -23,5 +28,6 @@ { writer.WriteStringValue(value?.ToString("yyyy-MM-dd HH:mm:ss")); } } } IStation.WebApi.SqiAirp/Converters/LongJsonConverter.cs
@@ -17,7 +17,12 @@ { return reader.GetInt64(); } return long.Parse(reader.GetString()); var msg = reader.GetString(); if (string.IsNullOrEmpty(msg)) { return default; } return long.Parse(msg); } /// <summary> IStation.WebApi.SqiAirp/Converters/LongNullableJsonConverter.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ using System.Text.Json; using System.Text.Json.Serialization; namespace IStation.WebApi { /// <summary> /// /// </summary> public class LongNullableJsonConverter : JsonConverter<long?> { /// <summary> /// /// </summary> public override long? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType == JsonTokenType.Number) { return reader.GetInt64(); } var msg = reader.GetString(); if (string.IsNullOrEmpty(msg)) { return default; } return long.Parse(msg); } /// <summary> /// /// </summary> public override void Write(Utf8JsonWriter writer, long? value, JsonSerializerOptions options) { writer.WriteStringValue(value?.ToString()); } } } IStation.WebApi.SqiAirp/GlobalUsings.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1 @@ global using Yw; IStation.WebApi.SqiAirp/Result/XnRestfulResult.cs
@@ -13,7 +13,12 @@ /// <summary> /// ç¶æç /// </summary> public XnRestfulResultCode Code { get; set; } public int Code { get; set; } /// <summary> /// é误ç /// </summary> public object Error { get; set; } /// <summary> /// éè¯¯ä¿¡æ¯ IStation.WebApi.SqiAirp/Result/XnRestfulResultCode.cs
ÎļþÒÑɾ³ý IStation.WebApi.SqiAirp/Result/XnRestfulResultProvider.cs
@@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc.Filters; using System.Net; using Yw.Untity; using Yw.Application; namespace IStation.WebApi { @@ -23,16 +24,57 @@ public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata) { // è§£æå¼å¸¸ä¿¡æ¯ var exceptionMetadata = UnifyContext.GetExceptionMetadata(context); //var exceptionMetadata = UnifyContext.GetExceptionMetadata(context); return new JsonResult(new XnRestfulResult<object> XnRestfulResult<object> result = null; //furionå¼å¸¸ if (context.Exception is AppFriendlyException friendException) { Code = XnRestfulResultCode.Error, Message = exceptionMetadata.Errors, Data = exceptionMetadata.StatusCode, Extras = UnifyContext.Take(), Timestamp = DateTime.Now }); result = new XnRestfulResult<object> { Code = (int)eResultCode.Alert, Error = friendException.ErrorCode, Message = friendException.ErrorMessage, Data = null, Extras = UnifyContext.Take(), Timestamp = DateTime.Now }; } //apiå¼å¸¸ else if (context.Exception is ApiException apiException) { result = new XnRestfulResult<object> { Code = apiException.ResultCode, Error = apiException.ErrorCode, Message = apiException.ErrorMsg, Data = apiException.LogicData, Extras = UnifyContext.Take(), Timestamp = DateTime.Now }; } else { result = new XnRestfulResult<object> { Code = (int)eResultCode.Error, Error = "ç³»ç»å¼å¸¸", Message = context.Exception.StackTrace, Data = null, Extras = UnifyContext.Take(), Timestamp = DateTime.Now }; } if (result.Code == (int)eResultCode.Error) { LogHelper.Error($"é误ç ï¼{result.Error}ï¼é误信æ¯ï¼{result.Message}"); } return new JsonResult(result); } /// <summary> @@ -59,7 +101,8 @@ return new JsonResult(new XnRestfulResult<object> { Code = XnRestfulResultCode.Success, Code = (int)eResultCode.Success, Error = null, Message = "è¯·æ±æå", Data = data, Extras = UnifyContext.Take(), @@ -74,8 +117,9 @@ { return new JsonResult(new XnRestfulResult<object> { Code = XnRestfulResultCode.Prompt, Message = metadata.ValidationResult, Code = (int)eResultCode.Prompt, Error = ErrorCodes.V001.ToString(), Message = metadata.Message, Data = null, Extras = UnifyContext.Take(), Timestamp = DateTime.Now @@ -94,9 +138,10 @@ { await context.Response.WriteAsJsonAsync(new XnRestfulResult<object> { Code = XnRestfulResultCode.Alert, Message = EnumUtil.GetDescription((HttpStatusCode)statusCode), Data = statusCode, Code = (int)eResultCode.Confirm, Error = ErrorCodes.A099.ToString(), Message = "æééªè¯å¤±è´¥", Data = null, Extras = UnifyContext.Take(), Timestamp = DateTime.Now }); IStation.WebApi.SqiAirp/Startup.cs
@@ -64,10 +64,13 @@ { //è¿å屿§å¤§å°åé®é¢ options.JsonSerializerOptions.PropertyNamingPolicy = null; //è¿åæ¶é´æ ¼å¼ //æ¶é´æ ¼å¼å¤ç options.JsonSerializerOptions.Converters.Add(new DateTimeJsonConverter()); options.JsonSerializerOptions.Converters.Add(new DateTimeNullableJsonConverter()); //é¿æ´åæ ¼å¼å¤ç options.JsonSerializerOptions.Converters.Add(new LongJsonConverter()); options.JsonSerializerOptions.Converters.Add(new LongNullableJsonConverter()); //忽ç¥å¾ªç¯å¼ç¨ options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles; // ä» .NET 6æ¯æ });