From b15ba0723040b5e9a348662a09af824f2d5ae9e6 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 20 八月 2025 17:28:38 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityBackResult.cs | 78 +++++++++ FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/c.cs | 8 FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml | 12 + FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs | 23 ++ FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityFrontResult.cs | 50 +++-- FlexJobApi.Core/FlexJobApi.Core.xml | 180 ++++++++++++++++++---- FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityFrontOcrCommand.cs | 8 FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs | 84 +++++++-- FlexJobApi.Core/Utils/DateTimeUtils/DateTimeUtils.cs | 19 ++ 9 files changed, 369 insertions(+), 93 deletions(-) diff --git a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml index 563f50a..fe96076 100644 --- a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml +++ b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml @@ -216,9 +216,17 @@ <param name="cancellationToken"></param> <returns></returns> </member> - <member name="M:FlexJobApi.CommonServer.Application.OcrCommandHandler.Handle(FlexJobApi.Core.GetIdentityOcrCommand,System.Threading.CancellationToken)"> + <member name="M:FlexJobApi.CommonServer.Application.OcrCommandHandler.Handle(FlexJobApi.Core.GetIdentityFrontOcrCommand,System.Threading.CancellationToken)"> <summary> - 鏂囧瓧璇嗗埆韬唤璇� + 鏂囧瓧璇嗗埆韬唤璇佹闈� + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.CommonServer.Application.OcrCommandHandler.Handle(FlexJobApi.Core.GetIdentityBackOcrCommand,System.Threading.CancellationToken)"> + <summary> + 鏂囧瓧璇嗗埆韬唤璇佽儗闈� </summary> <param name="request"></param> <param name="cancellationToken"></param> diff --git a/FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs b/FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs index 095fd25..8843499 100644 --- a/FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs +++ b/FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs @@ -14,7 +14,8 @@ /// </summary> public class OcrCommandHandler : IRequestHandler<GetLicenseOcrCommand, GetLicenseOcrCommandResult>, - IRequestHandler<GetIdentityOcrCommand, GetIdentityOcrCommandResult> + IRequestHandler<GetIdentityFrontOcrCommand, GetIdentityFrontOcrCommandResult>, + IRequestHandler<GetIdentityBackOcrCommand, GetIdentityBackOcrCommandResult> { /// <summary> /// 鏂囧瓧璇嗗埆钀ヤ笟鎵х収 @@ -29,15 +30,27 @@ } /// <summary> - /// 鏂囧瓧璇嗗埆韬唤璇� + /// 鏂囧瓧璇嗗埆韬唤璇佹闈� /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - public async Task<GetIdentityOcrCommandResult> Handle(GetIdentityOcrCommand request, CancellationToken cancellationToken) + public async Task<GetIdentityFrontOcrCommandResult> Handle(GetIdentityFrontOcrCommand request, CancellationToken cancellationToken) { - var result = await request.Url.OcrBusinessLicense(request.Scene, request.IsOssUrl); - return result.Adapt<GetIdentityOcrCommandResult>(); + var result = await request.Url.OcrIdentityFront(request.Scene, request.IsOssUrl); + return result.Adapt<GetIdentityFrontOcrCommandResult>(); + } + + /// <summary> + /// 鏂囧瓧璇嗗埆韬唤璇佽儗闈� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetIdentityBackOcrCommandResult> Handle(GetIdentityBackOcrCommand request, CancellationToken cancellationToken) + { + var result = await request.Url.OcrIdentityBack(request.Scene, request.IsOssUrl); + return result.Adapt<GetIdentityBackOcrCommandResult>(); } } } diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index c388f15..bb2c542 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -4463,42 +4463,82 @@ 鏁版嵁搴撳璁℃棩蹇� </summary> </member> - <member name="T:FlexJobApi.Core.GetIdentityOcrCommand"> + <member name="T:FlexJobApi.Core.GetIdentityBackOcrCommand"> <summary> - 鏂囧瓧璇嗗埆韬唤璇� + 鏂囧瓧璇嗗埆韬唤璇佽儗闈� </summary> </member> - <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.Access"> + <member name="P:FlexJobApi.Core.GetIdentityBackOcrCommand.Access"> <summary> 閫氶亾 </summary> </member> - <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.Scene"> + <member name="P:FlexJobApi.Core.GetIdentityBackOcrCommand.Scene"> <summary> 鍦烘櫙 </summary> </member> - <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.Url"> + <member name="P:FlexJobApi.Core.GetIdentityBackOcrCommand.Url"> <summary> 閾炬帴鍦板潃 </summary> </member> - <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.IsOssUrl"> + <member name="P:FlexJobApi.Core.GetIdentityBackOcrCommand.IsOssUrl"> <summary> 鏄惁涓轰簯瀛樺偍鐩稿鍦板潃 </summary> </member> - <member name="T:FlexJobApi.Core.GetIdentityOcrCommandResult"> + <member name="T:FlexJobApi.Core.GetIdentityBackOcrCommandResult"> <summary> 鏂囧瓧璇嗗埆韬唤璇� </summary> </member> - <member name="P:FlexJobApi.Core.GetIdentityOcrCommandResult.Url"> + <member name="P:FlexJobApi.Core.GetIdentityBackOcrCommandResult.Url"> <summary> 鍦板潃 </summary> </member> - <member name="P:FlexJobApi.Core.GetIdentityOcrCommandResult.Model"> + <member name="P:FlexJobApi.Core.GetIdentityBackOcrCommandResult.Model"> + <summary> + 妯″瀷 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetIdentityFrontOcrCommand"> + <summary> + 鏂囧瓧璇嗗埆韬唤璇佹闈� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityFrontOcrCommand.Access"> + <summary> + 閫氶亾 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityFrontOcrCommand.Scene"> + <summary> + 鍦烘櫙 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityFrontOcrCommand.Url"> + <summary> + 閾炬帴鍦板潃 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityFrontOcrCommand.IsOssUrl"> + <summary> + 鏄惁涓轰簯瀛樺偍鐩稿鍦板潃 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetIdentityFrontOcrCommandResult"> + <summary> + 鏂囧瓧璇嗗埆韬唤璇� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityFrontOcrCommandResult.Url"> + <summary> + 鍦板潃 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityFrontOcrCommandResult.Model"> <summary> 妯″瀷 </summary> @@ -10947,79 +10987,135 @@ 缁忚惀鑼冨洿 </summary> </member> - <member name="T:FlexJobApi.Core.BaiduOcrIdentityResult"> + <member name="T:FlexJobApi.Core.BaiduOcrIdentityBackResult"> <summary> 鐧惧害鏂囧瓧璇嗗埆缁撴灉 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.Url"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityBackResult.Url"> <summary> 鍦板潃 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.Model"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityBackResult.Model"> <summary> 妯″瀷 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.ErrorCode"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityBackResult.ErrorCode"> <summary> 閿欒鐮� </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.ErrorMessage"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityBackResult.ErrorMessage"> <summary> 閿欒娑堟伅 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.WordsResult"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityBackResult.WordsResult"> <summary> 鏂囧瓧缁撴灉 </summary> </member> - <member name="T:FlexJobApi.Core.BaiduOcrIdentityResultModel"> + <member name="T:FlexJobApi.Core.BaiduOcrIdentityBackResultModel"> <summary> 鐧惧害鏂囧瓧璇嗗埆缁撴灉 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.EnterpriseName"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityBackResultModel.ExpiryDateText"> <summary> - 浼佷笟鍏ㄧО + 澶辨晥鏃ユ湡 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.SocietyCreditCode"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityBackResultModel.ExpiryDate"> <summary> - 缁熶竴绀句細淇$敤浠g爜 + 澶辨晥鏃ユ湡 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.LegalPerson"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityBackResultModel.IssueAuthority"> <summary> - 娉曚汉濮撳悕 + 绛惧彂鏈哄叧 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.EnterpriseType"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityBackResultModel.IssueDateText"> <summary> - 浼佷笟绫诲瀷 + 绛惧彂鏃ユ湡 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.RegisteredCapital"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityBackResultModel.IssueDate"> <summary> - 娉ㄥ唽璧勬湰 + 绛惧彂鏃ユ湡 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.EstablishmentDate"> + <member name="T:FlexJobApi.Core.BaiduOcrIdentityFrontResult"> <summary> - 鎴愮珛鏃ユ湡 + 鐧惧害鏂囧瓧璇嗗埆缁撴灉 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.Address"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResult.Url"> <summary> - 浼佷笟鍦板潃 + 鍦板潃 </summary> </member> - <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.MainBusiness"> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResult.Model"> <summary> - 缁忚惀鑼冨洿 + 妯″瀷 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResult.ErrorCode"> + <summary> + 閿欒鐮� + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResult.ErrorMessage"> + <summary> + 閿欒娑堟伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResult.WordsResult"> + <summary> + 鏂囧瓧缁撴灉 + </summary> + </member> + <member name="T:FlexJobApi.Core.BaiduOcrIdentityFrontResultModel"> + <summary> + 鐧惧害鏂囧瓧璇嗗埆缁撴灉 + </summary> + </member> + <!-- Badly formed XML comment ignored for member "P:FlexJobApi.Core.BaiduOcrIdentityFrontResultModel.Name" --> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResultModel.Identity"> + <summary> + 韬唤璇佸彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResultModel.GenderText"> + <summary> + 鎬у埆 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResultModel.Gender"> + <summary> + 鎬у埆 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResultModel.BirthdayText"> + <summary> + 鐢熸棩 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResultModel.Birthday"> + <summary> + 鐢熸棩 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResultModel.Nation"> + <summary> + 姘戞棌 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityFrontResultModel.Address"> + <summary> + 浣忓潃 </summary> </member> <member name="T:FlexJobApi.Core.BaiduOcrResultWord"> @@ -11075,9 +11171,17 @@ <param name="scene"></param> <param name="isOssUrl"></param> </member> - <member name="M:FlexJobApi.Core.BaiduOcrUtils.OcrIdentity(System.String,System.String,System.Boolean)"> + <member name="M:FlexJobApi.Core.BaiduOcrUtils.OcrIdentityFront(System.String,System.String,System.Boolean)"> <summary> - 钀ヤ笟鎵х収OCR + 韬唤璇佹闈CR + </summary> + <param name="url"></param> + <param name="scene"></param> + <param name="isOssUrl"></param> + </member> + <member name="M:FlexJobApi.Core.BaiduOcrUtils.OcrIdentityBack(System.String,System.String,System.Boolean)"> + <summary> + 韬唤璇佽儗闈CR </summary> <param name="url"></param> <param name="scene"></param> @@ -11166,6 +11270,14 @@ <param name="obj">瀵硅薄</param> <returns>鏃堕棿</returns> </member> + <member name="M:FlexJobApi.Core.DateTimeUtils.ToDateTime(System.Object,System.String)"> + <summary> + 杞椂闂� + </summary> + <param name="obj">瀵硅薄</param> + <param name="format"></param> + <returns>鏃堕棿</returns> + </member> <member name="M:FlexJobApi.Core.DateTimeUtils.ToDateTime``2(System.Collections.Generic.IDictionary{``0,``1},``0)"> <summary> 杞椂闂� diff --git a/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs b/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityFrontOcrCommand.cs similarity index 80% copy from FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs copy to FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityFrontOcrCommand.cs index c58ab07..bf0b829 100644 --- a/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs +++ b/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityFrontOcrCommand.cs @@ -8,10 +8,10 @@ namespace FlexJobApi.Core { /// <summary> - /// 鏂囧瓧璇嗗埆韬唤璇� + /// 鏂囧瓧璇嗗埆韬唤璇佹闈� /// </summary> [Resource([EnumResourceController.CommonServerOcrUtils], Method = EnumResourceMethod.Post)] - public class GetIdentityOcrCommand : IRequest<GetIdentityOcrCommandResult> + public class GetIdentityFrontOcrCommand : IRequest<GetIdentityFrontOcrCommandResult> { /// <summary> /// 閫氶亾 @@ -37,7 +37,7 @@ /// <summary> /// 鏂囧瓧璇嗗埆韬唤璇� /// </summary> - public class GetIdentityOcrCommandResult + public class GetIdentityFrontOcrCommandResult { /// <summary> /// 鍦板潃 @@ -47,6 +47,6 @@ /// <summary> /// 妯″瀷 /// </summary> - public BaiduOcrBusinessLicenseResultModel Model { get; set; } + public BaiduOcrIdentityFrontResultModel Model { get; set; } } } diff --git a/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs b/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/c.cs similarity index 80% rename from FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs rename to FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/c.cs index c58ab07..f55a6f8 100644 --- a/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs +++ b/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/c.cs @@ -8,10 +8,10 @@ namespace FlexJobApi.Core { /// <summary> - /// 鏂囧瓧璇嗗埆韬唤璇� + /// 鏂囧瓧璇嗗埆韬唤璇佽儗闈� /// </summary> [Resource([EnumResourceController.CommonServerOcrUtils], Method = EnumResourceMethod.Post)] - public class GetIdentityOcrCommand : IRequest<GetIdentityOcrCommandResult> + public class GetIdentityBackOcrCommand : IRequest<GetIdentityBackOcrCommandResult> { /// <summary> /// 閫氶亾 @@ -37,7 +37,7 @@ /// <summary> /// 鏂囧瓧璇嗗埆韬唤璇� /// </summary> - public class GetIdentityOcrCommandResult + public class GetIdentityBackOcrCommandResult { /// <summary> /// 鍦板潃 @@ -47,6 +47,6 @@ /// <summary> /// 妯″瀷 /// </summary> - public BaiduOcrBusinessLicenseResultModel Model { get; set; } + public BaiduOcrIdentityBackResultModel Model { get; set; } } } diff --git a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityBackResult.cs b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityBackResult.cs new file mode 100644 index 0000000..b8d9ec7 --- /dev/null +++ b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityBackResult.cs @@ -0,0 +1,78 @@ +锘縰sing Newtonsoft.Json; +using Swashbuckle.AspNetCore.Annotations; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鐧惧害鏂囧瓧璇嗗埆缁撴灉 + /// </summary> + public class BaiduOcrIdentityBackResult + { + /// <summary> + /// 鍦板潃 + /// </summary> + public string Url { get; set; } + + /// <summary> + /// 妯″瀷 + /// </summary> + public BaiduOcrIdentityBackResultModel Model { get; set; } + + /// <summary> + /// 閿欒鐮� + /// </summary> + [JsonProperty("error_code")] + public string ErrorCode { get; set; } + + /// <summary> + /// 閿欒娑堟伅 + /// </summary> + [JsonProperty("error_msg")] + public string ErrorMessage { get; set; } + + /// <summary> + /// 鏂囧瓧缁撴灉 + /// </summary> + [JsonProperty("words_result")] + public Dictionary<string, BaiduOcrResultWord> WordsResult { get; set; } + } + + /// <summary> + /// 鐧惧害鏂囧瓧璇嗗埆缁撴灉 + /// </summary> + public class BaiduOcrIdentityBackResultModel + { + /// <summary> + /// 澶辨晥鏃ユ湡 + /// </summary> + [JsonIgnore, SwaggerIgnore] + public string ExpiryDateText { get; set; } + + /// <summary> + /// 澶辨晥鏃ユ湡 + /// </summary> + public DateTime? ExpiryDate => ExpiryDateText?.ToDateTime("yyyyMMdd"); + + /// <summary> + /// 绛惧彂鏈哄叧 + /// </summary> + public string IssueAuthority { get; set; } + + /// <summary> + /// 绛惧彂鏃ユ湡 + /// </summary> + [JsonIgnore, SwaggerIgnore] + public string IssueDateText { get; set; } + + /// <summary> + /// 绛惧彂鏃ユ湡 + /// </summary> + public DateTime? IssueDate => IssueDateText?.ToDateTime("yyyyMMdd"); + } +} diff --git a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityResult.cs b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityFrontResult.cs similarity index 60% rename from FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityResult.cs rename to FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityFrontResult.cs index fc777d7..7fb57ee 100644 --- a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityResult.cs +++ b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityFrontResult.cs @@ -1,4 +1,5 @@ 锘縰sing Newtonsoft.Json; +using Swashbuckle.AspNetCore.Annotations; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; @@ -11,7 +12,7 @@ /// <summary> /// 鐧惧害鏂囧瓧璇嗗埆缁撴灉 /// </summary> - public class BaiduOcrIdentityResult + public class BaiduOcrIdentityFrontResult { /// <summary> /// 鍦板潃 @@ -21,7 +22,7 @@ /// <summary> /// 妯″瀷 /// </summary> - public BaiduOcrIdentityResultModel Model { get; set; } + public BaiduOcrIdentityFrontResultModel Model { get; set; } /// <summary> /// 閿欒鐮� @@ -45,46 +46,55 @@ /// <summary> /// 鐧惧害鏂囧瓧璇嗗埆缁撴灉 /// </summary> - public class BaiduOcrIdentityResultModel + public class BaiduOcrIdentityFrontResultModel { /// <summary> - /// 浼佷笟鍏ㄧО + /// <summary> + /// 濮撳悕 /// </summary> - public string EnterpriseName { get; set; } + public string Name { get; set; } /// <summary> - /// 缁熶竴绀句細淇$敤浠g爜 + /// 韬唤璇佸彿 /// </summary> - public string SocietyCreditCode { get; set; } + public string Identity { get; set; } /// <summary> - /// 娉曚汉濮撳悕 + /// 鎬у埆 /// </summary> - public string LegalPerson { get; set; } + [JsonIgnore, SwaggerIgnore] + public string GenderText { get; set; } /// <summary> - /// 浼佷笟绫诲瀷 + /// 鎬у埆 /// </summary> - public string EnterpriseType { get; set; } + public EnumUserGender? Gender => + GenderText == "鐢�" + ? EnumUserGender.Male + : GenderText == "濂�" + ? EnumUserGender.Female + : null; /// <summary> - /// 娉ㄥ唽璧勬湰 + /// 鐢熸棩 /// </summary> - public string RegisteredCapital { get; set; } + [JsonIgnore, SwaggerIgnore] + public string BirthdayText { get; set; } /// <summary> - /// 鎴愮珛鏃ユ湡 + /// 鐢熸棩 /// </summary> - public string EstablishmentDate { get; set; } + public DateTime? Birthday => BirthdayText?.ToDateTime("yyyyMMdd"); /// <summary> - /// 浼佷笟鍦板潃 + /// 姘戞棌 + /// </summary> + public string Nation { get; set; } + + /// <summary> + /// 浣忓潃 /// </summary> public string Address { get; set; } - /// <summary> - /// 缁忚惀鑼冨洿 - /// </summary> - public string MainBusiness { get; set; } } } diff --git a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs index 49bec7f..dfd7289 100644 --- a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs +++ b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs @@ -67,12 +67,12 @@ } /// <summary> - /// 钀ヤ笟鎵х収OCR + /// 韬唤璇佹闈CR /// </summary> /// <param name="url"></param> /// <param name="scene"></param> /// <param name="isOssUrl"></param> - public static async Task<BaiduOcrIdentityResultModel> OcrIdentity(this string url, string scene = null, bool isOssUrl = true) + public static async Task<BaiduOcrIdentityFrontResult> OcrIdentityFront(this string url, string scene = null, bool isOssUrl = true) { var options = App.GetOptions<BaiduOptions>(); var ocr = new Ocr(options.Ocr.Key, options.Ocr.Secret); @@ -82,33 +82,71 @@ { var downloadUrl = AliyunOSSUtils.GetUrl(url); var buffer = await App.GetRequiredService<IHttpRemoteService>().GetAsByteArrayAsync(downloadUrl); - value = ocr.Idcard(buffer, "1"); + value = ocr.Idcard(buffer, "front"); } else { var upload = AliyunOSSUtils.Upload(scene, url); url = upload.Url; - //value = ocr.Idcard(upload.Buffer); + value = ocr.Idcard(upload.Buffer, "front"); } - //var result = value.ToObject<BaiduOcrIdentityResult>(); - //result.Url = url; - //if (result.ErrorCode.IsNotNull()) - //{ - // return result; - //} - //result.Model = new BaiduOcrIdentityResultModel - //{ - // EnterpriseName = result.WordsResult["鍗曚綅鍚嶇О"].Words, - // SocietyCreditCode = result.WordsResult["绀句細淇$敤浠g爜"].Words, - // LegalPerson = result.WordsResult["娉曚汉"].Words, - // EnterpriseType = result.WordsResult["绫诲瀷"].Words, - // RegisteredCapital = result.WordsResult["娉ㄥ唽璧勬湰"].Words, - // EstablishmentDate = result.WordsResult["鎴愮珛鏃ユ湡"].Words, - // Address = result.WordsResult["鍦板潃"].Words, - // MainBusiness = result.WordsResult["缁忚惀鑼冨洿"].Words, - //}; - //return result; - throw new Exception(); + var result = value.ToObject<BaiduOcrIdentityFrontResult>(); + result.Url = url; + if (result.ErrorCode.IsNotNull()) + { + return result; + } + + result.Model = new BaiduOcrIdentityFrontResultModel + { + Address = result.WordsResult["浣忓潃"].Words, + Identity = result.WordsResult["鍏皯韬唤鍙风爜"].Words, + BirthdayText = result.WordsResult["鍑虹敓"].Words, + Name = result.WordsResult["濮撳悕"].Words, + GenderText = result.WordsResult["鎬у埆"].Words, + Nation = result.WordsResult["姘戞棌"].Words, + }; + return result; + } + + /// <summary> + /// 韬唤璇佽儗闈CR + /// </summary> + /// <param name="url"></param> + /// <param name="scene"></param> + /// <param name="isOssUrl"></param> + public static async Task<BaiduOcrIdentityBackResult> OcrIdentityBack(this string url, string scene = null, bool isOssUrl = true) + { + var options = App.GetOptions<BaiduOptions>(); + var ocr = new Ocr(options.Ocr.Key, options.Ocr.Secret); + ocr.Timeout = 60000; + JObject value; + if (isOssUrl) + { + var downloadUrl = AliyunOSSUtils.GetUrl(url); + var buffer = await App.GetRequiredService<IHttpRemoteService>().GetAsByteArrayAsync(downloadUrl); + value = ocr.Idcard(buffer, "back"); + } + else + { + var upload = AliyunOSSUtils.Upload(scene, url); + url = upload.Url; + value = ocr.Idcard(upload.Buffer, "back"); + } + var result = value.ToObject<BaiduOcrIdentityBackResult>(); + result.Url = url; + if (result.ErrorCode.IsNotNull()) + { + return result; + } + + result.Model = new BaiduOcrIdentityBackResultModel + { + ExpiryDateText = result.WordsResult["澶辨晥鏃ユ湡"].Words, + IssueAuthority = result.WordsResult["绛惧彂鏈哄叧"].Words, + IssueDateText = result.WordsResult["绛惧彂鏃ユ湡"].Words, + }; + return result; } } } diff --git a/FlexJobApi.Core/Utils/DateTimeUtils/DateTimeUtils.cs b/FlexJobApi.Core/Utils/DateTimeUtils/DateTimeUtils.cs index 8ab5d89..842a327 100644 --- a/FlexJobApi.Core/Utils/DateTimeUtils/DateTimeUtils.cs +++ b/FlexJobApi.Core/Utils/DateTimeUtils/DateTimeUtils.cs @@ -1,5 +1,7 @@ -锘縰sing System; +锘縰sing Microsoft.SqlServer.Server; +using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -28,6 +30,21 @@ /// <summary> /// 杞椂闂� /// </summary> + /// <param name="obj">瀵硅薄</param> + /// <param name="format"></param> + /// <returns>鏃堕棿</returns> + public static DateTime? ToDateTime(this object obj, string format) + { + if (obj != null && DateTime.TryParseExact(obj.ToString(), format, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date) && date != DateTime.MinValue && date != DateTimeOffset.MinValue) + { + return date; + } + return null; + } + + /// <summary> + /// 杞椂闂� + /// </summary> /// <param name="dic">瀛楀吀</param> /// <param name="key">閿�</param> /// <returns>鍊�</returns> -- Gitblit v1.9.1