From a9ee8bf270eb8a3315808b24b41417be4b1a8a9a Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 20 八月 2025 16:47:34 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityResult.cs | 90 ++++++++++++ FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs | 52 +++++++ FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml | 13 + FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs | 17 ++ FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetLicenseOcrCommand.cs | 2 FlexJobApi.Core/FlexJobApi.Core.xml | 130 ++++++++++++++++++ FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs | 44 ++++++ FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs | 14 + 8 files changed, 350 insertions(+), 12 deletions(-) diff --git a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml index 0bc03fb..563f50a 100644 --- a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml +++ b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml @@ -208,11 +208,6 @@ 鏂囧瓧璇嗗埆钀ヤ笟鎵х収 </summary> </member> - <member name="M:FlexJobApi.CommonServer.Application.OcrCommandHandler.#ctor"> - <summary> - 鏂囧瓧璇嗗埆钀ヤ笟鎵х収 - </summary> - </member> <member name="M:FlexJobApi.CommonServer.Application.OcrCommandHandler.Handle(FlexJobApi.Core.GetLicenseOcrCommand,System.Threading.CancellationToken)"> <summary> 鏂囧瓧璇嗗埆钀ヤ笟鎵х収 @@ -221,6 +216,14 @@ <param name="cancellationToken"></param> <returns></returns> </member> + <member name="M:FlexJobApi.CommonServer.Application.OcrCommandHandler.Handle(FlexJobApi.Core.GetIdentityOcrCommand,System.Threading.CancellationToken)"> + <summary> + 鏂囧瓧璇嗗埆韬唤璇� + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> <member name="T:FlexJobApi.CommonServer.Application.CheckHealthQueryHandler"> <summary> 鍋ュ悍鏍¢獙 diff --git a/FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs b/FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs index 9d7840c..095fd25 100644 --- a/FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs +++ b/FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs @@ -12,8 +12,9 @@ /// <summary> /// 鏂囧瓧璇嗗埆钀ヤ笟鎵х収 /// </summary> - public class OcrCommandHandler() : - IRequestHandler<GetLicenseOcrCommand, GetLicenseOcrCommandResult> + public class OcrCommandHandler : + IRequestHandler<GetLicenseOcrCommand, GetLicenseOcrCommandResult>, + IRequestHandler<GetIdentityOcrCommand, GetIdentityOcrCommandResult> { /// <summary> /// 鏂囧瓧璇嗗埆钀ヤ笟鎵х収 @@ -26,5 +27,17 @@ var result = await request.Url.OcrBusinessLicense(request.Scene, request.IsOssUrl); return result.Adapt<GetLicenseOcrCommandResult>(); } + + /// <summary> + /// 鏂囧瓧璇嗗埆韬唤璇� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetIdentityOcrCommandResult> Handle(GetIdentityOcrCommand request, CancellationToken cancellationToken) + { + var result = await request.Url.OcrBusinessLicense(request.Scene, request.IsOssUrl); + return result.Adapt<GetIdentityOcrCommandResult>(); + } } } diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index 5235b06..c388f15 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -4463,6 +4463,46 @@ 鏁版嵁搴撳璁℃棩蹇� </summary> </member> + <member name="T:FlexJobApi.Core.GetIdentityOcrCommand"> + <summary> + 鏂囧瓧璇嗗埆韬唤璇� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.Access"> + <summary> + 閫氶亾 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.Scene"> + <summary> + 鍦烘櫙 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.Url"> + <summary> + 閾炬帴鍦板潃 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.IsOssUrl"> + <summary> + 鏄惁涓轰簯瀛樺偍鐩稿鍦板潃 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetIdentityOcrCommandResult"> + <summary> + 鏂囧瓧璇嗗埆韬唤璇� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityOcrCommandResult.Url"> + <summary> + 鍦板潃 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetIdentityOcrCommandResult.Model"> + <summary> + 妯″瀷 + </summary> + </member> <member name="T:FlexJobApi.Core.GetLicenseOcrCommand"> <summary> 鏂囧瓧璇嗗埆钀ヤ笟鎵х収 @@ -7138,6 +7178,11 @@ 妯℃澘Id </summary> </member> + <member name="P:FlexJobApi.Core.GetContractTemplateQueryResult.Id"> + <summary> + 妯℃澘Id + </summary> + </member> <member name="P:FlexJobApi.Core.GetContractTemplateQueryResult.EnterpriseId"> <summary> 浼佷笟Id @@ -7180,7 +7225,7 @@ </member> <member name="P:FlexJobApi.Core.GetContractTemplateQueryResultValue.Id"> <summary> - Id + 鍙橀噺Id </summary> </member> <member name="P:FlexJobApi.Core.GetContractTemplateQueryResultValue.Type"> @@ -10902,6 +10947,81 @@ 缁忚惀鑼冨洿 </summary> </member> + <member name="T:FlexJobApi.Core.BaiduOcrIdentityResult"> + <summary> + 鐧惧害鏂囧瓧璇嗗埆缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.Url"> + <summary> + 鍦板潃 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.Model"> + <summary> + 妯″瀷 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.ErrorCode"> + <summary> + 閿欒鐮� + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.ErrorMessage"> + <summary> + 閿欒娑堟伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.WordsResult"> + <summary> + 鏂囧瓧缁撴灉 + </summary> + </member> + <member name="T:FlexJobApi.Core.BaiduOcrIdentityResultModel"> + <summary> + 鐧惧害鏂囧瓧璇嗗埆缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.EnterpriseName"> + <summary> + 浼佷笟鍏ㄧО + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.SocietyCreditCode"> + <summary> + 缁熶竴绀句細淇$敤浠g爜 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.LegalPerson"> + <summary> + 娉曚汉濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.EnterpriseType"> + <summary> + 浼佷笟绫诲瀷 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.RegisteredCapital"> + <summary> + 娉ㄥ唽璧勬湰 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.EstablishmentDate"> + <summary> + 鎴愮珛鏃ユ湡 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.Address"> + <summary> + 浼佷笟鍦板潃 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.MainBusiness"> + <summary> + 缁忚惀鑼冨洿 + </summary> + </member> <member name="T:FlexJobApi.Core.BaiduOcrResultWord"> <summary> 鐧惧害鏂囧瓧璇嗗埆缁撴灉 @@ -10955,6 +11075,14 @@ <param name="scene"></param> <param name="isOssUrl"></param> </member> + <member name="M:FlexJobApi.Core.BaiduOcrUtils.OcrIdentity(System.String,System.String,System.Boolean)"> + <summary> + 钀ヤ笟鎵х収OCR + </summary> + <param name="url"></param> + <param name="scene"></param> + <param name="isOssUrl"></param> + </member> <member name="T:FlexJobApi.Core.BaiduOptions"> <summary> 鐧惧害閰嶇疆 diff --git a/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs b/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs new file mode 100644 index 0000000..c58ab07 --- /dev/null +++ b/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs @@ -0,0 +1,52 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏂囧瓧璇嗗埆韬唤璇� + /// </summary> + [Resource([EnumResourceController.CommonServerOcrUtils], Method = EnumResourceMethod.Post)] + public class GetIdentityOcrCommand : IRequest<GetIdentityOcrCommandResult> + { + /// <summary> + /// 閫氶亾 + /// </summary> + public EnumOcrAccess Access { get; set; } + + /// <summary> + /// 鍦烘櫙 + /// </summary> + public string Scene { get; set; } + + /// <summary> + /// 閾炬帴鍦板潃 + /// </summary> + public string Url { get; set; } + + /// <summary> + /// 鏄惁涓轰簯瀛樺偍鐩稿鍦板潃 + /// </summary> + public bool IsOssUrl { get; set; } + } + + /// <summary> + /// 鏂囧瓧璇嗗埆韬唤璇� + /// </summary> + public class GetIdentityOcrCommandResult + { + /// <summary> + /// 鍦板潃 + /// </summary> + public string Url { get; set; } + + /// <summary> + /// 妯″瀷 + /// </summary> + public BaiduOcrBusinessLicenseResultModel Model { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetLicenseOcrCommand.cs b/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetLicenseOcrCommand.cs index fcdb4d8..4219cca 100644 --- a/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetLicenseOcrCommand.cs +++ b/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetLicenseOcrCommand.cs @@ -11,7 +11,7 @@ /// <summary> /// 鏂囧瓧璇嗗埆钀ヤ笟鎵х収 /// </summary> - [Resource([EnumResourceController.CommonServerOcrUtils])] + [Resource([EnumResourceController.CommonServerOcrUtils], Method = EnumResourceMethod.Post)] public class GetLicenseOcrCommand : IRequest<GetLicenseOcrCommandResult> { /// <summary> diff --git a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityResult.cs b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityResult.cs new file mode 100644 index 0000000..fc777d7 --- /dev/null +++ b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityResult.cs @@ -0,0 +1,90 @@ +锘縰sing Newtonsoft.Json; +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 BaiduOcrIdentityResult + { + /// <summary> + /// 鍦板潃 + /// </summary> + public string Url { get; set; } + + /// <summary> + /// 妯″瀷 + /// </summary> + public BaiduOcrIdentityResultModel 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 BaiduOcrIdentityResultModel + { + /// <summary> + /// 浼佷笟鍏ㄧО + /// </summary> + public string EnterpriseName { get; set; } + + /// <summary> + /// 缁熶竴绀句細淇$敤浠g爜 + /// </summary> + public string SocietyCreditCode { get; set; } + + /// <summary> + /// 娉曚汉濮撳悕 + /// </summary> + public string LegalPerson { get; set; } + + /// <summary> + /// 浼佷笟绫诲瀷 + /// </summary> + public string EnterpriseType { get; set; } + + /// <summary> + /// 娉ㄥ唽璧勬湰 + /// </summary> + public string RegisteredCapital { get; set; } + + /// <summary> + /// 鎴愮珛鏃ユ湡 + /// </summary> + public string EstablishmentDate { 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 51439b2..49bec7f 100644 --- a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs +++ b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs @@ -66,5 +66,49 @@ return result; } + /// <summary> + /// 钀ヤ笟鎵х収OCR + /// </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) + { + 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, "1"); + } + else + { + var upload = AliyunOSSUtils.Upload(scene, url); + url = upload.Url; + //value = ocr.Idcard(upload.Buffer); + } + //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(); + } } } diff --git a/FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs b/FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs index 63c0831..d098fe9 100644 --- a/FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs @@ -69,10 +69,18 @@ entity.UpdatedUserId = logier.Id; entity.UpdatedTime = DateTime.Now; } - if (entity.Access.HasValue && entity.TemplateId.IsNotNull() && entity.Status == EnumContractTemplateStatus.Wait) + if (entity.Access.HasValue && entity.TemplateId.IsNotNull()) { - entity.Status = EnumContractTemplateStatus.Completed; - entity.CompletedTime = DateTime.Now; + if (entity.Status == EnumContractTemplateStatus.Wait) + { + entity.Status = EnumContractTemplateStatus.Completed; + entity.CompletedTime = DateTime.Now; + } + } + else + { + entity.Status = EnumContractTemplateStatus.Wait; + entity.CompletedTime = null; } }, cancellationToken); -- Gitblit v1.9.1