From 49452eca97d0fa062d7180ab24d61f5e5f68c52c Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 15 八月 2025 10:48:51 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs           |    1 
 FlexJobApi.Core/Entities/UserServer/Users/User.cs                                    |   10 
 FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs                        |   22 +
 FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrBusinessLicenseResult.cs                    |    2 
 FlexJobApi.Core/FlexJobApi.Core.xml                                                  |  231 +++++++++++++++++++
 FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs        |  197 ++++++++++++++++
 FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs                                    |    2 
 FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml              |   20 +
 FlexJobApi.UserServer.Application/Users/Commands/SyncEnterpriseUserCommandHandler.cs |   70 +++++
 FlexJobApi.Web.Entry/appsettings.json                                                |   90 +++---
 FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs                                    |    2 
 FlexJobApi.Core/Enums/Users/EnumUserSource.cs                                        |   19 +
 12 files changed, 611 insertions(+), 55 deletions(-)

diff --git a/FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs b/FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs
index 421f20c..ef3a6f2 100644
--- a/FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs
+++ b/FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs
@@ -88,7 +88,27 @@
         public DictionaryData IndustryType { 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/Entities/UserServer/Users/User.cs b/FlexJobApi.Core/Entities/UserServer/Users/User.cs
index 0aedd7e..b2b384d 100644
--- a/FlexJobApi.Core/Entities/UserServer/Users/User.cs
+++ b/FlexJobApi.Core/Entities/UserServer/Users/User.cs
@@ -260,6 +260,16 @@
         /// </summary>
         public List<EnterpriseUserCollect> EnterpriseUserCollects { get; set; }
 
+        /// <summary>
+        /// 鏁版嵁鏉ユ簮
+        /// </summary>
+        public EnumDataSource? DataSource { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鏉ユ簮Id
+        /// </summary>
+        public Guid? DataSourceId { get; set; }
+
         public void Configure(EntityTypeBuilder<User> entityBuilder, DbContext dbContext, Type dbContextLocator)
         {
             entityBuilder
diff --git a/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs b/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs
index 379e603..1978e6f 100644
--- a/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs
+++ b/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs
@@ -26,7 +26,7 @@
         [ErrorCodeItemMetadata("{0}涓嶅瓨鍦�")]
         s404 = 404,
         /// <summary>
-        /// 璇0}宸插瓨鍦紝璇风‘璁ゅ悗鍐嶈瘯
+        /// {0}宸插瓨鍦紝璇风‘璁ゅ悗鍐嶈瘯
         /// </summary>
         [ErrorCodeItemMetadata("{0}宸插瓨鍦紝璇风‘璁ゅ悗鍐嶈瘯")]
         s405 = 405,
diff --git a/FlexJobApi.Core/Enums/Users/EnumUserSource.cs b/FlexJobApi.Core/Enums/Users/EnumUserSource.cs
new file mode 100644
index 0000000..5282c4d
--- /dev/null
+++ b/FlexJobApi.Core/Enums/Users/EnumUserSource.cs
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鏁版嵁鏉ユ簮
+    /// </summary>
+    public enum EnumDataSource
+    {
+        /// <summary>
+        /// 818
+        /// </summary>
+        HumanResources = 10
+    }
+}
diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index 3061406..e979bdb 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -1244,9 +1244,29 @@
             鎵�灞炶涓�
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.Enterprise.EnterpriseType">
+            <summary>
+            浼佷笟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Enterprise.RegisteredCapital">
+            <summary>
+            娉ㄥ唽璧勬湰
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Enterprise.EstablishmentDate">
+            <summary>
+            鎴愮珛鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Enterprise.Address">
+            <summary>
+            浼佷笟鍦板潃
+            </summary>
+        </member>
         <member name="P:FlexJobApi.Core.Enterprise.MainBusiness">
             <summary>
-            涓昏惀涓氬姟
+            缁忚惀鑼冨洿
             </summary>
         </member>
         <member name="P:FlexJobApi.Core.Enterprise.Contacts">
@@ -2157,6 +2177,16 @@
             璋佸浼佷笟鏀惰棌/鑱旂郴鎴�
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.User.DataSource">
+            <summary>
+            鏁版嵁鏉ユ簮
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.User.DataSourceId">
+            <summary>
+            鏁版嵁鏉ユ簮Id
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.UserAuth">
             <summary>
             鐢ㄦ埛璁よ瘉
@@ -2284,7 +2314,7 @@
         </member>
         <member name="F:FlexJobApi.Core.EnumErrorCodeType.s405">
             <summary>
-            璇0}宸插瓨鍦紝璇风‘璁ゅ悗鍐嶈瘯
+            {0}宸插瓨鍦紝璇风‘璁ゅ悗鍐嶈瘯
             </summary>
         </member>
         <member name="F:FlexJobApi.Core.EnumErrorCodeType.s406">
@@ -3140,6 +3170,16 @@
         <member name="F:FlexJobApi.Core.EnumUserRealMethod.Face">
             <summary>
             鍒疯劯璁よ瘉
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.EnumDataSource">
+            <summary>
+            鏁版嵁鏉ユ簮
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumDataSource.HumanResources">
+            <summary>
+            818
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.EnumUserStatus">
@@ -8509,6 +8549,191 @@
             鐘舵��
             </summary>
         </member>
+        <member name="T:FlexJobApi.Core.SyncEnterpriseUserCommand">
+            <summary>
+            鍚屾浼佷笟鐢ㄦ埛
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.DataSource">
+            <summary>
+            鏁版嵁鏉ユ簮
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.DataSourceId">
+            <summary>
+            鏁版嵁鏉ユ簮Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.Password">
+            <summary>
+            瀵嗙爜
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.UserName">
+            <summary>
+            鐢ㄦ埛鍚�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.PhoneNumber">
+            <summary>
+            鎵嬫満鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.Enterprise">
+            <summary>
+            浼佷笟
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise">
+            <summary>
+            鍚屾浼佷笟鐢ㄦ埛
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.EnterpriseName">
+            <summary>
+            浼佷笟鍏ㄧО
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.SocietyCreditCode">
+            <summary>
+            缁熶竴绀句細淇$敤浠g爜
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.LicenseImage">
+            <summary>
+            钀ヤ笟鎵х収鐓х墖
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.LegalPerson">
+            <summary>
+            娉曚汉濮撳悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.LegalIdentity">
+            <summary>
+            娉曚汉韬唤璇佸彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.ProvinceCode">
+            <summary>
+            鎵�鍦ㄧ渷浠界紪鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.CityCode">
+            <summary>
+            鎵�鍦ㄥ煄甯傜紪鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.IndustryTypeCode">
+            <summary>
+            鎵�灞炶涓氱紪鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.EnterpriseType">
+            <summary>
+            浼佷笟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.RegisteredCapital">
+            <summary>
+            娉ㄥ唽璧勬湰
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.EstablishmentDate">
+            <summary>
+            鎴愮珛鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.Address">
+            <summary>
+            浼佷笟鍦板潃
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.MainBusiness">
+            <summary>
+            缁忚惀鑼冨洿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.Contacts">
+            <summary>
+            鑱旂郴浜�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.ContactPhoneNumber">
+            <summary>
+            鑱旂郴鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.ContactEmail">
+            <summary>
+            鑱旂郴閭
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.PayAccess">
+            <summary>
+            鏀粯閫氶亾
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.BankName">
+            <summary>
+            寮�鎴锋�昏
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.BankBranchName">
+            <summary>
+            寮�鎴锋敮琛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.BankCard">
+            <summary>
+            閾惰璐︽埛
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.IsCheckedBankCard">
+            <summary>
+            鏄惁宸叉牎楠岄摱琛岃处鎴�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.RealAccess">
+            <summary>
+            瀹炲悕閫氶亾
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.RealVerifyCost">
+            <summary>
+            瀹炲悕璐圭敤
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.SignCost">
+            <summary>
+            绛剧害璐圭敤
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.MergeSignCost">
+            <summary>
+            涓�鍙d环
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.SmsAccess">
+            <summary>
+            鐭俊閫氶亾
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.SmsCost">
+            <summary>
+            鐭俊璐圭敤
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.IsReal">
+            <summary>
+            鏄惁瀹炲悕
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.GetEnterpriseLoginInfoQuery">
             <summary>
             鏌ヨ浼佷笟鐢ㄦ埛鐧诲綍淇℃伅
@@ -9099,7 +9324,7 @@
             浼佷笟鍦板潃
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.BaiduOcrBusinessLicenseResultModel.BusinessScope">
+        <member name="P:FlexJobApi.Core.BaiduOcrBusinessLicenseResultModel.MainBusiness">
             <summary>
             缁忚惀鑼冨洿
             </summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs b/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs
index ceafc47..a24e779 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs
@@ -1,5 +1,8 @@
-锘縰sing System;
+锘縰sing Mapster;
+using MediatR;
+using System;
 using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -9,8 +12,198 @@
     /// <summary>
     /// 鍚屾浼佷笟鐢ㄦ埛
     /// </summary>
-    public class SyncEnterpriseUserCommand
+    [Resource([EnumResourceController.User])]
+    public class SyncEnterpriseUserCommand : IRequest<Guid>
     {
+        /// <summary>
+        /// 鏁版嵁鏉ユ簮
+        /// </summary>
+        public EnumDataSource? DataSource { get; set; }
 
+        /// <summary>
+        /// 鏁版嵁鏉ユ簮Id
+        /// </summary>
+        public Guid? DataSourceId { get; set; }
+
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        public string Password { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛鍚�
+        /// </summary>
+        public string UserName { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満鍙�
+        /// </summary>
+        public string PhoneNumber { get; set; }
+
+        /// <summary>
+        /// 浼佷笟
+        /// </summary>
+        [AdaptIgnore]
+        public SyncEnterpriseUserCommandEnterprise Enterprise { get; set; }
+    }
+
+    /// <summary>
+    /// 鍚屾浼佷笟鐢ㄦ埛
+    /// </summary>
+    public class SyncEnterpriseUserCommandEnterprise
+    {
+        /// <summary>
+        /// 浼佷笟鍏ㄧО
+        /// </summary>
+        [Required]
+        [MaxLength(128)]
+        public string EnterpriseName { get; set; }
+
+        /// <summary>
+        /// 缁熶竴绀句細淇$敤浠g爜
+        /// </summary>
+        [Required]
+        [MaxLength(18)]
+        public string SocietyCreditCode { get; set; }
+
+        /// <summary>
+        /// 钀ヤ笟鎵х収鐓х墖
+        /// </summary>
+        public string LicenseImage { get; set; }
+
+        /// <summary>
+        /// 娉曚汉濮撳悕
+        /// </summary>
+        [MaxLength(32)]
+        public string LegalPerson { get; set; }
+
+        /// <summary>
+        /// 娉曚汉韬唤璇佸彿
+        /// </summary>
+        [MaxLength(18)]
+        public string LegalIdentity { get; set; }
+
+        /// <summary>
+        /// 鎵�鍦ㄧ渷浠界紪鍙�
+        /// </summary>
+        public string ProvinceCode { get; set; }
+
+        /// <summary>
+        /// 鎵�鍦ㄥ煄甯傜紪鍙�
+        /// </summary>
+        public string CityCode { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶涓氱紪鍙�
+        /// </summary>
+        public string IndustryTypeCode { 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; }
+
+        /// <summary>
+        /// 鑱旂郴浜�
+        /// </summary>
+        [MaxLength(32)]
+        public string Contacts { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴鐢佃瘽
+        /// </summary>
+        [MaxLength(11)]
+        public string ContactPhoneNumber { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴閭
+        /// </summary>
+        public string ContactEmail { get; set; }
+
+        /// <summary>
+        /// 鏀粯閫氶亾
+        /// </summary>
+        public EnumPayAccess? PayAccess { get; set; }
+
+        /// <summary>
+        /// 寮�鎴锋�昏
+        /// </summary>
+        public string BankName { get; set; }
+
+        /// <summary>
+        /// 寮�鎴锋敮琛�
+        /// </summary>
+        public string BankBranchName { get; set; }
+
+        /// <summary>
+        /// 閾惰璐︽埛
+        /// </summary>
+        [MaxLength(32)]
+        public string BankCard { get; set; }
+
+        /// <summary>
+        /// 鏄惁宸叉牎楠岄摱琛岃处鎴�
+        /// </summary>
+        public bool IsCheckedBankCard { get; set; }
+
+        /// <summary>
+        /// 瀹炲悕閫氶亾
+        /// </summary>
+        public EnumRealAccess? RealAccess { get; set; }
+
+        /// <summary>
+        /// 瀹炲悕璐圭敤
+        /// </summary>
+        public decimal? RealVerifyCost { get; set; }
+
+        /// <summary>
+        /// 绛剧害璐圭敤
+        /// </summary>
+        public decimal? SignCost { get; set; }
+
+        /// <summary>
+        /// 涓�鍙d环
+        /// </summary>
+        public decimal? MergeSignCost { get; set; }
+
+        /// <summary>
+        /// 鐭俊閫氶亾
+        /// </summary>
+        public EnumSmsAccess? SmsAccess { get; set; }
+
+        /// <summary>
+        /// 鐭俊璐圭敤
+        /// </summary>
+        public decimal SmsCost { get; set; }
+
+        /// <summary>
+        /// 鏄惁瀹炲悕
+        /// </summary>
+        public bool IsReal { get; set; }
     }
 }
diff --git a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrBusinessLicenseResult.cs b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrBusinessLicenseResult.cs
index c9f6dc7..0c69cf9 100644
--- a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrBusinessLicenseResult.cs
+++ b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrBusinessLicenseResult.cs
@@ -85,6 +85,6 @@
         /// <summary>
         /// 缁忚惀鑼冨洿
         /// </summary>
-        public string BusinessScope { get; set; }
+        public string MainBusiness { get; set; }
     }
 }
diff --git a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs
index 2ee89c4..9e890c9 100644
--- a/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs
+++ b/FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs
@@ -61,7 +61,7 @@
                 RegisteredCapital = result.WordsResult["娉ㄥ唽璧勬湰"].Words,
                 EstablishmentDate = result.WordsResult["鎴愮珛鏃ユ湡"].Words,
                 Address = result.WordsResult["鍦板潃"].Words,
-                BusinessScope = result.WordsResult["缁忚惀鑼冨洿"].Words,
+                MainBusiness = result.WordsResult["缁忚惀鑼冨洿"].Words,
             };
             return result;
         }
diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
index 28d44df..63f6ae9 100644
--- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
+++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
@@ -296,7 +296,7 @@
         </member>
         <member name="F:FlexJobApi.UserServer.Application.EnumUserErrorCodeType.u1010">
             <summary>
-            璇ユ墜鏈哄彿宸茶娉ㄥ唽
+            鎵嬫満鍙峰凡琚敞鍐�
             </summary>
         </member>
         <member name="F:FlexJobApi.UserServer.Application.EnumUserErrorCodeType.u1100">
@@ -687,6 +687,24 @@
             <param name="cancellationToken"></param>
             <returns></returns>
         </member>
+        <member name="T:FlexJobApi.UserServer.Application.SyncEnterpriseUserCommandHandler">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.SyncEnterpriseUserCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Enterprise})">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.SyncEnterpriseUserCommandHandler.Handle(FlexJobApi.Core.SyncEnterpriseUserCommand,System.Threading.CancellationToken)">
+            <summary>
+            鍚屾浼佷笟鐢ㄦ埛
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
         <member name="T:FlexJobApi.UserServer.Application.UserInfos.Commands.UserInfoCommandHandler">
             <summary>
             鐢ㄦ埛淇℃伅鍛戒护澶勭悊鍣�
diff --git a/FlexJobApi.UserServer.Application/Users/Commands/SyncEnterpriseUserCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/SyncEnterpriseUserCommandHandler.cs
new file mode 100644
index 0000000..06f0346
--- /dev/null
+++ b/FlexJobApi.UserServer.Application/Users/Commands/SyncEnterpriseUserCommandHandler.cs
@@ -0,0 +1,70 @@
+锘縰sing FlexJobApi.Core;
+using Furion.DatabaseAccessor;
+using Furion.FriendlyException;
+using Mapster;
+using MediatR;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.UserServer.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class SyncEnterpriseUserCommandHandler(
+            IRepository<User> repUser,
+            IRepository<Enterprise> repEnterprise
+        ) :
+        IRequestHandler<SyncEnterpriseUserCommand, Guid>
+    {
+        private readonly IRepository<User> repUser = repUser;
+        private readonly IRepository<Enterprise> repEnterprise = repEnterprise;
+
+        /// <summary>
+        /// 鍚屾浼佷笟鐢ㄦ埛
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<Guid> Handle(SyncEnterpriseUserCommand request, CancellationToken cancellationToken)
+        {
+            var enterprise = await repEnterprise.AsQueryable()
+                .Where(it => it.SocietyCreditCode == request.Enterprise.SocietyCreditCode)
+                .FirstOrDefaultAsync(cancellationToken);
+            if (enterprise == null)
+            {
+                enterprise = new Enterprise();
+                request.Enterprise.Adapt(enterprise);
+                await repEnterprise.InsertAsync(enterprise);
+            }
+            else
+            {
+                request.Enterprise.Adapt(enterprise);
+                await repEnterprise.UpdateAsync(enterprise);
+            }
+            var user = await repUser.AsQueryable()
+                .Where(it => it.Type == EnumUserType.Enterprise && it.EnterpriseId == enterprise.Id && it.UserName == request.UserName)
+                .FirstOrDefaultAsync(cancellationToken);
+            if (user == null)
+            {
+                var exist = await repUser.AsQueryable().AsNoTracking()
+                    .AnyAsync(it => it.Type == EnumUserType.Enterprise && it.UserName == request.UserName);
+                if (exist)
+                    throw Oops.Oh(EnumErrorCodeType.s405, "璐﹀彿");
+                user = new User();
+                request.Adapt(user);
+                await repUser.InsertAsync(user);
+            }
+            else
+            {
+                request.Adapt(user);
+                await repUser.UpdateAsync(user);
+            }
+            return user.Id;
+        }
+    }
+}
diff --git a/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs
index b554866..f2c78f9 100644
--- a/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs
@@ -62,5 +62,6 @@
             await rep.UpdateAsync(entity);
             return entity.UserRoles.Count;
         }
+
     }
 }
diff --git a/FlexJobApi.Web.Entry/appsettings.json b/FlexJobApi.Web.Entry/appsettings.json
index aec227c..687e405 100644
--- a/FlexJobApi.Web.Entry/appsettings.json
+++ b/FlexJobApi.Web.Entry/appsettings.json
@@ -42,57 +42,57 @@
       "RoleSessionName": "SessionTest",
       "Policy": "{\"Version\":\"1\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"oss:PutObject\",\"Resource\":[\"acs:oss:*:*:waterdroptest2/*\",\"acs:oss:*:*:parkmanagement/*\",\"acs:oss:*:*:jurenlian/*\"]}]}",
       "DurationSeconds": 3600
+    },
+    "SMS": {
+      "Enable": true,
+      "AccessKeyId": "LTAI5tMS7qz1duiyncCqxB8H",
+      "AccessSecret": "TEHSXK6f6Njg0v0MSFkrjURofdjuKQ",
+      "Version": "2017-05-25",
+      "SignName": "818鏁板瓧浜哄姏璧勪骇骞冲彴",
+      "RegionId": "cn-hangzhou",
+      "TemplateCodes": {
+        //818骞冲彴鐭俊楠岃瘉鐮� 楠岃瘉鐮侊細${code}锛岃浜�5鍒嗛挓鍐呭~鍐欙紝璇峰嬁娉勯湶锛岃嫢闈炴湰浜烘搷浣滆蹇界暐銆�
+        "VerifyCode": "SMS_471100021",
+
+        //818骞冲彴鐧诲綍/娉ㄥ唽 楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄨ繘琛屽钩鍙扮櫥褰�/娉ㄥ唽锛岄獙璇佺爜10鍒嗛挓鍐呮湁鏁堛��
+        "LoginOrRegister": "SMS_472170005",
+        //818璐﹀彿寮�閫氾紙绠$悊绔級灏婃暚鐨勭敤鎴锋偍濂斤紝浜哄姏鏃犲咖璐﹀彿宸插紑閫氾紝璐﹀彿锛�${account}锛屽瘑鐮侊細${pwd}锛岃鐧诲綍缃戝潃 https://admin.81812333.com
+        "CreateOperationAccount": "SMS_471970028",
+        //818鎵嬫満鍙风爜淇敼 楠岃瘉鐮�${code}锛屾偍姝e湪杩涜淇敼鎵嬫満鍙风爜鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��
+        "UpdateUserPhoneNumber": "SMS_471100097",
+        //818鎵嬫満鍙锋崲缁� 灏婃暚鐨勭敤鎴锋偍濂斤紝818骞冲彴${code}鐨勮处鎴风粦瀹氭墜鏈哄彿鎴愬姛淇敼涓�${account}锛屼綘鍙互浣跨敤璇ユ墜鏈哄彿鐧诲綍锛岀櫥褰曠綉鍧� https://www.81812333.com
+        "UpdateUserPhoneNumberNotice": "SMS_471925037",
+
+        //818閲嶇疆瀵嗙爜 楠岃瘉鐮�${code}锛屾偍姝e湪杩涜閲嶇疆瀵嗙爜鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��
+        "ResetUserPhoneNumber": "SMS_471240080",
+        //818骞冲彴瀵嗙爜閲嶇疆锛堥�氱煡锛� 鎮ㄥソ锛屾偍鐨勫瘑鐮佸凡閲嶇疆锛岃处鍙凤細${account}锛屽瘑鐮侊細${password}锛岃濡ュ杽淇濆瓨
+        "ResetPasswordNotice": "SMS_476790229",
+
+        //璐﹀彿淇敼 灏婃暚鐨勭敤鎴锋偍濂斤細 鎮ㄧ殑818骞冲彴璐﹀彿鎴愬姛淇敼涓�${account}鎮ㄥ彲浠ヤ娇鐢ㄨ璐﹀彿杩涜鐧诲綍锛岀櫥褰曠綉鍧�锛歨ttps://www.81812333.com
+        "ChangeUserName": "SMS_475895109",
+        //818璐﹀彿寮�閫� 灏婃暚鐨勭敤鎴锋偍濂斤紝鎮ㄧ殑璐﹀彿锛�${account}锛屽垵濮嬪瘑鐮侊細${password}锛岃濡ュ杽淇濆瓨锛屾偍鍙娇鐢ㄨ处鍙峰瘑鐮佺櫥褰曞苟淇敼瀵嗙爜锛岀櫥褰曠綉鍧� https://www.81812333.com
+        "CreateAccountNotice": "SMS_471980029",
+        //鎵嬫満鍙疯В缁� 灏婃暚鐨勭敤鎴锋偍濂斤細818骞冲彴${account}鐨勮处鍙蜂笌${number}宸茶В缁戯紝浣犲彲浠ョ櫥褰曠綉鍧�锛歨ttps://www.81812333.com閲嶆柊缁戝畾鎵嬫満鍙枫��
+        "UnbindingUserPhoneNumber": "SMS_475840188",
+        //瑙g粦閭 灏婃暚鐨勭敤鎴锋偍濂斤細818骞冲彴${account}鐨勮处鍙蜂笌${mail}宸茶В缁戯紝浣犲彲浠ョ櫥褰曠綉鍧�锛歨ttps://www.81812333.com閲嶆柊缁戝畾閭銆�
+        "UnbindingUserEmail": "SMS_475875117",
+
+        //818瀹炲悕璁よ瘉 楠岃瘉鐮�${code}锛屾偍姝e湪杩涜瀹炲悕璁よ瘉鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��
+        "UserCertificationAudit": "SMS_471230080",
+        //鐢宠鏁板瓧璇佷功 楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄧ敵璇锋暟瀛楄瘉涔︼紝楠岃瘉鐮�10鍒嗛挓鍐呮湁鏁堛��
+        "ApplyUserCertificate": "SMS_475345383",
+        //鐢靛瓙绛� ${unit_name}璇锋偍鐐瑰嚮绛剧害t.81812333.com/Inter/${code}
+        "UserElectronSign": "SMS_476485061",
+
+        //818閽卞寘寮�閫� 楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄨ繘琛屽钩鍙伴挶鍖呭紑閫氾紝璇ラ獙璇佺爜5鍒嗛挓鍐呮湁鏁堬紝璇峰嬁娉勯湶浜庝粬浜恒��
+        "BankWalletAccountOpen": "SMS_473860301"
+      }
     }
   },
   "Baidu": {
     "Ocr": {
       "Key": "Htx3y6eFnlW92WvHx9aW44f8",
       "Secret": "k1rDa3vjVtArrQio9LtR5AjqARSw45WO"
-    }
-  },
-  "SMS": {
-    "Enable": true,
-    "AccessKeyId": "LTAI5tMS7qz1duiyncCqxB8H",
-    "AccessSecret": "TEHSXK6f6Njg0v0MSFkrjURofdjuKQ",
-    "Version": "2017-05-25",
-    "SignName": "818鏁板瓧浜哄姏璧勪骇骞冲彴",
-    "RegionId": "cn-hangzhou",
-    "TemplateCodes": {
-      //818骞冲彴鐭俊楠岃瘉鐮� 楠岃瘉鐮侊細${code}锛岃浜�5鍒嗛挓鍐呭~鍐欙紝璇峰嬁娉勯湶锛岃嫢闈炴湰浜烘搷浣滆蹇界暐銆�
-      "VerifyCode": "SMS_471100021",
-
-      //818骞冲彴鐧诲綍/娉ㄥ唽 楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄨ繘琛屽钩鍙扮櫥褰�/娉ㄥ唽锛岄獙璇佺爜10鍒嗛挓鍐呮湁鏁堛��
-      "LoginOrRegister": "SMS_472170005",
-      //818璐﹀彿寮�閫氾紙绠$悊绔級灏婃暚鐨勭敤鎴锋偍濂斤紝浜哄姏鏃犲咖璐﹀彿宸插紑閫氾紝璐﹀彿锛�${account}锛屽瘑鐮侊細${pwd}锛岃鐧诲綍缃戝潃 https://admin.81812333.com
-      "CreateOperationAccount": "SMS_471970028",
-      //818鎵嬫満鍙风爜淇敼 楠岃瘉鐮�${code}锛屾偍姝e湪杩涜淇敼鎵嬫満鍙风爜鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��
-      "UpdateUserPhoneNumber": "SMS_471100097",
-      //818鎵嬫満鍙锋崲缁� 灏婃暚鐨勭敤鎴锋偍濂斤紝818骞冲彴${code}鐨勮处鎴风粦瀹氭墜鏈哄彿鎴愬姛淇敼涓�${account}锛屼綘鍙互浣跨敤璇ユ墜鏈哄彿鐧诲綍锛岀櫥褰曠綉鍧� https://www.81812333.com
-      "UpdateUserPhoneNumberNotice": "SMS_471925037",
-
-      //818閲嶇疆瀵嗙爜 楠岃瘉鐮�${code}锛屾偍姝e湪杩涜閲嶇疆瀵嗙爜鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��
-      "ResetUserPhoneNumber": "SMS_471240080",
-      //818骞冲彴瀵嗙爜閲嶇疆锛堥�氱煡锛� 鎮ㄥソ锛屾偍鐨勫瘑鐮佸凡閲嶇疆锛岃处鍙凤細${account}锛屽瘑鐮侊細${password}锛岃濡ュ杽淇濆瓨
-      "ResetPasswordNotice": "SMS_476790229",
-
-      //璐﹀彿淇敼 灏婃暚鐨勭敤鎴锋偍濂斤細 鎮ㄧ殑818骞冲彴璐﹀彿鎴愬姛淇敼涓�${account}鎮ㄥ彲浠ヤ娇鐢ㄨ璐﹀彿杩涜鐧诲綍锛岀櫥褰曠綉鍧�锛歨ttps://www.81812333.com
-      "ChangeUserName": "SMS_475895109",
-      //818璐﹀彿寮�閫� 灏婃暚鐨勭敤鎴锋偍濂斤紝鎮ㄧ殑璐﹀彿锛�${account}锛屽垵濮嬪瘑鐮侊細${password}锛岃濡ュ杽淇濆瓨锛屾偍鍙娇鐢ㄨ处鍙峰瘑鐮佺櫥褰曞苟淇敼瀵嗙爜锛岀櫥褰曠綉鍧� https://www.81812333.com
-      "CreateAccountNotice": "SMS_471980029",
-      //鎵嬫満鍙疯В缁� 灏婃暚鐨勭敤鎴锋偍濂斤細818骞冲彴${account}鐨勮处鍙蜂笌${number}宸茶В缁戯紝浣犲彲浠ョ櫥褰曠綉鍧�锛歨ttps://www.81812333.com閲嶆柊缁戝畾鎵嬫満鍙枫��
-      "UnbindingUserPhoneNumber": "SMS_475840188",
-      //瑙g粦閭 灏婃暚鐨勭敤鎴锋偍濂斤細818骞冲彴${account}鐨勮处鍙蜂笌${mail}宸茶В缁戯紝浣犲彲浠ョ櫥褰曠綉鍧�锛歨ttps://www.81812333.com閲嶆柊缁戝畾閭銆�
-      "UnbindingUserEmail": "SMS_475875117",
-
-      //818瀹炲悕璁よ瘉 楠岃瘉鐮�${code}锛屾偍姝e湪杩涜瀹炲悕璁よ瘉鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��
-      "UserCertificationAudit": "SMS_471230080",
-      //鐢宠鏁板瓧璇佷功 楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄧ敵璇锋暟瀛楄瘉涔︼紝楠岃瘉鐮�10鍒嗛挓鍐呮湁鏁堛��
-      "ApplyUserCertificate": "SMS_475345383",
-      //鐢靛瓙绛� ${unit_name}璇锋偍鐐瑰嚮绛剧害t.81812333.com/Inter/${code}
-      "UserElectronSign": "SMS_476485061",
-
-      //818閽卞寘寮�閫� 楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄨ繘琛屽钩鍙伴挶鍖呭紑閫氾紝璇ラ獙璇佺爜5鍒嗛挓鍐呮湁鏁堬紝璇峰嬁娉勯湶浜庝粬浜恒��
-      "BankWalletAccountOpen": "SMS_473860301"
     }
   }
 }
\ No newline at end of file

--
Gitblit v1.9.1