From 327d52a5d0e51ac5e6e1aced3599a18dcfaf25b6 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期三, 20 八月 2025 09:51:37 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserInfoRolesQuery.cs                                   |    2 
 FlexJobApi.Core/Entities/CommonServer/Resource.cs                                                          |    9 
 FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTasksQuery.cs                 |    2 
 FlexJobApi.Database.Migrations/Migrations/LogDb/20250820013445_UpdateResource0820.cs                       |   22 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs            |    2 
 FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs                                                   |  140 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs                      |    2 
 FlexJobApi.Core/Models/UserServer/Users/Queries/GetEnterpriseLoginInfoQuery.cs                             |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs                  |    2 
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUserHireStatusQuery.cs                       |    2 
 FlexJobApi.Core/Entities/UserServer/Users/User.cs                                                          |    5 
 FlexJobApi.Core/Entities/UserServer/Users/UserAuth.cs                                                      |   40 
 FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuCommand.cs                                        |    2 
 FlexJobApi.Core/FlexJobApi.Core.xml                                                                        |  632 +++-
 FlexJobApi.Core/Models/ElectronSignServer/Common/ElectronSignServerResult.cs                               |   15 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs                                    |    2 
 FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/IResourceHttpProvider.cs                          |   31 
 FlexJobApi.UserServer.Application/ElectronSign/Commands/PersonalUserRealCommandHandler.cs                  |  257 +
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/ClearTaskCollectCommand.cs                         |    2 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs                 |    2 
 FlexJobApi.Database.Migrations/Migrations/20250820013459_UpdateUser0820.cs                                 |  159 +
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs                  |    2 
 FlexJobApi.Core/Enums/Common/EnumResourceService.cs                                                        |   15 
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs                                |    2 
 FlexJobApi.Database.Migrations/Migrations/LogDb/20250820013445_UpdateResource0820.Designer.cs              |  432 +++
 FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/ElectronSignServerResourceHttpProvider.cs         |   84 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/ContactUserResumeCommand.cs                         |    2 
 FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfoSignContractsQuery.cs                   |    2 
 FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseQuery.cs                                |    2 
 FlexJobApi.Core/Models/CommonServer/FileUtils/Queries/GetFileUrlQuery.cs                                   |    2 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskEnterpriseQuery.cs                               |    2 
 FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml                                |    2 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs                                     |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs                |    2 
 FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/SystemUserResourceHttpProvider.cs                 |   91 
 FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuButtonCommand.cs                                  |    2 
 FlexJobApi.Core/Models/ElectronSignServer/Auths/AccessRequestDto.cs                                        |   26 
 FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourceFieldsQuery.cs                            |    2 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs               |    2 
 FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeeQuery.cs                |    2 
 FlexJobApi.Database.Migrations/Migrations/20250820013459_UpdateUser0820.Designer.cs                        | 2631 +++++++++++++++++++
 FlexJobApi.Core/Utils/ResourceUtils/ResourceModel.cs                                                       |    9 
 FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs                              |    2 
 FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseElectronSignSettingQuery.cs             |    2 
 FlexJobApi.Core/Models/UserServer/Auths/Commands/SmsLoginCommand.cs                                        |    2 
 FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuFieldCommand.cs                                   |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs                  |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs                          |    2 
 FlexJobApi.Web.Entry/appsettings.json                                                                      |   13 
 FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/ExportTaskCheckReceiveTaskUsersCommand.cs   |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs                    |    2 
 FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SetEnterpriseElectronSignSettingCommand.cs          |    2 
 FlexJobApi.Core/Models/UserServer/Auths/Commands/SendLoginOrRegisterVerifyCodeCommand.cs                   |    2 
 FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeesQuery.cs               |    2 
 FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterprisesQuery.cs                               |    2 
 FlexJobApi.Core/Enums/Users/EnumPersonalUserRealStatus.cs                                                  |   36 
 FlexJobApi.Core/Utils/ResourceUtils/ResourceServiceAttribute.cs                                            |   21 
 FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/PersonalUserFaceRealCommand.cs                    |   19 
 FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetTraceIdLogQuery.cs                               |    2 
 FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignRealStatus.cs                  |   36 
 FlexJobApi.Core/Models/UserServer/Auths/Commands/PasswordLoginCommand.cs                                   |    2 
 FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SaveEnterpriseCommand.cs                            |    2 
 FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRolesQuery.cs                                           |    2 
 FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetExceptionLogsQuery.cs                            |    2 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/DeleteTaskInfoCommand.cs                               |    2 
 FlexJobApi.Core/Models/UserServer/Menus/Commands/DeleteMenuCommand.cs                                      |    2 
 FlexJobApi.Core/Models/UserServer/Menus/Queries/GetMenusQuery.cs                                           |    2 
 FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs              |   71 
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/ApplyTaskCommand.cs                                |    2 
 FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfosQuery.cs                               |    2 
 FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/PersonalUserIdentity3RealCommand.cs               |    2 
 FlexJobApi.Web.Entry/Startup.cs                                                                            |    1 
 FlexJobApi.Core/Models/CommonServer/Resources/Queries/CheckHealthQuery.cs                                  |    2 
 FlexJobApi.Core/Models/UserServer/Users/Commands/SyncOperationUserCommand.cs                               |    2 
 FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/SendRealSmsInput.cs                            |    3 
 FlexJobApi.Core/Models/UserServer/Auths/Commands/BindWxmpUserInfoCommand.cs                                |    2 
 FlexJobApi.Core/Models/UserServer/Roles/Commands/DeleteRoleCommand.cs                                      |    2 
 FlexJobApi.Core/Models/UserServer/Auths/Queries/GetCurrentLogierMenusQuery.cs                              |    2 
 FlexJobApi.Core/Models/UserServer/Auths/Commands/ChangePhoneNumberCommand.cs                               |    2 
 FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRoleUserInfosQuery.cs                                   |    2 
 FlexJobApi.Core/Models/ElectronSignServer/Users/RegOrUpdateUserInput.cs                                    |   59 
 FlexJobApi.Core/Models/UserServer/Users/Commands/SetUserInfoStatusCommand.cs                               |    2 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs                       |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/CollectUserResumeCommand.cs                         |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetOpenUserResumesQuery.cs                           |    2 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs                   |    2 
 FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/RealPersonalInput.cs                           |   98 
 FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRoleQuery.cs                                            |    2 
 FlexJobApi.Core/Models/UserServer/Menus/Commands/SetMenuSwitchCommand.cs                                   |    2 
 FlexJobApi.Core/Models/UserServer/Users/Commands/SetUserInfoRolesCommand.cs                                |    2 
 FlexJobApi.Core/Models/UserServer/Auths/Commands/UpdatePhoneNumberVerifyCodeCommand.cs                     |    2 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs   |    2 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs                        |    2 
 FlexJobApi.Core/Models/CommonServer/FileUtils/Commands/UploadFileCommand.cs                                |    2 
 FlexJobApi.Core/Models/UserServer/Users/Queries/GetOperationUserInfosQuery.cs                              |    2 
 FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetDbAuditLogsQuery.cs                              |    2 
 FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourcesQuery.cs                                 |    2 
 FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitQuery.cs        |    2 
 FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignPersonalRealMethod.cs          |    2 
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserArrangeCommand.cs                       |    2 
 FlexJobApi.Core/Models/UserServer/Roles/Commands/SaveRoleCommand.cs                                        |    2 
 FlexJobApi.Database.Migrations/Migrations/20250819093016_UpdateUser0819.cs                                 |   36 
 FlexJobApi.Core/Models/UserServer/Auths/Commands/WxmpLoginCommand.cs                                       |    2 
 FlexJobApi.Core/Models/ElectronSignServer/Auths/IdentityModelTokenCacheItem.cs                             |   19 
 FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs       |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs                        |    2 
 FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/DefaultResourceHttpProvider.cs                    |   34 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs                             |    2 
 FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetResourceLogsQuery.cs                             |    2 
 FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs                                 |   34 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs                        |    2 
 FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/ElectronSignCallbackCommand.cs                    |   59 
 FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/SendPersonalUserIdentity3RealSmsCommand.cs        |   38 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs                     |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs                               |    2 
 FlexJobApi.Core/Models/UserServer/Auths/Commands/RegisterPersonalUserCommand.cs                            |    2 
 FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs                                                       |   17 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SaveTaskInfoCommand.cs                                 |    2 
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs                          |    2 
 FlexJobApi.UserServer.Application/Roles/Commands/SetRoleIsDisabledCommandHandler.cs                        |    2 
 FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignUserType.cs                    |    2 
 FlexJobApi.Core/Models/UserServer/Menus/Queries/GetMenuQuery.cs                                            |    2 
 FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs                               |    2 
 FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskQuery.cs                  |    2 
 FlexJobApi.Core/Models/UserServer/Auths/Queries/GetCurrentLogierMenuQuery.cs                               |    2 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs               |    2 
 FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/SubmitCheckReceiveTaskCommand.cs            |    2 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetOpenTaskInfosQuery.cs                                |    2 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SetTaskInfoRecommendStatusCommand.cs                   |    2 
 FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SetEnterpriseSmsSettingCommand.cs                   |    2 
 FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml                                    |   61 
 FlexJobApi.Database.Migrations/REDEME.MD                                                                   |    4 
 FlexJobApi.Core/Enums/Common/EnumResourceController.cs                                                     |   73 
 FlexJobApi.Database.Migrations/Migrations/20250819093016_UpdateUser0819.Designer.cs                        | 2616 ++++++++++++++++++
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs                      |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs                                |    2 
 FlexJobApi.Core/Models/CommonServer/LogRecords/Commands/ResendResourceCommand.cs                           |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs                      |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs              |    2 
 FlexJobApi.Core/Models/UserServer/Roles/Commands/SetRoleUserInfosCommand.cs                                |    2 
 FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetLicenseOcrCommand.cs                              |    2 
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/CollectTaskCommand.cs                              |    2 
 FlexJobApi.Core/Models/UserServer/Roles/Commands/SetRoleIsDisabledCommand.cs                               |    2 
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SetTaskInfoReleaseStatusCommand.cs                     |    2 
 /dev/null                                                                                                  |   29 
 FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/CheckReceiveTaskCommand.cs                  |    2 
 FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/ImportEnterpriseEmployeesCommand.cs         |    2 
 FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseSmsSettingQuery.cs                      |    2 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs                   |    2 
 FlexJobApi.Core/Models/UserServer/Auths/Queries/GetAliyunOSSAcsQuery.cs                                    |    2 
 FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/ElectronSignServerCustomerResourceHttpProvider.cs |   30 
 FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/EditEnterpriseEmployeeCommand.cs            |    2 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs                      |    2 
 FlexJobApi.CommonServer.Application/LogRecords/Commands/ResendResourceCommandHandler.cs                    |   13 
 FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetArrangeTaskUsersQuery.cs                         |    2 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs                     |    2 
 156 files changed, 7,768 insertions(+), 480 deletions(-)

diff --git a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml
index e6d7fc4..0bc03fb 100644
--- a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml
+++ b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml
@@ -172,7 +172,7 @@
             閲嶆柊鍙戦�佽祫婧�
             </summary>
         </member>
-        <member name="M:FlexJobApi.CommonServer.Application.ResendResourceCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Entities.Common.ResourceLog,FlexJobApi.Core.LogDbContextLocator},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource},FlexJobApi.Core.ResourceHttpUtils)">
+        <member name="M:FlexJobApi.CommonServer.Application.ResendResourceCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Entities.Common.ResourceLog,FlexJobApi.Core.LogDbContextLocator},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource})">
             <summary>
             閲嶆柊鍙戦�佽祫婧�
             </summary>
diff --git a/FlexJobApi.CommonServer.Application/LogRecords/Commands/ResendResourceCommandHandler.cs b/FlexJobApi.CommonServer.Application/LogRecords/Commands/ResendResourceCommandHandler.cs
index 17662b7..80a8d77 100644
--- a/FlexJobApi.CommonServer.Application/LogRecords/Commands/ResendResourceCommandHandler.cs
+++ b/FlexJobApi.CommonServer.Application/LogRecords/Commands/ResendResourceCommandHandler.cs
@@ -17,14 +17,12 @@
     /// </summary>
     public class ResendResourceCommandHandler(
             IRepository<ResourceLog, LogDbContextLocator> repResourceLog,
-            IRepository<Resource> repResource,
-            ResourceHttpUtils resourceHttpUtils
+            IRepository<Resource> repResource
         ) :
         IRequestHandler<ResendResourceCommand, string>
     {
         private readonly IRepository<ResourceLog, LogDbContextLocator> repResourceLog = repResourceLog;
         private readonly IRepository<Resource> repResource = repResource;
-        private readonly ResourceHttpUtils resourceHttpUtils = resourceHttpUtils;
 
         /// <summary>
         /// 閲嶆柊鍙戦�佽祫婧�
@@ -47,7 +45,14 @@
             if (log == null) throw Oops.Oh(EnumErrorCodeType.s404, "鏃ュ織");
             var resource = await repResource.AsQueryable().AsNoTracking()
                 .Where(it => it.Method == log.Method && it.Route == log.Path)
+                .Select(it => new
+                {
+                    it.ServiceName,
+                    it.Route,
+                    it.Method
+                })
                 .FirstOrDefaultAsync();
+            if (resource == null) throw Oops.Oh(EnumErrorCodeType.s404, "璧勬簮");
             var paramters = log.Request
                 .JsonTo(new
                 {
@@ -55,7 +60,7 @@
                 })
                 .request
                 .ToJson();
-            var result = await resourceHttpUtils.SendHttpAsync(resource, paramters);
+            var result = await paramters.SendHttpAsync(resource.ServiceName, resource.Route, resource.Method);
             return result;
         }
     }
diff --git a/FlexJobApi.Core/Entities/CommonServer/Resource.cs b/FlexJobApi.Core/Entities/CommonServer/Resource.cs
index fa4e71e..dd51a32 100644
--- a/FlexJobApi.Core/Entities/CommonServer/Resource.cs
+++ b/FlexJobApi.Core/Entities/CommonServer/Resource.cs
@@ -25,19 +25,14 @@
         public string DynamicAssemblyName { get; set; }
 
         /// <summary>
-        /// 鏈嶅姟
-        /// </summary>
-        public EnumResourceService Service { get; set; }
-
-        /// <summary>
         /// 鏈嶅姟鍚嶇О
         /// </summary>
         public string ServiceName { get; set; }
 
         /// <summary>
-        /// 鎺у埗鍣�
+        /// 鎺у埗鍣ㄥ悕绉�
         /// </summary>
-        public EnumResourceController Controller { get; set; }
+        public string ControllerName { get; set; }
 
         /// <summary>
         /// 鎺у埗鍣ㄦ憳瑕�
diff --git a/FlexJobApi.Core/Entities/UserServer/Users/User.cs b/FlexJobApi.Core/Entities/UserServer/Users/User.cs
index a2f9d84..c81c54a 100644
--- a/FlexJobApi.Core/Entities/UserServer/Users/User.cs
+++ b/FlexJobApi.Core/Entities/UserServer/Users/User.cs
@@ -115,11 +115,6 @@
         public int Level { get; set; }
 
         /// <summary>
-        /// 瀹炲悕閫氶亾
-        /// </summary>
-        public EnumRealAccess? RealAccess { get; set; }
-
-        /// <summary>
         /// 鏄惁瀹炲悕
         /// </summary>
         public bool IsReal { get; set; }
diff --git a/FlexJobApi.Core/Entities/UserServer/Users/UserAuth.cs b/FlexJobApi.Core/Entities/UserServer/Users/UserAuth.cs
index 93ca11c..001a093 100644
--- a/FlexJobApi.Core/Entities/UserServer/Users/UserAuth.cs
+++ b/FlexJobApi.Core/Entities/UserServer/Users/UserAuth.cs
@@ -50,6 +50,21 @@
         public string IdentityBackImg { get; set; }
 
         /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public EnumUserGender? Gender { get; set; }
+
+        /// <summary>
+        /// 鐢熸棩
+        /// </summary>
+        public DateTime? Birthday { get; set; }
+
+        /// <summary>
+        /// 骞撮緞
+        /// </summary>
+        public int? Age { get; set; }
+
+        /// <summary>
         /// 閾惰鍗″彿
         /// </summary>
         [MaxLength(32)]
@@ -59,5 +74,30 @@
         /// 閾惰鍗$収鐗�
         /// </summary>
         public string BankCardImg { get; set; }
+
+        /// <summary>
+        /// 瀹炲悕閫氶亾
+        /// </summary>
+        public EnumRealAccess? RealAccess { get; set; }
+
+        /// <summary>
+        /// 瀹炲悕鐘舵��
+        /// </summary>
+        public EnumPersonalUserRealStatus RealStatus { get; set; }
+
+        /// <summary>
+        /// 瀹炲悕澶辫触娑堟伅
+        /// </summary>
+        public string RealFailMessage { get; set; }
+
+        /// <summary>
+        /// 鐢靛瓙绛剧敤鎴稩d
+        /// </summary>
+        public Guid? ElectronSignUserId { get; set; }
+
+        /// <summary>
+        /// 浜鸿劯瀹炲悕璁よ瘉鍦板潃
+        /// </summary>
+        public string FaceRealUrl { get; set; }
     }
 }
diff --git a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs
index f9f5abf..dbe6dca 100644
--- a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs
+++ b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs
@@ -14,79 +14,90 @@
         /// <summary>
         /// 鏁版嵁瀛楀吀
         /// </summary>
-        [ResourceController(Service = EnumResourceService.FlexJobServer)]
-        Dictionary,
+        [ResourceController(EnumResourceService.FlexJobServer, "Dictionary")]
+        FlexJobServerDictionary,
         /// <summary>
         /// 浠诲姟
         /// </summary>
-        [ResourceController(Service = EnumResourceService.FlexJobServer)]
-        Task,
+        [ResourceController(EnumResourceService.FlexJobServer, "Task")]
+        FlexJobServerTask,
         /// <summary>
         /// 浠诲姟浜哄憳
         /// </summary>
-        [ResourceController(Service = EnumResourceService.FlexJobServer)]
-        TaskUser,
+        [ResourceController(EnumResourceService.FlexJobServer, "TaskUser")]
+        FlexJobServerTaskUser,
         /// <summary>
         /// 浠诲姟楠屾敹
         /// </summary>
-        [ResourceController(Service = EnumResourceService.FlexJobServer)]
-        TaskCheckReceive,
+        [ResourceController(EnumResourceService.FlexJobServer, "TaskCheckReceive")]
+        FlexJobServerTaskCheckReceive,
 
         /// <summary>
-        /// 鏂囧瓧璇嗗埆
+        /// 鏂囦欢
         /// </summary>
-        [ResourceController(Service = EnumResourceService.CommonServer)]
-        FileUtils,
+        [ResourceController(EnumResourceService.CommonServer, "FileUtils")]
+        CommonServerFileUtils,
         /// <summary>
         /// 鏂囧瓧璇嗗埆
         /// </summary>
-        [ResourceController(Service = EnumResourceService.CommonServer)]
-        OcrUtils,
+        [ResourceController(EnumResourceService.CommonServer, "OcrUtils")]
+        CommonServerOcrUtils,
         /// <summary>
         /// 鏃ュ織璁板綍
         /// </summary>
-        [ResourceController(Service = EnumResourceService.CommonServer)]
-        LogRecords,
+        [ResourceController(EnumResourceService.CommonServer, "LogRecords")]
+        CommonServerLogRecords,
 
         /// <summary>
         /// 鐢ㄦ埛璁よ瘉
         /// </summary>
-        [ResourceController(Service = EnumResourceService.UserServer)]
-        Auth,
+        [ResourceController(EnumResourceService.UserServer, "Auth")]
+        UserServerAuth,
         /// <summary>
         /// 鐢ㄦ埛鑿滃崟
         /// </summary>
-        [ResourceController(Service = EnumResourceService.UserServer)]
-        Menu,
+        [ResourceController(EnumResourceService.UserServer, "Menu")]
+        UserServerMenu,
         /// <summary>
         /// 鐢ㄦ埛璧勬簮
         /// </summary>
-        [ResourceController(Service = EnumResourceService.UserServer)]
-        Resource,
+        [ResourceController(EnumResourceService.UserServer, "Resource")]
+        UserServerResource,
         /// <summary>
         /// 鐢ㄦ埛瑙掕壊
         /// </summary>
-        [ResourceController(Service = EnumResourceService.UserServer)]
-        Role,
+        [ResourceController(EnumResourceService.UserServer, "Role")]
+        UserServerRole,
         /// <summary>
         /// 鐢ㄦ埛淇℃伅
         /// </summary>
-        [ResourceController(Service = EnumResourceService.UserServer)]
-        User,
+        [ResourceController(EnumResourceService.UserServer, "User")]
+        UserServerUser,
+        /// <summary>
+        /// 鐢靛瓙绛�
+        /// </summary>
+        [ResourceController(EnumResourceService.UserServer, "ElectronSign")]
+        UserServerElectronSign,
         /// <summary>
         /// 鐢ㄦ埛绠�鍘�
         /// </summary>
-        [ResourceController(Service = EnumResourceService.UserServer)]
-        UserResume,
+        [ResourceController(EnumResourceService.UserServer, "UserResume")]
+        UserServerUserResume,
         /// <summary>
         /// 浼佷笟淇℃伅
         /// </summary>
-        [ResourceController(Service = EnumResourceService.UserServer)]
-        Enterprise,
+        [ResourceController(EnumResourceService.UserServer, "Enterprise")]
+        UserServerEnterprise,
         /// <summary>
         /// 鐏靛伐淇℃伅
         /// </summary>
-        [ResourceController(Service = EnumResourceService.UserServer)]
-        EnterpriseEmployee
+        [ResourceController(EnumResourceService.UserServer, "EnterpriseEmployee")]
+        UserServerEnterpriseEmployee,
+
+        /// <summary>
+        /// 鐢靛瓙绛�
+        /// </summary>
+        [ResourceController(EnumResourceService.ElectronSignServer, "ElectronSign")]
+        ElectronSignServerElectronSign,
     }
 }
diff --git a/FlexJobApi.Core/Enums/Common/EnumResourceService.cs b/FlexJobApi.Core/Enums/Common/EnumResourceService.cs
index 49f877a..ff67bfc 100644
--- a/FlexJobApi.Core/Enums/Common/EnumResourceService.cs
+++ b/FlexJobApi.Core/Enums/Common/EnumResourceService.cs
@@ -15,22 +15,27 @@
         /// <summary>
         /// 鐏垫椿鐢ㄥ伐鏈嶅姟
         /// </summary>
-        [ResourceService(ApplicationName = "FlexJobApi.FlexJobServer.Application", RouteArea = "flexjob", ServiceName = "FlexJobServices")]
+        [ResourceService(ApplicationName = "FlexJobApi.FlexJobServer.Application", RouteArea = "flexjob")]
         FlexJobServer,
         /// <summary>
         /// 閫氱敤鏈嶅姟
         /// </summary>
-        [ResourceService(ApplicationName = "FlexJobApi.CommonServer.Application", RouteArea = "common", ServiceName = "FlexJobServices")]
+        [ResourceService(ApplicationName = "FlexJobApi.CommonServer.Application", RouteArea = "common")]
         CommonServer,
         /// <summary>
         /// 鐢ㄦ埛鏈嶅姟
         /// </summary>
-        [ResourceService(ApplicationName = "FlexJobApi.UserServer.Application", RouteArea = "user", ServiceName = "FlexJobServices")]
+        [ResourceService(ApplicationName = "FlexJobApi.UserServer.Application", RouteArea = "user")]
         UserServer,
         /// <summary>
         /// 浜哄姏璧勬簮鏈嶅姟
         /// </summary>
-        [ResourceService(ServiceName = "HumanResourcesServices")]
-        HumanResourcesServer
+        [ResourceService]
+        HumanResourcesServer,
+        /// <summary>
+        /// 鐢靛瓙绛炬湇鍔�
+        /// </summary>
+        [ResourceService]
+        ElectronSignServer
     }
 }
diff --git a/FlexJobApi.Core/Enums/Users/EnumPersonalUserRealStatus.cs b/FlexJobApi.Core/Enums/Users/EnumPersonalUserRealStatus.cs
new file mode 100644
index 0000000..6c69764
--- /dev/null
+++ b/FlexJobApi.Core/Enums/Users/EnumPersonalUserRealStatus.cs
@@ -0,0 +1,36 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 涓汉鐢ㄦ埛瀹炲悕鐘舵��
+    /// </summary>
+    public enum EnumPersonalUserRealStatus
+    {
+        /// <summary>
+        /// 鏈疄鍚�
+        /// </summary>
+        [Description("鏈疄鍚�")]
+        UnReal = 0,
+        /// <summary>
+        /// 鏍¢獙涓�
+        /// </summary>
+        [Description("鏍¢獙涓�")]
+        Checking = 10,
+        /// <summary>
+        /// 瀹炲悕澶辫触
+        /// </summary>
+        [Description("瀹炲悕澶辫触")]
+        Fail = 99,
+        /// <summary>
+        /// 宸插疄鍚�
+        /// </summary>
+        [Description("宸插疄鍚�")]
+        Real = 100
+    }
+}
diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index 896bc92..8c6841d 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -470,19 +470,14 @@
             鍔ㄦ�佺▼搴忛泦鍚嶇О
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.Resource.Service">
-            <summary>
-            鏈嶅姟
-            </summary>
-        </member>
         <member name="P:FlexJobApi.Core.Resource.ServiceName">
             <summary>
             鏈嶅姟鍚嶇О
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.Resource.Controller">
+        <member name="P:FlexJobApi.Core.Resource.ControllerName">
             <summary>
-            鎺у埗鍣�
+            鎺у埗鍣ㄥ悕绉�
             </summary>
         </member>
         <member name="P:FlexJobApi.Core.Resource.ControllerSummary">
@@ -2051,11 +2046,6 @@
             绾у埆
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.User.RealAccess">
-            <summary>
-            瀹炲悕閫氶亾
-            </summary>
-        </member>
         <member name="P:FlexJobApi.Core.User.IsReal">
             <summary>
             鏄惁瀹炲悕
@@ -2247,6 +2237,21 @@
             韬唤璇佸浗寰介潰
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.UserAuth.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.UserAuth.Birthday">
+            <summary>
+            鐢熸棩
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.UserAuth.Age">
+            <summary>
+            骞撮緞
+            </summary>
+        </member>
         <member name="P:FlexJobApi.Core.UserAuth.BankCard">
             <summary>
             閾惰鍗″彿
@@ -2255,6 +2260,31 @@
         <member name="P:FlexJobApi.Core.UserAuth.BankCardImg">
             <summary>
             閾惰鍗$収鐗�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.UserAuth.RealAccess">
+            <summary>
+            瀹炲悕閫氶亾
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.UserAuth.RealStatus">
+            <summary>
+            瀹炲悕鐘舵��
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.UserAuth.RealFailMessage">
+            <summary>
+            瀹炲悕澶辫触娑堟伅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.UserAuth.ElectronSignUserId">
+            <summary>
+            鐢靛瓙绛剧敤鎴稩d
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.UserAuth.FaceRealUrl">
+            <summary>
+            浜鸿劯瀹炲悕璁よ瘉鍦板潃
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.UserBankCard">
@@ -2517,79 +2547,89 @@
             璧勬簮鎺у埗鍣�
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.Dictionary">
+        <member name="F:FlexJobApi.Core.EnumResourceController.FlexJobServerDictionary">
             <summary>
             鏁版嵁瀛楀吀
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.Task">
+        <member name="F:FlexJobApi.Core.EnumResourceController.FlexJobServerTask">
             <summary>
             浠诲姟
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.TaskUser">
+        <member name="F:FlexJobApi.Core.EnumResourceController.FlexJobServerTaskUser">
             <summary>
             浠诲姟浜哄憳
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.TaskCheckReceive">
+        <member name="F:FlexJobApi.Core.EnumResourceController.FlexJobServerTaskCheckReceive">
             <summary>
             浠诲姟楠屾敹
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.FileUtils">
+        <member name="F:FlexJobApi.Core.EnumResourceController.CommonServerFileUtils">
+            <summary>
+            鏂囦欢
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumResourceController.CommonServerOcrUtils">
             <summary>
             鏂囧瓧璇嗗埆
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.OcrUtils">
-            <summary>
-            鏂囧瓧璇嗗埆
-            </summary>
-        </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.LogRecords">
+        <member name="F:FlexJobApi.Core.EnumResourceController.CommonServerLogRecords">
             <summary>
             鏃ュ織璁板綍
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.Auth">
+        <member name="F:FlexJobApi.Core.EnumResourceController.UserServerAuth">
             <summary>
             鐢ㄦ埛璁よ瘉
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.Menu">
+        <member name="F:FlexJobApi.Core.EnumResourceController.UserServerMenu">
             <summary>
             鐢ㄦ埛鑿滃崟
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.Resource">
+        <member name="F:FlexJobApi.Core.EnumResourceController.UserServerResource">
             <summary>
             鐢ㄦ埛璧勬簮
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.Role">
+        <member name="F:FlexJobApi.Core.EnumResourceController.UserServerRole">
             <summary>
             鐢ㄦ埛瑙掕壊
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.User">
+        <member name="F:FlexJobApi.Core.EnumResourceController.UserServerUser">
             <summary>
             鐢ㄦ埛淇℃伅
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.UserResume">
+        <member name="F:FlexJobApi.Core.EnumResourceController.UserServerElectronSign">
+            <summary>
+            鐢靛瓙绛�
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumResourceController.UserServerUserResume">
             <summary>
             鐢ㄦ埛绠�鍘�
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.Enterprise">
+        <member name="F:FlexJobApi.Core.EnumResourceController.UserServerEnterprise">
             <summary>
             浼佷笟淇℃伅
             </summary>
         </member>
-        <member name="F:FlexJobApi.Core.EnumResourceController.EnterpriseEmployee">
+        <member name="F:FlexJobApi.Core.EnumResourceController.UserServerEnterpriseEmployee">
             <summary>
             鐏靛伐淇℃伅
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumResourceController.ElectronSignServerElectronSign">
+            <summary>
+            鐢靛瓙绛�
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.EnumResourceMethod">
@@ -2645,6 +2685,11 @@
         <member name="F:FlexJobApi.Core.EnumResourceService.HumanResourcesServer">
             <summary>
             浜哄姏璧勬簮鏈嶅姟
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumResourceService.ElectronSignServer">
+            <summary>
+            鐢靛瓙绛炬湇鍔�
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.EnumSmsAccess">
@@ -3145,6 +3190,31 @@
         <member name="F:FlexJobApi.Core.EnumPersonalRealMethod.Face">
             <summary>
             鍒疯劯璁よ瘉
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.EnumPersonalUserRealStatus">
+            <summary>
+            涓汉鐢ㄦ埛瀹炲悕鐘舵��
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumPersonalUserRealStatus.UnReal">
+            <summary>
+            鏈疄鍚�
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumPersonalUserRealStatus.Checking">
+            <summary>
+            鏍¢獙涓�
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumPersonalUserRealStatus.Fail">
+            <summary>
+            瀹炲悕澶辫触
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumPersonalUserRealStatus.Real">
+            <summary>
+            宸插疄鍚�
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.EnumRealAccess">
@@ -4356,6 +4426,216 @@
         <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ResponseTypeFullName">
             <summary>
             鍝嶅簲绫诲瀷鍏ㄥ悕
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignPersonalRealMethod">
+            <summary>
+            鐢靛瓙绛�-瀹炲悕-璁よ瘉鏂瑰紡锛�10涓汉鎵嬫満鍙蜂笁瑕佺礌 20閾惰鍗″瑕佺礌 30鍒疯劯璁よ瘉锛�
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignPersonalRealMethod.Identity3">
+            <summary>
+            涓汉鎵嬫満鍙蜂笁瑕佺礌
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignPersonalRealMethod.Identity4">
+            <summary>
+            閾惰鍗″瑕佺礌
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignPersonalRealMethod.Face">
+            <summary>
+            鍒疯劯璁よ瘉
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignRealStatus">
+            <summary>
+            鐢靛瓙绛�-瀹炲悕鐘舵�侊紙0鏈疄鍚� 10鏍¢獙涓� 99瀹炲悕澶辫触 100宸插疄鍚嶏級
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignRealStatus.UnReal">
+            <summary>
+            鏈疄鍚�
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignRealStatus.Checking">
+            <summary>
+            鏍¢獙涓�
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignRealStatus.Fail">
+            <summary>
+            瀹炲悕澶辫触
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignRealStatus.Real">
+            <summary>
+            宸插疄鍚�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignUserType">
+            <summary>
+            鐢靛瓙绛�-鐢ㄦ埛绫诲瀷锛�10浼佷笟 20涓汉锛�
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignUserType.Company">
+            <summary>
+            浼佷笟
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.EnumElectronSignUserType.Personal">
+            <summary>
+            涓汉
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput">
+            <summary>
+            涓汉鐢ㄦ埛瀹炲悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput.OutUserId">
+            <summary>
+            瀵瑰涓汉Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput.RealMethod">
+            <summary>
+            璁よ瘉鏂瑰紡锛�10涓汉鎵嬫満鍙蜂笁瑕佺礌 20閾惰鍗″瑕佺礌 30鍒疯劯璁よ瘉锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput.Identity">
+            <summary>
+            韬唤璇佸彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput.IdentityImgUrl">
+            <summary>
+            韬唤璇佷汉鍍忛潰Url
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput.IdentityBackImgUrl">
+            <summary>
+            韬唤璇佸浗寰介潰Url
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput.BankCard">
+            <summary>
+            閾惰鍗″彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput.BankCardImgUrl">
+            <summary>
+            閾惰鍗$収鐗�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput.Mobile">
+            <summary>
+            鎵嬫満鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput.VCode">
+            <summary>
+            楠岃瘉鐮�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalOutput.Id">
+            <summary>
+            璁よ瘉娴佹按鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalOutput.FaceUrl">
+            <summary>
+            浜鸿劯璁よ瘉鍦板潃
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalOutput.Status">
+            <summary>
+            鐘舵�侊紙0鏈疄鍚� 10鏍¢獙涓� 99瀹炲悕澶辫触 100宸插疄鍚嶏級
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.SendRealSmsInput">
+            <summary>
+            鍙戦�佸疄鍚嶇煭淇�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.SendRealSmsInput.UserType">
+            <summary>
+            鐢ㄦ埛绫诲瀷锛�10浼佷笟 20涓汉锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.SendRealSmsInput.OutUserId">
+            <summary>
+            瀵瑰浼佷笟/涓汉Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.SendRealSmsInput.RealMethod">
+            <summary>
+            涓汉璁よ瘉鏂瑰紡锛�10涓汉鎵嬫満鍙蜂笁瑕佺礌 20閾惰鍗″瑕佺礌 30鍒疯劯璁よ瘉锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.SendRealSmsInput.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.SendRealSmsInput.Identity">
+            <summary>
+            璇佷欢鍙风爜
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.SendRealSmsInput.Mobile">
+            <summary>
+            鎵嬫満鍙风爜
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.SendRealSmsInput.BankCard">
+            <summary>
+            閾惰鍗″彿
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.Models.ElectronSignServer.Users.RegOrUpdateUserInput">
+            <summary>
+            娉ㄥ唽鎴栨洿鏂扮數瀛愮鐢ㄦ埛
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.Users.RegOrUpdateUserInput.OutUserId">
+            <summary>
+            澶栭儴浼佷笟Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.Users.RegOrUpdateUserInput.UserType">
+            <summary>
+            鐢ㄦ埛绫诲瀷锛�10浼佷笟 20涓汉锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.Users.RegOrUpdateUserInput.EnterpriseName">
+            <summary>
+            浼佷笟鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.Users.RegOrUpdateUserInput.SocietyCreditCode">
+            <summary>
+            缁熶竴绀句細淇$敤浠g爜
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.Users.RegOrUpdateUserInput.Name">
+            <summary>
+            涓汉鎴栨硶浜烘垨缁忓姙浜哄鍚�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.Users.RegOrUpdateUserInput.Identity">
+            <summary>
+            涓汉鎴栨硶浜烘垨缁忓姙浜鸿韩浠借瘉鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.Models.ElectronSignServer.Users.RegOrUpdateUserInput.Mobile">
+            <summary>
+            涓汉鎴栨硶浜烘垨缁忓姙浜烘墜鏈哄彿
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.CheckReceiveTaskCommand">
@@ -6207,81 +6487,6 @@
             褰曠敤鐘舵��
             </summary>
         </member>
-        <member name="T:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.EnumElectronSignPersonalRealMethod">
-            <summary>
-            鐢靛瓙绛�-瀹炲悕-璁よ瘉鏂瑰紡锛�10涓汉鎵嬫満鍙蜂笁瑕佺礌 20閾惰鍗″瑕佺礌 30鍒疯劯璁よ瘉锛�
-            </summary>
-        </member>
-        <member name="F:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.EnumElectronSignPersonalRealMethod.Identity3">
-            <summary>
-            涓汉鎵嬫満鍙蜂笁瑕佺礌
-            </summary>
-        </member>
-        <member name="F:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.EnumElectronSignPersonalRealMethod.Identity4">
-            <summary>
-            閾惰鍗″瑕佺礌
-            </summary>
-        </member>
-        <member name="F:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.EnumElectronSignPersonalRealMethod.Face">
-            <summary>
-            鍒疯劯璁よ瘉
-            </summary>
-        </member>
-        <member name="T:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.EnumElectronSignUserType">
-            <summary>
-            鐢靛瓙绛�-鐢ㄦ埛绫诲瀷锛�10浼佷笟 20涓汉锛�
-            </summary>
-        </member>
-        <member name="F:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.EnumElectronSignUserType.Company">
-            <summary>
-            浼佷笟
-            </summary>
-        </member>
-        <member name="F:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.EnumElectronSignUserType.Personal">
-            <summary>
-            涓汉
-            </summary>
-        </member>
-        <member name="T:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.SendRealSmsInput">
-            <summary>
-            鍙戦�佸疄鍚嶇煭淇�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.SendRealSmsInput.UserType">
-            <summary>
-            鐢ㄦ埛绫诲瀷锛�10浼佷笟 20涓汉锛�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.SendRealSmsInput.OutUserId">
-            <summary>
-            瀵瑰浼佷笟/涓汉Id
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.SendRealSmsInput.RealMethod">
-            <summary>
-            涓汉璁よ瘉鏂瑰紡锛�10涓汉鎵嬫満鍙蜂笁瑕佺礌 20閾惰鍗″瑕佺礌 30鍒疯劯璁よ瘉锛�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.SendRealSmsInput.Name">
-            <summary>
-            濮撳悕
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.SendRealSmsInput.Identity">
-            <summary>
-            璇佷欢鍙风爜
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.SendRealSmsInput.Mobile">
-            <summary>
-            鎵嬫満鍙风爜
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign.SendRealSmsInput.BankCard">
-            <summary>
-            閾惰鍗″彿
-            </summary>
-        </member>
         <member name="T:FlexJobApi.Core.BindWxmpUserInfoCommand">
             <summary>
             缁戝畾寰俊灏忕▼搴忕敤鎴蜂俊鎭�
@@ -6470,6 +6675,127 @@
         <member name="T:FlexJobApi.Core.GetCurrentLogierMenusQuery">
             <summary>
             鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛鑿滃崟
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.ElectronSignCallbackCommand">
+            <summary>
+            鐢靛瓙绛惧洖浼�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ElectronSignCallbackCommand.CustomerId">
+            <summary>
+            瀹㈡埛Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ElectronSignCallbackCommand.Action">
+            <summary>
+            鏂规硶鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ElectronSignCallbackCommand.Success">
+            <summary>
+            鏄惁鎴愬姛
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ElectronSignCallbackCommand.Code">
+            <summary>
+            鍥炶皟鐮�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ElectronSignCallbackCommand.Message">
+            <summary>
+            鍥炶皟娑堟伅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ElectronSignCallbackCommand.RelationId">
+            <summary>
+            鍏宠仈Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ElectronSignCallbackCommand.Data">
+            <summary>
+            鍥炰紶鏁版嵁
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.PersonalUserFaceRealCommand">
+            <summary>
+            涓汉浜鸿劯瀹炲悕璁よ瘉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.PersonalUserFaceRealCommand.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.PersonalUserFaceRealCommand.Identity">
+            <summary>
+            韬唤璇佸彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.PersonalUserFaceRealCommand.IdentityImg">
+            <summary>
+            韬唤璇佷汉鍍忛潰
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.PersonalUserFaceRealCommand.IdentityBackImg">
+            <summary>
+            韬唤璇佸浗寰介潰
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.PersonalUserIdentity3RealCommand">
+            <summary>
+            涓汉涓夎绱犲疄鍚嶈璇�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.PhoneNumber">
+            <summary>
+            鎵嬫満鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.Identity">
+            <summary>
+            韬唤璇佸彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.IdentityImg">
+            <summary>
+            韬唤璇佷汉鍍忛潰
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.IdentityBackImg">
+            <summary>
+            韬唤璇佸浗寰介潰
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.VerifyCode">
+            <summary>
+            楠岃瘉鐮�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.SendPersonalUserIdentity3RealSmsCommand">
+            <summary>
+            鍙戦�佷釜浜轰笁瑕佺礌瀹炲悕鐭俊
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SendPersonalUserIdentity3RealSmsCommand.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SendPersonalUserIdentity3RealSmsCommand.PhoneNumber">
+            <summary>
+            鎵嬫満鍙�
+            </summary>
+            <remarks>鐧诲綍鎵嬫満鍙�</remarks>
+        </member>
+        <member name="P:FlexJobApi.Core.SendPersonalUserIdentity3RealSmsCommand.Identity">
+            <summary>
+            韬唤璇佸彿
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.EditEnterpriseEmployeeCommand">
@@ -9089,46 +9415,6 @@
             宸ヤ綔缁忛獙
             </summary>
         </member>
-        <member name="T:FlexJobApi.Core.PersonalUserIdentity3RealCommand">
-            <summary>
-            涓汉涓夎绱犲疄鍚嶈璇�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.Name">
-            <summary>
-            濮撳悕
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.PhoneNumber">
-            <summary>
-            鎵嬫満鍙�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.Identity">
-            <summary>
-            韬唤璇佸彿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.IdentityImg">
-            <summary>
-            韬唤璇佷汉鍍忛潰
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.IdentityBackImg">
-            <summary>
-            韬唤璇佸浗寰介潰
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.PersonalUserIdentity3RealCommand.VerifyCode">
-            <summary>
-            楠岃瘉鐮�
-            </summary>
-        </member>
-        <member name="T:FlexJobApi.Core.SendPersonalUserIdentity3RealSmsCommand">
-            <summary>
-            鍙戦�佷釜浜轰笁瑕佺礌瀹炲悕鐭俊
-            </summary>
-        </member>
         <member name="T:FlexJobApi.Core.SetUserInfoRolesCommand">
             <summary>
             璁剧疆鐢ㄦ埛淇℃伅瑙掕壊
@@ -10898,6 +11184,26 @@
             <param name="password"></param>
             <returns></returns>
         </member>
+        <member name="T:FlexJobApi.Core.DefaultResourceHttpProvider">
+            <summary>
+            榛樿璧勬簮鎻愪緵鑰�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.ElectronSignServerCustomerResourceHttpProvider">
+            <summary>
+            鐢靛瓙绛惧鎴风璧勬簮鎻愪緵鑰�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.ElectronSignServerResourceHttpProvider">
+            <summary>
+            鐢靛瓙绛捐祫婧愭彁渚涜��
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.SystemUserResourceHttpProvider">
+            <summary>
+            绯荤粺绠$悊鍛樿祫婧愭彁渚涜��
+            </summary>
+        </member>
         <member name="P:FlexJobApi.Core.TokenDataModel.AccessToken">
             <summary>
             鐢ㄦ埛璁块棶浠ょ墝
@@ -10907,16 +11213,6 @@
             <summary>
             鍒锋柊浠ょ墝
             </summary>
-        </member>
-        <member name="M:FlexJobApi.Core.ResourceHttpUtils.SendHttpAsync``2(``0,FlexJobApi.Core.IResourceHttpProvider)">
-            <summary>
-            鍙戦�丠TTP璇锋眰
-            </summary>
-            <typeparam name="TRequest"></typeparam>
-            <typeparam name="TResponse"></typeparam>
-            <param name="request"></param>
-            <param name="provider"></param>
-            <returns></returns>
         </member>
         <member name="M:FlexJobApi.Core.ResourceHttpUtils.GetHealthyServiceDomain(System.String)">
             <summary>
@@ -10940,19 +11236,14 @@
             鍔ㄦ�佺▼搴忛泦鍚嶇О
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.ResourceModel.Service">
-            <summary>
-            鏈嶅姟
-            </summary>
-        </member>
         <member name="P:FlexJobApi.Core.ResourceModel.ServiceName">
             <summary>
             鏈嶅姟鍚嶇О
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.ResourceModel.Controller">
+        <member name="P:FlexJobApi.Core.ResourceModel.ControllerName">
             <summary>
-            鎺у埗鍣�
+            鎺у埗鍣ㄥ悕绉�
             </summary>
         </member>
         <member name="P:FlexJobApi.Core.ResourceModel.ControllerSummary">
@@ -11045,6 +11336,11 @@
             璇锋眰鏂瑰紡
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.ResourceAttribute.Route">
+            <summary>
+            璺敱
+            </summary>
+        </member>
         <member name="P:FlexJobApi.Core.ResourceAttribute.FileUpload">
             <summary>
             鏂囦欢涓婁紶
@@ -11060,6 +11356,11 @@
             鏈嶅姟
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.ResourceControllerAttribute.ControllerName">
+            <summary>
+            鎺у埗鍣ㄥ悕绉�
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.ResourceServiceAttribute">
             <summary>
             璧勬簮鏈嶅姟鐗规��
@@ -11073,11 +11374,6 @@
         <member name="P:FlexJobApi.Core.ResourceServiceAttribute.RouteArea">
             <summary>
             璺敱鍖哄煙
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.ResourceServiceAttribute.ServiceName">
-            <summary>
-            鏈嶅姟鍚嶇О
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.ResourceUtils">
diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs
index ea17206..b13f608 100644
--- a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鍒犻櫎鏁版嵁瀛楀吀绫诲埆
     /// </summary>
-    [Resource([EnumResourceController.Dictionary])]
+    [Resource([EnumResourceController.FlexJobServerDictionary])]
     public class DeleteDictionaryCategoryCommand : DeleteDataCommand
     {
 
diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs
index 999f4da..b71aa30 100644
--- a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 淇濆瓨鏁版嵁瀛楀吀绫诲埆
     /// </summary>
-    [Resource([EnumResourceController.Dictionary])]
+    [Resource([EnumResourceController.FlexJobServerDictionary])]
     public class SaveDictionaryCategoryCommand : SaveDataCommand
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs
index 1cb7540..23946ad 100644
--- a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 淇濆瓨鏁版嵁瀛楀吀
     /// </summary>
-    [Resource([EnumResourceController.Dictionary])]
+    [Resource([EnumResourceController.FlexJobServerDictionary])]
     public class SaveDictionaryDataCommand : SaveDataCommand
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs
index 7c44111..dfdded2 100644
--- a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 璁剧疆鏁版嵁瀛楀吀鏄惁绂佺敤
     /// </summary>
-    [Resource([EnumResourceController.Dictionary])]
+    [Resource([EnumResourceController.FlexJobServerDictionary])]
     public class SetDictionaryDataIsDisabledCommand : SetIsDisabledCommand
     {
 
diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs
index ef453ad..86ad9d1 100644
--- a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁
     /// </summary>
-    [Resource([EnumResourceController.Dictionary])]
+    [Resource([EnumResourceController.FlexJobServerDictionary])]
     public class SyncHumanResourcesAreaDictionaryDataCommand : IRequest<int>
     {
     }
diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs
index 4048f8b..1e24a50 100644
--- a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs
@@ -14,7 +14,7 @@
     /// <summary>
     /// 鏌ヨ鍦板尯閫夋嫨鍣�
     /// </summary>
-    [Resource([EnumResourceController.Dictionary], AllowAnonymous = true)]
+    [Resource([EnumResourceController.FlexJobServerDictionary], AllowAnonymous = true)]
     public class GetAreaSelectQuery : IRequest<List<GetAreaSelectQueryResultOption>>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs
index a0f5619..7f740e8 100644
--- a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鑾峰彇鏁版嵁瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁
     /// </summary>
-    [Resource([EnumResourceController.Dictionary])]
+    [Resource([EnumResourceController.FlexJobServerDictionary])]
     public class GetDictionaryCategoriesQuery : PagedListQuery<PagedListQueryResult<GetDictionaryCategoriesQueryResultItem>, GetDictionaryCategoriesQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs
index b7e7d23..2cf46e5 100644
--- a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鏌ヨ鏁版嵁瀛楀吀绫诲埆閫夋嫨鍣ㄦ暟鎹�
     /// </summary>
-    [Resource([EnumResourceController.Dictionary], AllowAnonymous = true)]
+    [Resource([EnumResourceController.FlexJobServerDictionary], AllowAnonymous = true)]
     public class GetDictionaryCategorySelectQuery : SelectQuery<Guid, GetDictionaryCategorySelectQueryOption>
     {
     }
diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs
index 3de0650..27f58cd 100644
--- a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ鏁版嵁瀛楀吀閫夋嫨鍣�
     /// </summary>
-    [Resource([EnumResourceController.Dictionary], AllowAnonymous = true)]
+    [Resource([EnumResourceController.FlexJobServerDictionary], AllowAnonymous = true)]
     public class GetDictionaryDataSelectQuery : SelectQuery<string, GetDictionaryDataSelectQueryResultOption>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs
index aa54be6..dcb3917 100644
--- a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鑾峰彇鏁版嵁瀛楀吀鍒嗛〉鍒楄〃鏁版嵁
     /// </summary>
-    [Resource([EnumResourceController.Dictionary])]
+    [Resource([EnumResourceController.FlexJobServerDictionary])]
     public class GetDictionaryDatasQuery : PagedListQuery<PagedListQueryResult<GetDictionaryDatasQueryResultItem>, GetDictionaryDatasQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/FileUtils/Commands/UploadFileCommand.cs b/FlexJobApi.Core/Models/CommonServer/FileUtils/Commands/UploadFileCommand.cs
index 3dfc16f..2fb8e08 100644
--- a/FlexJobApi.Core/Models/CommonServer/FileUtils/Commands/UploadFileCommand.cs
+++ b/FlexJobApi.Core/Models/CommonServer/FileUtils/Commands/UploadFileCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 涓婁紶鏂囦欢
     /// </summary>
-    [Resource([EnumResourceController.FileUtils], FileUpload = true)]
+    [Resource([EnumResourceController.CommonServerFileUtils], FileUpload = true)]
     public class UploadFileCommand : IRequest<UploadFileCommandResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/FileUtils/Queries/GetFileUrlQuery.cs b/FlexJobApi.Core/Models/CommonServer/FileUtils/Queries/GetFileUrlQuery.cs
index 15d4bd2..464fef6 100644
--- a/FlexJobApi.Core/Models/CommonServer/FileUtils/Queries/GetFileUrlQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/FileUtils/Queries/GetFileUrlQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鑾峰彇鏂囦欢鍦板潃
     /// </summary>
-    [Resource([EnumResourceController.FileUtils])]
+    [Resource([EnumResourceController.CommonServerFileUtils])]
     public class GetFileUrlQuery : IRequest<string>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/LogRecords/Commands/ResendResourceCommand.cs b/FlexJobApi.Core/Models/CommonServer/LogRecords/Commands/ResendResourceCommand.cs
index 4ae2ae2..483fa5e 100644
--- a/FlexJobApi.Core/Models/CommonServer/LogRecords/Commands/ResendResourceCommand.cs
+++ b/FlexJobApi.Core/Models/CommonServer/LogRecords/Commands/ResendResourceCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 閲嶆柊鍙戦�佽祫婧�
     /// </summary>
-    [Resource([EnumResourceController.LogRecords])]
+    [Resource([EnumResourceController.CommonServerLogRecords])]
     public class ResendResourceCommand : IRequest<string>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetDbAuditLogsQuery.cs b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetDbAuditLogsQuery.cs
index 2efe265..af55672 100644
--- a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetDbAuditLogsQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetDbAuditLogsQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ鏁版嵁搴撳璁℃棩蹇楀垎椤靛垪琛�
     /// </summary>
-    [Resource([EnumResourceController.LogRecords])]
+    [Resource([EnumResourceController.CommonServerLogRecords])]
     public class GetDbAuditLogsQuery : PagedListQuery<GetDbAuditLogsQueryResult, GetDbAuditLogsQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetExceptionLogsQuery.cs b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetExceptionLogsQuery.cs
index 9c78884..63175de 100644
--- a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetExceptionLogsQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetExceptionLogsQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 寮傚父鏃ュ織鍒嗛〉鍒楄〃鏌ヨ
     /// </summary>
-    [Resource([EnumResourceController.LogRecords])]
+    [Resource([EnumResourceController.CommonServerLogRecords])]
     public class GetExceptionLogsQuery : PagedListQuery<GetExceptionLogsQueryResult, GetExceptionLogsQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetResourceLogsQuery.cs b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetResourceLogsQuery.cs
index c3486b1..1b1fd29 100644
--- a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetResourceLogsQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetResourceLogsQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 璧勬簮鏃ュ織鍒嗛〉鍒楄〃鏌ヨ
     /// </summary>
-    [Resource([EnumResourceController.LogRecords])]
+    [Resource([EnumResourceController.CommonServerLogRecords])]
     public class GetResourceLogsQuery : PagedListQuery<GetResourceLogsQueryResult, GetResourceLogsQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetTraceIdLogQuery.cs b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetTraceIdLogQuery.cs
index 2abe100..70bce39 100644
--- a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetTraceIdLogQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetTraceIdLogQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 璺熻釜Id鏃ュ織鏌ヨ
     /// </summary>
-    [Resource([EnumResourceController.LogRecords])]
+    [Resource([EnumResourceController.CommonServerLogRecords])]
     public class GetTraceIdLogQuery : IRequest<GetTraceIdLogQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetLicenseOcrCommand.cs b/FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetLicenseOcrCommand.cs
index ec9cdab..fcdb4d8 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.OcrUtils])]
+    [Resource([EnumResourceController.CommonServerOcrUtils])]
     public class GetLicenseOcrCommand : IRequest<GetLicenseOcrCommandResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/Resources/Queries/CheckHealthQuery.cs b/FlexJobApi.Core/Models/CommonServer/Resources/Queries/CheckHealthQuery.cs
index 23fd998..a8d33f8 100644
--- a/FlexJobApi.Core/Models/CommonServer/Resources/Queries/CheckHealthQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Resources/Queries/CheckHealthQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鍋ュ悍鏍¢獙
     /// </summary>
-    [Resource([EnumResourceController.Resource], Method = EnumResourceMethod.Get, AllowAnonymous = true)]
+    [Resource([EnumResourceController.UserServerResource], Method = EnumResourceMethod.Get, AllowAnonymous = true)]
     public class CheckHealthQuery : IRequest<bool>
     {
     }
diff --git a/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourceFieldsQuery.cs b/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourceFieldsQuery.cs
index f6d2917..3f091d4 100644
--- a/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourceFieldsQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourceFieldsQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鑾峰彇璧勬簮瀛楁
     /// </summary>
-    [Resource([EnumResourceController.Resource])]
+    [Resource([EnumResourceController.UserServerResource])]
     public class GetResourceFieldsQuery : IRequest<List<GetResourceFieldsQueryResultItem>>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourcesQuery.cs b/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourcesQuery.cs
index 2a45ad2..d2b14b6 100644
--- a/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourcesQuery.cs
+++ b/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourcesQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鑾峰彇璧勬簮鍒楄〃
     /// </summary>
-    [Resource([EnumResourceController.Resource])]
+    [Resource([EnumResourceController.UserServerResource])]
     public class GetResourcesQuery : IRequest<List<GetResourcesQueryResultItem>>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/ElectronSignServer/Auths/AccessRequestDto.cs b/FlexJobApi.Core/Models/ElectronSignServer/Auths/AccessRequestDto.cs
new file mode 100644
index 0000000..a415268
--- /dev/null
+++ b/FlexJobApi.Core/Models/ElectronSignServer/Auths/AccessRequestDto.cs
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Metadata;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core.Models.ElectronSignServer.Auths
+{
+    public class AccessRequestDto
+    {
+        public string ClientId { get; set; } = "backend-admin-app-client";
+
+
+        [Newtonsoft.Json.JsonIgnore]
+        [System.Text.Json.Serialization.JsonIgnore]
+        public int? GrantType { get; set; } = 1;
+
+
+        public string UserName { get; set; }
+
+        public string UserPassword { get; set; }
+
+        public string Scope { get; set; } = "IdentityService";
+    }
+}
diff --git a/FlexJobApi.Core/Models/ElectronSignServer/Auths/IdentityModelTokenCacheItem.cs b/FlexJobApi.Core/Models/ElectronSignServer/Auths/IdentityModelTokenCacheItem.cs
new file mode 100644
index 0000000..a2e72a5
--- /dev/null
+++ b/FlexJobApi.Core/Models/ElectronSignServer/Auths/IdentityModelTokenCacheItem.cs
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core.Models.ElectronSignServer.Auths
+{
+    public class IdentityModelTokenCacheItem
+    {
+        public string AccessToken { get; set; }
+
+        public int ExpiresIn { get; set; }
+
+        public DateTime CreationTime { get; set; }
+
+        public string RefreshToken { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/ElectronSignServer/Common/ElectronSignServerResult.cs b/FlexJobApi.Core/Models/ElectronSignServer/Common/ElectronSignServerResult.cs
new file mode 100644
index 0000000..8e866bf
--- /dev/null
+++ b/FlexJobApi.Core/Models/ElectronSignServer/Common/ElectronSignServerResult.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core.Models.ElectronSignServer.Common
+{
+    public class ElectronSignServerResult<T>
+    {
+        public string Msg { get; set; }
+        public T Result { get; set; }
+        public bool Success { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/HumanResourcesServer/ElectronSign/EnumElectronSignPersonalRealMethod.cs b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignPersonalRealMethod.cs
similarity index 91%
rename from FlexJobApi.Core/Models/HumanResourcesServer/ElectronSign/EnumElectronSignPersonalRealMethod.cs
rename to FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignPersonalRealMethod.cs
index fa29ebb..b0b8538 100644
--- a/FlexJobApi.Core/Models/HumanResourcesServer/ElectronSign/EnumElectronSignPersonalRealMethod.cs
+++ b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignPersonalRealMethod.cs
@@ -5,7 +5,7 @@
 using System.Text;
 using System.Threading.Tasks;
 
-namespace FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign
+namespace FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals
 {
     /// <summary>
     /// 鐢靛瓙绛�-瀹炲悕-璁よ瘉鏂瑰紡锛�10涓汉鎵嬫満鍙蜂笁瑕佺礌 20閾惰鍗″瑕佺礌 30鍒疯劯璁よ瘉锛�
diff --git a/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignRealStatus.cs b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignRealStatus.cs
new file mode 100644
index 0000000..9cc0aba
--- /dev/null
+++ b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignRealStatus.cs
@@ -0,0 +1,36 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals
+{
+    /// <summary>
+    /// 鐢靛瓙绛�-瀹炲悕鐘舵�侊紙0鏈疄鍚� 10鏍¢獙涓� 99瀹炲悕澶辫触 100宸插疄鍚嶏級
+    /// </summary>
+    public enum EnumElectronSignRealStatus
+    {
+        /// <summary>
+        /// 鏈疄鍚�
+        /// </summary>
+        [Description("鏈疄鍚�")]
+        UnReal = 0,
+        /// <summary>
+        /// 鏍¢獙涓�
+        /// </summary>
+        [Description("鏍¢獙涓�")]
+        Checking = 10,
+        /// <summary>
+        /// 瀹炲悕澶辫触
+        /// </summary>
+        [Description("瀹炲悕澶辫触")]
+        Fail = 99,
+        /// <summary>
+        /// 宸插疄鍚�
+        /// </summary>
+        [Description("宸插疄鍚�")]
+        Real = 100
+    }
+}
diff --git a/FlexJobApi.Core/Models/HumanResourcesServer/ElectronSign/EnumElectronSignUserType.cs b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignUserType.cs
similarity index 88%
rename from FlexJobApi.Core/Models/HumanResourcesServer/ElectronSign/EnumElectronSignUserType.cs
rename to FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignUserType.cs
index 257ee0b..f77330a 100644
--- a/FlexJobApi.Core/Models/HumanResourcesServer/ElectronSign/EnumElectronSignUserType.cs
+++ b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/EnumElectronSignUserType.cs
@@ -5,7 +5,7 @@
 using System.Text;
 using System.Threading.Tasks;
 
-namespace FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign
+namespace FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals
 {
     /// <summary>
     /// 鐢靛瓙绛�-鐢ㄦ埛绫诲瀷锛�10浼佷笟 20涓汉锛�
diff --git a/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/RealPersonalInput.cs b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/RealPersonalInput.cs
new file mode 100644
index 0000000..bf9e533
--- /dev/null
+++ b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/RealPersonalInput.cs
@@ -0,0 +1,98 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals
+{
+    /// <summary>
+    /// 涓汉鐢ㄦ埛瀹炲悕
+    /// </summary>
+    [Resource([EnumResourceController.ElectronSignServerElectronSign], Method = EnumResourceMethod.Post, Route = "/api/ElectronSign/RealPersonal")]
+    public class RealPersonalInput
+    {
+        /// <summary>
+        /// 瀵瑰涓汉Id
+        /// </summary>
+        [DisplayName("瀵瑰涓汉Id")]
+        [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")]
+        public string OutUserId { get; set; }
+
+        /// <summary>
+        /// 璁よ瘉鏂瑰紡锛�10涓汉鎵嬫満鍙蜂笁瑕佺礌 20閾惰鍗″瑕佺礌 30鍒疯劯璁よ瘉锛�
+        /// </summary>
+        [DisplayName("璁よ瘉鏂瑰紡")]
+        [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")]
+        public EnumElectronSignPersonalRealMethod RealMethod { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        [DisplayName("濮撳悕")]
+        [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 韬唤璇佸彿
+        /// </summary>
+        [DisplayName("韬唤璇佸彿")]
+        public string Identity { get; set; }
+
+        /// <summary>
+        /// 韬唤璇佷汉鍍忛潰Url
+        /// </summary>
+        [DisplayName("韬唤璇佷汉鍍忛潰Url")]
+        [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")]
+        public string IdentityImgUrl { get; set; }
+
+        /// <summary>
+        /// 韬唤璇佸浗寰介潰Url
+        /// </summary>
+        [DisplayName("韬唤璇佸浗寰介潰Url")]
+        [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")]
+        public string IdentityBackImgUrl { get; set; }
+
+        /// <summary>
+        /// 閾惰鍗″彿
+        /// </summary>
+        public string BankCard { get; set; }
+
+        /// <summary>
+        /// 閾惰鍗$収鐗�
+        /// </summary>
+        public string BankCardImgUrl { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満鍙�
+        /// </summary>
+        [DisplayName("鎵嬫満鍙�")]
+        public string Mobile { get; set; }
+
+        /// <summary>
+        /// 楠岃瘉鐮�
+        /// </summary>
+        public string VCode { get; set; }
+    }
+
+
+    public class RealPersonalOutput
+    {
+        /// <summary>
+        /// 璁よ瘉娴佹按鍙�
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 浜鸿劯璁よ瘉鍦板潃
+        /// </summary>
+        public string FaceUrl { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙0鏈疄鍚� 10鏍¢獙涓� 99瀹炲悕澶辫触 100宸插疄鍚嶏級
+        /// </summary>
+        public EnumElectronSignRealStatus Status { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/HumanResourcesServer/ElectronSign/SendRealSmsInput.cs b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/SendRealSmsInput.cs
similarity index 88%
rename from FlexJobApi.Core/Models/HumanResourcesServer/ElectronSign/SendRealSmsInput.cs
rename to FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/SendRealSmsInput.cs
index fc23fb2..1101341 100644
--- a/FlexJobApi.Core/Models/HumanResourcesServer/ElectronSign/SendRealSmsInput.cs
+++ b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/SendRealSmsInput.cs
@@ -6,11 +6,12 @@
 using System.Text;
 using System.Threading.Tasks;
 
-namespace FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign
+namespace FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals
 {
     /// <summary>
     /// 鍙戦�佸疄鍚嶇煭淇�
     /// </summary>
+    [Resource([EnumResourceController.ElectronSignServerElectronSign], Method = EnumResourceMethod.Post, Route = "/api/ElectronSign/SendRealSms")]
     public class SendRealSmsInput
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/ElectronSignServer/Users/RegOrUpdateUserInput.cs b/FlexJobApi.Core/Models/ElectronSignServer/Users/RegOrUpdateUserInput.cs
new file mode 100644
index 0000000..11a5ab4
--- /dev/null
+++ b/FlexJobApi.Core/Models/ElectronSignServer/Users/RegOrUpdateUserInput.cs
@@ -0,0 +1,59 @@
+锘縰sing FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core.Models.ElectronSignServer.Users
+{
+    /// <summary>
+    /// 娉ㄥ唽鎴栨洿鏂扮數瀛愮鐢ㄦ埛
+    /// </summary>
+    [Resource([EnumResourceController.ElectronSignServerElectronSign], Method = EnumResourceMethod.Post, Route = "/api/ElectronSign/RegOrUpdateUser")]
+    public class RegOrUpdateUserInput
+    {
+        /// <summary>
+        /// 澶栭儴浼佷笟Id
+        /// </summary>
+        [DisplayName("澶栭儴浼佷笟Id")]
+        [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")]
+        public string OutUserId { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛绫诲瀷锛�10浼佷笟 20涓汉锛�
+        /// </summary>
+        [DisplayName("鐢ㄦ埛绫诲瀷")]
+        [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")]
+        public EnumElectronSignUserType UserType { get; set; }
+
+        /// <summary>
+        /// 浼佷笟鍚嶇О
+        /// </summary>
+        public string EnterpriseName { get; set; }
+
+        /// <summary>
+        /// 缁熶竴绀句細淇$敤浠g爜
+        /// </summary>
+        [DisplayName("缁熶竴绀句細淇$敤浠g爜")]
+        public string SocietyCreditCode { get; set; }
+
+        /// <summary>
+        /// 涓汉鎴栨硶浜烘垨缁忓姙浜哄鍚�
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 涓汉鎴栨硶浜烘垨缁忓姙浜鸿韩浠借瘉鍙�
+        /// </summary>
+        public string Identity { get; set; }
+
+        /// <summary>
+        /// 涓汉鎴栨硶浜烘垨缁忓姙浜烘墜鏈哄彿
+        /// </summary>
+        [DisplayName("涓汉鎴栨硶浜烘垨缁忓姙浜烘墜鏈哄彿")]
+        public string Mobile { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/CheckReceiveTaskCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/CheckReceiveTaskCommand.cs
index a6b004b..49db35e 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/CheckReceiveTaskCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/CheckReceiveTaskCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 浠诲姟楠屾敹
     /// </summary>
-    [Resource([EnumResourceController.TaskCheckReceive])]
+    [Resource([EnumResourceController.FlexJobServerTaskCheckReceive])]
     public class CheckReceiveTaskCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/ExportTaskCheckReceiveTaskUsersCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/ExportTaskCheckReceiveTaskUsersCommand.cs
index 59cb68e..3829910 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/ExportTaskCheckReceiveTaskUsersCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/ExportTaskCheckReceiveTaskUsersCommand.cs
@@ -13,7 +13,7 @@
     /// <summary>
     /// 瀵煎嚭楠屾敹璁板綍
     /// </summary>
-    [Resource([EnumResourceController.TaskCheckReceive])]
+    [Resource([EnumResourceController.FlexJobServerTaskCheckReceive])]
     public class ExportTaskCheckReceiveTaskUsersCommand : IRequest<string>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/SubmitCheckReceiveTaskCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/SubmitCheckReceiveTaskCommand.cs
index ec27d9e..ed6f0e0 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/SubmitCheckReceiveTaskCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Commands/SubmitCheckReceiveTaskCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 浠诲姟鎻愪氦楠屾敹
     /// </summary>
-    [Resource([EnumResourceController.TaskCheckReceive])]
+    [Resource([EnumResourceController.FlexJobServerTaskCheckReceive])]
     public class SubmitCheckReceiveTaskCommand : IRequest<Guid>
     {
         public SubmitCheckReceiveTaskCommand()
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskQuery.cs
index db61a7d..2a2393f 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ楠屾敹浠诲姟璇︽儏
     /// </summary>
-    [Resource([EnumResourceController.TaskCheckReceive])]
+    [Resource([EnumResourceController.FlexJobServerTaskCheckReceive])]
     public class GetCheckReceiveTaskQuery : PagedListQuery<GetCheckReceiveTaskQueryResult, GetCheckReceiveTaskQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitQuery.cs
index cc11c3f..dbc203f 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鏌ヨ楠屾敹鎻愪氦璇︽儏
     /// </summary>
-    [Resource([EnumResourceController.TaskCheckReceive])]
+    [Resource([EnumResourceController.FlexJobServerTaskCheckReceive])]
     public class GetCheckReceiveTaskUserSubmitQuery : IRequest<GetCheckReceiveTaskUserSubmitQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs
index d937709..7193cee 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTaskUserSubmitsQuery.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鏌ヨ楠屾敹璇︽儏
     /// </summary>
-    [Resource([EnumResourceController.TaskCheckReceive])]
+    [Resource([EnumResourceController.FlexJobServerTaskCheckReceive])]
     public class GetCheckReceiveTaskUserSubmitsQuery : PagedListQuery<GetCheckReceiveTaskUserSubmitsQueryResult, GetCheckReceiveTaskUserSubmitsQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTasksQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTasksQuery.cs
index 8501c31..dab548a 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTasksQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskCheckReceive/Queries/GetCheckReceiveTasksQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ楠屾敹浠诲姟鍒嗛〉鍒楄〃
     /// </summary>
-    [Resource([EnumResourceController.TaskCheckReceive])]
+    [Resource([EnumResourceController.FlexJobServerTaskCheckReceive])]
     public class GetCheckReceiveTasksQuery : PagedListQuery<GetCheckReceiveTasksQueryResult, GetCheckReceiveTasksQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/ApplyTaskCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/ApplyTaskCommand.cs
index b334f8c..f4f1e63 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/ApplyTaskCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/ApplyTaskCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鎶ュ悕浠诲姟
     /// </summary>
-    [Resource([EnumResourceController.TaskUser])]
+    [Resource([EnumResourceController.FlexJobServerTaskUser])]
     public class ApplyTaskCommand : IRequest<int>
     {
         public ApplyTaskCommand()
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/ClearTaskCollectCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/ClearTaskCollectCommand.cs
index 93daf08..602f9c8 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/ClearTaskCollectCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/ClearTaskCollectCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 娓呯┖宸插仠姝㈢殑浠诲姟鏀惰棌
     /// </summary>
-    [Resource([EnumResourceController.TaskUser])]
+    [Resource([EnumResourceController.FlexJobServerTaskUser])]
     public class ClearTaskCollectCommand : IRequest<int>
     {
     }
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/CollectTaskCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/CollectTaskCommand.cs
index 0d8e881..40235af 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/CollectTaskCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/CollectTaskCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏀惰棌浠诲姟
     /// </summary>
-    [Resource([EnumResourceController.TaskUser])]
+    [Resource([EnumResourceController.FlexJobServerTaskUser])]
     public class CollectTaskCommand : IRequest<int>
     {
         public CollectTaskCommand()
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserArrangeCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserArrangeCommand.cs
index 7362954..25101d8 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserArrangeCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserArrangeCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 浠诲姟瀹夋帓
     /// </summary>
-    [Resource([EnumResourceController.TaskUser])]
+    [Resource([EnumResourceController.FlexJobServerTaskUser])]
     public class SetTaskUserArrangeCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs
index 05c59df..6145bb3 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Commands/SetTaskUserHireCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 浠诲姟褰曠敤
     /// </summary>
-    [Resource([EnumResourceController.TaskUser])]
+    [Resource([EnumResourceController.FlexJobServerTaskUser])]
     public class SetTaskUserHireCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetArrangeTaskUsersQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetArrangeTaskUsersQuery.cs
index 71b520c..292a1b7 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetArrangeTaskUsersQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetArrangeTaskUsersQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// B绔煡璇汉鍛樺畨鎺掑垎椤靛垪琛ㄤ俊鎭�
     /// </summary>
-    [Resource([EnumResourceController.TaskUser])]
+    [Resource([EnumResourceController.FlexJobServerTaskUser])]
     public class GetArrangeTaskUsersQuery : PagedListQuery<GetArrangeTaskUsersQueryResult, GetArrangeTaskUsersQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUserHireStatusQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUserHireStatusQuery.cs
index c3480bd..4e7040a 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUserHireStatusQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUserHireStatusQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ搴旇仒鎶ュ悕浜哄憳褰曠敤鐘舵��
     /// </summary>
-    [Resource([EnumResourceController.TaskUser])]
+    [Resource([EnumResourceController.FlexJobServerTaskUser])]
     public class GetTaskUserHireStatusQuery : IRequest<GetTaskUserHireStatusQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs
index b86fdab..aaf024e 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/TaskUsers/Queries/GetTaskUsersQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// B绔煡璇㈠簲鑱樻姤鍚嶅垎椤靛垪琛ㄤ俊鎭�
     /// </summary>
-    [Resource([EnumResourceController.TaskUser])]
+    [Resource([EnumResourceController.FlexJobServerTaskUser])]
     public class GetTaskUsersQuery : PagedListQuery<GetTaskUsersQueryResult, GetTaskUsersQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/DeleteTaskInfoCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/DeleteTaskInfoCommand.cs
index defdff9..ef78c05 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/DeleteTaskInfoCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/DeleteTaskInfoCommand.cs
@@ -9,7 +9,7 @@
     /// <summary>
     /// 鍒犻櫎浠诲姟
     /// </summary>
-    [Resource([EnumResourceController.Task])]
+    [Resource([EnumResourceController.FlexJobServerTask])]
     public class DeleteTaskInfoCommand : DeleteDataCommand
     {
 
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SaveTaskInfoCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SaveTaskInfoCommand.cs
index e1a8fb8..3903527 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SaveTaskInfoCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SaveTaskInfoCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 淇濆瓨浠诲姟
     /// </summary>
-    [Resource([EnumResourceController.Task])]
+    [Resource([EnumResourceController.FlexJobServerTask])]
     public class SaveTaskInfoCommand : SaveDataCommand
     {
         public SaveTaskInfoCommand()
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SetTaskInfoRecommendStatusCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SetTaskInfoRecommendStatusCommand.cs
index dddc701..d6e1cc5 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SetTaskInfoRecommendStatusCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SetTaskInfoRecommendStatusCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 璁剧疆浠诲姟鏄惁鎺ㄨ崘
     /// </summary>
-    [Resource([EnumResourceController.Task])]
+    [Resource([EnumResourceController.FlexJobServerTask])]
     public class SetTaskInfoRecommendStatusCommand : IRequest<int>
     {
         public SetTaskInfoRecommendStatusCommand()
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SetTaskInfoReleaseStatusCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SetTaskInfoReleaseStatusCommand.cs
index d2a9e78..b1d6e3b 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SetTaskInfoReleaseStatusCommand.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/SetTaskInfoReleaseStatusCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 璁剧疆浠诲姟鍙戝竷鐘舵��
     /// </summary>
-    [Resource([EnumResourceController.Task])]
+    [Resource([EnumResourceController.FlexJobServerTask])]
     public class SetTaskInfoReleaseStatusCommand : IRequest<int>
     {
         public SetTaskInfoReleaseStatusCommand()
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetOpenTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetOpenTaskInfosQuery.cs
index a6a9e10..9a81a30 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetOpenTaskInfosQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetOpenTaskInfosQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ寮�鏀句换鍔″垎椤靛垪琛�
     /// </summary>
-    [Resource([EnumResourceController.Task], AllowAnonymous = true)]
+    [Resource([EnumResourceController.FlexJobServerTask], AllowAnonymous = true)]
     public class GetOpenTaskInfosQuery : PagedListQuery<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>
     {
         public GetOpenTaskInfosQuery()
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs
index f5652b2..77b3630 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalApplyTaskInfosQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鎴戠殑鎶ュ悕鍒嗛〉鍒楄〃
     /// </summary>
-    [Resource([EnumResourceController.Task])]
+    [Resource([EnumResourceController.FlexJobServerTask])]
     public class GetPersonalApplyTaskInfosQuery : PagedListQuery<GetPersonalApplyTaskInfosQueryResult, GetPersonalApplyTaskInfosQueryResultItem>
     {
         public GetPersonalApplyTaskInfosQueryStatus? Status { get; set; }
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs
index f48755b..125b800 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalCancelTaskInfosQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鎴戠殑宸插彇娑堝垎椤靛垪琛�
     /// </summary>
-    [Resource([EnumResourceController.Task])]
+    [Resource([EnumResourceController.FlexJobServerTask])]
     public class GetPersonalCancelTaskInfosQuery : PagedListQuery<GetPersonalCancelTaskInfosQueryResult, GetPersonalCancelTaskInfosQueryResultItem>
     {
     }
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs
index 909d17d..040d34b 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetPersonalHireTaskInfosQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鎴戠殑宸插綍鐢ㄥ垎椤靛垪琛�
     /// </summary>
-    [Resource([EnumResourceController.Task])]
+    [Resource([EnumResourceController.FlexJobServerTask])]
     public class GetPersonalHireTaskInfosQuery : PagedListQuery<GetPersonalHireTaskInfosQueryResult, GetPersonalHireTaskInfosQueryResultItem>
     {
         public GetPersonalHireTaskInfosQueryStatus? Status { get; set; }
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskEnterpriseQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskEnterpriseQuery.cs
index 8d60b9b..280b7d9 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskEnterpriseQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskEnterpriseQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鏌ヨ浠诲姟浼佷笟淇℃伅
     /// </summary>
-    [Resource([EnumResourceController.Task], AllowAnonymous = true)]
+    [Resource([EnumResourceController.FlexJobServerTask], AllowAnonymous = true)]
     public class GetTaskEnterpriseQuery : IRequest<GetTaskEnterpriseQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs
index 427d6dd..d6d0b5a 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs
@@ -13,7 +13,7 @@
     /// <summary>
     /// 鏌ヨ浠诲姟璇︽儏
     /// </summary>
-    [Resource([EnumResourceController.Task], AllowAnonymous = true)]
+    [Resource([EnumResourceController.FlexJobServerTask], AllowAnonymous = true)]
     public class GetTaskInfoQuery : IRequest<GetTaskInfoQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs
index ad0400b..fc1cdd1 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ浠诲姟鍒嗛〉鍒楄〃
     /// </summary>
-    [Resource([EnumResourceController.Task])]
+    [Resource([EnumResourceController.FlexJobServerTask])]
     public class GetTaskInfosQuery : PagedListQuery<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>
     {
         public GetTaskInfosQuery()
diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Commands/BindWxmpUserInfoCommand.cs b/FlexJobApi.Core/Models/UserServer/Auths/Commands/BindWxmpUserInfoCommand.cs
index 6138ecb..9236c21 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Commands/BindWxmpUserInfoCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Commands/BindWxmpUserInfoCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 缁戝畾寰俊灏忕▼搴忕敤鎴蜂俊鎭�
     /// </summary>
-    [Resource([EnumResourceController.Auth], AllowAnonymous = true)]
+    [Resource([EnumResourceController.UserServerAuth], AllowAnonymous = true)]
     public class BindWxmpUserInfoCommand : IRequest<LoginCommandCallback>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Commands/ChangePhoneNumberCommand.cs b/FlexJobApi.Core/Models/UserServer/Auths/Commands/ChangePhoneNumberCommand.cs
index 7c4d34a..643b9ba 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Commands/ChangePhoneNumberCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Commands/ChangePhoneNumberCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鏇存崲鎵嬫満鍙�
     /// </summary>
-    [Resource([EnumResourceController.Auth])]
+    [Resource([EnumResourceController.UserServerAuth])]
     public class ChangePhoneNumberCommand : IRequest<bool>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Commands/PasswordLoginCommand.cs b/FlexJobApi.Core/Models/UserServer/Auths/Commands/PasswordLoginCommand.cs
index 1e5b812..d43ac51 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Commands/PasswordLoginCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Commands/PasswordLoginCommand.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 瀵嗙爜鐧诲綍
     /// </summary>
-    [Resource([EnumResourceController.Auth], AllowAnonymous = true)]
+    [Resource([EnumResourceController.UserServerAuth], AllowAnonymous = true)]
     public class PasswordLoginCommand : IRequest<LoginCommandCallback>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Commands/RegisterPersonalUserCommand.cs b/FlexJobApi.Core/Models/UserServer/Auths/Commands/RegisterPersonalUserCommand.cs
index 8fb0eea..2cacbfb 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Commands/RegisterPersonalUserCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Commands/RegisterPersonalUserCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 娉ㄥ唽涓汉璐﹀彿
     /// </summary>
-    [Resource([EnumResourceController.Auth], AllowAnonymous = true)]
+    [Resource([EnumResourceController.UserServerAuth], AllowAnonymous = true)]
     public class RegisterPersonalUserCommand : IRequest<bool>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Commands/SendLoginOrRegisterVerifyCodeCommand.cs b/FlexJobApi.Core/Models/UserServer/Auths/Commands/SendLoginOrRegisterVerifyCodeCommand.cs
index 362c7a2..037ce58 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Commands/SendLoginOrRegisterVerifyCodeCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Commands/SendLoginOrRegisterVerifyCodeCommand.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鍙戦�佺櫥褰曟垨娉ㄥ唽鐭俊
     /// </summary>
-    [Resource([EnumResourceController.Auth], AllowAnonymous = true)]
+    [Resource([EnumResourceController.UserServerAuth], AllowAnonymous = true)]
     public class SendLoginOrRegisterVerifyCodeCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Commands/SmsLoginCommand.cs b/FlexJobApi.Core/Models/UserServer/Auths/Commands/SmsLoginCommand.cs
index f1d6aa7..ca21d1e 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Commands/SmsLoginCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Commands/SmsLoginCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鐭俊鐧诲綍
     /// </summary>
-    [Resource([EnumResourceController.Auth], AllowAnonymous = true)]
+    [Resource([EnumResourceController.UserServerAuth], AllowAnonymous = true)]
     public class SmsLoginCommand : IRequest<LoginCommandCallback>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Commands/UpdatePhoneNumberVerifyCodeCommand.cs b/FlexJobApi.Core/Models/UserServer/Auths/Commands/UpdatePhoneNumberVerifyCodeCommand.cs
index 6fba1e1..4b11b2f 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Commands/UpdatePhoneNumberVerifyCodeCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Commands/UpdatePhoneNumberVerifyCodeCommand.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鍙戦�佹洿鎹㈡墜鏈哄彿鐭俊
     /// </summary>
-    [Resource([EnumResourceController.Auth])]
+    [Resource([EnumResourceController.UserServerAuth])]
     public class UpdatePhoneNumberVerifyCodeCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Commands/WxmpLoginCommand.cs b/FlexJobApi.Core/Models/UserServer/Auths/Commands/WxmpLoginCommand.cs
index 70f9933..6c39536 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Commands/WxmpLoginCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Commands/WxmpLoginCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 寰俊灏忕▼搴忕櫥褰�
     /// </summary>
-    [Resource([EnumResourceController.Auth], AllowAnonymous = true)]
+    [Resource([EnumResourceController.UserServerAuth], AllowAnonymous = true)]
     public class WxmpLoginCommand : IRequest<LoginCommandCallback>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetAliyunOSSAcsQuery.cs b/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetAliyunOSSAcsQuery.cs
index 9eeef3a..d87dd10 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetAliyunOSSAcsQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetAliyunOSSAcsQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅
     /// </summary>
-    [Resource([EnumResourceController.Auth], AllowAnonymous = true)]
+    [Resource([EnumResourceController.UserServerAuth], AllowAnonymous = true)]
     public class GetAliyunOSSAcsQuery : IRequest<GetAliyunOSSAcsQueryResult>
     {
     }
diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetCurrentLogierMenuQuery.cs b/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetCurrentLogierMenuQuery.cs
index c45c740..a2ff971 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetCurrentLogierMenuQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetCurrentLogierMenuQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛鑿滃崟璇︽儏
     /// </summary>
-    [Resource([EnumResourceController.Auth])]
+    [Resource([EnumResourceController.UserServerAuth])]
     public class GetCurrentLogierMenuQuery : IRequest<GetMenuQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetCurrentLogierMenusQuery.cs b/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetCurrentLogierMenusQuery.cs
index 4bed982..9d7631c 100644
--- a/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetCurrentLogierMenusQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Auths/Queries/GetCurrentLogierMenusQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛鑿滃崟
     /// </summary>
-    [Resource([EnumResourceController.Auth])]
+    [Resource([EnumResourceController.UserServerAuth])]
     public class GetCurrentLogierMenusQuery : IRequest<List<GetMenusQueryResultItem>>
     {
     }
diff --git a/FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/ElectronSignCallbackCommand.cs b/FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/ElectronSignCallbackCommand.cs
new file mode 100644
index 0000000..bd47ffc
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/ElectronSignCallbackCommand.cs
@@ -0,0 +1,59 @@
+锘縰sing FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals;
+using MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鐢靛瓙绛惧洖浼�
+    /// </summary>
+    [Resource([EnumResourceController.UserServerElectronSign], AllowAnonymous = true)]
+    public class ElectronSignCallbackCommand : IRequest<bool>
+    {
+        /// <summary>
+        /// 瀹㈡埛Id
+        /// </summary>
+        public Guid CustomerId { get; set; }
+
+        /// <summary>
+        /// 鏂规硶鍚嶇О
+        /// </summary>
+        public string Action { get; set; }
+
+        /// <summary>
+        /// 鏄惁鎴愬姛
+        /// </summary>
+        public bool Success { get; set; }
+
+        /// <summary>
+        /// 鍥炶皟鐮�
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鍥炶皟娑堟伅
+        /// </summary>
+        public string Message { get; set; }
+
+        /// <summary>
+        /// 鍏宠仈Id
+        /// </summary>
+        public Guid? RelationId { get; set; }
+
+        /// <summary>
+        /// 鍥炰紶鏁版嵁
+        /// </summary>
+        public object Data { get; set; }
+    }
+
+
+    public class ElectronSignCallbackCommandUserSignModel
+    {
+        public Guid OutUserId { get; set; }
+        public EnumElectronSignRealStatus Status { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Commands/PersonalUserIdentity3RealCommand.cs b/FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/PersonalUserFaceRealCommand.cs
similarity index 64%
copy from FlexJobApi.Core/Models/UserServer/Users/Commands/PersonalUserIdentity3RealCommand.cs
copy to FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/PersonalUserFaceRealCommand.cs
index b28edb6..5cd0f16 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Commands/PersonalUserIdentity3RealCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/PersonalUserFaceRealCommand.cs
@@ -9,10 +9,10 @@
 namespace FlexJobApi.Core
 {
     /// <summary>
-    /// 涓汉涓夎绱犲疄鍚嶈璇�
+    /// 涓汉浜鸿劯瀹炲悕璁よ瘉
     /// </summary>
-    [Resource([EnumResourceController.User])]
-    public class PersonalUserIdentity3RealCommand : IRequest<Guid>
+    [Resource([EnumResourceController.UserServerElectronSign])]
+    public class PersonalUserFaceRealCommand : IRequest<string>
     {
         /// <summary>
         /// 濮撳悕
@@ -20,13 +20,6 @@
         [Required]
         [MaxLength(32)]
         public string Name { get; set; }
-
-        /// <summary>
-        /// 鎵嬫満鍙�
-        /// </summary>
-        [Required]
-        [DataValidation(EnumValidationTypes.ValidPhoneNumber)]
-        public string PhoneNumber { get; set; }
 
         /// <summary>
         /// 韬唤璇佸彿
@@ -46,11 +39,5 @@
         /// </summary>
         [Required]
         public string IdentityBackImg { get; set; }
-
-        /// <summary>
-        /// 楠岃瘉鐮�
-        /// </summary>
-        [Required]
-        public string VerifyCode { get; set; }
     }
 }
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Commands/PersonalUserIdentity3RealCommand.cs b/FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/PersonalUserIdentity3RealCommand.cs
similarity index 95%
rename from FlexJobApi.Core/Models/UserServer/Users/Commands/PersonalUserIdentity3RealCommand.cs
rename to FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/PersonalUserIdentity3RealCommand.cs
index b28edb6..af9765e 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Commands/PersonalUserIdentity3RealCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/PersonalUserIdentity3RealCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 涓汉涓夎绱犲疄鍚嶈璇�
     /// </summary>
-    [Resource([EnumResourceController.User])]
+    [Resource([EnumResourceController.UserServerElectronSign])]
     public class PersonalUserIdentity3RealCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/SendPersonalUserIdentity3RealSmsCommand.cs b/FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/SendPersonalUserIdentity3RealSmsCommand.cs
new file mode 100644
index 0000000..4a6e9ac
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/ElectronSigns/Commands/SendPersonalUserIdentity3RealSmsCommand.cs
@@ -0,0 +1,38 @@
+锘縰sing MediatR;
+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>
+    [Resource([EnumResourceController.UserServerElectronSign])]
+    public class SendPersonalUserIdentity3RealSmsCommand : IRequest<Guid>
+    {
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        [Required]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満鍙�
+        /// </summary>
+        /// <remarks>鐧诲綍鎵嬫満鍙�</remarks>
+        [Required]
+        [DataValidation(EnumValidationTypes.ValidPhoneNumber)]
+        public string PhoneNumber { get; set; }
+
+        /// <summary>
+        /// 韬唤璇佸彿
+        /// </summary>
+        [Required]
+        [DataValidation(EnumValidationTypes.ValiIdentity)]
+        public string Identity { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/EditEnterpriseEmployeeCommand.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/EditEnterpriseEmployeeCommand.cs
index 6fd5c8e..e541ed1 100644
--- a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/EditEnterpriseEmployeeCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/EditEnterpriseEmployeeCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 缂栬緫鐏靛伐淇℃伅
     /// </summary>
-    [Resource([EnumResourceController.EnterpriseEmployee])]
+    [Resource([EnumResourceController.UserServerEnterpriseEmployee])]
     public class EditEnterpriseEmployeeCommand : SaveDataCommand
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/ImportEnterpriseEmployeesCommand.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/ImportEnterpriseEmployeesCommand.cs
index baa4661..49537cd 100644
--- a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/ImportEnterpriseEmployeesCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/ImportEnterpriseEmployeesCommand.cs
@@ -14,7 +14,7 @@
     /// <summary>
     /// 瀵煎叆鐏靛伐淇℃伅
     /// </summary>
-    [Resource([EnumResourceController.EnterpriseEmployee])]
+    [Resource([EnumResourceController.UserServerEnterpriseEmployee])]
     public class ImportEnterpriseEmployeesCommand : IRequest<ImportEnterpriseEmployeesCommandResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeeQuery.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeeQuery.cs
index f0e9def..61b7165 100644
--- a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeeQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeeQuery.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鏌ヨ鐏靛伐璇︽儏
     /// </summary>
-    [Resource([EnumResourceController.EnterpriseEmployee])]
+    [Resource([EnumResourceController.UserServerEnterpriseEmployee])]
     public class GetEnterpriseEmployeeQuery : IRequest<GetEnterpriseEmployeeQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeesQuery.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeesQuery.cs
index eaff06b..60cb226 100644
--- a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeesQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeesQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁
     /// </summary>
-    [Resource([EnumResourceController.EnterpriseEmployee])]
+    [Resource([EnumResourceController.UserServerEnterpriseEmployee])]
     public class GetEnterpriseEmployeesQuery : PagedListQuery<GetEnterpriseEmployeesQueryResult, GetEnterpriseEmployeesQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SaveEnterpriseCommand.cs b/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SaveEnterpriseCommand.cs
index 242290b..dd9dc0e 100644
--- a/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SaveEnterpriseCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SaveEnterpriseCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 淇濆瓨浼佷笟
     /// </summary>
-    [Resource([EnumResourceController.Enterprise])]
+    [Resource([EnumResourceController.UserServerEnterprise])]
     public class SaveEnterpriseCommand : SaveDataCommand
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SetEnterpriseElectronSignSettingCommand.cs b/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SetEnterpriseElectronSignSettingCommand.cs
index 2e614bd..e891bfb 100644
--- a/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SetEnterpriseElectronSignSettingCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SetEnterpriseElectronSignSettingCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 璁剧疆浼佷笟鐢靛瓙绛鹃厤缃�
     /// </summary>
-    [Resource([EnumResourceController.Enterprise])]
+    [Resource([EnumResourceController.UserServerEnterprise])]
     public class SetEnterpriseElectronSignSettingCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SetEnterpriseSmsSettingCommand.cs b/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SetEnterpriseSmsSettingCommand.cs
index dab7cbc..d24bebb 100644
--- a/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SetEnterpriseSmsSettingCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Enterprises/Commands/SetEnterpriseSmsSettingCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 璁剧疆浼佷笟鐭俊閰嶇疆
     /// </summary>
-    [Resource([EnumResourceController.Enterprise])]
+    [Resource([EnumResourceController.UserServerEnterprise])]
     public class SetEnterpriseSmsSettingCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseElectronSignSettingQuery.cs b/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseElectronSignSettingQuery.cs
index fa62902..e668e31 100644
--- a/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseElectronSignSettingQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseElectronSignSettingQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ浼佷笟鐢靛瓙绛鹃厤缃�
     /// </summary>
-    [Resource([EnumResourceController.Enterprise])]
+    [Resource([EnumResourceController.UserServerEnterprise])]
     public class GetEnterpriseElectronSignSettingQuery : IRequest<GetEnterpriseElectronSignSettingQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseQuery.cs b/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseQuery.cs
index 0efbd14..d0503dd 100644
--- a/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseQuery.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鏌ヨ浼佷笟璇︽儏
     /// </summary>
-    [Resource([EnumResourceController.Enterprise])]
+    [Resource([EnumResourceController.UserServerEnterprise])]
     public class GetEnterpriseQuery : IRequest<GetEnterpriseQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseSmsSettingQuery.cs b/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseSmsSettingQuery.cs
index ba23029..ad11d7b 100644
--- a/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseSmsSettingQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterpriseSmsSettingQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ浼佷笟鐭俊閰嶇疆
     /// </summary>
-    [Resource([EnumResourceController.Enterprise])]
+    [Resource([EnumResourceController.UserServerEnterprise])]
     public class GetEnterpriseSmsSettingQuery : IRequest<GetEnterpriseSmsSettingQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterprisesQuery.cs b/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterprisesQuery.cs
index cb95804..3a61e53 100644
--- a/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterprisesQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Enterprises/Queries/GetEnterprisesQuery.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鏌ヨ浼佷笟淇℃伅鍒嗛〉鍒楄〃鏁版嵁
     /// </summary>
-    [Resource([EnumResourceController.Enterprise])]
+    [Resource([EnumResourceController.UserServerEnterprise])]
     public class GetEnterprisesQuery : PagedListQuery<PagedListQueryResult<GetEnterprisesQueryResultItem>, GetEnterprisesQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Menus/Commands/DeleteMenuCommand.cs b/FlexJobApi.Core/Models/UserServer/Menus/Commands/DeleteMenuCommand.cs
index 82d0187..943ce5f 100644
--- a/FlexJobApi.Core/Models/UserServer/Menus/Commands/DeleteMenuCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Menus/Commands/DeleteMenuCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鍒犻櫎鑿滃崟
     /// </summary>
-    [Resource([EnumResourceController.Menu])]
+    [Resource([EnumResourceController.UserServerMenu])]
     public class DeleteMenuCommand : DeleteDataCommand
     {
 
diff --git a/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuButtonCommand.cs b/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuButtonCommand.cs
index 1d9b5d6..4a880b2 100644
--- a/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuButtonCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuButtonCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 淇濆瓨鑿滃崟鎸夐挳
     /// </summary>
-    [Resource([EnumResourceController.Menu])]
+    [Resource([EnumResourceController.UserServerMenu])]
     public class SaveMenuButtonCommand : SaveDataCommand
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuCommand.cs b/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuCommand.cs
index 8322094..9207d9f 100644
--- a/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 淇濆瓨鑿滃崟
     /// </summary>
-    [Resource([EnumResourceController.Menu])]
+    [Resource([EnumResourceController.UserServerMenu])]
     public class SaveMenuCommand : SaveDataCommand
     {
         public SaveMenuCommand()
diff --git a/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuFieldCommand.cs b/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuFieldCommand.cs
index a937918..a17bd0f 100644
--- a/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuFieldCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Menus/Commands/SaveMenuFieldCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 淇濆瓨鑿滃崟瀛楁
     /// </summary>
-    [Resource([EnumResourceController.Menu])]
+    [Resource([EnumResourceController.UserServerMenu])]
     public class SaveMenuFieldCommand : SaveDataCommand
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Menus/Commands/SetMenuSwitchCommand.cs b/FlexJobApi.Core/Models/UserServer/Menus/Commands/SetMenuSwitchCommand.cs
index de74653..80c53f3 100644
--- a/FlexJobApi.Core/Models/UserServer/Menus/Commands/SetMenuSwitchCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Menus/Commands/SetMenuSwitchCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 璁剧疆鑿滃崟鍒囨崲淇℃伅
     /// </summary>
-    [Resource([EnumResourceController.Menu])]
+    [Resource([EnumResourceController.UserServerMenu])]
     public class SetMenuSwitchCommand : IRequest<int>
     {
         public SetMenuSwitchCommand()
diff --git a/FlexJobApi.Core/Models/UserServer/Menus/Queries/GetMenuQuery.cs b/FlexJobApi.Core/Models/UserServer/Menus/Queries/GetMenuQuery.cs
index 02eb706..d0a96fb 100644
--- a/FlexJobApi.Core/Models/UserServer/Menus/Queries/GetMenuQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Menus/Queries/GetMenuQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鏌ヨ鑿滃崟璇︽儏
     /// </summary>
-    [Resource([EnumResourceController.Menu])]
+    [Resource([EnumResourceController.UserServerMenu])]
     public class GetMenuQuery : IRequest<GetMenuQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Menus/Queries/GetMenusQuery.cs b/FlexJobApi.Core/Models/UserServer/Menus/Queries/GetMenusQuery.cs
index 9055eae..950238b 100644
--- a/FlexJobApi.Core/Models/UserServer/Menus/Queries/GetMenusQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Menus/Queries/GetMenusQuery.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鏌ヨ鑿滃崟鍒楄〃
     /// </summary>
-    [Resource([EnumResourceController.Menu])]
+    [Resource([EnumResourceController.UserServerMenu])]
     public class GetMenusQuery : IRequest<List<GetMenusQueryResultItem>>
     {
         public GetMenusQuery()
diff --git a/FlexJobApi.Core/Models/UserServer/Roles/Commands/DeleteRoleCommand.cs b/FlexJobApi.Core/Models/UserServer/Roles/Commands/DeleteRoleCommand.cs
index 007fc71..708ddc1 100644
--- a/FlexJobApi.Core/Models/UserServer/Roles/Commands/DeleteRoleCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Roles/Commands/DeleteRoleCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鍒犻櫎瑙掕壊
     /// </summary>
-    [Resource([EnumResourceController.Role])]
+    [Resource([EnumResourceController.UserServerRole])]
     public class DeleteRoleCommand : DeleteDataCommand
     {
 
diff --git a/FlexJobApi.Core/Models/UserServer/Roles/Commands/SaveRoleCommand.cs b/FlexJobApi.Core/Models/UserServer/Roles/Commands/SaveRoleCommand.cs
index 3bfb217..d8e1416 100644
--- a/FlexJobApi.Core/Models/UserServer/Roles/Commands/SaveRoleCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Roles/Commands/SaveRoleCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 淇濆瓨瑙掕壊
     /// </summary>
-    [Resource([EnumResourceController.Role])]
+    [Resource([EnumResourceController.UserServerRole])]
     public class SaveRoleCommand : IRequest<Guid>
     {
         public SaveRoleCommand()
diff --git a/FlexJobApi.Core/Models/UserServer/Roles/Commands/SetRoleIsDisabledCommand.cs b/FlexJobApi.Core/Models/UserServer/Roles/Commands/SetRoleIsDisabledCommand.cs
index 4516bdd..b8cb53f 100644
--- a/FlexJobApi.Core/Models/UserServer/Roles/Commands/SetRoleIsDisabledCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Roles/Commands/SetRoleIsDisabledCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 璁剧疆瑙掕壊鏄惁绂佺敤
     /// </summary>
-    [Resource([EnumResourceController.Role])]
+    [Resource([EnumResourceController.UserServerRole])]
     public class SetRoleIsDisabledCommand : SetIsDisabledCommand
     {
 
diff --git a/FlexJobApi.Core/Models/UserServer/Roles/Commands/SetRoleUserInfosCommand.cs b/FlexJobApi.Core/Models/UserServer/Roles/Commands/SetRoleUserInfosCommand.cs
index 0619df5..1c5a74f 100644
--- a/FlexJobApi.Core/Models/UserServer/Roles/Commands/SetRoleUserInfosCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Roles/Commands/SetRoleUserInfosCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 璁剧疆瑙掕壊鐢ㄦ埛
     /// </summary>
-    [Resource([EnumResourceController.Role])]
+    [Resource([EnumResourceController.UserServerRole])]
     public class SetRoleUserInfosCommand : IRequest<int>
     {
         public SetRoleUserInfosCommand()
diff --git a/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRoleQuery.cs b/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRoleQuery.cs
index da67646..28ffc55 100644
--- a/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRoleQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRoleQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ瑙掕壊璇︽儏
     /// </summary>
-    [Resource([EnumResourceController.Role])]
+    [Resource([EnumResourceController.UserServerRole])]
     public class GetRoleQuery : IRequest<GetRoleQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRoleUserInfosQuery.cs b/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRoleUserInfosQuery.cs
index 528cff6..e3d1c94 100644
--- a/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRoleUserInfosQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRoleUserInfosQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鏌ヨ瑙掕壊鐢ㄦ埛鍒楄〃
     /// </summary>
-    [Resource([EnumResourceController.Role])]
+    [Resource([EnumResourceController.UserServerRole])]
     public class GetRoleUserInfosQuery : IRequest<List<GetRoleUserInfosQueryResultItem>>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRolesQuery.cs b/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRolesQuery.cs
index 4231a99..897b0ad 100644
--- a/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRolesQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Roles/Queries/GetRolesQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鏌ヨ瑙掕壊鍒嗛〉鍒楄〃
     /// </summary>
-    [Resource([EnumResourceController.Role])]
+    [Resource([EnumResourceController.UserServerRole])]
     public class GetRolesQuery : PagedListQuery<PagedListQueryResult<GetRolesQueryResultItem>, GetRolesQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/CollectUserResumeCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/CollectUserResumeCommand.cs
index 6454077..f9d4eab 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/CollectUserResumeCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/CollectUserResumeCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏀惰棌鐏靛伐
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class CollectUserResumeCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/ContactUserResumeCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/ContactUserResumeCommand.cs
index 6fcf844..10e1035 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/ContactUserResumeCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/ContactUserResumeCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鑱旂郴鐏靛伐
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class ContactUserResumeCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs
index b9bf3d2..249d395 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs
@@ -9,7 +9,7 @@
     /// <summary>
     /// 鍒犻櫎鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class DeleteUserResumeCredentialCommand : DeleteDataCommand
     {
 
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs
index 8c50959..c5a01d2 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 淇濆瓨鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class SaveUserResumeCredentialCommand : SaveDataCommand
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs
index 83a6b68..800d5a8 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs
@@ -14,7 +14,7 @@
     /// <summary>
     /// 淇濆瓨鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class SaveUserResumeDetailCommand : IRequest<Guid>
     {
         public SaveUserResumeDetailCommand()
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs
index d19cc1b..f86ff81 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs
@@ -14,7 +14,7 @@
     /// <summary>
     /// 淇濆瓨鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class SaveUserResumeJobSeekingCommand : IRequest<Guid>
     {
         public SaveUserResumeJobSeekingCommand()
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs
index 7a7c316..f85692d 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 淇濆瓨鐢ㄦ埛绠�鍘�-涓汉淇℃伅
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class SaveUserResumePersonalCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs
index 4fd4ace..366be55 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 淇濆瓨鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class SaveUserResumeWorkExperienceCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetOpenUserResumesQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetOpenUserResumesQuery.cs
index 7d56e86..811d687 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetOpenUserResumesQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetOpenUserResumesQuery.cs
@@ -9,7 +9,7 @@
     /// <summary>
     /// 鏌ヨ寮�鏀剧畝鍘嗗垎椤靛垪琛ㄦ暟鎹�
     /// </summary>
-    [Resource([EnumResourceController.UserResume], AllowAnonymous = true)]
+    [Resource([EnumResourceController.UserServerUserResume], AllowAnonymous = true)]
     public class GetOpenUserResumesQuery : PagedListQuery<GetUserResumesQueryResult, GetUserResumesQueryResultItem>
     {
         public GetOpenUserResumesQuery()
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs
index 53829d9..59a4b94 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class GetUserResumeCredentialQuery : IRequest<GetUserResumeCredentialQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs
index dd3004f..dbb82f9 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功鍒楄〃
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class GetUserResumeCredentialsQuery : IRequest<List<GetUserResumeCredentialsQueryResultItem>>
     {
     }
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs
index 89b3c67..b0b3b52 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs
@@ -14,7 +14,7 @@
     /// <summary>
     /// 鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class GetUserResumeDetailQuery : IRequest<GetUserResumeDetailQueryResult>
     { 
     
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs
index 52da082..5191d37 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class GetUserResumeJobSeekingQuery : IRequest<GetUserResumeJobSeekingQueryResult>
     {
 
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs
index ee211a1..997c3bd 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鏌ヨ鐢ㄦ埛绠�鍘�-涓汉淇℃伅
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class GetUserResumePersonalQuery : IRequest<GetUserResumePersonalQueryResult>
     { 
     
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs
index 3725207..9c8ce5b 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs
@@ -14,7 +14,7 @@
     /// <summary>
     /// 鏌ヨ鐢ㄦ埛绠�鍘�
     /// </summary>
-    [Resource([EnumResourceController.UserResume], AllowAnonymous = true)]
+    [Resource([EnumResourceController.UserServerUserResume], AllowAnonymous = true)]
     public class GetUserResumeQuery : IRequest<GetUserResumeQueryResult>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs
index f1b8594..848b614 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class GetUserResumeWorkExperienceQuery : IRequest<GetUserResumeWorkExperienceQueryResult>
     {
 
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs
index 9653ae8..fc7345a 100644
--- a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ绠�鍘嗗垎椤靛垪琛ㄦ暟鎹�
     /// </summary>
-    [Resource([EnumResourceController.UserResume])]
+    [Resource([EnumResourceController.UserServerUserResume])]
     public class GetUserResumesQuery : PagedListQuery<GetUserResumesQueryResult, GetUserResumesQueryResultItem>
     {
         public GetUserResumesQuery()
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Commands/SendPersonalUserIdentity3RealSmsCommand.cs b/FlexJobApi.Core/Models/UserServer/Users/Commands/SendPersonalUserIdentity3RealSmsCommand.cs
deleted file mode 100644
index 57d3564..0000000
--- a/FlexJobApi.Core/Models/UserServer/Users/Commands/SendPersonalUserIdentity3RealSmsCommand.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-锘縰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.User])]
-    public class SendPersonalUserIdentity3RealSmsCommand : IRequest<Guid>
-    {
-    }
-}
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Commands/SetUserInfoRolesCommand.cs b/FlexJobApi.Core/Models/UserServer/Users/Commands/SetUserInfoRolesCommand.cs
index 11cc975..46d6791 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Commands/SetUserInfoRolesCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Commands/SetUserInfoRolesCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 璁剧疆鐢ㄦ埛淇℃伅瑙掕壊
     /// </summary>
-    [Resource([EnumResourceController.User])]
+    [Resource([EnumResourceController.UserServerUser])]
     public class SetUserInfoRolesCommand : IRequest<int>
     {
         public SetUserInfoRolesCommand()
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Commands/SetUserInfoStatusCommand.cs b/FlexJobApi.Core/Models/UserServer/Users/Commands/SetUserInfoStatusCommand.cs
index 753fa47..8afafd6 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Commands/SetUserInfoStatusCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Commands/SetUserInfoStatusCommand.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 璁剧疆鐢ㄦ埛淇℃伅鐘舵��
     /// </summary>
-    [Resource([EnumResourceController.User])]
+    [Resource([EnumResourceController.UserServerUser])]
     public class SetUserInfoStatusCommand : IRequest<int>
     {
         public SetUserInfoStatusCommand()
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs b/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs
index e8712d3..bf4a1f2 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鍚屾浼佷笟鐢ㄦ埛
     /// </summary>
-    [Resource([EnumResourceController.User])]
+    [Resource([EnumResourceController.UserServerUser])]
     public class SyncEnterpriseUserCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncOperationUserCommand.cs b/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncOperationUserCommand.cs
index 7bf6957..7f728e9 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncOperationUserCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncOperationUserCommand.cs
@@ -11,7 +11,7 @@
     /// <summary>
     /// 鍚屾杩愯惀鐢ㄦ埛
     /// </summary>
-    [Resource([EnumResourceController.User])]
+    [Resource([EnumResourceController.UserServerUser])]
     public class SyncOperationUserCommand : IRequest<Guid>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetEnterpriseLoginInfoQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetEnterpriseLoginInfoQuery.cs
index 0ff102f..cd7e942 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetEnterpriseLoginInfoQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetEnterpriseLoginInfoQuery.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鏌ヨ浼佷笟鐢ㄦ埛鐧诲綍淇℃伅
     /// </summary>
-    [Resource([EnumResourceController.Auth])]
+    [Resource([EnumResourceController.UserServerAuth])]
     public class GetEnterpriseLoginInfoQuery : IRequest<GetEnterpriseLoginInfoQueryResult>
     {
     }
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetOperationUserInfosQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetOperationUserInfosQuery.cs
index cd0d4ca..4ede3a2 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetOperationUserInfosQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetOperationUserInfosQuery.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 鏌ヨ杩愯惀绔敤鎴峰垎椤靛垪琛ㄦ暟鎹�
     /// </summary>
-    [Resource([EnumResourceController.User])]
+    [Resource([EnumResourceController.UserServerUser])]
     public class GetOperationUserInfosQuery : PagedListQuery<PagedListQueryResult<GetOperationUserInfosQueryResultItem>, GetOperationUserInfosQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs
index c33f36f..afd5c97 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ涓汉鐢ㄦ埛鐧诲綍淇℃伅
     /// </summary>
-    [Resource([EnumResourceController.Auth])]
+    [Resource([EnumResourceController.UserServerAuth])]
     public class GetPersonalLoginInfoQuery : IRequest<GetPersonalLoginInfoQueryResult>
     {
 
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfoSignContractsQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfoSignContractsQuery.cs
index 946a652..519ab5e 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfoSignContractsQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfoSignContractsQuery.cs
@@ -9,7 +9,7 @@
     /// <summary>
     /// 鏌ヨC绔汉鍛樼绾﹁鎯呭垎椤靛垪琛ㄦ暟鎹�
     /// </summary>
-    [Resource([EnumResourceController.User])]
+    [Resource([EnumResourceController.UserServerUser])]
     public class GetPersonalUserInfoSignContractsQuery : PagedListQuery<GetPersonalUserInfoSignContractsQueryResult, GetPersonalUserInfoSignContractsQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfosQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfosQuery.cs
index 4ccffc8..ad5ae40 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfosQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfosQuery.cs
@@ -9,7 +9,7 @@
     /// <summary>
     /// 鏌ヨC绔汉鍛樺垎椤靛垪琛ㄦ暟鎹�
     /// </summary>
-    [Resource([EnumResourceController.User])]
+    [Resource([EnumResourceController.UserServerUser])]
     public class GetPersonalUserInfosQuery : PagedListQuery<GetPersonalUserInfosQueryResult, GetPersonalUserInfosQueryResultItem>
     {
         /// <summary>
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserInfoRolesQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserInfoRolesQuery.cs
index b1b350e..753f471 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserInfoRolesQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserInfoRolesQuery.cs
@@ -10,7 +10,7 @@
     /// <summary>
     /// 鏌ヨ鐢ㄦ埛瑙掕壊鍒楄〃
     /// </summary>
-    [Resource([EnumResourceController.User])]
+    [Resource([EnumResourceController.UserServerUser])]
     public class GetUserInfoRolesQuery : IRequest<List<GetUserInfoRolesQueryResultItem>>
     {
         public GetUserInfoRolesQuery()
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs b/FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs
deleted file mode 100644
index bc12627..0000000
--- a/FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs
+++ /dev/null
@@ -1,125 +0,0 @@
-锘縰sing Azure;
-using Azure.Core;
-using Furion;
-using Furion.FriendlyException;
-using Furion.HttpRemote;
-using Furion.Shapeless;
-using Mapster;
-using Microsoft.Extensions.Caching.Distributed;
-using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net.Http.Headers;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FlexJobApi.Core
-{
-    public interface IResourceHttpProvider
-    {
-        HttpRequestBuilder AddAuthentication(HttpRequestBuilder builder);
-        Task<TResponse> SendAsAsync<TResponse>(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder);
-        Task<string> SendAsStringAsync(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder);
-    }
-
-    public class DefaultResourceHttpProvider : IResourceHttpProvider
-    {
-        public HttpRequestBuilder AddAuthentication(HttpRequestBuilder builder)
-        {
-            var token = App.HttpContext.Request.Headers["Authorization"].ToString();
-            var refreshToken = App.HttpContext.Request.Headers["X-Authorization"].ToString();
-            return builder
-                .AddAuthentication(new AuthenticationHeaderValue("Authorization", token))
-                .AddAuthentication(new AuthenticationHeaderValue("X-Authorization", refreshToken));
-        }
-
-        public async Task<TResponse> SendAsAsync<TResponse>(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder)
-        {
-            return await httpRemoteService.SendAsAsync<TResponse>(builder);
-        }
-
-        public async Task<string> SendAsStringAsync(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder)
-        {
-            return await httpRemoteService.SendAsStringAsync(builder);
-        }
-    }
-
-    public class TokenDataModel
-    {
-        /// <summary>
-        /// 鐢ㄦ埛璁块棶浠ょ墝
-        /// </summary>
-        public string AccessToken { get; set; }
-
-        /// <summary>
-        /// 鍒锋柊浠ょ墝
-        /// </summary>
-        public string RefreshToken { get; set; }
-    }
-
-    public class SystemUserResourceHttpProvider : IResourceHttpProvider
-    {
-        public HttpRequestBuilder AddAuthentication(HttpRequestBuilder builder)
-        {
-            var token = GetToken();
-            return builder
-                .WithHeader("Authorization", "Bearer " + token.AccessToken)
-                .WithHeader("X-Authorization", "Bearer " + token.RefreshToken);
-        }
-
-        public async Task<TResponse> SendAsAsync<TResponse>(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder)
-        {
-            var response = await httpRemoteService.SendAsAsync<TResponse>(builder);
-            return response;
-        }
-
-        public async Task<string> SendAsStringAsync(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder)
-        {
-            var response = await httpRemoteService.SendAsStringAsync(builder);
-            try
-            {
-                var result = response.JsonTo(new
-                {
-                    Code = 0
-                });
-                if (result.Code == 401)
-                {
-                    var token = GetToken(true);
-                    builder = builder
-                        .WithHeader("Authorization", "Bearer " + token.AccessToken)
-                        .WithHeader("X-Authorization", "Bearer " + token.RefreshToken);
-                    response = await httpRemoteService.SendAsStringAsync(builder);
-                }
-            }
-            catch { }
-            return response;
-        }
-
-        private TokenDataModel GetToken(bool recache = false)
-        {
-            var distributedCache = App.GetRequiredService<IDistributedCache>();
-            var token = distributedCache.GetString("SystemUserToken");
-            if (token == null || recache)
-            {
-                var logier = new CurrentLogier
-                {
-                    Id = new Guid("11111111-1111-1111-1111-111111111111"),
-                    Name = "绠$悊鍛�",
-                    UserName = "system",
-                    Type = EnumUserType.Operation,
-                    ClientType = EnumClientType.PcWeb,
-                    Level = 999,
-                };
-                JwtUtils.GenerateToken(logier);
-                token = logier.Adapt<TokenDataModel>().ToJson();
-                distributedCache.SetString("SystemUserToken", token, new DistributedCacheEntryOptions
-                {
-                    AbsoluteExpiration = DateTime.Now.AddMinutes(60 * 23)
-                });
-            }
-            var tokenData = token.JsonTo<TokenDataModel>();
-            return tokenData;
-        }
-    }
-}
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/DefaultResourceHttpProvider.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/DefaultResourceHttpProvider.cs
new file mode 100644
index 0000000..e612b59
--- /dev/null
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/DefaultResourceHttpProvider.cs
@@ -0,0 +1,34 @@
+锘縰sing Furion;
+using Furion.HttpRemote;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 榛樿璧勬簮鎻愪緵鑰�
+    /// </summary>
+    public class DefaultResourceHttpProvider : IResourceHttpProvider
+    {
+        public async Task<string> SendAsStringAsync(HttpRequestBuilder builder)
+        {
+            var token = App.HttpContext.Request.Headers["Authorization"].ToString();
+            if (token.IsNotNull())
+            {
+                builder = builder.AddAuthentication(new AuthenticationHeaderValue("Authorization", token));
+            }
+
+            var refreshToken = App.HttpContext.Request.Headers["X-Authorization"].ToString();
+            if (refreshToken.IsNotNull())
+            {
+                builder = builder.AddAuthentication(new AuthenticationHeaderValue("X-Authorization", refreshToken));
+            }
+
+            return await App.GetRequiredService<IHttpRemoteService>().SendAsStringAsync(builder);
+        }
+    }
+}
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/ElectronSignServerCustomerResourceHttpProvider.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/ElectronSignServerCustomerResourceHttpProvider.cs
new file mode 100644
index 0000000..9fdf083
--- /dev/null
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/ElectronSignServerCustomerResourceHttpProvider.cs
@@ -0,0 +1,30 @@
+锘縰sing Furion;
+using Furion.DataEncryption;
+using Furion.HttpRemote;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鐢靛瓙绛惧鎴风璧勬簮鎻愪緵鑰�
+    /// </summary>
+    public class ElectronSignServerCustomerResourceHttpProvider : IResourceHttpProvider
+    {
+        public async Task<string> SendAsStringAsync(HttpRequestBuilder builder)
+        {
+            var httpRemoteService = App.GetRequiredService<IHttpRemoteService>();
+            var appId = App.GetConfig<string>("ElectronSignServer:AppId");
+            var privateKey = App.GetConfig<string>("ElectronSignServer:PrivateKey");
+            var sign = MD5Encryption.Encrypt($"{appId}-{privateKey}".ToUpper(), true);
+            builder = builder
+                .WithHeader("appId", appId)
+                .WithHeader("sign", sign);
+            var response = await httpRemoteService.SendAsStringAsync(builder);
+            return response;
+        }
+    }
+}
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/ElectronSignServerResourceHttpProvider.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/ElectronSignServerResourceHttpProvider.cs
new file mode 100644
index 0000000..f444131
--- /dev/null
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/ElectronSignServerResourceHttpProvider.cs
@@ -0,0 +1,84 @@
+锘縰sing FlexJobApi.Core.Models.ElectronSignServer.Auths;
+using FlexJobApi.Core.Models.ElectronSignServer.Common;
+using Furion;
+using Furion.HttpRemote;
+using Mapster;
+using Microsoft.Extensions.Caching.Distributed;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鐢靛瓙绛捐祫婧愭彁渚涜��
+    /// </summary>
+    public class ElectronSignServerResourceHttpProvider : IResourceHttpProvider
+    {
+        public async Task<string> SendAsStringAsync(HttpRequestBuilder builder)
+        {
+            var httpRemoteService = App.GetRequiredService<IHttpRemoteService>();
+            builder = WithToken(httpRemoteService, builder);
+            var response = await httpRemoteService.SendAsStringAsync(builder);
+            try
+            {
+                var result = response.JsonTo(new
+                {
+                    Code = 0
+                });
+                if (result.Code == 401)
+                {
+                    builder = WithToken(httpRemoteService, builder, true);
+                    response = await httpRemoteService.SendAsStringAsync(builder);
+                }
+            }
+            catch { }
+            return response;
+        }
+
+        private HttpRequestBuilder WithToken(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder, bool recache = false)
+        {
+            var cacheKey = "ElectronSignServerSystemUserToken";
+            var distributedCache = App.GetRequiredService<IDistributedCache>();
+            var token = distributedCache.GetString(cacheKey);
+            if (token == null || recache)
+            {
+                var result = httpRemoteService.PostAs<ElectronSignServerResult<IdentityModelTokenCacheItem>>($"{builder.RequestUri.Scheme}://{builder.RequestUri.Authority}/api/Account/GetTokenForWeb", builder =>
+                    builder.SetJsonContent(new AccessRequestDto
+                    {
+                        UserName = "system",
+                        UserPassword = "qwe321"
+                    }));
+                if (result.Success)
+                {
+                    token = new TokenDataModel
+                    {
+                        AccessToken = result.Result.AccessToken,
+                        RefreshToken = result.Result.RefreshToken
+                    }.ToJson();
+                    distributedCache.SetString(cacheKey, token, new DistributedCacheEntryOptions
+                    {
+                        AbsoluteExpiration = DateTime.Now.AddMinutes(60 * 23)
+                    });
+                }
+            }
+            if (token.IsNotNull())
+            {
+                var model = token.JsonTo<TokenDataModel>();
+                if (model.AccessToken.IsNotNull())
+                {
+                    builder = builder.AddAuthentication(new AuthenticationHeaderValue("Authorization", model.AccessToken));
+                }
+
+                if (model.RefreshToken.IsNotNull())
+                {
+                    builder = builder.AddAuthentication(new AuthenticationHeaderValue("X-Authorization", model.RefreshToken));
+                }
+            }
+            return builder;
+        }
+    }
+}
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/IResourceHttpProvider.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/IResourceHttpProvider.cs
new file mode 100644
index 0000000..97950b9
--- /dev/null
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/IResourceHttpProvider.cs
@@ -0,0 +1,31 @@
+锘縰sing Azure;
+using Azure.Core;
+using Furion;
+using Furion.FriendlyException;
+using Furion.HttpRemote;
+using Furion.Shapeless;
+using Mapster;
+using Microsoft.Extensions.Caching.Distributed;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    public interface IResourceHttpProvider
+    {
+        Task<string> SendAsStringAsync(HttpRequestBuilder builder);
+    }
+
+    public enum EnumResourceHttpProvider
+    { 
+        Default,
+        SystemUser,
+        ElectronSignServer,
+        ElectronSignServerCustomer
+    }
+}
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/SystemUserResourceHttpProvider.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/SystemUserResourceHttpProvider.cs
new file mode 100644
index 0000000..3afc9dd
--- /dev/null
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpProvider/SystemUserResourceHttpProvider.cs
@@ -0,0 +1,91 @@
+锘縰sing Furion;
+using Furion.HttpRemote;
+using Mapster;
+using Microsoft.Extensions.Caching.Distributed;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 绯荤粺绠$悊鍛樿祫婧愭彁渚涜��
+    /// </summary>
+    public class SystemUserResourceHttpProvider : IResourceHttpProvider
+    {
+        public async Task<string> SendAsStringAsync(HttpRequestBuilder builder)
+        {
+            var httpRemoteService = App.GetRequiredService<IHttpRemoteService>();
+            builder = WithToken(httpRemoteService, builder);
+            var response = await httpRemoteService.SendAsStringAsync(builder);
+            try
+            {
+                var result = response.JsonTo(new
+                {
+                    Code = 0
+                });
+                if (result.Code == 401)
+                {
+                    builder = WithToken(httpRemoteService, builder, true);
+                    response = await httpRemoteService.SendAsStringAsync(builder);
+                }
+            }
+            catch { }
+            return response;
+        }
+
+        private HttpRequestBuilder WithToken(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder, bool recache = false)
+        {
+            var cacheKey = "SystemUserToken";
+            var distributedCache = App.GetRequiredService<IDistributedCache>();
+            var token = distributedCache.GetString(cacheKey);
+            if (token == null || recache)
+            {
+                var logier = new CurrentLogier
+                {
+                    Id = new Guid("11111111-1111-1111-1111-111111111111"),
+                    Name = "绠$悊鍛�",
+                    UserName = "system",
+                    Type = EnumUserType.Operation,
+                    ClientType = EnumClientType.PcWeb,
+                    Level = 999,
+                };
+                JwtUtils.GenerateToken(logier);
+                token = logier.Adapt<TokenDataModel>().ToJson();
+                distributedCache.SetString(cacheKey, token, new DistributedCacheEntryOptions
+                {
+                    AbsoluteExpiration = DateTime.Now.AddMinutes(60 * 23)
+                });
+            }
+            if (token.IsNotNull())
+            {
+                var model = token.JsonTo<TokenDataModel>();
+                if (model.AccessToken.IsNotNull())
+                {
+                    builder = builder.AddAuthentication(new AuthenticationHeaderValue("Authorization", model.AccessToken));
+                }
+
+                if (model.RefreshToken.IsNotNull())
+                {
+                    builder = builder.AddAuthentication(new AuthenticationHeaderValue("X-Authorization", model.RefreshToken));
+                }
+            }
+            return builder;
+        }
+    }
+    public class TokenDataModel
+    {
+        /// <summary>
+        /// 鐢ㄦ埛璁块棶浠ょ墝
+        /// </summary>
+        public string AccessToken { get; set; }
+
+        /// <summary>
+        /// 鍒锋柊浠ょ墝
+        /// </summary>
+        public string RefreshToken { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs
index 40da33e..1983841 100644
--- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs
@@ -1,94 +1,98 @@
 锘縰sing Azure;
 using Consul;
 using Furion;
+using Furion.DatabaseAccessor;
 using Furion.FriendlyException;
 using Furion.HttpRemote;
+using Microsoft.EntityFrameworkCore;
 using Microsoft.Extensions.Caching.Distributed;
+using RabbitMQ.Client;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel.Design;
 using System.Linq;
 using System.Net.Http;
+using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
 
 namespace FlexJobApi.Core
 {
-    public class ResourceHttpUtils
+    public static class ResourceHttpUtils
     {
-        private readonly IDistributedCache distributedCache;
-        private readonly IHttpRemoteService httpRemoteService;
-        private readonly IConsulClient consulClient;
-
-        public ResourceHttpUtils(
-            IDistributedCache distributedCache,
-            IHttpRemoteService httpRemoteService,
-            IConsulClient consulClient)
+        public static async Task<string> SendHttpAsync(this object request, string serviceName, string route, EnumResourceMethod method, EnumResourceHttpProvider? provider = null)
         {
-            this.distributedCache = distributedCache;
-            this.httpRemoteService = httpRemoteService;
-            this.consulClient = consulClient;
-        }
-
-        /// <summary>
-        /// 鍙戦�丠TTP璇锋眰
-        /// </summary>
-        /// <typeparam name="TRequest"></typeparam>
-        /// <typeparam name="TResponse"></typeparam>
-        /// <param name="request"></param>
-        /// <param name="provider"></param>
-        /// <returns></returns>
-        public async Task<TResponse> SendHttpAsync<TRequest, TResponse>(
-            TRequest request,
-            IResourceHttpProvider provider = null)
-            where TRequest : class, new()
-        {
-            var requestTypeFullName = typeof(TRequest).FullName;
-
-            var jsonResourceModels = await distributedCache.GetStringAsync($"ResourceModel|{requestTypeFullName}");
-            var resource = jsonResourceModels.JsonTo<ResourceModel>();
-            var url = await GetUrl(resource.ServiceName, resource.Route);
-            var builder = HttpRequestBuilder.Create(resource.GetHttpMethod(), url);
-            if (resource.Method == EnumResourceMethod.Get)
-                builder = builder.WithQueryParameters(request);
-            else
-                builder = builder.SetJsonContent(request);
-            provider = provider ?? new DefaultResourceHttpProvider();
-            builder = provider.AddAuthentication(builder);
-            var response = await provider.SendAsAsync<TResponse>(httpRemoteService, builder);
-            return response;
-        }
-
-        public async Task<string> SendHttpAsync(Resource resource, string request, IResourceHttpProvider provider = null)
-        {
-            var url = await GetUrl(resource.ServiceName, resource.Route);
-            var builder = HttpRequestBuilder.Create(resource.GetHttpMethod(), url);
-            if (resource.Method == EnumResourceMethod.Get)
-                builder = builder.WithQueryParameters(request);
-            else
-                builder = builder.SetJsonContent(request);
-            provider = provider ?? new DefaultResourceHttpProvider();
-            builder = provider.AddAuthentication(builder);
-            var response = await provider.SendAsStringAsync(httpRemoteService, builder);
-            return response;
-        }
-
-        public async Task<string> SendHttpAsync(EnumResourceService service, HttpMethod method, string route, string request, IResourceHttpProvider provider = null)
-        {
-            var serviceName = service.GetCustomAttribute<EnumResourceService, ResourceServiceAttribute>().ServiceName;
+            serviceName = App.GetConfig<string>($"{serviceName}:ServiceName");
             var url = await GetUrl(serviceName, route);
-            var builder = HttpRequestBuilder.Create(method, url);
-            if (method == HttpMethod.Get)
+            var builder = HttpRequestBuilder.Create(method.GetMethod(), url);
+            if (method == EnumResourceMethod.Get)
                 builder = builder.WithQueryParameters(request);
             else
                 builder = builder.SetJsonContent(request);
-            provider = provider ?? new DefaultResourceHttpProvider();
-            builder = provider.AddAuthentication(builder);
-            var response = await provider.SendAsStringAsync(httpRemoteService, builder);
+            IResourceHttpProvider httpProvider = 
+                provider == EnumResourceHttpProvider.SystemUser
+                ? new SystemUserResourceHttpProvider()
+                : provider == EnumResourceHttpProvider.ElectronSignServer
+                ? new ElectronSignServerResourceHttpProvider()
+                : provider == EnumResourceHttpProvider.ElectronSignServerCustomer
+                ? new ElectronSignServerCustomerResourceHttpProvider()
+                : new DefaultResourceHttpProvider();
+            var response = await httpProvider.SendAsStringAsync(builder);
             return response;
         }
 
-        public async Task<string> GetUrl(string serviceName, string route)
+        public static async Task<TResponse> SendHttpAsync<TRequest, TResponse>(this TRequest request, EnumResourceHttpProvider? provider = null)
+        {
+            var requestType = typeof(TRequest);
+            var resourceAttribute = requestType.GetCustomAttribute<ResourceAttribute>();
+            if (resourceAttribute == null) throw Oops.Oh(EnumErrorCodeType.s400, "缂哄け璧勬簮鐗规��");
+            var controller = resourceAttribute.Controllers.FirstOrDefault();
+            var resourceControllerAttribute = controller.GetCustomAttribute<EnumResourceController, ResourceControllerAttribute>();
+            if (resourceAttribute == null) throw Oops.Oh(EnumErrorCodeType.s400, "缂哄け鎺у埗鍣ㄧ壒鎬�");
+            var serviceName = resourceControllerAttribute.Service.ToString();
+            var route = resourceAttribute.Route;
+            var method = resourceAttribute.Method;
+            var requestXmlDoc = await requestType.GetXmlDocMemberAsync();
+            if (route.IsNull() || method == EnumResourceMethod.None)
+            {
+                var resource = await Db.GetRepository<Resource>().AsQueryable().AsNoTracking()
+                    .Where(it =>
+                        it.ServiceName == serviceName
+                        && it.ControllerName == resourceControllerAttribute.ControllerName
+                        && it.Code == requestXmlDoc.Name)
+                    .Select(it => new
+                    {
+                        it.Route,
+                        it.Method
+                    })
+                    .FirstOrDefaultAsync();
+                if (resource == null) throw Oops.Oh(EnumErrorCodeType.s404, "璧勬簮");
+                route = resource.Route;
+                method = resource.Method;
+            }
+            var responseJson = await request.SendHttpAsync(serviceName, route, method, provider);
+            var response = responseJson.JsonTo<TResponse>();
+            return response;
+        }
+
+        public static HttpMethod GetMethod(this EnumResourceMethod method)
+        {
+            switch (method)
+            {
+                case EnumResourceMethod.Get:
+                    return HttpMethod.Get;
+                case EnumResourceMethod.Post:
+                    return HttpMethod.Post;
+                case EnumResourceMethod.Put:
+                    return HttpMethod.Put;
+                case EnumResourceMethod.Delete:
+                    return HttpMethod.Delete;
+                default:
+                    throw Oops.Oh(EnumErrorCodeType.s400, "涓嶆敮鎸佺殑璇锋眰绫诲瀷");
+            }
+        }
+
+        public static async Task<string> GetUrl(string serviceName, string route)
         {
             var domain = await GetHealthyServiceDomain(serviceName);
             return $"{domain}{route}";
@@ -99,12 +103,12 @@
         /// </summary>
         /// <param name="serviceName"></param>
         /// <returns></returns>
-        public async Task<string> GetHealthyServiceDomain(string serviceName)
+        public static async Task<string> GetHealthyServiceDomain(string serviceName)
         {
             var env = App.GetConfig<string>("Environment");
             serviceName = $"{env}_{serviceName}";
 
-            var queryResult = await consulClient.Health.Service(serviceName, null, true);
+            var queryResult = await App.GetRequiredService<IConsulClient>().Health.Service(serviceName, null, true);
             if (queryResult.StatusCode != System.Net.HttpStatusCode.OK)
                 throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔serviceName}");
 
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceModel.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceModel.cs
index 0deca91..4e0c7b8 100644
--- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceModel.cs
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceModel.cs
@@ -27,19 +27,14 @@
         public string DynamicAssemblyName { get; set; }
 
         /// <summary>
-        /// 鏈嶅姟
-        /// </summary>
-        public EnumResourceService Service { get; set; }
-
-        /// <summary>
         /// 鏈嶅姟鍚嶇О
         /// </summary>
         public string ServiceName { get; set; }
 
         /// <summary>
-        /// 鎺у埗鍣�
+        /// 鎺у埗鍣ㄥ悕绉�
         /// </summary>
-        public EnumResourceController Controller { get; set; }
+        public string ControllerName { get; set; }
 
         /// <summary>
         /// 鎺у埗鍣ㄦ憳瑕�
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceServiceAttribute.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceServiceAttribute.cs
index b560714..0c3fb6d 100644
--- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceServiceAttribute.cs
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceServiceAttribute.cs
@@ -33,6 +33,11 @@
         public EnumResourceMethod Method { get; set; }
 
         /// <summary>
+        /// 璺敱
+        /// </summary>
+        public string Route { get; set; }
+
+        /// <summary>
         /// 鏂囦欢涓婁紶
         /// </summary>
         public bool FileUpload { get; set; }
@@ -44,10 +49,21 @@
     [AttributeUsage(AttributeTargets.Field)]
     public class ResourceControllerAttribute : Attribute
     {
+        public ResourceControllerAttribute(EnumResourceService service, string controllerName)
+        {
+            Service = service;
+            ControllerName = controllerName;
+        }
+
         /// <summary>
         /// 鏈嶅姟
         /// </summary>
         public EnumResourceService Service { get; set; }
+
+        /// <summary>
+        /// 鎺у埗鍣ㄥ悕绉�
+        /// </summary>
+        public string ControllerName { get; set; }
     }
 
     /// <summary>
@@ -65,10 +81,5 @@
         /// 璺敱鍖哄煙
         /// </summary>
         public string RouteArea { get; set; }
-
-        /// <summary>
-        /// 鏈嶅姟鍚嶇О
-        /// </summary>
-        public string ServiceName { get; set; }
     }
 }
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
index 60c94f2..65f4977 100644
--- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
@@ -6,6 +6,8 @@
 using Furion.DynamicApiController;
 using Furion.FriendlyException;
 using Furion.HttpRemote;
+using Furion.Logging;
+using Furion.Logging.Extensions;
 using Mapster;
 using MediatR;
 using Microsoft.AspNetCore.Mvc;
@@ -69,14 +71,13 @@
                     var model = new ResourceModel();
                     model.TraceId = traceId;
                     model.ApplicationName = resourceService.ApplicationName;
-                    model.Controller = controller;
+                    model.ControllerName = resourceController.ControllerName;
                     model.ControllerSummary = resourceControllers.GetDescription(controller);
                     model.ActionName = Regex.Replace(request.Name, @"(Command|Query)$", "", RegexOptions.None);
                     model.ActionSummary = requestXmlDoc?.Summary;
-                    model.Service = resourceController.Service;
-                    model.ServiceName = resourceService.ServiceName;
+                    model.ServiceName = resourceController.Service.ToString();
                     model.RouteArea = resourceService.RouteArea;
-                    model.Route = $"/api/{resourceService.RouteArea ?? "main"}/{controller}/{model.ActionName}";
+                    model.Route = $"/api/{resourceService.RouteArea ?? "main"}/{model.ControllerName}/{model.ActionName}";
                     model.Method =
                         resourceAttribute.Method != EnumResourceMethod.None
                         ? resourceAttribute.Method
@@ -179,7 +180,7 @@
                 .GroupBy(it => new
                 {
                     it.ApplicationName,
-                    it.Controller,
+                    it.ControllerName,
                     it.ControllerSummary,
                     it.RouteArea
                 })
@@ -204,13 +205,13 @@
 using System.ComponentModel;
 
 
-namespace {controller.Key.ApplicationName}.{controller.Key.Controller}
+namespace {controller.Key.ApplicationName}.{controller.Key.ControllerName}
 {{
     /// <summary>
     /// {controller.Key.ControllerSummary}
     /// </summary>
     [Route(""api/{controller.Key.RouteArea}/[controller]"")]
-    public class {controller.Key.Controller}AppService(IMediator mediator) : IDynamicApiController
+    public class {controller.Key.ControllerName}AppService(IMediator mediator) : IDynamicApiController
     {{
         private readonly IMediator mediator = mediator;";
 
@@ -264,7 +265,7 @@
                 }
                 catch (Exception ex)
                 {
-                    Console.WriteLine(code);
+                    code.LogError(ex);
                     throw;
                 }
             }
diff --git a/FlexJobApi.Database.Migrations/Migrations/20250819093016_UpdateUser0819.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250819093016_UpdateUser0819.Designer.cs
new file mode 100644
index 0000000..f11503c
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250819093016_UpdateUser0819.Designer.cs
@@ -0,0 +1,2616 @@
+锘�// <auto-generated />
+using System;
+using FlexJobApi.EntityFramework.Core;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations
+{
+    [DbContext(typeof(DefaultDbContext))]
+    [Migration("20250819093016_UpdateUser0819")]
+    partial class UpdateUser0819
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "9.0.7")
+                .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+            modelBuilder.Entity("FlexJobApi.Core.Department", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDisabled")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("ParentId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("ParentId");
+
+                    b.ToTable("Department");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DictionaryCategory", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("FieldNames")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("DictionaryCategory");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("CategoryId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("Content")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Deep")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Field1")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Field2")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Field3")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Field4")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Field5")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDisabled")
+                        .HasColumnType("bit");
+
+                    b.Property<Guid?>("ParentId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CategoryId");
+
+                    b.HasIndex("Code")
+                        .IsUnique();
+
+                    b.HasIndex("ParentId");
+
+                    b.ToTable("DictionaryData");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Address")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("BankBranchName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("BankCard")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("BankName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("CityCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("ContactEmail")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ContactPhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<string>("Contacts")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("EnterpriseName")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("EnterpriseType")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("EstablishmentDate")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("IndustrialParkId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("IndustryTypeCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<bool>("IsCheckedBankCard")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsReal")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("LegalIdentity")
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)");
+
+                    b.Property<string>("LegalPerson")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("LicenseImage")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("MainBusiness")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<decimal?>("MergeSignCost")
+                        .HasColumnType("decimal(18,2)");
+
+                    b.Property<int?>("PayAccess")
+                        .HasColumnType("int");
+
+                    b.Property<string>("ProvinceCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<int?>("RealAccess")
+                        .HasColumnType("int");
+
+                    b.Property<decimal?>("RealVerifyCost")
+                        .HasColumnType("decimal(18,2)");
+
+                    b.Property<string>("RegisteredCapital")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<decimal?>("SignCost")
+                        .HasColumnType("decimal(18,2)");
+
+                    b.Property<int?>("SmsAccess")
+                        .HasColumnType("int");
+
+                    b.Property<decimal>("SmsCost")
+                        .HasColumnType("decimal(18,2)");
+
+                    b.Property<string>("SocietyCreditCode")
+                        .IsRequired()
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CityCode");
+
+                    b.HasIndex("IndustryTypeCode");
+
+                    b.HasIndex("ProvinceCode");
+
+                    b.ToTable("Enterprise");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseAuth", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("BankCard")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("BankCardImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("EnterpriseName")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<int?>("EnterpriseRealMethod")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Identity")
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)");
+
+                    b.Property<string>("IdentityBackImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("IdentityImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("LegalIdentity")
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)");
+
+                    b.Property<string>("LegalPerson")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("LicenseImage")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<int?>("PersonalRealMethod")
+                        .HasColumnType("int");
+
+                    b.Property<string>("PhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<bool?>("Proxy")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("ProxyPowerAttorneyUrl")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("SocietyCreditCode")
+                        .IsRequired()
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("EnterpriseAuth");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("Age")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("Birthday")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("ContactPhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<string>("ContractUrl")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("EnterpriseSignContractStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("EnterpriseSignContractTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int?>("Gender")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Identity")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("IdentityBackImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("IdentityImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("UserSignContractStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("UserSignContractTime")
+                        .HasColumnType("datetime2");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("EnterpriseEmployee");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseUserCollect", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTime?>("CollectedTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<DateTime?>("ContactedTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsCollected")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsContacted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("EnterpriseUserCollect");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("ClientType")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Group")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Icon")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsCache")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDisabled")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Location")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<Guid?>("ParentId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Url")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("UserType")
+                        .HasColumnType("int");
+
+                    b.Property<int>("VisitLevel")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Width")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ParentId");
+
+                    b.ToTable("Menu");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Resource", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("ActionName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ActionSummary")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("AllowAnonymous")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("ApplicationName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Controller")
+                        .HasColumnType("int");
+
+                    b.Property<string>("ControllerSummary")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("DynamicAssemblyName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("FileUpload")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsExpired")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Method")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("RequestTypeFullName")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("RequestTypeName")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ResponseTypeFullName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ResponseTypeName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Route")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("RouteArea")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Service")
+                        .HasColumnType("int");
+
+                    b.Property<string>("ServiceName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Resource");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Role", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("ClientType")
+                        .HasColumnType("int");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("DataPower")
+                        .HasColumnType("int");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDisabled")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("MinLevel")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("UserType")
+                        .HasColumnType("int");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Role");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<Guid>("MenuId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MenuId");
+
+                    b.HasIndex("RoleId");
+
+                    b.ToTable("RoleMenu");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.RoleResource", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("DataPower")
+                        .HasColumnType("int");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<Guid>("ResourceId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ResourceId");
+
+                    b.HasIndex("RoleId");
+
+                    b.ToTable("RoleResource");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.ScheduleJobDetail", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("AssemblyName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("Concurrent")
+                        .HasColumnType("bit");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Description")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("GroupName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IncludeAnnotations")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("JobId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("JobType")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Properties")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("ScheduleJobDetail");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.ScheduleJobTrigger", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Args")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("AssemblyName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Description")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<long>("ElapsedTime")
+                        .HasColumnType("bigint");
+
+                    b.Property<DateTime?>("EndTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("JobId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime?>("LastRunTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<long>("MaxNumberOfErrors")
+                        .HasColumnType("bigint");
+
+                    b.Property<long>("MaxNumberOfRuns")
+                        .HasColumnType("bigint");
+
+                    b.Property<DateTime?>("NextRunTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<long>("NumRetries")
+                        .HasColumnType("bigint");
+
+                    b.Property<long>("NumberOfErrors")
+                        .HasColumnType("bigint");
+
+                    b.Property<long>("NumberOfRuns")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("ResetOnlyOnce")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Result")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("RetryTimeout")
+                        .HasColumnType("int");
+
+                    b.Property<bool>("RunOnStart")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<bool>("StartNow")
+                        .HasColumnType("bit");
+
+                    b.Property<DateTime?>("StartTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<long>("Status")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TriggerId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TriggerType")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("ScheduleJobTrigger");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("AddressDetail")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("AddressName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("AgeMaxLimit")
+                        .HasColumnType("int");
+
+                    b.Property<int>("AgeMinLimit")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime>("BeginTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int>("BillingMethod")
+                        .HasColumnType("int");
+
+                    b.Property<int?>("CheckReceiveStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("CheckReceiveTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("CityCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("Code")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTime>("EndTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<Guid>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("GenderLimit")
+                        .HasColumnType("int");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<DateTime?>("LastCheckReceiveTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<DateTime?>("LastSubmitTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<decimal?>("Latitude")
+                        .HasColumnType("decimal(18,6)");
+
+                    b.Property<decimal?>("Longitude")
+                        .HasColumnType("decimal(18,6)");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ProvinceCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<int>("RecommendStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("RecommendTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int>("ReleaseStatus")
+                        .HasColumnType("int");
+
+                    b.Property<decimal>("ServiceFee")
+                        .HasColumnType("decimal(18,2)");
+
+                    b.Property<int>("SettlementCycle")
+                        .HasColumnType("int");
+
+                    b.Property<int?>("SettlementStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("SettlementTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CityCode");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("ProvinceCode");
+
+                    b.ToTable("TaskInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("BenefitCode")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("TaskInfoId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("BenefitCode");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.ToTable("TaskInfoBenefit");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("TaskInfoId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TypeCode")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.HasIndex("TypeCode");
+
+                    b.ToTable("TaskInfoCredentialLimit");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("ArrangeStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("ArrangeTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int?>("CheckReceiveStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("CheckReceiveTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("EnterpriseEmployeeId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("HireStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("HireTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<DateTime?>("LastCheckReceiveTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<DateTime?>("LastSubmitTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("TaskInfoId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("EnterpriseEmployeeId");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.ToTable("TaskInfoUser");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmit", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("CheckReceiveStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("CheckReceiveTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTime>("Date")
+                        .HasColumnType("datetime2");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("TaskInfoUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TaskInfoUserId");
+
+                    b.ToTable("TaskInfoUserSubmit");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmitFile", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("File")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("SubmitId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("SubmitId");
+
+                    b.ToTable("TaskInfoUserSubmitFile");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskUserCollect", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("TaskInfoId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("TaskUserCollect");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.User", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("Age")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Avatar")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime?>("Birthday")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("CityCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("ContactPhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("DataSource")
+                        .HasColumnType("int");
+
+                    b.Property<Guid?>("DataSourceId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("EducationalBackgroundCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<Guid?>("ElectronSignUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("FreeTime")
+                        .HasColumnType("int");
+
+                    b.Property<int?>("Gender")
+                        .HasColumnType("int");
+
+                    b.Property<int?>("Height")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Identity")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsCheckPhoneNumber")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsReal")
+                        .HasColumnType("bit");
+
+                    b.Property<int?>("JobSeekingStatus")
+                        .HasColumnType("int");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("Password")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("PersonalIdentityCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("PhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<string>("ProvinceCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<int?>("RealAccess")
+                        .HasColumnType("int");
+
+                    b.Property<int?>("RealMethod")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("RealTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("UserName")
+                        .IsRequired()
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<int?>("Weight")
+                        .HasColumnType("int");
+
+                    b.Property<string>("WorkExperience")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("WorkSeniority")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("WxmpOpenId")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CityCode");
+
+                    b.HasIndex("EducationalBackgroundCode");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("PersonalIdentityCode");
+
+                    b.HasIndex("ProvinceCode");
+
+                    b.ToTable("User");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = new Guid("11111111-1111-1111-1111-111111111111"),
+                            CreatedTime = new DateTimeOffset(new DateTime(2000, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+                            IsCheckPhoneNumber = false,
+                            IsDeleted = false,
+                            IsReal = false,
+                            Level = 999,
+                            Name = "绠$悊鍛�",
+                            Password = "iEYggKrMhQ3ASUGLobra1w==:fn/DsMJUbD9FGpvBvR3moMpMPptdxzZlourPVhU479I=",
+                            Sort = 0,
+                            Status = 10,
+                            Type = 100,
+                            UserName = "system"
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserAuth", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("BankCard")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("BankCardImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Identity")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("IdentityBackImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("IdentityImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("PhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("UserAuth");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserBankCard", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Bank")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("PhoneNumber")
+                        .IsRequired()
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserBankCard");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserCredential", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("BackImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTime?>("EndDate")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("Img")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsForever")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("IssueUnit")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("StartDate")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TypeCode")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TypeCode");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserCredential");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserDepartment", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("DepartmentId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("DepartmentId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserDepartment");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserExpectJob", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("ExpectJobCode")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ExpectJobCode");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserExpectJob");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserManageIndustrialPark", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("IndustrialParkId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserManageIndustrialPark");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserPhoto", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Img")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserPhoto");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserRole", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RoleId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserRole");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Department", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany("Departments")
+                        .HasForeignKey("EnterpriseId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.Department", "Parent")
+                        .WithMany("Children")
+                        .HasForeignKey("ParentId");
+
+                    b.Navigation("Enterprise");
+
+                    b.Navigation("Parent");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryCategory", "Category")
+                        .WithMany()
+                        .HasForeignKey("CategoryId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Parent")
+                        .WithMany("Children")
+                        .HasForeignKey("ParentId");
+
+                    b.Navigation("Category");
+
+                    b.Navigation("Parent");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "City")
+                        .WithMany()
+                        .HasForeignKey("CityCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "IndustryType")
+                        .WithMany()
+                        .HasForeignKey("IndustryTypeCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Province")
+                        .WithMany()
+                        .HasForeignKey("ProvinceCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.Navigation("City");
+
+                    b.Navigation("IndustryType");
+
+                    b.Navigation("Province");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseAuth", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithOne("EnterpriseAuth")
+                        .HasForeignKey("FlexJobApi.Core.EnterpriseAuth", "Id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Enterprise");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany()
+                        .HasForeignKey("EnterpriseId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("EnterpriseEmployees")
+                        .HasForeignKey("UserId");
+
+                    b.Navigation("Enterprise");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseUserCollect", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany()
+                        .HasForeignKey("EnterpriseId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("EnterpriseUserCollects")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Enterprise");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Menu", "Parent")
+                        .WithMany("Children")
+                        .HasForeignKey("ParentId");
+
+                    b.Navigation("Parent");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Menu", "Menu")
+                        .WithMany()
+                        .HasForeignKey("MenuId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.Role", "Role")
+                        .WithMany("RoleMenus")
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Menu");
+
+                    b.Navigation("Role");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.RoleResource", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Resource", "Resource")
+                        .WithMany()
+                        .HasForeignKey("ResourceId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.Role", "Role")
+                        .WithMany("RoleResources")
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Resource");
+
+                    b.Navigation("Role");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "City")
+                        .WithMany()
+                        .HasForeignKey("CityCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany()
+                        .HasForeignKey("EnterpriseId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Province")
+                        .WithMany()
+                        .HasForeignKey("ProvinceCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.Navigation("City");
+
+                    b.Navigation("Enterprise");
+
+                    b.Navigation("Province");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Benefit")
+                        .WithMany()
+                        .HasForeignKey("BenefitCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
+                        .WithMany("Benefits")
+                        .HasForeignKey("TaskInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Benefit");
+
+                    b.Navigation("TaskInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
+                        .WithMany("CredentialLimits")
+                        .HasForeignKey("TaskInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Type")
+                        .WithMany()
+                        .HasForeignKey("TypeCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.Navigation("TaskInfo");
+
+                    b.Navigation("Type");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.EnterpriseEmployee", "EnterpriseEmployee")
+                        .WithMany("TaskInfoUsers")
+                        .HasForeignKey("EnterpriseEmployeeId")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
+                        .WithMany("TaskInfoUsers")
+                        .HasForeignKey("TaskInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("EnterpriseEmployee");
+
+                    b.Navigation("TaskInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmit", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.TaskInfoUser", "TaskInfoUser")
+                        .WithMany("Submits")
+                        .HasForeignKey("TaskInfoUserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("TaskInfoUser");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmitFile", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.TaskInfoUserSubmit", "Submit")
+                        .WithMany("Files")
+                        .HasForeignKey("SubmitId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Submit");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskUserCollect", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
+                        .WithMany("TaskUserCollects")
+                        .HasForeignKey("TaskInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("TaskInfo");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.User", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "City")
+                        .WithMany()
+                        .HasForeignKey("CityCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "EducationalBackground")
+                        .WithMany()
+                        .HasForeignKey("EducationalBackgroundCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany("Users")
+                        .HasForeignKey("EnterpriseId");
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity")
+                        .WithMany()
+                        .HasForeignKey("PersonalIdentityCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Province")
+                        .WithMany()
+                        .HasForeignKey("ProvinceCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.Navigation("City");
+
+                    b.Navigation("EducationalBackground");
+
+                    b.Navigation("Enterprise");
+
+                    b.Navigation("PersonalIdentity");
+
+                    b.Navigation("Province");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserAuth", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithOne("UserAuth")
+                        .HasForeignKey("FlexJobApi.Core.UserAuth", "Id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserBankCard", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("BankCards")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserCredential", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Type")
+                        .WithMany()
+                        .HasForeignKey("TypeCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("UserCredentials")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Type");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserDepartment", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Department", "Department")
+                        .WithMany()
+                        .HasForeignKey("DepartmentId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("UserDepartments")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Department");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserExpectJob", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "ExpectJob")
+                        .WithMany()
+                        .HasForeignKey("ExpectJobCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("UserExpectJobs")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("ExpectJob");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserManageIndustrialPark", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("UserManageIndustrialParks")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserPhoto", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("Photos")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserRole", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Role", "Role")
+                        .WithMany("UserRoles")
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("UserRoles")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Role");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Department", b =>
+                {
+                    b.Navigation("Children");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b =>
+                {
+                    b.Navigation("Children");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
+                {
+                    b.Navigation("Departments");
+
+                    b.Navigation("EnterpriseAuth");
+
+                    b.Navigation("Users");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b =>
+                {
+                    b.Navigation("TaskInfoUsers");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
+                {
+                    b.Navigation("Children");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Role", b =>
+                {
+                    b.Navigation("RoleMenus");
+
+                    b.Navigation("RoleResources");
+
+                    b.Navigation("UserRoles");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
+                {
+                    b.Navigation("Benefits");
+
+                    b.Navigation("CredentialLimits");
+
+                    b.Navigation("TaskInfoUsers");
+
+                    b.Navigation("TaskUserCollects");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b =>
+                {
+                    b.Navigation("Submits");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmit", b =>
+                {
+                    b.Navigation("Files");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.User", b =>
+                {
+                    b.Navigation("BankCards");
+
+                    b.Navigation("EnterpriseEmployees");
+
+                    b.Navigation("EnterpriseUserCollects");
+
+                    b.Navigation("Photos");
+
+                    b.Navigation("UserAuth");
+
+                    b.Navigation("UserCredentials");
+
+                    b.Navigation("UserDepartments");
+
+                    b.Navigation("UserExpectJobs");
+
+                    b.Navigation("UserManageIndustrialParks");
+
+                    b.Navigation("UserRoles");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/20250819093016_UpdateUser0819.cs b/FlexJobApi.Database.Migrations/Migrations/20250819093016_UpdateUser0819.cs
new file mode 100644
index 0000000..92b4275
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250819093016_UpdateUser0819.cs
@@ -0,0 +1,36 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations
+{
+    /// <inheritdoc />
+    public partial class UpdateUser0819 : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AddColumn<Guid>(
+                name: "ElectronSignUserId",
+                table: "User",
+                type: "uniqueidentifier",
+                nullable: true);
+
+            migrationBuilder.UpdateData(
+                table: "User",
+                keyColumn: "Id",
+                keyValue: new Guid("11111111-1111-1111-1111-111111111111"),
+                column: "ElectronSignUserId",
+                value: null);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "ElectronSignUserId",
+                table: "User");
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/20250820013459_UpdateUser0820.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250820013459_UpdateUser0820.Designer.cs
new file mode 100644
index 0000000..3250e56
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250820013459_UpdateUser0820.Designer.cs
@@ -0,0 +1,2631 @@
+锘�// <auto-generated />
+using System;
+using FlexJobApi.EntityFramework.Core;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations
+{
+    [DbContext(typeof(DefaultDbContext))]
+    [Migration("20250820013459_UpdateUser0820")]
+    partial class UpdateUser0820
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "9.0.7")
+                .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+            modelBuilder.Entity("FlexJobApi.Core.Department", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDisabled")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("ParentId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("ParentId");
+
+                    b.ToTable("Department");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DictionaryCategory", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("FieldNames")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("DictionaryCategory");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("CategoryId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("Content")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Deep")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Field1")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Field2")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Field3")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Field4")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Field5")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDisabled")
+                        .HasColumnType("bit");
+
+                    b.Property<Guid?>("ParentId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CategoryId");
+
+                    b.HasIndex("Code")
+                        .IsUnique();
+
+                    b.HasIndex("ParentId");
+
+                    b.ToTable("DictionaryData");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Address")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("BankBranchName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("BankCard")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("BankName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("CityCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("ContactEmail")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ContactPhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<string>("Contacts")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("EnterpriseName")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("EnterpriseType")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("EstablishmentDate")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("IndustrialParkId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("IndustryTypeCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<bool>("IsCheckedBankCard")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsReal")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("LegalIdentity")
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)");
+
+                    b.Property<string>("LegalPerson")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("LicenseImage")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("MainBusiness")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<decimal?>("MergeSignCost")
+                        .HasColumnType("decimal(18,2)");
+
+                    b.Property<int?>("PayAccess")
+                        .HasColumnType("int");
+
+                    b.Property<string>("ProvinceCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<int?>("RealAccess")
+                        .HasColumnType("int");
+
+                    b.Property<decimal?>("RealVerifyCost")
+                        .HasColumnType("decimal(18,2)");
+
+                    b.Property<string>("RegisteredCapital")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<decimal?>("SignCost")
+                        .HasColumnType("decimal(18,2)");
+
+                    b.Property<int?>("SmsAccess")
+                        .HasColumnType("int");
+
+                    b.Property<decimal>("SmsCost")
+                        .HasColumnType("decimal(18,2)");
+
+                    b.Property<string>("SocietyCreditCode")
+                        .IsRequired()
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CityCode");
+
+                    b.HasIndex("IndustryTypeCode");
+
+                    b.HasIndex("ProvinceCode");
+
+                    b.ToTable("Enterprise");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseAuth", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("BankCard")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("BankCardImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("EnterpriseName")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<int?>("EnterpriseRealMethod")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Identity")
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)");
+
+                    b.Property<string>("IdentityBackImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("IdentityImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("LegalIdentity")
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)");
+
+                    b.Property<string>("LegalPerson")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("LicenseImage")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<int?>("PersonalRealMethod")
+                        .HasColumnType("int");
+
+                    b.Property<string>("PhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<bool?>("Proxy")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("ProxyPowerAttorneyUrl")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("SocietyCreditCode")
+                        .IsRequired()
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("EnterpriseAuth");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("Age")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("Birthday")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("ContactPhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<string>("ContractUrl")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("EnterpriseSignContractStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("EnterpriseSignContractTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int?>("Gender")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Identity")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("IdentityBackImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("IdentityImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("UserSignContractStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("UserSignContractTime")
+                        .HasColumnType("datetime2");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("EnterpriseEmployee");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseUserCollect", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTime?>("CollectedTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<DateTime?>("ContactedTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsCollected")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsContacted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("EnterpriseUserCollect");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("ClientType")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Group")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Icon")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsCache")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDisabled")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Location")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<Guid?>("ParentId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Url")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("UserType")
+                        .HasColumnType("int");
+
+                    b.Property<int>("VisitLevel")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Width")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ParentId");
+
+                    b.ToTable("Menu");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Resource", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("ActionName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ActionSummary")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("AllowAnonymous")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("ApplicationName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ControllerName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ControllerSummary")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("DynamicAssemblyName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("FileUpload")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsExpired")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Method")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("RequestTypeFullName")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("RequestTypeName")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ResponseTypeFullName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ResponseTypeName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Route")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("RouteArea")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ServiceName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Resource");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Role", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("ClientType")
+                        .HasColumnType("int");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("DataPower")
+                        .HasColumnType("int");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDisabled")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("MinLevel")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("UserType")
+                        .HasColumnType("int");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Role");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<Guid>("MenuId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MenuId");
+
+                    b.HasIndex("RoleId");
+
+                    b.ToTable("RoleMenu");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.RoleResource", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("DataPower")
+                        .HasColumnType("int");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<Guid>("ResourceId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ResourceId");
+
+                    b.HasIndex("RoleId");
+
+                    b.ToTable("RoleResource");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.ScheduleJobDetail", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("AssemblyName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("Concurrent")
+                        .HasColumnType("bit");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Description")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("GroupName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IncludeAnnotations")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("JobId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("JobType")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Properties")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("ScheduleJobDetail");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.ScheduleJobTrigger", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Args")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("AssemblyName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Description")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<long>("ElapsedTime")
+                        .HasColumnType("bigint");
+
+                    b.Property<DateTime?>("EndTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("JobId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime?>("LastRunTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<long>("MaxNumberOfErrors")
+                        .HasColumnType("bigint");
+
+                    b.Property<long>("MaxNumberOfRuns")
+                        .HasColumnType("bigint");
+
+                    b.Property<DateTime?>("NextRunTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<long>("NumRetries")
+                        .HasColumnType("bigint");
+
+                    b.Property<long>("NumberOfErrors")
+                        .HasColumnType("bigint");
+
+                    b.Property<long>("NumberOfRuns")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("ResetOnlyOnce")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Result")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("RetryTimeout")
+                        .HasColumnType("int");
+
+                    b.Property<bool>("RunOnStart")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<bool>("StartNow")
+                        .HasColumnType("bit");
+
+                    b.Property<DateTime?>("StartTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<long>("Status")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TriggerId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TriggerType")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("ScheduleJobTrigger");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("AddressDetail")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("AddressName")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("AgeMaxLimit")
+                        .HasColumnType("int");
+
+                    b.Property<int>("AgeMinLimit")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime>("BeginTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int>("BillingMethod")
+                        .HasColumnType("int");
+
+                    b.Property<int?>("CheckReceiveStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("CheckReceiveTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("CityCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("Code")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTime>("EndTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<Guid>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("GenderLimit")
+                        .HasColumnType("int");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<DateTime?>("LastCheckReceiveTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<DateTime?>("LastSubmitTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<decimal?>("Latitude")
+                        .HasColumnType("decimal(18,6)");
+
+                    b.Property<decimal?>("Longitude")
+                        .HasColumnType("decimal(18,6)");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ProvinceCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<int>("RecommendStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("RecommendTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int>("ReleaseStatus")
+                        .HasColumnType("int");
+
+                    b.Property<decimal>("ServiceFee")
+                        .HasColumnType("decimal(18,2)");
+
+                    b.Property<int>("SettlementCycle")
+                        .HasColumnType("int");
+
+                    b.Property<int?>("SettlementStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("SettlementTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CityCode");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("ProvinceCode");
+
+                    b.ToTable("TaskInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("BenefitCode")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("TaskInfoId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("BenefitCode");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.ToTable("TaskInfoBenefit");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("TaskInfoId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TypeCode")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.HasIndex("TypeCode");
+
+                    b.ToTable("TaskInfoCredentialLimit");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("ArrangeStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("ArrangeTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int?>("CheckReceiveStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("CheckReceiveTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("EnterpriseEmployeeId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("HireStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("HireTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<DateTime?>("LastCheckReceiveTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<DateTime?>("LastSubmitTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("TaskInfoId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("EnterpriseEmployeeId");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.ToTable("TaskInfoUser");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmit", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("CheckReceiveStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("CheckReceiveTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTime>("Date")
+                        .HasColumnType("datetime2");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("TaskInfoUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TaskInfoUserId");
+
+                    b.ToTable("TaskInfoUserSubmit");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmitFile", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("File")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("SubmitId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("SubmitId");
+
+                    b.ToTable("TaskInfoUserSubmitFile");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskUserCollect", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("TaskInfoId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("TaskUserCollect");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.User", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("Age")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Avatar")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime?>("Birthday")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("CityCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("ContactPhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("DataSource")
+                        .HasColumnType("int");
+
+                    b.Property<Guid?>("DataSourceId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("EducationalBackgroundCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<Guid?>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("FreeTime")
+                        .HasColumnType("int");
+
+                    b.Property<int?>("Gender")
+                        .HasColumnType("int");
+
+                    b.Property<int?>("Height")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Identity")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsCheckPhoneNumber")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsReal")
+                        .HasColumnType("bit");
+
+                    b.Property<int?>("JobSeekingStatus")
+                        .HasColumnType("int");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("Password")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("PersonalIdentityCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("PhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<string>("ProvinceCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<int?>("RealMethod")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("RealTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("UserName")
+                        .IsRequired()
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<int?>("Weight")
+                        .HasColumnType("int");
+
+                    b.Property<string>("WorkExperience")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("WorkSeniority")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("WxmpOpenId")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CityCode");
+
+                    b.HasIndex("EducationalBackgroundCode");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("PersonalIdentityCode");
+
+                    b.HasIndex("ProvinceCode");
+
+                    b.ToTable("User");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = new Guid("11111111-1111-1111-1111-111111111111"),
+                            CreatedTime = new DateTimeOffset(new DateTime(2000, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+                            IsCheckPhoneNumber = false,
+                            IsDeleted = false,
+                            IsReal = false,
+                            Level = 999,
+                            Name = "绠$悊鍛�",
+                            Password = "iEYggKrMhQ3ASUGLobra1w==:fn/DsMJUbD9FGpvBvR3moMpMPptdxzZlourPVhU479I=",
+                            Sort = 0,
+                            Status = 10,
+                            Type = 100,
+                            UserName = "system"
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserAuth", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int?>("Age")
+                        .HasColumnType("int");
+
+                    b.Property<string>("BankCard")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("BankCardImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime?>("Birthday")
+                        .HasColumnType("datetime2");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("ElectronSignUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("FaceRealUrl")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int?>("Gender")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Identity")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("IdentityBackImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("IdentityImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("PhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<int?>("RealAccess")
+                        .HasColumnType("int");
+
+                    b.Property<string>("RealFailMessage")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("RealStatus")
+                        .HasColumnType("int");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("UserAuth");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserBankCard", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Bank")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("PhoneNumber")
+                        .IsRequired()
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserBankCard");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserCredential", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("BackImg")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTime?>("EndDate")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("Img")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsForever")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("IssueUnit")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("StartDate")
+                        .HasColumnType("datetime2");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TypeCode")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TypeCode");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserCredential");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserDepartment", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("DepartmentId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("DepartmentId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserDepartment");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserExpectJob", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("ExpectJobCode")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ExpectJobCode");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserExpectJob");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserManageIndustrialPark", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("IndustrialParkId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserManageIndustrialPark");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserPhoto", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Img")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserPhoto");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserRole", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RoleId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("UserRole");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Department", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany("Departments")
+                        .HasForeignKey("EnterpriseId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.Department", "Parent")
+                        .WithMany("Children")
+                        .HasForeignKey("ParentId");
+
+                    b.Navigation("Enterprise");
+
+                    b.Navigation("Parent");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryCategory", "Category")
+                        .WithMany()
+                        .HasForeignKey("CategoryId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Parent")
+                        .WithMany("Children")
+                        .HasForeignKey("ParentId");
+
+                    b.Navigation("Category");
+
+                    b.Navigation("Parent");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "City")
+                        .WithMany()
+                        .HasForeignKey("CityCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "IndustryType")
+                        .WithMany()
+                        .HasForeignKey("IndustryTypeCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Province")
+                        .WithMany()
+                        .HasForeignKey("ProvinceCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.Navigation("City");
+
+                    b.Navigation("IndustryType");
+
+                    b.Navigation("Province");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseAuth", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithOne("EnterpriseAuth")
+                        .HasForeignKey("FlexJobApi.Core.EnterpriseAuth", "Id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Enterprise");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany()
+                        .HasForeignKey("EnterpriseId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("EnterpriseEmployees")
+                        .HasForeignKey("UserId");
+
+                    b.Navigation("Enterprise");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseUserCollect", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany()
+                        .HasForeignKey("EnterpriseId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("EnterpriseUserCollects")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Enterprise");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Menu", "Parent")
+                        .WithMany("Children")
+                        .HasForeignKey("ParentId");
+
+                    b.Navigation("Parent");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Menu", "Menu")
+                        .WithMany()
+                        .HasForeignKey("MenuId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.Role", "Role")
+                        .WithMany("RoleMenus")
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Menu");
+
+                    b.Navigation("Role");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.RoleResource", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Resource", "Resource")
+                        .WithMany()
+                        .HasForeignKey("ResourceId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.Role", "Role")
+                        .WithMany("RoleResources")
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Resource");
+
+                    b.Navigation("Role");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "City")
+                        .WithMany()
+                        .HasForeignKey("CityCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany()
+                        .HasForeignKey("EnterpriseId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Province")
+                        .WithMany()
+                        .HasForeignKey("ProvinceCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.Navigation("City");
+
+                    b.Navigation("Enterprise");
+
+                    b.Navigation("Province");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Benefit")
+                        .WithMany()
+                        .HasForeignKey("BenefitCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
+                        .WithMany("Benefits")
+                        .HasForeignKey("TaskInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Benefit");
+
+                    b.Navigation("TaskInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
+                        .WithMany("CredentialLimits")
+                        .HasForeignKey("TaskInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Type")
+                        .WithMany()
+                        .HasForeignKey("TypeCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.Navigation("TaskInfo");
+
+                    b.Navigation("Type");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.EnterpriseEmployee", "EnterpriseEmployee")
+                        .WithMany("TaskInfoUsers")
+                        .HasForeignKey("EnterpriseEmployeeId")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
+                        .WithMany("TaskInfoUsers")
+                        .HasForeignKey("TaskInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("EnterpriseEmployee");
+
+                    b.Navigation("TaskInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmit", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.TaskInfoUser", "TaskInfoUser")
+                        .WithMany("Submits")
+                        .HasForeignKey("TaskInfoUserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("TaskInfoUser");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmitFile", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.TaskInfoUserSubmit", "Submit")
+                        .WithMany("Files")
+                        .HasForeignKey("SubmitId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Submit");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskUserCollect", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
+                        .WithMany("TaskUserCollects")
+                        .HasForeignKey("TaskInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("TaskInfo");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.User", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "City")
+                        .WithMany()
+                        .HasForeignKey("CityCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "EducationalBackground")
+                        .WithMany()
+                        .HasForeignKey("EducationalBackgroundCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany("Users")
+                        .HasForeignKey("EnterpriseId");
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity")
+                        .WithMany()
+                        .HasForeignKey("PersonalIdentityCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Province")
+                        .WithMany()
+                        .HasForeignKey("ProvinceCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.Navigation("City");
+
+                    b.Navigation("EducationalBackground");
+
+                    b.Navigation("Enterprise");
+
+                    b.Navigation("PersonalIdentity");
+
+                    b.Navigation("Province");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserAuth", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithOne("UserAuth")
+                        .HasForeignKey("FlexJobApi.Core.UserAuth", "Id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserBankCard", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("BankCards")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserCredential", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Type")
+                        .WithMany()
+                        .HasForeignKey("TypeCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("UserCredentials")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Type");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserDepartment", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Department", "Department")
+                        .WithMany()
+                        .HasForeignKey("DepartmentId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("UserDepartments")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Department");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserExpectJob", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "ExpectJob")
+                        .WithMany()
+                        .HasForeignKey("ExpectJobCode")
+                        .HasPrincipalKey("Code")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("UserExpectJobs")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("ExpectJob");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserManageIndustrialPark", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("UserManageIndustrialParks")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserPhoto", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("Photos")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserRole", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Role", "Role")
+                        .WithMany("UserRoles")
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.User", "User")
+                        .WithMany("UserRoles")
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Role");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Department", b =>
+                {
+                    b.Navigation("Children");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b =>
+                {
+                    b.Navigation("Children");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
+                {
+                    b.Navigation("Departments");
+
+                    b.Navigation("EnterpriseAuth");
+
+                    b.Navigation("Users");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b =>
+                {
+                    b.Navigation("TaskInfoUsers");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
+                {
+                    b.Navigation("Children");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Role", b =>
+                {
+                    b.Navigation("RoleMenus");
+
+                    b.Navigation("RoleResources");
+
+                    b.Navigation("UserRoles");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
+                {
+                    b.Navigation("Benefits");
+
+                    b.Navigation("CredentialLimits");
+
+                    b.Navigation("TaskInfoUsers");
+
+                    b.Navigation("TaskUserCollects");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b =>
+                {
+                    b.Navigation("Submits");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmit", b =>
+                {
+                    b.Navigation("Files");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.User", b =>
+                {
+                    b.Navigation("BankCards");
+
+                    b.Navigation("EnterpriseEmployees");
+
+                    b.Navigation("EnterpriseUserCollects");
+
+                    b.Navigation("Photos");
+
+                    b.Navigation("UserAuth");
+
+                    b.Navigation("UserCredentials");
+
+                    b.Navigation("UserDepartments");
+
+                    b.Navigation("UserExpectJobs");
+
+                    b.Navigation("UserManageIndustrialParks");
+
+                    b.Navigation("UserRoles");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/20250820013459_UpdateUser0820.cs b/FlexJobApi.Database.Migrations/Migrations/20250820013459_UpdateUser0820.cs
new file mode 100644
index 0000000..d839604
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250820013459_UpdateUser0820.cs
@@ -0,0 +1,159 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations
+{
+    /// <inheritdoc />
+    public partial class UpdateUser0820 : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "ElectronSignUserId",
+                table: "User");
+
+            migrationBuilder.DropColumn(
+                name: "RealAccess",
+                table: "User");
+
+            migrationBuilder.DropColumn(
+                name: "Controller",
+                table: "Resource");
+
+            migrationBuilder.DropColumn(
+                name: "Service",
+                table: "Resource");
+
+            migrationBuilder.AddColumn<int>(
+                name: "Age",
+                table: "UserAuth",
+                type: "int",
+                nullable: true);
+
+            migrationBuilder.AddColumn<DateTime>(
+                name: "Birthday",
+                table: "UserAuth",
+                type: "datetime2",
+                nullable: true);
+
+            migrationBuilder.AddColumn<Guid>(
+                name: "ElectronSignUserId",
+                table: "UserAuth",
+                type: "uniqueidentifier",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "FaceRealUrl",
+                table: "UserAuth",
+                type: "nvarchar(max)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<int>(
+                name: "Gender",
+                table: "UserAuth",
+                type: "int",
+                nullable: true);
+
+            migrationBuilder.AddColumn<int>(
+                name: "RealAccess",
+                table: "UserAuth",
+                type: "int",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "RealFailMessage",
+                table: "UserAuth",
+                type: "nvarchar(max)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<int>(
+                name: "RealStatus",
+                table: "UserAuth",
+                type: "int",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.AddColumn<string>(
+                name: "ControllerName",
+                table: "Resource",
+                type: "nvarchar(max)",
+                nullable: true);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "Age",
+                table: "UserAuth");
+
+            migrationBuilder.DropColumn(
+                name: "Birthday",
+                table: "UserAuth");
+
+            migrationBuilder.DropColumn(
+                name: "ElectronSignUserId",
+                table: "UserAuth");
+
+            migrationBuilder.DropColumn(
+                name: "FaceRealUrl",
+                table: "UserAuth");
+
+            migrationBuilder.DropColumn(
+                name: "Gender",
+                table: "UserAuth");
+
+            migrationBuilder.DropColumn(
+                name: "RealAccess",
+                table: "UserAuth");
+
+            migrationBuilder.DropColumn(
+                name: "RealFailMessage",
+                table: "UserAuth");
+
+            migrationBuilder.DropColumn(
+                name: "RealStatus",
+                table: "UserAuth");
+
+            migrationBuilder.DropColumn(
+                name: "ControllerName",
+                table: "Resource");
+
+            migrationBuilder.AddColumn<Guid>(
+                name: "ElectronSignUserId",
+                table: "User",
+                type: "uniqueidentifier",
+                nullable: true);
+
+            migrationBuilder.AddColumn<int>(
+                name: "RealAccess",
+                table: "User",
+                type: "int",
+                nullable: true);
+
+            migrationBuilder.AddColumn<int>(
+                name: "Controller",
+                table: "Resource",
+                type: "int",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.AddColumn<int>(
+                name: "Service",
+                table: "Resource",
+                type: "int",
+                nullable: false,
+                defaultValue: 0);
+
+            migrationBuilder.UpdateData(
+                table: "User",
+                keyColumn: "Id",
+                keyValue: new Guid("11111111-1111-1111-1111-111111111111"),
+                columns: new[] { "ElectronSignUserId", "RealAccess" },
+                values: new object[] { null, null });
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
index 984d87c..742a21f 100644
--- a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
+++ b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
@@ -695,8 +695,8 @@
                         .IsRequired()
                         .HasColumnType("nvarchar(max)");
 
-                    b.Property<int>("Controller")
-                        .HasColumnType("int");
+                    b.Property<string>("ControllerName")
+                        .HasColumnType("nvarchar(max)");
 
                     b.Property<string>("ControllerSummary")
                         .HasColumnType("nvarchar(max)");
@@ -749,9 +749,6 @@
 
                     b.Property<string>("RouteArea")
                         .HasColumnType("nvarchar(max)");
-
-                    b.Property<int>("Service")
-                        .HasColumnType("int");
 
                     b.Property<string>("ServiceName")
                         .HasColumnType("nvarchar(max)");
@@ -1593,9 +1590,6 @@
                     b.Property<string>("ProvinceCode")
                         .HasColumnType("nvarchar(128)");
 
-                    b.Property<int?>("RealAccess")
-                        .HasColumnType("int");
-
                     b.Property<int?>("RealMethod")
                         .HasColumnType("int");
 
@@ -1679,12 +1673,18 @@
                         .ValueGeneratedOnAdd()
                         .HasColumnType("uniqueidentifier");
 
+                    b.Property<int?>("Age")
+                        .HasColumnType("int");
+
                     b.Property<string>("BankCard")
                         .HasMaxLength(32)
                         .HasColumnType("nvarchar(32)");
 
                     b.Property<string>("BankCardImg")
                         .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime?>("Birthday")
+                        .HasColumnType("datetime2");
 
                     b.Property<Guid?>("CreatedEnterpriseId")
                         .HasColumnType("uniqueidentifier");
@@ -1694,6 +1694,15 @@
 
                     b.Property<Guid?>("CreatedUserId")
                         .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("ElectronSignUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("FaceRealUrl")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int?>("Gender")
+                        .HasColumnType("int");
 
                     b.Property<string>("Identity")
                         .HasColumnType("nvarchar(max)");
@@ -1716,6 +1725,15 @@
                         .HasMaxLength(11)
                         .HasColumnType("nvarchar(11)");
 
+                    b.Property<int?>("RealAccess")
+                        .HasColumnType("int");
+
+                    b.Property<string>("RealFailMessage")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("RealStatus")
+                        .HasColumnType("int");
+
                     b.Property<int>("Sort")
                         .HasColumnType("int");
 
diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/20250820013445_UpdateResource0820.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250820013445_UpdateResource0820.Designer.cs
new file mode 100644
index 0000000..ebf2588
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250820013445_UpdateResource0820.Designer.cs
@@ -0,0 +1,432 @@
+锘�// <auto-generated />
+using System;
+using FlexJobApi.EntityFramework.Core;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations.LogDb
+{
+    [DbContext(typeof(LogDbContext))]
+    [Migration("20250820013445_UpdateResource0820")]
+    partial class UpdateResource0820
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "9.0.7")
+                .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+            modelBuilder.Entity("FlexJobApi.Core.ConsoleLog", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Access")
+                        .HasColumnType("int");
+
+                    b.Property<string>("ClientIpAddress")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<string>("Content")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("int");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("StackTrace")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Url")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("ConsoleLog");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DbAuditLog", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("NewValues")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("OldValues")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Operate")
+                        .HasColumnType("int");
+
+                    b.Property<Guid>("PrimaryKey")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TableName")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("DbAuditLog");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Entities.Common.ResourceLog", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("ClientIpAddress")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ConsoleLogs")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Domain")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<long>("ElapsedMilliseconds")
+                        .HasColumnType("bigint");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsSuccess")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Method")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("RefererUrl")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Request")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("RequestHeaders")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Response")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ResponseHeaders")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("ResourceLog");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.ExceptionLog", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("StackTrace")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Type")
+                        .HasMaxLength(256)
+                        .HasColumnType("nvarchar(256)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("ExceptionLog");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.QueueLog", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Access")
+                        .HasColumnType("int");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Data")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<long>("ElapsedMilliseconds")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("EventId")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<bool>("IsConsumOnce")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("QueueLog");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.ScheduleJobTriggerTimeline", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<long>("ElapsedTime")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("Exception")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("JobId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime?>("LastRunTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<int>("Mode")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("NextRunTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<long>("NumberOfRuns")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("Result")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<long>("Status")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TriggerId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("ScheduleJobTriggerTimeline");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.SmsLog", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("Access")
+                        .HasColumnType("int");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTime?>("Expiry")
+                        .HasColumnType("datetime2");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<bool>("IsUsed")
+                        .HasColumnType("bit");
+
+                    b.Property<string>("PhoneNumber")
+                        .IsRequired()
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TemplateCode")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<string>("TemplateParam")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("SmsLog");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/20250820013445_UpdateResource0820.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250820013445_UpdateResource0820.cs
new file mode 100644
index 0000000..e762630
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250820013445_UpdateResource0820.cs
@@ -0,0 +1,22 @@
+锘縰sing Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations.LogDb
+{
+    /// <inheritdoc />
+    public partial class UpdateResource0820 : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/REDEME.MD b/FlexJobApi.Database.Migrations/REDEME.MD
index 609c8ef..8c38ead 100644
--- a/FlexJobApi.Database.Migrations/REDEME.MD
+++ b/FlexJobApi.Database.Migrations/REDEME.MD
@@ -1,7 +1,7 @@
 -------------------------------主数据库---------------------------------------
 
 新增迁移文件
-dotnet ef migrations add UpdateTaskInfo0819 -s "../FlexJobApi.Web.Entry" -c DefaultDbContext
+dotnet ef migrations add UpdateUser0820 -s "../FlexJobApi.Web.Entry" -c DefaultDbContext
 
 删除迁移文件
 dotnet ef migrations remove -s "../FlexJobApi.Web.Entry" -c DefaultDbContext
@@ -12,7 +12,7 @@
 -------------------------------日志数据库---------------------------------------
 
 新增迁移文件
-dotnet ef migrations add UpdateResource0819 -s "../FlexJobApi.Web.Entry" -c LogDbContext
+dotnet ef migrations add UpdateResource0820 -s "../FlexJobApi.Web.Entry" -c LogDbContext
 
 删除迁移文件
 dotnet ef migrations remove -s "../FlexJobApi.Web.Entry" -c LogDbContext
diff --git a/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs b/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs
new file mode 100644
index 0000000..495bd7a
--- /dev/null
+++ b/FlexJobApi.UserServer.Application/ElectronSign/Commands/ElectronSignCallbackCommandHandler.cs
@@ -0,0 +1,71 @@
+锘縰sing FlexJobApi.Core;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.FriendlyException;
+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 ElectronSignCallbackCommandHandler(
+            IRepository<User> repUser
+        ) :
+        IRequestHandler<ElectronSignCallbackCommand, bool>
+    {
+        private readonly IRepository<User> repUser = repUser;
+
+        /// <summary>
+        /// 鐢靛瓙绛惧洖浼�
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<bool> Handle(ElectronSignCallbackCommand request, CancellationToken cancellationToken)
+        {
+            var appId = App.GetConfig<Guid>("ElectronSignServer:AppId");
+            if (appId != request.CustomerId)
+                throw Oops.Oh(EnumErrorCodeType.s400, "鏃犳晥鐨凙ppId");
+            if (request.Action == "UserSign")
+            {
+                var user = await repUser.AsQueryable()
+                    .Include(it => it.UserAuth)
+                    .Where(it => it.UserAuth.ElectronSignUserId == request.RelationId)
+                    .FirstOrDefaultAsync();
+                if (user == null)
+                    throw Oops.Oh(EnumErrorCodeType.s404, "鐢ㄦ埛");
+                if (request.Data is ElectronSignCallbackCommandUserSignModel data)
+                {
+                    if (user.Id != data.OutUserId)
+                        throw Oops.Oh(EnumErrorCodeType.s404, "鐢ㄦ埛");
+                    var enterpriseEmployees = request.Success
+                        ? await repUser.Change<EnterpriseEmployee>().AsQueryable()
+                            .Where(it => it.UserId == user.Id)
+                            .ToListAsync()
+                        : new List<EnterpriseEmployee>();
+                    PersonalUserRealCommandHandler.PersonalReal(
+                        request.Success == true
+                        ? EnumPersonalUserRealStatus.Real
+                        : EnumPersonalUserRealStatus.Fail,
+                        EnumUserRealMethod.Face,
+                        user,
+                        enterpriseEmployees,
+                        user.UserAuth.Name,
+                        user.UserAuth.Identity,
+                        user.UserAuth.IdentityImg,
+                        user.UserAuth.IdentityBackImg,
+                        faceRealUrl: user.UserAuth.FaceRealUrl);
+                    await repUser.UpdateAsync(user);
+                }
+            }
+            return true;
+        }
+    }
+}
diff --git a/FlexJobApi.UserServer.Application/ElectronSign/Commands/PersonalUserRealCommandHandler.cs b/FlexJobApi.UserServer.Application/ElectronSign/Commands/PersonalUserRealCommandHandler.cs
new file mode 100644
index 0000000..4232314
--- /dev/null
+++ b/FlexJobApi.UserServer.Application/ElectronSign/Commands/PersonalUserRealCommandHandler.cs
@@ -0,0 +1,257 @@
+锘縰sing FlexJobApi.Core;
+using FlexJobApi.Core.Models.ElectronSignServer.Common;
+using FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals;
+using FlexJobApi.Core.Models.ElectronSignServer.Users;
+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>
+    /// <param name="repUser"></param>
+    /// <param name="resourceHttpUtils"></param>
+    public class PersonalUserRealCommandHandler(
+            IRepository<User> repUser
+        ) :
+        IRequestHandler<SendPersonalUserIdentity3RealSmsCommand, Guid>,
+        IRequestHandler<PersonalUserIdentity3RealCommand, Guid>,
+        IRequestHandler<PersonalUserFaceRealCommand, string>
+    {
+        private readonly IRepository<User> repUser = repUser;
+
+        /// <summary>
+        /// 鍙戦�佷釜浜轰笁瑕佺礌瀹炲悕鐭俊
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<Guid> Handle(SendPersonalUserIdentity3RealSmsCommand request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var user = await repUser.AsQueryable()
+                .Include(it => it.UserAuth)
+                .Where(it => it.Id == logier.Id)
+                .FirstOrDefaultAsync();
+            if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐢ㄦ埛");
+            if (user.IsReal) throw Oops.Oh(EnumErrorCodeType.s510, "鐢ㄦ埛宸插疄鍚嶏紝璇峰嬁閲嶅鐢宠");
+            if (user.UserAuth == null)
+            {
+                user.UserAuth = new UserAuth();
+            }
+            if (user.UserAuth.ElectronSignUserId == null)
+            {
+                var result = await new RegOrUpdateUserInput
+                {
+                    OutUserId = user.Id.ToString(),
+                    UserType = EnumElectronSignUserType.Personal,
+                    Name = request.Name,
+                    Identity = request.Identity,
+                    Mobile = request.PhoneNumber
+                }.SendHttpAsync<RegOrUpdateUserInput, ElectronSignServerResult<Guid?>>(EnumResourceHttpProvider.ElectronSignServerCustomer);
+
+                if (result?.Success == true)
+                {
+                    user.UserAuth.ElectronSignUserId = result.Result;
+                }
+                else
+                {
+                    throw Oops.Oh(EnumErrorCodeType.s510, result?.Msg ?? "娉ㄥ唽瀹炲悕璐﹀彿寮傚父");
+                }
+            }
+            var sendRealSmsResult = await new SendRealSmsInput
+            {
+                UserType = EnumElectronSignUserType.Personal,
+                OutUserId = user.Id.ToString(),
+                RealMethod = EnumElectronSignPersonalRealMethod.Identity3,
+                Name = request.Name,
+                Identity = request.Identity,
+                Mobile = request.PhoneNumber
+            }.SendHttpAsync<SendRealSmsInput, ElectronSignServerResult<object>>(EnumResourceHttpProvider.ElectronSignServerCustomer);
+            if (sendRealSmsResult?.Success != true)
+                throw Oops.Oh(EnumErrorCodeType.s510, sendRealSmsResult?.Msg ?? "鍙戦�佸疄鍚嶇煭淇″紓甯�");
+
+            PersonalReal(
+                EnumPersonalUserRealStatus.Checking,
+                EnumUserRealMethod.Identity3,
+                user,
+                new List<EnterpriseEmployee>(),
+                request.Name,
+                request.Identity,
+                phoneNumber: request.PhoneNumber);
+
+            return user.Id;
+        }
+
+        /// <summary>
+        /// 涓汉涓夎绱犲疄鍚嶈璇�
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<Guid> Handle(PersonalUserIdentity3RealCommand request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var user = await repUser.AsQueryable()
+                .Include(it => it.UserAuth)
+                .Where(it => it.Id == logier.Id)
+                .FirstOrDefaultAsync();
+            if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐢ㄦ埛");
+            if (user.IsReal) throw Oops.Oh(EnumErrorCodeType.s510, "鐢ㄦ埛宸插疄鍚嶏紝璇峰嬁閲嶅鐢宠");
+            var result = await new RealPersonalInput
+            {
+                OutUserId = user.Id.ToString(),
+                RealMethod = EnumElectronSignPersonalRealMethod.Identity3,
+                Name = request.Name,
+                Identity = request.Identity,
+                IdentityImgUrl = request.IdentityImg,
+                IdentityBackImgUrl = request.IdentityBackImg,
+                Mobile = request.PhoneNumber,
+                VCode = request.VerifyCode
+            }.SendHttpAsync<RealPersonalInput, ElectronSignServerResult<RealPersonalOutput>>(EnumResourceHttpProvider.ElectronSignServerCustomer);
+            if (result?.Success != true || result.Result?.Status != EnumElectronSignRealStatus.Real)
+                throw Oops.Oh(EnumErrorCodeType.s510, result?.Msg ?? "瀹炲悕寮傚父");
+
+            var enterpriseEmployees = await repUser.Change<EnterpriseEmployee>().AsQueryable()
+                .Where(it => it.UserId == user.Id)
+                .ToListAsync();
+            PersonalReal(
+                EnumPersonalUserRealStatus.Real,
+                EnumUserRealMethod.Identity3,
+                user,
+                enterpriseEmployees,
+                request.Name,
+                request.Identity,
+                request.IdentityImg,
+                request.IdentityBackImg,
+                request.PhoneNumber);
+            await repUser.UpdateAsync(user);
+
+            return user.Id;
+        }
+
+        /// <summary>
+        /// 涓汉浜鸿劯瀹炲悕璁よ瘉
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<string> Handle(PersonalUserFaceRealCommand request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var user = await repUser.AsQueryable()
+                .Include(it => it.UserAuth)
+                .Where(it => it.Id == logier.Id)
+                .FirstOrDefaultAsync();
+            if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐢ㄦ埛");
+            if (user.IsReal) throw Oops.Oh(EnumErrorCodeType.s510, "鐢ㄦ埛宸插疄鍚嶏紝璇峰嬁閲嶅鐢宠");
+            if (user.UserAuth.Name == request.Name
+                && user.UserAuth.Identity == request.Identity
+                && user.UserAuth.RealStatus == EnumPersonalUserRealStatus.Checking
+                && user.UserAuth.FaceRealUrl.IsNotNull())
+                return user.UserAuth.FaceRealUrl;
+
+            var result = await new RealPersonalInput
+            {
+                OutUserId = user.Id.ToString(),
+                RealMethod = EnumElectronSignPersonalRealMethod.Face,
+                Name = request.Name,
+                Identity = request.Identity,
+                IdentityImgUrl = request.IdentityImg,
+                IdentityBackImgUrl = request.IdentityBackImg,
+            }.SendHttpAsync<RealPersonalInput, ElectronSignServerResult<RealPersonalOutput>>(EnumResourceHttpProvider.ElectronSignServerCustomer);
+            if (result?.Success != true || result.Result?.Status != EnumElectronSignRealStatus.Checking)
+                throw Oops.Oh(EnumErrorCodeType.s510, result?.Msg ?? "瀹炲悕寮傚父");
+
+            var enterpriseEmployees = await repUser.Change<EnterpriseEmployee>().AsQueryable()
+                .Where(it => it.UserId == user.Id)
+                .ToListAsync();
+            PersonalReal(
+                EnumPersonalUserRealStatus.Checking,
+                EnumUserRealMethod.Face,
+                user,
+                enterpriseEmployees,
+                request.Name,
+                request.Identity,
+                request.IdentityImg,
+                request.IdentityBackImg,
+                faceRealUrl: result.Result.FaceUrl);
+            await repUser.UpdateAsync(user);
+
+            return result.Result.FaceUrl;
+        }
+
+        /// <summary>
+        /// 涓汉瀹炲悕
+        /// </summary>
+        public static void PersonalReal(
+            EnumPersonalUserRealStatus status,
+            EnumUserRealMethod method,
+            User user,
+            List<EnterpriseEmployee> enterpriseEmployees,
+            string name,
+            string identity,
+            string? identityImg = null,
+            string? identityBackImg = null,
+            string? phoneNumber = null,
+            string? faceRealUrl = null)
+        {
+            user.UserAuth.Name = name;
+            user.UserAuth.Identity = identity;
+            user.UserAuth.Gender = user.UserAuth.Identity.GetGender();
+            user.UserAuth.Birthday = user.UserAuth.Identity.GetBirthday();
+            user.UserAuth.Age = user.UserAuth.Identity.GetAge();
+            user.UserAuth.IdentityImg = identityImg;
+            user.UserAuth.IdentityBackImg = identityBackImg;
+            user.UserAuth.RealAccess = EnumRealAccess.BestSign;
+            user.UserAuth.RealStatus = status;
+            user.RealMethod = method;
+            if (user.RealMethod == EnumUserRealMethod.Identity3)
+            {
+                user.UserAuth.PhoneNumber = phoneNumber;
+            }
+            else
+            {
+                user.UserAuth.FaceRealUrl = faceRealUrl;
+            }
+            if (user.UserAuth.RealStatus == EnumPersonalUserRealStatus.Real)
+            {
+                user.IsReal = true;
+                user.RealTime = DateTime.Now;
+                user.Name = user.UserAuth.Name;
+                if (user.PhoneNumber.IsNull())
+                {
+                    user.PhoneNumber = phoneNumber;
+                    user.IsCheckPhoneNumber = true;
+                }
+                if (user.ContactPhoneNumber.IsNull())
+                {
+                    user.PhoneNumber = phoneNumber;
+                }
+                user.Identity = user.UserAuth.Identity;
+                user.Age = user.UserAuth.Age;
+                user.Gender = user.UserAuth.Gender;
+                user.Birthday = user.UserAuth.Birthday;
+                foreach (var enterpriseEmployee in enterpriseEmployees)
+                {
+                    enterpriseEmployee.Name = user.UserAuth.Name;
+                    enterpriseEmployee.Identity = user.UserAuth.Identity;
+                    enterpriseEmployee.IdentityImg = user.UserAuth.IdentityImg;
+                    enterpriseEmployee.IdentityBackImg = user.UserAuth.IdentityBackImg;
+                    enterpriseEmployee.Age = user.UserAuth.Age;
+                    enterpriseEmployee.Gender = user.UserAuth.Gender;
+                    enterpriseEmployee.Birthday = user.UserAuth.Birthday;
+                }
+            }
+        }
+    }
+}
diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
index b4f2228..18f798d 100644
--- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
+++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
@@ -156,6 +156,67 @@
             <param name="all"></param>
             <param name="roleMenuIds"></param>
         </member>
+        <member name="T:FlexJobApi.UserServer.Application.ElectronSignCallbackCommandHandler">
+            <summary>
+            鐢靛瓙绛惧洖浼�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.ElectronSignCallbackCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User})">
+            <summary>
+            鐢靛瓙绛惧洖浼�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.ElectronSignCallbackCommandHandler.Handle(FlexJobApi.Core.ElectronSignCallbackCommand,System.Threading.CancellationToken)">
+            <summary>
+            鐢靛瓙绛惧洖浼�
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="T:FlexJobApi.UserServer.Application.PersonalUserRealCommandHandler">
+            <summary>
+            涓汉瀹炲悕
+            </summary>
+            <param name="repUser"></param>
+            <param name="resourceHttpUtils"></param>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.PersonalUserRealCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User})">
+            <summary>
+            涓汉瀹炲悕
+            </summary>
+            <param name="repUser"></param>
+            <param name="resourceHttpUtils"></param>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.PersonalUserRealCommandHandler.Handle(FlexJobApi.Core.SendPersonalUserIdentity3RealSmsCommand,System.Threading.CancellationToken)">
+            <summary>
+            鍙戦�佷釜浜轰笁瑕佺礌瀹炲悕鐭俊
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.PersonalUserRealCommandHandler.Handle(FlexJobApi.Core.PersonalUserIdentity3RealCommand,System.Threading.CancellationToken)">
+            <summary>
+            涓汉涓夎绱犲疄鍚嶈璇�
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.PersonalUserRealCommandHandler.Handle(FlexJobApi.Core.PersonalUserFaceRealCommand,System.Threading.CancellationToken)">
+            <summary>
+            涓汉浜鸿劯瀹炲悕璁よ瘉
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.PersonalUserRealCommandHandler.PersonalReal(FlexJobApi.Core.EnumPersonalUserRealStatus,FlexJobApi.Core.EnumUserRealMethod,FlexJobApi.Core.User,System.Collections.Generic.List{FlexJobApi.Core.EnterpriseEmployee},System.String,System.String,System.String,System.String,System.String,System.String)">
+            <summary>
+            涓汉瀹炲悕
+            </summary>
+        </member>
         <member name="T:FlexJobApi.UserServer.Application.EnterpriseEmployeesCommandHandler">
             <summary>
             鐏靛伐鍛戒护澶勭悊鍣�
diff --git a/FlexJobApi.UserServer.Application/Roles/Commands/SetRoleIsDisabledCommandHandler.cs b/FlexJobApi.UserServer.Application/Roles/Commands/SetRoleIsDisabledCommandHandler.cs
index 928f06d..b17113d 100644
--- a/FlexJobApi.UserServer.Application/Roles/Commands/SetRoleIsDisabledCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/Roles/Commands/SetRoleIsDisabledCommandHandler.cs
@@ -13,7 +13,7 @@
     /// <summary>
     /// 璁剧疆瑙掕壊鏄惁绂佺敤
     /// </summary>
-    [Resource([EnumResourceController.Role])]
+    [Resource([EnumResourceController.UserServerRole])]
     public class SetRoleIsDisabledCommandHandler() : IRequestHandler<SetRoleIsDisabledCommand, int>
     {
         /// <inheritdoc/>
diff --git a/FlexJobApi.UserServer.Application/Users/Commands/PersonalUserRealCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/PersonalUserRealCommandHandler.cs
deleted file mode 100644
index 1ee6544..0000000
--- a/FlexJobApi.UserServer.Application/Users/Commands/PersonalUserRealCommandHandler.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-锘縰sing FlexJobApi.Core;
-using FlexJobApi.Core.Models.HumanResourcesServer.ElectronSign;
-using MediatR;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FlexJobApi.UserServer.Application
-{
-    public class PersonalUserRealCommandHandler(
-            ResourceHttpUtils resourceHttpUtils
-        ) :
-        IRequestHandler<SendPersonalUserIdentity3RealSmsCommand, Guid>
-    {
-        private readonly ResourceHttpUtils resourceHttpUtils = resourceHttpUtils;
-
-        public async Task<Guid> Handle(SendPersonalUserIdentity3RealSmsCommand request, CancellationToken cancellationToken)
-        {
-            await resourceHttpUtils.SendHttpAsync(EnumResourceService.HumanResourcesServer, HttpMethod.Post, "/api/ElectronSign/SendRealSms", new SendRealSmsInput
-            {
-
-
-            }.ToJson());
-            throw new Exception();
-        }
-    }
-}
diff --git a/FlexJobApi.Web.Entry/Startup.cs b/FlexJobApi.Web.Entry/Startup.cs
index 9256900..99bc46f 100644
--- a/FlexJobApi.Web.Entry/Startup.cs
+++ b/FlexJobApi.Web.Entry/Startup.cs
@@ -37,7 +37,6 @@
             services.AddComponent<DistributedCacheServiceComponent>();
 
             services.AddHttpRemote();
-            services.AddSingleton<ResourceHttpUtils>();
             services.AddSingleton<AliyunSmsUtils>(); 
             services.AddSingleton<WxmpUtils>();
             services.AddScoped<SmsUtils>();
diff --git a/FlexJobApi.Web.Entry/appsettings.json b/FlexJobApi.Web.Entry/appsettings.json
index 824ad88..2bec614 100644
--- a/FlexJobApi.Web.Entry/appsettings.json
+++ b/FlexJobApi.Web.Entry/appsettings.json
@@ -13,6 +13,19 @@
     "ServicePort": 53780,
     "ServiceHealthCheck": "/api/user/resource/checkHealth"
   },
+  "FlexJobServer": {
+    "ServiceName": "FlexJobServices"
+  },
+  "HumanResourcesServer": {
+    "ServiceName": "HumanResourcesServices"
+  },
+  "ElectronSignServer": {
+    "ServiceName": "HumanResourcesServices",
+    "AppId": "2f31be96-811d-0b3d-d723-3a1bd3b3b55e",
+    "PrivateKey": "QoaFhN5TNmA4EM6JbUrK2IkK5cMVMWr0",
+    "Account": "system",
+    "Password": "qwe321"
+  },
   "DistributedCache": {
     "Access": "Redis",
     "Configuration": "118.178.252.28:5390,password=Bole123!"

--
Gitblit v1.9.1