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