From 1759ab1a7d3e536eb812dcfbf5a7c8792ed28b2e Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期一, 11 八月 2025 09:04:29 +0800
Subject: [PATCH] feat:简历开发

---
 FlexJobApi.Core/Entities/CommonServer/Resource.cs                                                        |    0 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs          |    0 
 FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs                                                 |   37 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs                    |   38 
 FlexJobApi.Core/Entities/UserServer/Users/UserBankCard.cs                                                |    0 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs                |   35 
 FlexJobApi.Core/Entities/UserServer/Users/User.cs                                                        |   67 
 FlexJobApi.Core/Entities/UserServer/Users/UserAuth.cs                                                    |    0 
 FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs                  |    2 
 FlexJobApi.Core/FlexJobApi.Core.xml                                                                      | 1481 ++++++--
 FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryData.cs                                     |    0 
 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoCredentialLimit.cs                                  |    0 
 FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseAuth.cs                                        |    0 
 FlexJobApi.sln                                                                                           |    9 
 FlexJobApi.Core/Entities/CommonServer/LogRecords/SmsLog.cs                                               |    0 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs               |    0 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs                |   62 
 FlexJobApi.Core/Enums/Common/EnumResourceService.cs                                                      |    5 
 FlexJobApi.Core/Entities/CommonServer/LogRecords/ConsoleLog.cs                                           |    0 
 FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryCategory.cs                                 |    0 
 FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml                              |  174 +
 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs                                   |    3 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs              |   17 
 FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs                          |  114 
 FlexJobApi.Core/Utils/JwtUtils/JwtUtils.cs                                                               |    7 
 FlexJobApi.CommonServer.Application/Schedules/Commands/ScheduleJobDetailCommandHandler.cs                |   48 
 FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourceFieldsQuery.cs                          |    0 
 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs                                             |    0 
 FlexJobApi.Core/Entities/UserServer/Powers/Menu.cs                                                       |    0 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs             |    0 
 FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs                                            |    0 
 FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.Designer.cs                      | 1954 +++++++++++
 FlexJobApi.Core/Utils/ScheduleUtils/ResourceHttpJob.cs                                                   |   45 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs                |   41 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs                        |   45 
 FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs            |    2 
 FlexJobApi.Core/Entities/UserServer/Enterprises/Department.cs                                            |    0 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs                  |   59 
 FlexJobApi.Core/Models/UserServer/Users/Repositories/UserRepository.cs                                   |   43 
 FlexJobApi.FlexJobServer.Test/TestProgram.cs                                                             |   21 
 FlexJobApi.Core/Entities/UserServer/Powers/RoleResource.cs                                               |    0 
 FlexJobApi.Core/Entities/HumanResourcesServer/Area.cs                                                    |    0 
 FlexJobApi.Core/Models/CommonServer/Schedules/Commands/SaveScheduleJobDetailCommand.cs                   |   31 
 FlexJobApi.Core/Entities/UserServer/UserResumes/UserExpectJob.cs                                         |    8 
 FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs                                             |   93 
 FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.Designer.cs                    |  429 ++
 FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs             |    2 
 FlexJobApi.Web.Entry/Startup.cs                                                                          |   37 
 FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj                           |   22 
 FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.csproj                               |    4 
 FlexJobApi.Core/Utils/DbUtils/DbUtils.cs                                                                 |   53 
 FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobDetail.cs                                     |   56 
 FlexJobApi.Core/Entities/UserServer/UserResumes/UserPhoto.cs                                             |    0 
 FlexJobApi.Core/Entities/CommonServer/LogRecords/DbAuditLog.cs                                           |    0 
 FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResult.cs                                              |   40 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs                 |    0 
 FlexJobApi.Core/Entities/UserServer/Powers/UserRole.cs                                                   |    0 
 FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs                |    2 
 FlexJobApi.Core/Entities/CommonServer/LogRecords/QueueLog.cs                                             |    0 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs |    0 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs                      |    0 
 FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourcesQuery.cs                               |    0 
 FlexJobApi.Core/Entities/CommonServer/LogRecords/ResourceLog.cs                                          |    0 
 FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs                                                  |  133 
 FlexJobApi.Core/Entities/UserServer/Powers/Role.cs                                                       |    0 
 FlexJobApi.CommonServer.Application/Resources/Queries/GetResourcesQueryHandler.cs                        |    0 
 FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.cs                               |  278 +
 FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobTrigger.cs                                    |  129 
 FlexJobApi.Core/Utils/LogUtils/LogServiceComponent.cs                                                    |   34 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs                      |   81 
 FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs                               |  319 +
 FlexJobApi.Core/Entities/UserServer/Powers/RoleMenu.cs                                                   |    0 
 FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.Designer.cs                          | 2117 ++++++++++++
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs                   |   39 
 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs                                                 |    0 
 FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs                                                     |   19 
 FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs                             |   65 
 FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml                            |  122 
 FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.Designer.cs                |  524 +++
 FlexJobApi.CommonServer.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs                   |    0 
 FlexJobApi.Web.Entry/FlexJobApi.Web.Entry.csproj                                                         |    1 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs             |    0 
 FlexJobApi.Core/Entities/UserServer/UserResumes/UserDepartment.cs                                        |    0 
 FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs                       |  117 
 FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml                                  |  142 
 FlexJobApi.Database.Migrations/REDEME.MD                                                                 |    4 
 FlexJobApi.Core/Entities/CommonServer/LogRecords/ExceptionLog.cs                                         |    0 
 FlexJobApi.Core/Enums/Common/EnumResourceController.cs                                                   |    5 
 FlexJobApi.Core/Entities/UserServer/UserResumes/UserCredential.cs                                        |    1 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs                              |  254 +
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs                    |   67 
 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs            |   27 
 FlexJobApi.FlexJobServer.Test/Startup.cs                                                                 |   42 
 FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.cs                             |  125 
 FlexJobApi.FlexJobServer.Test/Tasks/TaskUnitTest.cs                                                      |   31 
 FlexJobApi.Core/Entities/CommonServer/LogRecords/ScheduleJobTriggerTimeline.cs                           |   67 
 /dev/null                                                                                                |    1 
 FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.cs                                   |  110 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs                 |    0 
 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs                    |   78 
 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs                   |    0 
 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoBenefit.cs                                          |    0 
 FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.cs                         |   93 
 FlexJobApi.Core/FlexJobApi.Core.csproj                                                                   |    4 
 104 files changed, 9,361 insertions(+), 754 deletions(-)

diff --git a/FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs b/FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs
similarity index 97%
rename from FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs
rename to FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs
index ab817a7..22ee32b 100644
--- a/FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs
+++ b/FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs
@@ -9,7 +9,7 @@
 using System.Text;
 using System.Threading.Tasks;
 
-namespace FlexJobApi.FlexJobServer.Application
+namespace FlexJobApi.CommonServer.Application
 {
     /// <summary>
     /// 瀛楀吀绫诲埆鍛戒护澶勭悊鍣�
diff --git a/FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs b/FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
similarity index 99%
rename from FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
rename to FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
index c96b463..3e15749 100644
--- a/FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
+++ b/FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
@@ -14,7 +14,7 @@
 using System.Text;
 using System.Threading.Tasks;
 
-namespace FlexJobApi.FlexJobServer.Application
+namespace FlexJobApi.CommonServer.Application
 {
     /// <summary>
     /// 鏁版嵁瀛楀吀鍛戒护澶勭悊鍣�
diff --git a/FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs
similarity index 97%
rename from FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs
rename to FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs
index 1309300..203eb16 100644
--- a/FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs
+++ b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs
@@ -9,7 +9,7 @@
 using System.Text;
 using System.Threading.Tasks;
 
-namespace FlexJobApi.FlexJobServer.Application
+namespace FlexJobApi.CommonServer.Application
 {
     /// <summary>
     /// 鏁版嵁瀛楀吀绫诲埆鏌ヨ澶勭悊鍣�
diff --git a/FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs
similarity index 98%
rename from FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs
rename to FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs
index 1a6e385..1d96d5b 100644
--- a/FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs
+++ b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs
@@ -10,7 +10,7 @@
 using System.Text;
 using System.Threading.Tasks;
 
-namespace FlexJobApi.FlexJobServer.Application
+namespace FlexJobApi.CommonServer.Application
 {
     /// <summary>
     /// 鏁版嵁瀛楀吀鏌ヨ澶勭悊鍣�
diff --git a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj
new file mode 100644
index 0000000..75e6e25
--- /dev/null
+++ b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj
@@ -0,0 +1,22 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+	<PropertyGroup>
+		<TargetFramework>net9.0</TargetFramework>
+		<DocumentationFile>FlexJobApi.CommonServer.Application.xml</DocumentationFile>
+		<ImplicitUsings>enable</ImplicitUsings>
+		<Nullable>enable</Nullable>
+	</PropertyGroup>
+
+	<ItemGroup>
+		<None Remove="FlexJobApi.CommonServer.Application.xml" />
+	</ItemGroup>
+
+	<ItemGroup>
+		<ProjectReference Include="..\FlexJobApi.Core\FlexJobApi.Core.csproj" />
+	</ItemGroup>
+
+	<ItemGroup>
+	  <Folder Include="Schedules\Queries\" />
+	</ItemGroup>
+
+</Project>
diff --git a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml
new file mode 100644
index 0000000..1db7ce4
--- /dev/null
+++ b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml
@@ -0,0 +1,174 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>FlexJobApi.CommonServer.Application</name>
+    </assembly>
+    <members>
+        <member name="T:FlexJobApi.CommonServer.Application.DictionaryCategoryCommandHandler">
+            <summary>
+            瀛楀吀绫诲埆鍛戒护澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoryCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData})">
+            <summary>
+            瀛楀吀绫诲埆鍛戒护澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoryCommandHandler.Handle(FlexJobApi.Core.DeleteDictionaryCategoryCommand,System.Threading.CancellationToken)">
+            <summary>
+            鍒犻櫎鏁版嵁瀛楀吀绫诲埆
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoryCommandHandler.Handle(FlexJobApi.Core.SaveDictionaryCategoryCommand,System.Threading.CancellationToken)">
+            <summary>
+            淇濆瓨鏁版嵁瀛楀吀绫诲埆
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="T:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler">
+            <summary>
+            鏁版嵁瀛楀吀鍛戒护澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory})">
+            <summary>
+            鏁版嵁瀛楀吀鍛戒护澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SaveDictionaryDataCommand,System.Threading.CancellationToken)">
+            <summary>
+            淇濆瓨鏁版嵁瀛楀吀
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SetDictionaryDataIsDisabledCommand,System.Threading.CancellationToken)">
+            <summary>
+            璁剧疆鏁版嵁瀛楀吀鏄惁绂佺敤
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SyncHumanResourcesAreaDictionaryDataCommand,System.Threading.CancellationToken)">
+            <summary>
+            鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler.LoopSyncHumanResourcesAreaDictionaryData(System.Guid,System.Collections.Generic.List{FlexJobApi.Core.DictionaryData},System.Collections.Generic.List{FlexJobApi.Core.BaseArea},System.Collections.Generic.List{FlexJobApi.Core.BaseArea},System.Int32)">
+            <summary>
+            閫掑綊鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁
+            </summary>
+            <param name="categoryId"></param>
+            <param name="entities"></param>
+            <param name="all"></param>
+            <param name="areas"></param>
+            <param name="deep"></param>
+        </member>
+        <member name="T:FlexJobApi.CommonServer.Application.DictionaryCategoriesQueryHandler">
+            <summary>
+            鏁版嵁瀛楀吀绫诲埆鏌ヨ澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoriesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory})">
+            <summary>
+            鏁版嵁瀛楀吀绫诲埆鏌ヨ澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoriesQueryHandler.Handle(FlexJobApi.Core.GetDictionaryCategoriesQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ鏁版嵁瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoriesQueryHandler.Handle(FlexJobApi.Core.GetDictionaryCategorySelectQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ鏁版嵁瀛楀吀绫诲埆閫夋嫨鍣ㄦ暟鎹�
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="T:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler">
+            <summary>
+            鏁版嵁瀛楀吀鏌ヨ澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData})">
+            <summary>
+            鏁版嵁瀛楀吀鏌ヨ澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler.Handle(FlexJobApi.Core.GetDictionaryDatasQuery,System.Threading.CancellationToken)">
+            <summary>
+            鑾峰彇鏁版嵁瀛楀吀鍒嗛〉鍒楄〃鏁版嵁
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler.Handle(FlexJobApi.Core.GetDictionaryDataSelectQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ鏁版嵁瀛楀吀閫夋嫨鍣�
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="T:FlexJobApi.CommonServer.Application.ScheduleJobDetailCommandHandler">
+            <summary>
+            浠诲姟璋冨害-浣滀笟
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.ScheduleJobDetailCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource},FlexJobApi.Core.ResourceHttpUtils,Furion.Schedule.ISchedulerFactory)">
+            <summary>
+            浠诲姟璋冨害-浣滀笟
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.CommonServer.Application.ScheduleJobDetailCommandHandler.Handle(FlexJobApi.Core.SaveScheduleJobDetailCommand,System.Threading.CancellationToken)">
+            <summary>
+            淇濆瓨浠诲姟璋冨害-浣滀笟
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="T:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler">
+            <summary>
+            鑾峰彇璧勬簮瀛楁
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource})">
+            <summary>
+            鑾峰彇璧勬簮瀛楁
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler.Handle(FlexJobApi.Core.GetResourceFieldsQuery,System.Threading.CancellationToken)">
+            <inheritdoc/>
+        </member>
+        <member name="T:FlexJobApi.UserServer.Application.GetResourcesQueryHandler">
+            <summary>
+            鑾峰彇璧勬簮鍒楄〃
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.GetResourcesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource})">
+            <summary>
+            鑾峰彇璧勬簮鍒楄〃
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.GetResourcesQueryHandler.Handle(FlexJobApi.Core.GetResourcesQuery,System.Threading.CancellationToken)">
+            <inheritdoc/>
+        </member>
+    </members>
+</doc>
diff --git a/FlexJobApi.UserServer.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs b/FlexJobApi.CommonServer.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs
similarity index 100%
rename from FlexJobApi.UserServer.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs
rename to FlexJobApi.CommonServer.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs
diff --git a/FlexJobApi.UserServer.Application/Resources/Queries/GetResourcesQueryHandler.cs b/FlexJobApi.CommonServer.Application/Resources/Queries/GetResourcesQueryHandler.cs
similarity index 100%
rename from FlexJobApi.UserServer.Application/Resources/Queries/GetResourcesQueryHandler.cs
rename to FlexJobApi.CommonServer.Application/Resources/Queries/GetResourcesQueryHandler.cs
diff --git a/FlexJobApi.CommonServer.Application/Schedules/Commands/ScheduleJobDetailCommandHandler.cs b/FlexJobApi.CommonServer.Application/Schedules/Commands/ScheduleJobDetailCommandHandler.cs
new file mode 100644
index 0000000..e258937
--- /dev/null
+++ b/FlexJobApi.CommonServer.Application/Schedules/Commands/ScheduleJobDetailCommandHandler.cs
@@ -0,0 +1,48 @@
+锘縰sing FlexJobApi.Core;
+using Furion.DatabaseAccessor;
+using Furion.FriendlyException;
+using Furion.Schedule;
+using MediatR;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.CommonServer.Application
+{
+    /// <summary>
+    /// 浠诲姟璋冨害-浣滀笟
+    /// </summary>
+    public class ScheduleJobDetailCommandHandler(
+            IRepository<Resource> repResource,
+            ResourceHttpUtils resourceHttpUtils,
+            ISchedulerFactory schedulerFactory
+        ) :
+        IRequestHandler<SaveScheduleJobDetailCommand, bool>
+    {
+        private readonly IRepository<Resource> repResource = repResource;
+        private readonly ResourceHttpUtils resourceHttpUtils = resourceHttpUtils;
+        private readonly ISchedulerFactory schedulerFactory = schedulerFactory;
+
+        /// <summary>
+        /// 淇濆瓨浠诲姟璋冨害-浣滀笟
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<bool> Handle(SaveScheduleJobDetailCommand request, CancellationToken cancellationToken)
+        {
+            // 鍒涘缓 HTTP 浣滀笟娑堟伅
+            var jobBuilder = JobBuilder
+                .Create<ResourceHttpJob>()
+                .AddProperty(nameof(ResourceHttpJob), Schedular.Serialize(request));
+            // 娣诲姞浣滀笟
+            schedulerFactory.AddJob(jobBuilder, Triggers.Cron(request.Cron, Furion.TimeCrontab.CronStringFormat.WithSeconds));
+            return Task.FromResult(true);
+        }
+    }
+}
diff --git a/FlexJobApi.Core/Entities/Common/DictionaryCategory.cs b/FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryCategory.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Common/DictionaryCategory.cs
rename to FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryCategory.cs
diff --git a/FlexJobApi.Core/Entities/Common/DictionaryData.cs b/FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryData.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Common/DictionaryData.cs
rename to FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryData.cs
diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/ConsoleLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ConsoleLog.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Common/LogRecords/ConsoleLog.cs
rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/ConsoleLog.cs
diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/DbAuditLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/DbAuditLog.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Common/LogRecords/DbAuditLog.cs
rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/DbAuditLog.cs
diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/ExceptionLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ExceptionLog.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Common/LogRecords/ExceptionLog.cs
rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/ExceptionLog.cs
diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/QueueLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/QueueLog.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Common/LogRecords/QueueLog.cs
rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/QueueLog.cs
diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/ResourceLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ResourceLog.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Common/LogRecords/ResourceLog.cs
rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/ResourceLog.cs
diff --git a/FlexJobApi.Core/Entities/CommonServer/LogRecords/ScheduleJobTriggerTimeline.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ScheduleJobTriggerTimeline.cs
new file mode 100644
index 0000000..96d7ac1
--- /dev/null
+++ b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ScheduleJobTriggerTimeline.cs
@@ -0,0 +1,67 @@
+锘縰sing Furion.Schedule;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.Json.Serialization;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 瀹氭椂浠诲姟-浣滀笟瑙﹀彂鍣ㄨ繍琛岃褰�
+    /// </summary>
+    public class ScheduleJobTriggerTimeline : CommonEntity<LogDbContextLocator>
+    {
+        /// <summary>
+        /// 浣滀笟 Id
+        /// </summary>
+        public string JobId { get; internal set; }
+
+        /// <summary>
+        /// 浣滀笟瑙﹀彂鍣� Id
+        /// </summary>
+        public string TriggerId { get; internal set; }
+
+        /// <summary>
+        /// 褰撳墠杩愯娆℃暟
+        /// </summary>
+        public long NumberOfRuns { get; internal set; }
+
+        /// <summary>
+        /// 鏈�杩戣繍琛屾椂闂�
+        /// </summary>
+        public DateTime? LastRunTime { get; internal set; }
+
+        /// <summary>
+        /// 涓嬩竴娆¤繍琛屾椂闂�
+        /// </summary>
+        public DateTime? NextRunTime { get; internal set; }
+
+        /// <summary>
+        /// 浣滀笟瑙﹀彂鍣ㄧ姸鎬�
+        /// </summary>
+        public TriggerStatus Status { get; internal set; }
+
+        /// <summary>
+        /// 鏈鎵ц缁撴灉
+        /// </summary>
+        public string Result { get; internal set; }
+
+        /// <summary>
+        /// 鏈鎵ц鑰楁椂
+        /// </summary>
+        public long ElapsedTime { get; internal set; }
+
+        /// <summary>
+        /// 瑙﹀彂妯″紡
+        /// </summary>
+        /// <remarks>榛樿涓哄畾鏃惰Е鍙戯紝0:瀹氭椂锛�1:鎵嬪姩</remarks>
+        public int Mode { get; internal set; }
+
+        /// <summary>
+        /// 寮傚父淇℃伅
+        /// </summary>
+        public string Exception { get; internal set; }
+    }
+}
diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/SmsLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/SmsLog.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Common/LogRecords/SmsLog.cs
rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/SmsLog.cs
diff --git a/FlexJobApi.Core/Entities/Common/Resource.cs b/FlexJobApi.Core/Entities/CommonServer/Resource.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Common/Resource.cs
rename to FlexJobApi.Core/Entities/CommonServer/Resource.cs
diff --git a/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobDetail.cs b/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobDetail.cs
new file mode 100644
index 0000000..1928cc2
--- /dev/null
+++ b/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobDetail.cs
@@ -0,0 +1,56 @@
+锘縰sing Furion.DatabaseAccessor;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 瀹氭椂浠诲姟-浣滀笟璇︽儏
+    /// </summary>
+    public class ScheduleJobDetail : CommonEntity, IDbAuditLogIgnore
+    {
+        /// <summary>
+        /// 浣滀笟Id
+        /// </summary>
+        public string JobId { get; set; }
+
+        /// <summary>
+        /// 浣滀笟缁勫悕绉�
+        /// </summary>
+        public string GroupName { get; set; }
+
+        /// <summary>
+        /// 浣滀笟澶勭悊绋嬪簭绫诲瀷锛屽瓨鍌ㄧ殑鏄被鍨嬬殑 FullName
+        /// </summary>
+        public string JobType { get; set; }
+
+        /// <summary>
+        /// 浣滀笟澶勭悊绋嬪簭绫诲瀷鎵�鍦ㄧ▼搴忛泦锛屽瓨鍌ㄧ殑鏄▼搴忛泦 Name
+        /// </summary>
+        public string AssemblyName { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪淇℃伅
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 浣滀笟鎵ц鏂瑰紡锛屽鏋滆缃负 false锛岄偅涔堜娇鐢� 涓茶 鎵ц锛屽惁鍒� 骞惰 鎵ц
+        /// </summary>
+        public bool Concurrent { get; set; }
+
+        /// <summary>
+        /// 鏄惁鎵弿 IJob 瀹炵幇绫� [Trigger] 鐗规�цЕ鍙戝櫒
+        /// </summary>
+        public bool IncludeAnnotations { get; set; }
+
+        /// <summary>
+        /// 浣滀笟淇℃伅棰濆鏁版嵁
+        /// 鐢� Dictionary string, object 搴忓垪鍖栨垚瀛楃涓插瓨鍌�
+        /// </summary>
+        public string Properties { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobTrigger.cs b/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobTrigger.cs
new file mode 100644
index 0000000..1cf573b
--- /dev/null
+++ b/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobTrigger.cs
@@ -0,0 +1,129 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Schedule;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 瀹氭椂浠诲姟-浣滀笟瑙﹀彂鍣�
+    /// </summary>
+    public class ScheduleJobTrigger : CommonEntity, IDbAuditLogIgnore
+    {
+        /// <summary>
+        /// 浣滀笟瑙﹀彂鍣↖d
+        /// </summary>
+        public string TriggerId { get; set; }
+
+        /// <summary>
+        /// 浣滀笟Id
+        /// </summary>
+        public string JobId { get; set; }
+
+        /// <summary>
+        /// 浣滀笟瑙﹀彂鍣ㄧ被鍨嬶紝瀛樺偍鐨勬槸绫诲瀷鐨� FullName
+        /// </summary>
+        public string TriggerType { get; set; }
+
+        /// <summary>
+        /// 浣滀笟瑙﹀彂鍣ㄧ被鍨嬫墍鍦ㄧ▼搴忛泦锛屽瓨鍌ㄧ殑鏄▼搴忛泦 Name
+        /// </summary>
+        public string AssemblyName { get; set; }
+
+        /// <summary>
+        /// 浣滀笟瑙﹀彂鍣ㄥ垵濮嬪寲鍙傛暟锛岃繍琛屾椂灏嗗弽搴忓垪鍖栦负 object[] 绫诲瀷骞朵綔涓烘瀯閫犲嚱鏁板弬鏁�
+        /// </summary>
+        public string Args { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪淇℃伅
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 浣滀笟瑙﹀彂鍣ㄧ姸鎬�
+        /// </summary>
+        public TriggerStatus Status { get; set; }
+
+        /// <summary>
+        /// 璧峰鏃堕棿
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+
+        /// <summary>
+        /// 缁撴潫鏃堕棿
+        /// </summary>
+        public DateTime? EndTime { get; set; }
+
+        /// <summary>
+        /// 鏈�杩戣繍琛屾椂闂�
+        /// </summary>
+        public DateTime? LastRunTime { get; set; }
+
+        /// <summary>
+        /// 涓嬩竴娆¤繍琛屾椂闂�
+        /// </summary>
+        public DateTime? NextRunTime { get; set; }
+
+        /// <summary>
+        /// 褰撳墠杩愯娆℃暟
+        /// </summary>
+        public long NumberOfRuns { get; set; }
+
+        /// <summary>
+        /// 鏈�澶цЕ鍙戞鏁帮紝0锛氫笉闄愬埗锛宯锛歂 娆�
+        /// </summary>
+        public long MaxNumberOfRuns { get; set; }
+
+        /// <summary>
+        /// 鍑洪敊娆℃暟
+        /// </summary>
+        public long NumberOfErrors { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у嚭閿欐鏁帮紝0锛氫笉闄愬埗锛宯锛歂 娆�
+        /// </summary>
+        public long MaxNumberOfErrors { get; set; }
+
+        /// <summary>
+        /// 閲嶈瘯娆℃暟
+        /// </summary>
+        public long NumRetries { get; set; }
+
+        /// <summary>
+        /// 閲嶈瘯闂撮殧鏃堕棿锛屾绉掑崟浣�
+        /// </summary>
+        public int RetryTimeout { get; set; }
+
+        /// <summary>
+        /// 鏄惁绔嬪嵆鍚姩锛岃缃� false 灏嗘墜鍔ㄥ惎鍔�
+        /// </summary>
+        public bool StartNow { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍚姩鏃舵墽琛屼竴娆�
+        /// 鍙�氳繃 StartTime 鎺у埗璧峰鏃堕棿
+        /// 鑻� StartTime 涓� null 鎴栧皬浜庡綋鍓嶆椂闂达紝鍒欏湪绋嬪簭鍚姩鏃舵墽琛�
+        /// 鍚﹀垯鍦� StartTime 鏃堕棿鎵ц
+        /// </summary>
+        public bool RunOnStart { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍦ㄥ惎鍔ㄦ椂閲嶇疆鏈�澶цЕ鍙戞鏁扮瓑浜庝竴娆$殑浣滀笟
+        /// </summary>
+        public bool ResetOnlyOnce { get; set; }
+
+        /// <summary>
+        /// 鏈鎵ц缁撴灉
+        /// </summary>
+        public string Result { get; set; }
+
+        /// <summary>
+        /// 鏈鎵ц鑰楁椂
+        /// </summary>
+        public long ElapsedTime { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/FlexJobApi.Core/Entities/Tasks/TaskInfo.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Tasks/TaskInfo.cs
rename to FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs
diff --git a/FlexJobApi.Core/Entities/Tasks/TaskInfoBenefit.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoBenefit.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Tasks/TaskInfoBenefit.cs
rename to FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoBenefit.cs
diff --git a/FlexJobApi.Core/Entities/Tasks/TaskInfoCredentialLimit.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoCredentialLimit.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Tasks/TaskInfoCredentialLimit.cs
rename to FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoCredentialLimit.cs
diff --git a/FlexJobApi.Core/Entities/Tasks/TaskInfoUser.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Tasks/TaskInfoUser.cs
rename to FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs
diff --git a/FlexJobApi.Core/Entities/HumanResources/Area.cs b/FlexJobApi.Core/Entities/HumanResourcesServer/Area.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/HumanResources/Area.cs
rename to FlexJobApi.Core/Entities/HumanResourcesServer/Area.cs
diff --git a/FlexJobApi.Core/Entities/Users/Enterprises/Department.cs b/FlexJobApi.Core/Entities/UserServer/Enterprises/Department.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/Enterprises/Department.cs
rename to FlexJobApi.Core/Entities/UserServer/Enterprises/Department.cs
diff --git a/FlexJobApi.Core/Entities/Users/Enterprises/Enterprise.cs b/FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/Enterprises/Enterprise.cs
rename to FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs
diff --git a/FlexJobApi.Core/Entities/Users/Enterprises/EnterpriseAuth.cs b/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseAuth.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/Enterprises/EnterpriseAuth.cs
rename to FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseAuth.cs
diff --git a/FlexJobApi.Core/Entities/Users/Powers/Menu.cs b/FlexJobApi.Core/Entities/UserServer/Powers/Menu.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/Powers/Menu.cs
rename to FlexJobApi.Core/Entities/UserServer/Powers/Menu.cs
diff --git a/FlexJobApi.Core/Entities/Users/Powers/Role.cs b/FlexJobApi.Core/Entities/UserServer/Powers/Role.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/Powers/Role.cs
rename to FlexJobApi.Core/Entities/UserServer/Powers/Role.cs
diff --git a/FlexJobApi.Core/Entities/Users/Powers/RoleMenu.cs b/FlexJobApi.Core/Entities/UserServer/Powers/RoleMenu.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/Powers/RoleMenu.cs
rename to FlexJobApi.Core/Entities/UserServer/Powers/RoleMenu.cs
diff --git a/FlexJobApi.Core/Entities/Users/Powers/RoleResource.cs b/FlexJobApi.Core/Entities/UserServer/Powers/RoleResource.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/Powers/RoleResource.cs
rename to FlexJobApi.Core/Entities/UserServer/Powers/RoleResource.cs
diff --git a/FlexJobApi.Core/Entities/Users/Powers/UserRole.cs b/FlexJobApi.Core/Entities/UserServer/Powers/UserRole.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/Powers/UserRole.cs
rename to FlexJobApi.Core/Entities/UserServer/Powers/UserRole.cs
diff --git a/FlexJobApi.Core/Entities/Users/UserResumes/UserCredential.cs b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserCredential.cs
similarity index 98%
rename from FlexJobApi.Core/Entities/Users/UserResumes/UserCredential.cs
rename to FlexJobApi.Core/Entities/UserServer/UserResumes/UserCredential.cs
index b489180..e353b7d 100644
--- a/FlexJobApi.Core/Entities/Users/UserResumes/UserCredential.cs
+++ b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserCredential.cs
@@ -40,7 +40,6 @@
         /// 璇佷功缂栧彿
         /// </summary>
         [MaxLength(128)]
-        [Required]
         public string Code { get; set; }
 
         /// <summary>
diff --git a/FlexJobApi.Core/Entities/Users/UserResumes/UserDepartment.cs b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserDepartment.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/UserResumes/UserDepartment.cs
rename to FlexJobApi.Core/Entities/UserServer/UserResumes/UserDepartment.cs
diff --git a/FlexJobApi.Core/Entities/Users/UserResumes/UserExpectJob.cs b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserExpectJob.cs
similarity index 82%
rename from FlexJobApi.Core/Entities/Users/UserResumes/UserExpectJob.cs
rename to FlexJobApi.Core/Entities/UserServer/UserResumes/UserExpectJob.cs
index b78a964..ef9a043 100644
--- a/FlexJobApi.Core/Entities/Users/UserResumes/UserExpectJob.cs
+++ b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserExpectJob.cs
@@ -27,19 +27,19 @@
         /// <summary>
         /// 鏈熸湜宀椾綅缂栧彿
         /// </summary>
-        public string PersonalIdentityCode { get; set; }
+        public string ExpectJobCode { get; set; }
 
         /// <summary>
         /// 鏈熸湜宀椾綅
         /// </summary>
-        public DictionaryData PersonalIdentity { get; set; }
+        public DictionaryData ExpectJob { get; set; }
 
         public void Configure(EntityTypeBuilder<UserExpectJob> entityBuilder, DbContext dbContext, Type dbContextLocator)
         {
             entityBuilder
-                .HasOne(it => it.PersonalIdentity)
+                .HasOne(it => it.ExpectJob)
                 .WithMany()
-                .HasForeignKey(it => it.PersonalIdentityCode)
+                .HasForeignKey(it => it.ExpectJobCode)
                 .HasPrincipalKey(it => it.Code)
                 .IsRequired()
                 .OnDelete(DeleteBehavior.Restrict);
diff --git a/FlexJobApi.Core/Entities/Users/UserResumes/UserPhoto.cs b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserPhoto.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/UserResumes/UserPhoto.cs
rename to FlexJobApi.Core/Entities/UserServer/UserResumes/UserPhoto.cs
diff --git a/FlexJobApi.Core/Entities/Users/Users/User.cs b/FlexJobApi.Core/Entities/UserServer/Users/User.cs
similarity index 75%
rename from FlexJobApi.Core/Entities/Users/Users/User.cs
rename to FlexJobApi.Core/Entities/UserServer/Users/User.cs
index 9b039d3..3a61e75 100644
--- a/FlexJobApi.Core/Entities/Users/Users/User.cs
+++ b/FlexJobApi.Core/Entities/UserServer/Users/User.cs
@@ -85,6 +85,11 @@
         public EnumUserGender? Gender { get; set; }
 
         /// <summary>
+        /// 鐢熸棩
+        /// </summary>
+        public DateTime? Birthday { get; set; }
+
+        /// <summary>
         /// 骞撮緞
         /// </summary>
         public int? Age { get; set; }
@@ -134,6 +139,56 @@
         /// 甯搁┗鍩庡競
         /// </summary>
         public DictionaryData City { get; set; }
+
+        /// <summary>
+        /// 韬唤缂栧彿
+        /// </summary>
+        public string PersonalIdentityCode { get; set; }
+
+        /// <summary>
+        /// 韬唤
+        /// </summary>
+        public DictionaryData PersonalIdentity { get; set; }
+
+        /// <summary>
+        /// 瀛﹀巻缂栧彿
+        /// </summary>
+        public string EducationalBackgroundCode { get; set; }
+
+        /// <summary>
+        /// 瀛﹀巻
+        /// </summary>
+        public DictionaryData EducationalBackground { get; set; }
+
+        /// <summary>
+        /// 绌洪棽鏃堕棿
+        /// </summary>
+        public EnumPersonalFreeTime? FreeTime { get; set; }
+
+        /// <summary>
+        /// 姹傝亴鐘舵��
+        /// </summary>
+        public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔璧勫巻
+        /// </summary>
+        public string WorkSeniority { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔缁忛獙
+        /// </summary>
+        public string WorkExperience { get; set; }
+
+        /// <summary>
+        /// 韬珮
+        /// </summary>
+        public int? Height { get; set; }
+
+        /// <summary>
+        /// 浣撻噸
+        /// </summary>
+        public int? Weight { get; set; }
 
         /// <summary>
         /// 澶囨敞
@@ -193,6 +248,18 @@
                 .HasForeignKey(it => it.CityCode)
                 .HasPrincipalKey(it => it.Code)
                 .OnDelete(DeleteBehavior.Restrict);
+            entityBuilder
+                .HasOne(it => it.PersonalIdentity)
+                .WithMany()
+                .HasForeignKey(it => it.PersonalIdentityCode)
+                .HasPrincipalKey(it => it.Code)
+                .OnDelete(DeleteBehavior.Restrict);
+            entityBuilder
+                .HasOne(it => it.EducationalBackground)
+                .WithMany()
+                .HasForeignKey(it => it.EducationalBackgroundCode)
+                .HasPrincipalKey(it => it.Code)
+                .OnDelete(DeleteBehavior.Restrict);
         }
 
         public IEnumerable<User> HasData(DbContext dbContext, Type dbContextLocator)
diff --git a/FlexJobApi.Core/Entities/Users/Users/UserAuth.cs b/FlexJobApi.Core/Entities/UserServer/Users/UserAuth.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/Users/UserAuth.cs
rename to FlexJobApi.Core/Entities/UserServer/Users/UserAuth.cs
diff --git a/FlexJobApi.Core/Entities/Users/Users/UserBankCard.cs b/FlexJobApi.Core/Entities/UserServer/Users/UserBankCard.cs
similarity index 100%
rename from FlexJobApi.Core/Entities/Users/Users/UserBankCard.cs
rename to FlexJobApi.Core/Entities/UserServer/Users/UserBankCard.cs
diff --git a/FlexJobApi.Core/Entities/Users/UserResumes/UserResume.cs b/FlexJobApi.Core/Entities/Users/UserResumes/UserResume.cs
deleted file mode 100644
index 61b469b..0000000
--- a/FlexJobApi.Core/Entities/Users/UserResumes/UserResume.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-锘縰sing Furion.DatabaseAccessor;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FlexJobApi.Core
-{
-    /// <summary>
-    /// 鐢ㄦ埛绠�鍘�
-    /// </summary>
-    public class UserResume : CommonEntity, IEntityTypeBuilder<UserResume>
-    {
-        /// <summary>
-        /// 鐢ㄦ埛Id
-        /// </summary>
-        public Guid UserId { get; set; }
-
-        /// <summary>
-        /// 鐢ㄦ埛
-        /// </summary>
-        public User User { get; set; }
-
-        /// <summary>
-        /// 韬唤缂栧彿
-        /// </summary>
-        public string PersonalIdentityCode { get; set; }
-
-        /// <summary>
-        /// 韬唤
-        /// </summary>
-        public DictionaryData PersonalIdentity { get; set; }
-
-        /// <summary>
-        /// 瀛﹀巻缂栧彿
-        /// </summary>
-        public string EducationalBackgroundCode { get; set; }
-
-        /// <summary>
-        /// 瀛﹀巻
-        /// </summary>
-        public DictionaryData EducationalBackground { get; set; }
-
-        /// <summary>
-        /// 绌洪棽鏃堕棿
-        /// </summary>
-        public EnumPersonalFreeTime? FreeTime { get; set; }
-
-        /// <summary>
-        /// 姹傝亴鐘舵��
-        /// </summary>
-        public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; }
-
-        /// <summary>
-        /// 宸ヤ綔璧勫巻
-        /// </summary>
-        public string WorkSeniority { get; set; }
-
-        /// <summary>
-        /// 宸ヤ綔缁忛獙
-        /// </summary>
-        public string WorkExperience { get; set; }
-
-        /// <summary>
-        /// 韬珮
-        /// </summary>
-        public int? Height { get; set; }
-
-        /// <summary>
-        /// 浣撻噸
-        /// </summary>
-        public int? Weight { get; set; }
-
-        public void Configure(EntityTypeBuilder<UserResume> entityBuilder, DbContext dbContext, Type dbContextLocator)
-        {
-            entityBuilder
-                .HasOne(it => it.PersonalIdentity)
-                .WithMany()
-                .HasForeignKey(it => it.PersonalIdentityCode)
-                .HasPrincipalKey(it => it.Code)
-                .OnDelete(DeleteBehavior.Restrict);
-            entityBuilder
-                .HasOne(it => it.EducationalBackground)
-                .WithMany()
-                .HasForeignKey(it => it.EducationalBackgroundCode)
-                .HasPrincipalKey(it => it.Code)
-                .OnDelete(DeleteBehavior.Restrict);
-        }
-    }
-}
diff --git a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs
index e15b5df..2e1f1ad 100644
--- a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs
+++ b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs
@@ -48,6 +48,11 @@
         [ResourceController(Service = EnumResourceService.UserServer)]
         User,
         /// <summary>
+        /// 鐢ㄦ埛绠�鍘�
+        /// </summary>
+        [ResourceController(Service = EnumResourceService.UserServer)]
+        UserResume,
+        /// <summary>
         /// 浼佷笟淇℃伅
         /// </summary>
         [ResourceController(Service = EnumResourceService.UserServer)]
diff --git a/FlexJobApi.Core/Enums/Common/EnumResourceService.cs b/FlexJobApi.Core/Enums/Common/EnumResourceService.cs
index 8cd6d61..bd0c5c8 100644
--- a/FlexJobApi.Core/Enums/Common/EnumResourceService.cs
+++ b/FlexJobApi.Core/Enums/Common/EnumResourceService.cs
@@ -18,6 +18,11 @@
         [ResourceService(ApplicationName = "FlexJobApi.FlexJobServer.Application", RouteArea = "flexjob", ServiceName = "Local_FlexJobApi")]
         FlexJobServer,
         /// <summary>
+        /// 閫氱敤鏈嶅姟
+        /// </summary>
+        [ResourceService(ApplicationName = "FlexJobApi.CommonServer.Application", RouteArea = "common", ServiceName = "Local_FlexJobApi")]
+        CommonServer,
+        /// <summary>
         /// 鐢ㄦ埛鏈嶅姟
         /// </summary>
         [ResourceService(ApplicationName = "FlexJobApi.UserServer.Application", RouteArea = "user", ServiceName = "Local_FlexJobApi")]
diff --git a/FlexJobApi.Core/FlexJobApi.Core.csproj b/FlexJobApi.Core/FlexJobApi.Core.csproj
index 8dee6b3..b34761c 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.csproj
+++ b/FlexJobApi.Core/FlexJobApi.Core.csproj
@@ -34,4 +34,8 @@
 	  </None>
 	</ItemGroup>
 
+	<ItemGroup>
+	  <Folder Include="Models\CommonServer\Schedules\Queries\" />
+	</ItemGroup>
+
 </Project>
diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index c3b2dec..77bd1a7 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -359,6 +359,62 @@
             鑰楁椂姣鏁�
             </summary>
         </member>
+        <member name="T:FlexJobApi.Core.ScheduleJobTriggerTimeline">
+            <summary>
+            瀹氭椂浠诲姟-浣滀笟瑙﹀彂鍣ㄨ繍琛岃褰�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.JobId">
+            <summary>
+            浣滀笟 Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.TriggerId">
+            <summary>
+            浣滀笟瑙﹀彂鍣� Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.NumberOfRuns">
+            <summary>
+            褰撳墠杩愯娆℃暟
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.LastRunTime">
+            <summary>
+            鏈�杩戣繍琛屾椂闂�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.NextRunTime">
+            <summary>
+            涓嬩竴娆¤繍琛屾椂闂�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.Status">
+            <summary>
+            浣滀笟瑙﹀彂鍣ㄧ姸鎬�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.Result">
+            <summary>
+            鏈鎵ц缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.ElapsedTime">
+            <summary>
+            鏈鎵ц鑰楁椂
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.Mode">
+            <summary>
+            瑙﹀彂妯″紡
+            </summary>
+            <remarks>榛樿涓哄畾鏃惰Е鍙戯紝0:瀹氭椂锛�1:鎵嬪姩</remarks>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.Exception">
+            <summary>
+            寮傚父淇℃伅
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.SmsLog">
             <summary>
             鐭俊鏃ュ織
@@ -494,54 +550,168 @@
             鏄惁宸茶繃鏈�
             </summary>
         </member>
-        <member name="T:FlexJobApi.Core.BaseArea">
+        <member name="T:FlexJobApi.Core.ScheduleJobDetail">
             <summary>
-            鍦板尯
+            瀹氭椂浠诲姟-浣滀笟璇︽儏
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.BaseArea.ParentId">
+        <member name="P:FlexJobApi.Core.ScheduleJobDetail.JobId">
             <summary>
-            涓婄骇鍦板尯缂栧彿
+            浣滀笟Id
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.BaseArea.AreaCode">
+        <member name="P:FlexJobApi.Core.ScheduleJobDetail.GroupName">
             <summary>
-            鍦板尯缂栧彿
+            浣滀笟缁勫悕绉�
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.BaseArea.AreaName">
+        <member name="P:FlexJobApi.Core.ScheduleJobDetail.JobType">
             <summary>
-            鍦板尯鍚嶇О
+            浣滀笟澶勭悊绋嬪簭绫诲瀷锛屽瓨鍌ㄧ殑鏄被鍨嬬殑 FullName
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.BaseArea.QuickQuery">
+        <member name="P:FlexJobApi.Core.ScheduleJobDetail.AssemblyName">
             <summary>
-            蹇嵎鏌ヨ
+            浣滀笟澶勭悊绋嬪簭绫诲瀷鎵�鍦ㄧ▼搴忛泦锛屽瓨鍌ㄧ殑鏄▼搴忛泦 Name
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.BaseArea.Description">
+        <member name="P:FlexJobApi.Core.ScheduleJobDetail.Description">
             <summary>
-            鎻忚堪
+            鎻忚堪淇℃伅
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.BaseArea.Layer">
+        <member name="P:FlexJobApi.Core.ScheduleJobDetail.Concurrent">
             <summary>
-            灞傜骇
+            浣滀笟鎵ц鏂瑰紡锛屽鏋滆缃负 false锛岄偅涔堜娇鐢� 涓茶 鎵ц锛屽惁鍒� 骞惰 鎵ц
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.BaseArea.Sort">
+        <member name="P:FlexJobApi.Core.ScheduleJobDetail.IncludeAnnotations">
             <summary>
-            鎺掑簭
+            鏄惁鎵弿 IJob 瀹炵幇绫� [Trigger] 鐗规�цЕ鍙戝櫒
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.BaseArea.SimpleSpelling">
+        <member name="P:FlexJobApi.Core.ScheduleJobDetail.Properties">
             <summary>
-            绠�鎷�
+            浣滀笟淇℃伅棰濆鏁版嵁
+            鐢� Dictionary string, object 搴忓垪鍖栨垚瀛楃涓插瓨鍌�
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.BaseArea.IsEnable">
+        <member name="T:FlexJobApi.Core.ScheduleJobTrigger">
             <summary>
-            鏄惁鍚敤
+            瀹氭椂浠诲姟-浣滀笟瑙﹀彂鍣�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.TriggerId">
+            <summary>
+            浣滀笟瑙﹀彂鍣↖d
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.JobId">
+            <summary>
+            浣滀笟Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.TriggerType">
+            <summary>
+            浣滀笟瑙﹀彂鍣ㄧ被鍨嬶紝瀛樺偍鐨勬槸绫诲瀷鐨� FullName
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.AssemblyName">
+            <summary>
+            浣滀笟瑙﹀彂鍣ㄧ被鍨嬫墍鍦ㄧ▼搴忛泦锛屽瓨鍌ㄧ殑鏄▼搴忛泦 Name
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.Args">
+            <summary>
+            浣滀笟瑙﹀彂鍣ㄥ垵濮嬪寲鍙傛暟锛岃繍琛屾椂灏嗗弽搴忓垪鍖栦负 object[] 绫诲瀷骞朵綔涓烘瀯閫犲嚱鏁板弬鏁�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.Description">
+            <summary>
+            鎻忚堪淇℃伅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.Status">
+            <summary>
+            浣滀笟瑙﹀彂鍣ㄧ姸鎬�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.StartTime">
+            <summary>
+            璧峰鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.EndTime">
+            <summary>
+            缁撴潫鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.LastRunTime">
+            <summary>
+            鏈�杩戣繍琛屾椂闂�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.NextRunTime">
+            <summary>
+            涓嬩竴娆¤繍琛屾椂闂�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.NumberOfRuns">
+            <summary>
+            褰撳墠杩愯娆℃暟
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.MaxNumberOfRuns">
+            <summary>
+            鏈�澶цЕ鍙戞鏁帮紝0锛氫笉闄愬埗锛宯锛歂 娆�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.NumberOfErrors">
+            <summary>
+            鍑洪敊娆℃暟
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.MaxNumberOfErrors">
+            <summary>
+            鏈�澶у嚭閿欐鏁帮紝0锛氫笉闄愬埗锛宯锛歂 娆�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.NumRetries">
+            <summary>
+            閲嶈瘯娆℃暟
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.RetryTimeout">
+            <summary>
+            閲嶈瘯闂撮殧鏃堕棿锛屾绉掑崟浣�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.StartNow">
+            <summary>
+            鏄惁绔嬪嵆鍚姩锛岃缃� false 灏嗘墜鍔ㄥ惎鍔�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.RunOnStart">
+            <summary>
+            鏄惁鍚姩鏃舵墽琛屼竴娆�
+            鍙�氳繃 StartTime 鎺у埗璧峰鏃堕棿
+            鑻� StartTime 涓� null 鎴栧皬浜庡綋鍓嶆椂闂达紝鍒欏湪绋嬪簭鍚姩鏃舵墽琛�
+            鍚﹀垯鍦� StartTime 鏃堕棿鎵ц
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.ResetOnlyOnce">
+            <summary>
+            鏄惁鍦ㄥ惎鍔ㄦ椂閲嶇疆鏈�澶цЕ鍙戞鏁扮瓑浜庝竴娆$殑浣滀笟
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.Result">
+            <summary>
+            鏈鎵ц缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.ScheduleJobTrigger.ElapsedTime">
+            <summary>
+            鏈鎵ц鑰楁椂
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.TaskInfo">
@@ -777,6 +947,56 @@
         <member name="P:FlexJobApi.Core.TaskInfoUser.SignContractTime">
             <summary>
             绛剧害鏃堕棿
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.BaseArea">
+            <summary>
+            鍦板尯
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.BaseArea.ParentId">
+            <summary>
+            涓婄骇鍦板尯缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.BaseArea.AreaCode">
+            <summary>
+            鍦板尯缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.BaseArea.AreaName">
+            <summary>
+            鍦板尯鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.BaseArea.QuickQuery">
+            <summary>
+            蹇嵎鏌ヨ
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.BaseArea.Description">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.BaseArea.Layer">
+            <summary>
+            灞傜骇
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.BaseArea.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.BaseArea.SimpleSpelling">
+            <summary>
+            绠�鎷�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.BaseArea.IsEnable">
+            <summary>
+            鏄惁鍚敤
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.Department">
@@ -1404,12 +1624,12 @@
             鐢ㄦ埛淇℃伅
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.UserExpectJob.PersonalIdentityCode">
+        <member name="P:FlexJobApi.Core.UserExpectJob.ExpectJobCode">
             <summary>
             鏈熸湜宀椾綅缂栧彿
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.UserExpectJob.PersonalIdentity">
+        <member name="P:FlexJobApi.Core.UserExpectJob.ExpectJob">
             <summary>
             鏈熸湜宀椾綅
             </summary>
@@ -1432,71 +1652,6 @@
         <member name="P:FlexJobApi.Core.UserPhoto.Img">
             <summary>
             鐓х墖
-            </summary>
-        </member>
-        <member name="T:FlexJobApi.Core.UserResume">
-            <summary>
-            鐢ㄦ埛绠�鍘�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.UserId">
-            <summary>
-            鐢ㄦ埛Id
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.User">
-            <summary>
-            鐢ㄦ埛
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.PersonalIdentityCode">
-            <summary>
-            韬唤缂栧彿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.PersonalIdentity">
-            <summary>
-            韬唤
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.EducationalBackgroundCode">
-            <summary>
-            瀛﹀巻缂栧彿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.EducationalBackground">
-            <summary>
-            瀛﹀巻
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.FreeTime">
-            <summary>
-            绌洪棽鏃堕棿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.JobSeekingStatus">
-            <summary>
-            姹傝亴鐘舵��
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.WorkSeniority">
-            <summary>
-            宸ヤ綔璧勫巻
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.WorkExperience">
-            <summary>
-            宸ヤ綔缁忛獙
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.Height">
-            <summary>
-            韬珮
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.UserResume.Weight">
-            <summary>
-            浣撻噸
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.User">
@@ -1559,6 +1714,11 @@
             鎬у埆
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.User.Birthday">
+            <summary>
+            鐢熸棩
+            </summary>
+        </member>
         <member name="P:FlexJobApi.Core.User.Age">
             <summary>
             骞撮緞
@@ -1607,6 +1767,56 @@
         <member name="P:FlexJobApi.Core.User.City">
             <summary>
             甯搁┗鍩庡競
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.User.PersonalIdentityCode">
+            <summary>
+            韬唤缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.User.PersonalIdentity">
+            <summary>
+            韬唤
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.User.EducationalBackgroundCode">
+            <summary>
+            瀛﹀巻缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.User.EducationalBackground">
+            <summary>
+            瀛﹀巻
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.User.FreeTime">
+            <summary>
+            绌洪棽鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.User.JobSeekingStatus">
+            <summary>
+            姹傝亴鐘舵��
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.User.WorkSeniority">
+            <summary>
+            宸ヤ綔璧勫巻
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.User.WorkExperience">
+            <summary>
+            宸ヤ綔缁忛獙
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.User.Height">
+            <summary>
+            韬珮
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.User.Weight">
+            <summary>
+            浣撻噸
             </summary>
         </member>
         <member name="P:FlexJobApi.Core.User.Remark">
@@ -1959,6 +2169,11 @@
             鐢ㄦ埛淇℃伅
             </summary>
         </member>
+        <member name="F:FlexJobApi.Core.EnumResourceController.UserResume">
+            <summary>
+            鐢ㄦ埛绠�鍘�
+            </summary>
+        </member>
         <member name="F:FlexJobApi.Core.EnumResourceController.Enterprise">
             <summary>
             浼佷笟淇℃伅
@@ -1997,6 +2212,11 @@
         <member name="F:FlexJobApi.Core.EnumResourceService.FlexJobServer">
             <summary>
             鐏垫椿鐢ㄥ伐鏈嶅姟
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumResourceService.CommonServer">
+            <summary>
+            閫氱敤鏈嶅姟
             </summary>
         </member>
         <member name="F:FlexJobApi.Core.EnumResourceService.UserServer">
@@ -2615,21 +2835,6 @@
             缂栧彿
             </summary>
         </member>
-        <member name="T:FlexJobApi.Core.Models.Common.DictionaryDataQueryModel">
-            <summary>
-            鏁版嵁瀛楀吀鏌ヨ妯″瀷
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.Models.Common.DictionaryDataQueryModel.Code">
-            <summary>
-            缂栧彿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.Models.Common.DictionaryDataQueryModel.Content">
-            <summary>
-            鍚嶇О
-            </summary>
-        </member>
         <member name="T:FlexJobApi.Core.DeleteDictionaryCategoryCommand">
             <summary>
             鍒犻櫎鏁版嵁瀛楀吀绫诲埆
@@ -3003,6 +3208,136 @@
         <member name="P:FlexJobApi.Core.GetDictionaryDatasQueryResultItemCategory.Name">
             <summary>
             鍚嶇О
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetResourceFieldsQuery">
+            <summary>
+            鑾峰彇璧勬簮瀛楁
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourceFieldsQuery.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetResourceFieldsQueryResultItem">
+            <summary>
+            鑾峰彇璧勬簮瀛楁-缁撴灉-椤�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourceFieldsQueryResultItem.Code">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourceFieldsQueryResultItem.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetResourcesQuery">
+            <summary>
+            鑾峰彇璧勬簮鍒楄〃
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQuery.Method">
+            <summary>
+            璇锋眰鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQuery.Keywords">
+            <summary>
+            鍏抽敭瀛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQuery.RoleId">
+            <summary>
+            瑙掕壊Id
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetResourcesQueryResultItem">
+            <summary>
+            鑾峰彇璧勬簮鍒楄〃-缁撴灉-椤�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.IsChecked">
+            <summary>
+            鏄惁閫変腑锛堢敤浜庤鑹叉巿鏉冿級
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Controller">
+            <summary>
+            鎺у埗鍣�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ActionName">
+            <summary>
+            濮旀墭鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Code">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Method">
+            <summary>
+            璇锋眰鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Route">
+            <summary>
+            璺敱
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.RequestTypeName">
+            <summary>
+            璇锋眰绫诲瀷鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.RequestTypeFullName">
+            <summary>
+            璇锋眰绫诲瀷鍏ㄥ悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ResponseTypeName">
+            <summary>
+            鍝嶅簲绫诲瀷鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ResponseTypeFullName">
+            <summary>
+            鍝嶅簲绫诲瀷鍏ㄥ悕
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.SaveScheduleJobDetailCommand">
+            <summary>
+            淇濆瓨浠诲姟璋冨害-浣滀笟
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveScheduleJobDetailCommand.ResourceId">
+            <summary>
+            璧勬簮Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveScheduleJobDetailCommand.Body">
+            <summary>
+            璇锋眰鏁版嵁
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveScheduleJobDetailCommand.Cron">
+            <summary>
+            Cron琛ㄨ揪寮�
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.DeleteTaskInfoCommand">
@@ -4739,116 +5074,6 @@
             澶囨敞
             </summary>
         </member>
-        <member name="T:FlexJobApi.Core.GetResourceFieldsQuery">
-            <summary>
-            鑾峰彇璧勬簮瀛楁
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourceFieldsQuery.Id">
-            <summary>
-            Id
-            </summary>
-        </member>
-        <member name="T:FlexJobApi.Core.GetResourceFieldsQueryResultItem">
-            <summary>
-            鑾峰彇璧勬簮瀛楁-缁撴灉-椤�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourceFieldsQueryResultItem.Code">
-            <summary>
-            缂栧彿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourceFieldsQueryResultItem.Name">
-            <summary>
-            鍚嶇О
-            </summary>
-        </member>
-        <member name="T:FlexJobApi.Core.GetResourcesQuery">
-            <summary>
-            鑾峰彇璧勬簮鍒楄〃
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQuery.Method">
-            <summary>
-            璇锋眰鏂瑰紡
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQuery.Keywords">
-            <summary>
-            鍏抽敭瀛�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQuery.RoleId">
-            <summary>
-            瑙掕壊Id
-            </summary>
-        </member>
-        <member name="T:FlexJobApi.Core.GetResourcesQueryResultItem">
-            <summary>
-            鑾峰彇璧勬簮鍒楄〃-缁撴灉-椤�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Id">
-            <summary>
-            Id
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.IsChecked">
-            <summary>
-            鏄惁閫変腑锛堢敤浜庤鑹叉巿鏉冿級
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Controller">
-            <summary>
-            鎺у埗鍣�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ActionName">
-            <summary>
-            濮旀墭鍚嶇О
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Code">
-            <summary>
-            缂栧彿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Name">
-            <summary>
-            鍚嶇О
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Method">
-            <summary>
-            璇锋眰鏂瑰紡
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Route">
-            <summary>
-            璺敱
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.RequestTypeName">
-            <summary>
-            璇锋眰绫诲瀷鍚嶇О
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.RequestTypeFullName">
-            <summary>
-            璇锋眰绫诲瀷鍏ㄥ悕
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ResponseTypeName">
-            <summary>
-            鍝嶅簲绫诲瀷鍚嶇О
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ResponseTypeFullName">
-            <summary>
-            鍝嶅簲绫诲瀷鍏ㄥ悕
-            </summary>
-        </member>
         <member name="T:FlexJobApi.Core.DeleteRoleCommand">
             <summary>
             鍒犻櫎瑙掕壊
@@ -5099,6 +5324,621 @@
             鏄惁閫変腑
             </summary>
         </member>
+        <member name="T:FlexJobApi.Core.DeleteUserResumeCredentialCommand">
+            <summary>
+            鍒犻櫎鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.SaveUserResumeCredentialCommand">
+            <summary>
+            淇濆瓨鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.TypeCode">
+            <summary>
+            璇佷功绫诲瀷缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.Code">
+            <summary>
+            璇佷功缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.IsForever">
+            <summary>
+            姘镐箙璇佷功
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.StartDate">
+            <summary>
+            寮�濮嬫棩鏈�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.EndDate">
+            <summary>
+            缁撴潫鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.IssueUnit">
+            <summary>
+            鍙戣瘉鍗曚綅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.Img">
+            <summary>
+            璇佷功姝i潰鐓х墖
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.BackImg">
+            <summary>
+            璇佷功鍙嶉潰鐓х墖
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.SaveUserResumeDetailCommand">
+            <summary>
+            淇濆瓨鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeDetailCommand.Height">
+            <summary>
+            韬珮
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeDetailCommand.Weight">
+            <summary>
+            浣撻噸
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeDetailCommand.Photos">
+            <summary>
+            鐢熸椿鐓�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.SaveUserResumeJobSeekingCommand">
+            <summary>
+            淇濆瓨鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeJobSeekingCommand.UserExpectJobs">
+            <summary>
+            鐢ㄦ埛淇℃伅鏈熸湜宀椾綅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeJobSeekingCommand.FreeTime">
+            <summary>
+            绌洪棽鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeJobSeekingCommand.JobSeekingStatus">
+            <summary>
+            姹傝亴鐘舵��
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.SaveUserResumePersonalCommand">
+            <summary>
+            淇濆瓨鐢ㄦ埛绠�鍘�-涓汉淇℃伅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.Avatar">
+            <summary>
+            澶村儚
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.Identity">
+            <summary>
+            韬唤璇佸彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.PersonalIdentityCode">
+            <summary>
+            韬唤缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.EducationalBackgroundCode">
+            <summary>
+            瀛﹀巻缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.ProvinceCode">
+            <summary>
+            甯搁┗鐪佷唤缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.CityCode">
+            <summary>
+            甯搁┗鍩庡競缂栧彿
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.SaveUserResumeWorkExperienceCommand">
+            <summary>
+            淇濆瓨鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeWorkExperienceCommand.WorkSeniority">
+            <summary>
+            宸ヤ綔璧勫巻
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.SaveUserResumeWorkExperienceCommand.WorkExperience">
+            <summary>
+            宸ヤ綔缁忛獙
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeCredentialQuery">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialQuery.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeCredentialQueryResult">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功-缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.Id">
+            <summary>
+            璧勬牸璇佷功Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.TypeCode">
+            <summary>
+            璇佷功绫诲瀷缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.TypeContent">
+            <summary>
+            璇佷功绫诲瀷
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.Code">
+            <summary>
+            璇佷功缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.IsForever">
+            <summary>
+            姘镐箙璇佷功
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.StartDate">
+            <summary>
+            寮�濮嬫棩鏈�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.EndDate">
+            <summary>
+            缁撴潫鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.IssueUnit">
+            <summary>
+            鍙戣瘉鍗曚綅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.Img">
+            <summary>
+            璇佷功姝i潰鐓х墖
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.BackImg">
+            <summary>
+            璇佷功鍙嶉潰鐓х墖
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeCredentialsQuery">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功鍒楄〃
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeCredentialsQueryResultItem">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功鍒楄〃-缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialsQueryResultItem.Id">
+            <summary>
+            璧勬牸璇佷功Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialsQueryResultItem.TypeCode">
+            <summary>
+            璇佷功绫诲瀷缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeCredentialsQueryResultItem.TypeContent">
+            <summary>
+            璇佷功绫诲瀷
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeDetailQuery">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeDetailQueryResult">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅-缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeDetailQueryResult.Height">
+            <summary>
+            韬珮
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeDetailQueryResult.Weight">
+            <summary>
+            浣撻噸
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeDetailQueryResult.Photos">
+            <summary>
+            鐢熸椿鐓�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeJobSeekingQuery">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeJobSeekingQueryResult">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜-缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResult.UserExpectJobs">
+            <summary>
+            鐢ㄦ埛淇℃伅鏈熸湜宀椾綅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResult.FreeTime">
+            <summary>
+            绌洪棽鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResult.JobSeekingStatus">
+            <summary>
+            姹傝亴鐘舵��
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeJobSeekingQueryResultExpectJob">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜-缁撴灉-鏈熸湜宀椾綅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResultExpectJob.ExpectJobParentCode">
+            <summary>
+            鏈熸湜宀椾綅涓婄骇缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResultExpectJob.ExpectJobCode">
+            <summary>
+            鏈熸湜宀椾綅缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResultExpectJob.ExpectJobContent">
+            <summary>
+            鏈熸湜宀椾綅
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumePersonalQuery">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-涓汉淇℃伅
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumePersonalQueryResult">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-涓汉淇℃伅-缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.Avatar">
+            <summary>
+            澶村儚
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.Identity">
+            <summary>
+            韬唤璇佸彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.PersonalIdentityCode">
+            <summary>
+            韬唤缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.PersonalIdentityContent">
+            <summary>
+            韬唤
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.EducationalBackgroundCode">
+            <summary>
+            瀛﹀巻缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.EducationalBackgroundContent">
+            <summary>
+            瀛﹀巻
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.ProvinceCode">
+            <summary>
+            甯搁┗鐪佷唤缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.ProvinceContent">
+            <summary>
+            甯搁┗鐪佷唤
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.CityCode">
+            <summary>
+            甯搁┗鍩庡競缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.CityContent">
+            <summary>
+            甯搁┗鍩庡競
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeQuery">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQuery.UserId">
+            <summary>
+            鐢ㄦ埛Id
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeQueryResult">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Id">
+            <summary>
+            鐢ㄦ埛Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Avatar">
+            <summary>
+            澶村儚
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PhoneNumber">
+            <summary>
+            鎵嬫満鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Identity">
+            <summary>
+            韬唤璇佸彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Age">
+            <summary>
+            骞撮緞
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.IsReal">
+            <summary>
+            鏄惁瀹炲悕
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.TaskCount">
+            <summary>
+            涓婂矖娆℃暟
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ProvinceCode">
+            <summary>
+            甯搁┗鐪佷唤缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ProvinceContent">
+            <summary>
+            甯搁┗鐪佷唤
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.CityCode">
+            <summary>
+            甯搁┗鍩庡競缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.CityContent">
+            <summary>
+            甯搁┗鍩庡競
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PersonalIdentityCode">
+            <summary>
+            韬唤缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PersonalIdentityContent">
+            <summary>
+            韬唤
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EducationalBackgroundCode">
+            <summary>
+            瀛﹀巻缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EducationalBackgroundContent">
+            <summary>
+            瀛﹀巻
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserExpectJobs">
+            <summary>
+            鐢ㄦ埛淇℃伅鏈熸湜宀椾綅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.FreeTime">
+            <summary>
+            绌洪棽鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.JobSeekingStatus">
+            <summary>
+            姹傝亴鐘舵��
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserCredentials">
+            <summary>
+            鐢ㄦ埛淇℃伅璧勬牸璇佷功
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.WorkSeniority">
+            <summary>
+            宸ヤ綔璧勫巻
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.WorkExperience">
+            <summary>
+            宸ヤ綔缁忛獙
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Height">
+            <summary>
+            韬珮
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Weight">
+            <summary>
+            浣撻噸
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Photos">
+            <summary>
+            鐢熸椿鐓�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PhotoImgs">
+            <summary>
+            鐢熸椿鐓�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeQueryResultExpectJob">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultExpectJob.PersonalIdentityCode">
+            <summary>
+            鏈熸湜宀椾綅缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultExpectJob.PersonalIdentityContent">
+            <summary>
+            鏈熸湜宀椾綅
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeQueryResultCredential">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.TypeCode">
+            <summary>
+            璇佷功绫诲瀷缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.TypeContent">
+            <summary>
+            璇佷功绫诲瀷
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.Code">
+            <summary>
+            璇佷功缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.IsForever">
+            <summary>
+            姘镐箙璇佷功
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.StartDate">
+            <summary>
+            寮�濮嬫棩鏈�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.EndDate">
+            <summary>
+            缁撴潫鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.IssueUnit">
+            <summary>
+            鍙戣瘉鍗曚綅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.Img">
+            <summary>
+            璇佷功姝i潰鐓х墖
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.BackImg">
+            <summary>
+            璇佷功鍙嶉潰鐓х墖
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeQueryResultPhoto">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeQueryResultPhoto.Img">
+            <summary>
+            鐓х墖
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeWorkExperienceQuery">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetUserResumeWorkExperienceQueryResult">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙-缁撴灉
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeWorkExperienceQueryResult.WorkSeniority">
+            <summary>
+            宸ヤ綔璧勫巻
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetUserResumeWorkExperienceQueryResult.WorkExperience">
+            <summary>
+            宸ヤ綔缁忛獙
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.SetUserInfoRolesCommand">
             <summary>
             璁剧疆鐢ㄦ埛淇℃伅瑙掕壊
@@ -5239,150 +6079,19 @@
             鏄惁閫変腑
             </summary>
         </member>
-        <member name="T:FlexJobApi.Core.GetUserResumeQuery">
+        <member name="T:FlexJobApi.Core.UserRepository">
             <summary>
-            鏌ヨ鐢ㄦ埛绠�鍘�
+            鐢ㄦ埛浠撳簱
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQuery.UserId">
+        <member name="M:FlexJobApi.Core.UserRepository.GetPersonalQueryable(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User},System.Boolean,FlexJobApi.Core.CurrentLogier)">
             <summary>
-            鐢ㄦ埛Id
+            鑾峰彇涓汉鐢ㄦ埛鏌ヨ
             </summary>
-        </member>
-        <member name="T:FlexJobApi.Core.GetUserResumeQueryResult">
-            <summary>
-            鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Id">
-            <summary>
-            Id
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Avatar">
-            <summary>
-            澶村儚
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Name">
-            <summary>
-            濮撳悕
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PhoneNumber">
-            <summary>
-            鎵嬫満鍙�
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Identity">
-            <summary>
-            韬唤璇佸彿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Gender">
-            <summary>
-            鎬у埆
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Age">
-            <summary>
-            骞撮緞
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.IsReal">
-            <summary>
-            鏄惁瀹炲悕
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.TaskCount">
-            <summary>
-            涓婂矖娆℃暟
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ProvinceCode">
-            <summary>
-            甯搁┗鐪佷唤缂栧彿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ProvinceContent">
-            <summary>
-            甯搁┗鐪佷唤
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.CityCode">
-            <summary>
-            甯搁┗鍩庡競缂栧彿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.CityContent">
-            <summary>
-            甯搁┗鍩庡競
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PersonalIdentityCode">
-            <summary>
-            韬唤缂栧彿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PersonalIdentityContent">
-            <summary>
-            韬唤
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EducationalBackgroundCode">
-            <summary>
-            瀛﹀巻缂栧彿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EducationalBackgroundContent">
-            <summary>
-            瀛﹀巻
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserExpectJobs">
-            <summary>
-            鐢ㄦ埛淇℃伅鏈熸湜宀椾綅
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.FreeTime">
-            <summary>
-            绌洪棽鏃堕棿
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.JobSeekingStatus">
-            <summary>
-            姹傝亴鐘舵��
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserCredentials">
-            <summary>
-            鐢ㄦ埛淇℃伅璧勬牸璇佷功
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.WorkSeniority">
-            <summary>
-            宸ヤ綔璧勫巻
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.WorkExperience">
-            <summary>
-            宸ヤ綔缁忛獙
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Height">
-            <summary>
-            韬珮
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Weight">
-            <summary>
-            浣撻噸
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Photos">
-            <summary>
-            鐢熸椿鐓�
-            </summary>
+            <param name="rep"></param>
+            <param name="tracking"></param>
+            <param name="logier"></param>
+            <returns></returns>
         </member>
         <member name="T:FlexJobApi.Core.AliyunOptions">
             <summary>
@@ -5917,6 +6626,41 @@
             閲婃斁闈炴墭绠¤祫婧�
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.IFriendlyResult.TraceId">
+            <summary>
+            璺熻釜Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.IFriendlyResult.Code">
+            <summary>
+            鐘舵�佺爜
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.IFriendlyResult.ErrorCode">
+            <summary>
+            閿欒鐮�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.IFriendlyResult.Success">
+            <summary>
+            鎵ц鎴愬姛
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.IFriendlyResult.Msg">
+            <summary>
+            閿欒淇℃伅
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.IFriendlyResult.Extras">
+            <summary>
+            闄勫姞鏁版嵁
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.IFriendlyResult.Timestamp">
+            <summary>
+            鏃堕棿鎴�
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.FriendlyResult`1">
             <summary>
             鍙嬪ソ杩斿洖鍊�
@@ -6133,6 +6877,16 @@
             </summary>
             <returns></returns>
         </member>
+        <member name="P:FlexJobApi.Core.TokenDataModel.AccessToken">
+            <summary>
+            鐢ㄦ埛璁块棶浠ょ墝
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.TokenDataModel.RefreshToken">
+            <summary>
+            鍒锋柊浠ょ墝
+            </summary>
+        </member>
         <member name="M:FlexJobApi.Core.ResourceHttpUtils.SendHttpAsync``2(``0,FlexJobApi.Core.IResourceHttpProvider)">
             <summary>
             鍙戦�丠TTP璇锋眰
@@ -6143,11 +6897,11 @@
             <param name="provider"></param>
             <returns></returns>
         </member>
-        <member name="M:FlexJobApi.Core.ResourceHttpUtils.GetHealthyServiceDomain(FlexJobApi.Core.ResourceModel)">
+        <member name="M:FlexJobApi.Core.ResourceHttpUtils.GetHealthyServiceDomain(System.String)">
             <summary>
             鑾峰彇鍋ュ悍鏈嶅姟鍩熷悕
             </summary>
-            <param name="resource"></param>
+            <param name="serviceName"></param>
             <returns></returns>
         </member>
         <member name="P:FlexJobApi.Core.ResourceModel.TraceId">
@@ -6300,16 +7054,6 @@
             璧勬簮宸ュ叿
             </summary>
         </member>
-        <member name="M:FlexJobApi.Core.ResourceUtils.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.ResourceUtils.BuildDynamicControllersAsync">
             <summary>
             鐢熸垚鍔ㄦ�佹帶鍒跺櫒
@@ -6345,6 +7089,17 @@
             <param name="type"></param>
             <returns></returns>
         </member>
+        <member name="T:FlexJobApi.Core.DbJobPersistence">
+            <summary>
+            浣滀笟鎸佷箙鍖栵紙鏁版嵁搴擄級
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.Core.DbJobPersistence.PreloadAsync(System.Threading.CancellationToken)">
+            <summary>
+            浣滀笟璋冨害鏈嶅姟鍚姩鏃�
+            </summary>
+            <returns></returns>
+        </member>
         <member name="M:FlexJobApi.Core.AliyunSmsUtils.SendAsync(System.String,FlexJobApi.Core.EnumSmsTemplateCode,System.String,System.Threading.CancellationToken)">
             <summary>
             鍙戦�佺煭淇�
diff --git a/FlexJobApi.Core/Models/Common/DictionaryDataQueryModel.cs b/FlexJobApi.Core/Models/Common/DictionaryDataQueryModel.cs
deleted file mode 100644
index 667c582..0000000
--- a/FlexJobApi.Core/Models/Common/DictionaryDataQueryModel.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FlexJobApi.Core.Models.Common
-{
-    /// <summary>
-    /// 鏁版嵁瀛楀吀鏌ヨ妯″瀷
-    /// </summary>
-    public class DictionaryDataQueryModel
-    {
-        /// <summary>
-        /// 缂栧彿
-        /// </summary>
-        public string Code { get; set; }
-
-        /// <summary>
-        /// 鍚嶇О
-        /// </summary>
-        public string Content { get; set; }
-    }
-}
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs
similarity index 100%
rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs
rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs
similarity index 100%
rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs
rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs
similarity index 100%
rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs
rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs
similarity index 100%
rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs
rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs
similarity index 100%
rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs
rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs
similarity index 100%
rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs
rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs
similarity index 100%
rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs
rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs
similarity index 100%
rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs
rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs
similarity index 100%
rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs
rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs
diff --git a/FlexJobApi.Core/Models/UserServer/Resources/Queries/GetResourceFieldsQuery.cs b/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourceFieldsQuery.cs
similarity index 100%
rename from FlexJobApi.Core/Models/UserServer/Resources/Queries/GetResourceFieldsQuery.cs
rename to FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourceFieldsQuery.cs
diff --git a/FlexJobApi.Core/Models/UserServer/Resources/Queries/GetResourcesQuery.cs b/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourcesQuery.cs
similarity index 100%
rename from FlexJobApi.Core/Models/UserServer/Resources/Queries/GetResourcesQuery.cs
rename to FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourcesQuery.cs
diff --git a/FlexJobApi.Core/Models/CommonServer/Schedules/Commands/SaveScheduleJobDetailCommand.cs b/FlexJobApi.Core/Models/CommonServer/Schedules/Commands/SaveScheduleJobDetailCommand.cs
new file mode 100644
index 0000000..c03d847
--- /dev/null
+++ b/FlexJobApi.Core/Models/CommonServer/Schedules/Commands/SaveScheduleJobDetailCommand.cs
@@ -0,0 +1,31 @@
+锘縰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.Resource])]
+    public class SaveScheduleJobDetailCommand : IRequest<bool>
+    {
+        /// <summary>
+        /// 璧勬簮Id
+        /// </summary>
+        public Guid ResourceId { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鏁版嵁
+        /// </summary>
+        public string Body { get; set; }
+
+        /// <summary>
+        /// Cron琛ㄨ揪寮�
+        /// </summary>
+        public string Cron { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs
index b20ca6f..af6affd 100644
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs
+++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs
@@ -1,5 +1,4 @@
-锘縰sing FlexJobApi.Core.Models.Common;
-using Mapster;
+锘縰sing Mapster;
 using MediatR;
 using Newtonsoft.Json;
 using System;
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs
new file mode 100644
index 0000000..b9bf3d2
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鍒犻櫎鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
+    /// </summary>
+    [Resource([EnumResourceController.UserResume])]
+    public class DeleteUserResumeCredentialCommand : DeleteDataCommand
+    {
+
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs
new file mode 100644
index 0000000..4da28c3
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs
@@ -0,0 +1,62 @@
+锘縰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.UserResume])]
+    public class SaveUserResumeCredentialCommand : SaveDataCommand
+    {
+        /// <summary>
+        /// 璇佷功绫诲瀷缂栧彿
+        /// </summary>
+        [Required]
+        public string TypeCode { get; set; }
+
+        /// <summary>
+        /// 璇佷功缂栧彿
+        /// </summary>
+        [MaxLength(128)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 姘镐箙璇佷功
+        /// </summary>
+        public bool IsForever { get; set; }
+
+        /// <summary>
+        /// 寮�濮嬫棩鏈�
+        /// </summary>
+        [Required]
+        public DateTime StartDate { get; set; }
+
+        /// <summary>
+        /// 缁撴潫鏃ユ湡
+        /// </summary>
+        [Required]
+        public DateTime EndDate { get; set; }
+
+        /// <summary>
+        /// 鍙戣瘉鍗曚綅
+        /// </summary>
+        public string IssueUnit { get; set; }
+
+        /// <summary>
+        /// 璇佷功姝i潰鐓х墖
+        /// </summary>
+        [Required]
+        public string Img { get; set; }
+
+        /// <summary>
+        /// 璇佷功鍙嶉潰鐓х墖
+        /// </summary>
+        public string BackImg { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs
new file mode 100644
index 0000000..b84a2ed
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.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.UserResume])]
+    public class SaveUserResumeDetailCommand : IRequest<Guid>
+    {
+        public SaveUserResumeDetailCommand()
+        {
+            Photos = [];
+        }
+
+        /// <summary>
+        /// 韬珮
+        /// </summary>
+        public int? Height { get; set; }
+
+        /// <summary>
+        /// 浣撻噸
+        /// </summary>
+        public int? Weight { get; set; }
+
+        /// <summary>
+        /// 鐢熸椿鐓�
+        /// </summary>
+        public List<string> Photos { get; set; }
+
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs
new file mode 100644
index 0000000..61087bf
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs
@@ -0,0 +1,41 @@
+锘縰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.UserResume])]
+    public class SaveUserResumeJobSeekingCommand : IRequest<Guid>
+    {
+        public SaveUserResumeJobSeekingCommand()
+        {
+            UserExpectJobs = [];
+        }
+
+        /// <summary>
+        /// 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅
+        /// </summary>
+        [Required]
+        public List<string> UserExpectJobs { get; set; }
+
+        /// <summary>
+        /// 绌洪棽鏃堕棿
+        /// </summary>
+        [Required]
+        public EnumPersonalFreeTime? FreeTime { get; set; }
+
+        /// <summary>
+        /// 姹傝亴鐘舵��
+        /// </summary>
+        [Required]
+        public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; }
+
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs
new file mode 100644
index 0000000..e70b71f
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs
@@ -0,0 +1,59 @@
+锘縰sing Furion.DataValidation;
+using 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.UserResume])]
+    public class SaveUserResumePersonalCommand : IRequest<Guid>
+    {
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        public string Avatar { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        [MaxLength(32)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 韬唤璇佸彿
+        /// </summary>
+        [Required, DataValidation(ValidationTypes.IDCard)]
+        public string Identity { get; set; }
+
+        /// <summary>
+        /// 韬唤缂栧彿
+        /// </summary>
+        [Required]
+        public string PersonalIdentityCode { get; set; }
+
+        /// <summary>
+        /// 瀛﹀巻缂栧彿
+        /// </summary>
+        [Required]
+        public string EducationalBackgroundCode { get; set; }
+
+        /// <summary>
+        /// 甯搁┗鐪佷唤缂栧彿
+        /// </summary>
+        [Required]
+        public string ProvinceCode { get; set; }
+
+        /// <summary>
+        /// 甯搁┗鍩庡競缂栧彿
+        /// </summary>
+        [Required]
+        public string CityCode { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs
new file mode 100644
index 0000000..4fd4ace
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs
@@ -0,0 +1,27 @@
+锘縰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.UserResume])]
+    public class SaveUserResumeWorkExperienceCommand : IRequest<Guid>
+    {
+        /// <summary>
+        /// 宸ヤ綔璧勫巻
+        /// </summary>
+        public string WorkSeniority { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔缁忛獙
+        /// </summary>
+        public string WorkExperience { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs
new file mode 100644
index 0000000..15c6b9b
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs
@@ -0,0 +1,78 @@
+锘縰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.UserResume])]
+    public class GetUserResumeCredentialQuery : IRequest<GetUserResumeCredentialQueryResult>
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public Guid Id { get; set; }
+    }
+
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功-缁撴灉
+    /// </summary>
+    public class GetUserResumeCredentialQueryResult
+    {
+        /// <summary>
+        /// 璧勬牸璇佷功Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 璇佷功绫诲瀷缂栧彿
+        /// </summary>
+        public string TypeCode { get; set; }
+
+        /// <summary>
+        /// 璇佷功绫诲瀷
+        /// </summary>
+        public string TypeContent { get; set; }
+
+        /// <summary>
+        /// 璇佷功缂栧彿
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 姘镐箙璇佷功
+        /// </summary>
+        public bool IsForever { get; set; }
+
+        /// <summary>
+        /// 寮�濮嬫棩鏈�
+        /// </summary>
+        public DateTime StartDate { get; set; }
+
+        /// <summary>
+        /// 缁撴潫鏃ユ湡
+        /// </summary>
+        public DateTime EndDate { get; set; }
+
+        /// <summary>
+        /// 鍙戣瘉鍗曚綅
+        /// </summary>
+        public string IssueUnit { get; set; }
+
+        /// <summary>
+        /// 璇佷功姝i潰鐓х墖
+        /// </summary>
+        public string Img { get; set; }
+
+        /// <summary>
+        /// 璇佷功鍙嶉潰鐓х墖
+        /// </summary>
+        public string BackImg { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs
new file mode 100644
index 0000000..dd3004f
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs
@@ -0,0 +1,39 @@
+锘縰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.UserResume])]
+    public class GetUserResumeCredentialsQuery : IRequest<List<GetUserResumeCredentialsQueryResultItem>>
+    {
+    }
+
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功鍒楄〃-缁撴灉
+    /// </summary>
+    public class GetUserResumeCredentialsQueryResultItem
+    {
+        /// <summary>
+        /// 璧勬牸璇佷功Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 璇佷功绫诲瀷缂栧彿
+        /// </summary>
+        public string TypeCode { get; set; }
+
+        /// <summary>
+        /// 璇佷功绫诲瀷
+        /// </summary>
+        public string TypeContent { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs
new file mode 100644
index 0000000..a95460a
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs
@@ -0,0 +1,45 @@
+锘縰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.UserResume])]
+    public class GetUserResumeDetailQuery : IRequest<GetUserResumeDetailQueryResult>
+    { 
+    
+    }
+
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅-缁撴灉
+    /// </summary>
+    public class GetUserResumeDetailQueryResult
+    {
+        public GetUserResumeDetailQueryResult()
+        {
+            Photos = [];
+        }
+
+        /// <summary>
+        /// 韬珮
+        /// </summary>
+        public int? Height { get; set; }
+
+        /// <summary>
+        /// 浣撻噸
+        /// </summary>
+        public int? Weight { get; set; }
+
+        /// <summary>
+        /// 鐢熸椿鐓�
+        /// </summary>
+        public List<string> Photos { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs
new file mode 100644
index 0000000..52da082
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs
@@ -0,0 +1,67 @@
+锘縰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.UserResume])]
+    public class GetUserResumeJobSeekingQuery : IRequest<GetUserResumeJobSeekingQueryResult>
+    {
+
+    }
+
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜-缁撴灉
+    /// </summary>
+    public class GetUserResumeJobSeekingQueryResult
+    {
+        public GetUserResumeJobSeekingQueryResult()
+        {
+            UserExpectJobs = [];
+        }
+
+        /// <summary>
+        /// 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅
+        /// </summary>
+        public List<GetUserResumeJobSeekingQueryResultExpectJob> UserExpectJobs { get; set; }
+
+        /// <summary>
+        /// 绌洪棽鏃堕棿
+        /// </summary>
+        public EnumPersonalFreeTime? FreeTime { get; set; }
+
+        /// <summary>
+        /// 姹傝亴鐘舵��
+        /// </summary>
+        public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; }
+
+    }
+
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜-缁撴灉-鏈熸湜宀椾綅
+    /// </summary>
+    public class GetUserResumeJobSeekingQueryResultExpectJob
+    {
+        /// <summary>
+        /// 鏈熸湜宀椾綅涓婄骇缂栧彿
+        /// </summary>
+        public string ExpectJobParentCode { get; set; }
+
+        /// <summary>
+        /// 鏈熸湜宀椾綅缂栧彿
+        /// </summary>
+        public string ExpectJobCode { get; set; }
+
+        /// <summary>
+        /// 鏈熸湜宀椾綅
+        /// </summary>
+        public string ExpectJobContent { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs
new file mode 100644
index 0000000..56d9c6a
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs
@@ -0,0 +1,81 @@
+锘縰sing Furion.DataValidation;
+using 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.UserResume])]
+    public class GetUserResumePersonalQuery : IRequest<GetUserResumePersonalQueryResult>
+    { 
+    
+    }
+
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�-涓汉淇℃伅-缁撴灉
+    /// </summary>
+    public class GetUserResumePersonalQueryResult
+    {
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        public string Avatar { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 韬唤璇佸彿
+        /// </summary>
+        public string Identity { get; set; }
+
+        /// <summary>
+        /// 韬唤缂栧彿
+        /// </summary>
+        public string PersonalIdentityCode { get; set; }
+
+        /// <summary>
+        /// 韬唤
+        /// </summary>
+        public string PersonalIdentityContent { get; set; }
+
+        /// <summary>
+        /// 瀛﹀巻缂栧彿
+        /// </summary>
+        public string EducationalBackgroundCode { get; set; }
+
+        /// <summary>
+        /// 瀛﹀巻
+        /// </summary>
+        public string EducationalBackgroundContent { get; set; }
+
+        /// <summary>
+        /// 甯搁┗鐪佷唤缂栧彿
+        /// </summary>
+        public string ProvinceCode { get; set; }
+
+        /// <summary>
+        /// 甯搁┗鐪佷唤
+        /// </summary>
+        public string ProvinceContent { get; set; }
+
+        /// <summary>
+        /// 甯搁┗鍩庡競缂栧彿
+        /// </summary>
+        public string CityCode { get; set; }
+
+        /// <summary>
+        /// 甯搁┗鍩庡競
+        /// </summary>
+        public string CityContent { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs
new file mode 100644
index 0000000..c71f632
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs
@@ -0,0 +1,254 @@
+锘縰sing Mapster;
+using MediatR;
+using Newtonsoft.Json;
+using Swashbuckle.AspNetCore.Annotations;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�
+    /// </summary>
+    [Resource([EnumResourceController.UserResume])]
+    public class GetUserResumeQuery : IRequest<GetUserResumeQueryResult>
+    {
+        /// <summary>
+        /// 鐢ㄦ埛Id
+        /// </summary>
+        public Guid? UserId { get; set; }
+    }
+
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉
+    /// </summary>
+    public class GetUserResumeQueryResult
+    {
+        public GetUserResumeQueryResult()
+        {
+            UserExpectJobs = [];
+            UserCredentials = [];
+            Photos = [];
+        }
+
+        /// <summary>
+        /// 鐢ㄦ埛Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        public string Avatar { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満鍙�
+        /// </summary>
+        public string PhoneNumber { get; set; }
+
+        /// <summary>
+        /// 韬唤璇佸彿
+        /// </summary>
+        public string Identity { get; set; }
+
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public EnumUserGender? Gender { get; set; }
+
+        /// <summary>
+        /// 骞撮緞
+        /// </summary>
+        public int? Age { get; set; }
+
+        /// <summary>
+        /// 鏄惁瀹炲悕
+        /// </summary>
+        public bool IsReal { get; set; }
+
+        /// <summary>
+        /// 涓婂矖娆℃暟
+        /// </summary>
+        [AdaptIgnore]
+        public int TaskCount { get; set; }
+
+        /// <summary>
+        /// 甯搁┗鐪佷唤缂栧彿
+        /// </summary>
+        public string ProvinceCode { get; set; }
+
+        /// <summary>
+        /// 甯搁┗鐪佷唤
+        /// </summary>
+        public string ProvinceContent { get; set; }
+
+        /// <summary>
+        /// 甯搁┗鍩庡競缂栧彿
+        /// </summary>
+        public string CityCode { get; set; }
+
+        /// <summary>
+        /// 甯搁┗鍩庡競
+        /// </summary>
+        public string CityContent { get; set; }
+
+        /// <summary>
+        /// 韬唤缂栧彿
+        /// </summary>
+        public string PersonalIdentityCode { get; set; }
+
+        /// <summary>
+        /// 韬唤
+        /// </summary>
+        public string PersonalIdentityContent { get; set; }
+
+        /// <summary>
+        /// 瀛﹀巻缂栧彿
+        /// </summary>
+        public string EducationalBackgroundCode { get; set; }
+
+        /// <summary>
+        /// 瀛﹀巻
+        /// </summary>
+        public string EducationalBackgroundContent { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅
+        /// </summary>
+        public List<GetUserResumeQueryResultExpectJob> UserExpectJobs { get; set; }
+
+        /// <summary>
+        /// 绌洪棽鏃堕棿
+        /// </summary>
+        public EnumPersonalFreeTime? FreeTime { get; set; }
+
+        /// <summary>
+        /// 姹傝亴鐘舵��
+        /// </summary>
+        public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛淇℃伅璧勬牸璇佷功
+        /// </summary>
+        public List<GetUserResumeQueryResultCredential> UserCredentials { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔璧勫巻
+        /// </summary>
+        public string WorkSeniority { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔缁忛獙
+        /// </summary>
+        public string WorkExperience { get; set; }
+
+        /// <summary>
+        /// 韬珮
+        /// </summary>
+        public int? Height { get; set; }
+
+        /// <summary>
+        /// 浣撻噸
+        /// </summary>
+        public int? Weight { get; set; }
+
+        /// <summary>
+        /// 鐢熸椿鐓�
+        /// </summary>
+        [JsonIgnore, SwaggerIgnore]
+        public List<GetUserResumeQueryResultPhoto> Photos { get; set; }
+
+        /// <summary>
+        /// 鐢熸椿鐓�
+        /// </summary>
+        [AdaptIgnore]
+        public List<string> PhotoImgs => Photos.Select(it => it.Img).ToList();
+    }
+
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉
+    /// </summary>
+    public class GetUserResumeQueryResultExpectJob
+    {
+        /// <summary>
+        /// 鏈熸湜宀椾綅缂栧彿
+        /// </summary>
+        public string PersonalIdentityCode { get; set; }
+
+        /// <summary>
+        /// 鏈熸湜宀椾綅
+        /// </summary>
+        public string PersonalIdentityContent { get; set; }
+    }
+
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉
+    /// </summary>
+    public class GetUserResumeQueryResultCredential
+    {
+        /// <summary>
+        /// 璇佷功绫诲瀷缂栧彿
+        /// </summary>
+        public string TypeCode { get; set; }
+
+        /// <summary>
+        /// 璇佷功绫诲瀷
+        /// </summary>
+        public string TypeContent { get; set; }
+
+        /// <summary>
+        /// 璇佷功缂栧彿
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 姘镐箙璇佷功
+        /// </summary>
+        public bool IsForever { get; set; }
+
+        /// <summary>
+        /// 寮�濮嬫棩鏈�
+        /// </summary>
+        public DateTime StartDate { get; set; }
+
+        /// <summary>
+        /// 缁撴潫鏃ユ湡
+        /// </summary>
+        public DateTime EndDate { get; set; }
+
+        /// <summary>
+        /// 鍙戣瘉鍗曚綅
+        /// </summary>
+        public string IssueUnit { get; set; }
+
+        /// <summary>
+        /// 璇佷功姝i潰鐓х墖
+        /// </summary>
+        public string Img { get; set; }
+
+        /// <summary>
+        /// 璇佷功鍙嶉潰鐓х墖
+        /// </summary>
+        public string BackImg { get; set; }
+    }
+
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉
+    /// </summary>
+    public class GetUserResumeQueryResultPhoto
+    {
+        /// <summary>
+        /// 鐓х墖
+        /// </summary>
+        public string Img { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs
new file mode 100644
index 0000000..f1b8594
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs
@@ -0,0 +1,35 @@
+锘縰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.UserResume])]
+    public class GetUserResumeWorkExperienceQuery : IRequest<GetUserResumeWorkExperienceQueryResult>
+    {
+
+    }
+
+    /// <summary>
+    /// 鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙-缁撴灉
+    /// </summary>
+    public class GetUserResumeWorkExperienceQueryResult
+    {
+        /// <summary>
+        /// 宸ヤ綔璧勫巻
+        /// </summary>
+        public string WorkSeniority { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔缁忛獙
+        /// </summary>
+        public string WorkExperience { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserResumeQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserResumeQuery.cs
deleted file mode 100644
index 0ff3b61..0000000
--- a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserResumeQuery.cs
+++ /dev/null
@@ -1,158 +0,0 @@
-锘縰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.User])]
-    public class GetUserResumeQuery : IRequest<GetUserResumeQueryResult>
-    {
-        /// <summary>
-        /// 鐢ㄦ埛Id
-        /// </summary>
-        public Guid? UserId { get; set; }
-    }
-
-    /// <summary>
-    /// 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉
-    /// </summary>
-    public class GetUserResumeQueryResult
-    {
-        /// <summary>
-        /// Id
-        /// </summary>
-        public Guid Id { get; set; }
-
-        /// <summary>
-        /// 澶村儚
-        /// </summary>
-        public string Avatar { get; set; }
-
-        /// <summary>
-        /// 濮撳悕
-        /// </summary>
-        public string Name { get; set; }
-
-        /// <summary>
-        /// 鎵嬫満鍙�
-        /// </summary>
-        public string PhoneNumber { get; set; }
-
-        /// <summary>
-        /// 韬唤璇佸彿
-        /// </summary>
-        public string Identity { get; set; }
-
-        /// <summary>
-        /// 鎬у埆
-        /// </summary>
-        public EnumUserGender? Gender { get; set; }
-
-        /// <summary>
-        /// 骞撮緞
-        /// </summary>
-        public int? Age { get; set; }
-
-        /// <summary>
-        /// 鏄惁瀹炲悕
-        /// </summary>
-        public bool IsReal { get; set; }
-
-        /// <summary>
-        /// 涓婂矖娆℃暟
-        /// </summary>
-        public int TaskCount { get; set; }
-
-        /// <summary>
-        /// 甯搁┗鐪佷唤缂栧彿
-        /// </summary>
-        public string ProvinceCode { get; set; }
-
-        /// <summary>
-        /// 甯搁┗鐪佷唤
-        /// </summary>
-        public string ProvinceContent { get; set; }
-
-        /// <summary>
-        /// 甯搁┗鍩庡競缂栧彿
-        /// </summary>
-        public string CityCode { get; set; }
-
-        /// <summary>
-        /// 甯搁┗鍩庡競
-        /// </summary>
-        public string CityContent { get; set; }
-
-        /// <summary>
-        /// 韬唤缂栧彿
-        /// </summary>
-        public string PersonalIdentityCode { get; set; }
-
-        /// <summary>
-        /// 韬唤
-        /// </summary>
-        public string PersonalIdentityContent { get; set; }
-
-        /// <summary>
-        /// 瀛﹀巻缂栧彿
-        /// </summary>
-        public string EducationalBackgroundCode { get; set; }
-
-        /// <summary>
-        /// 瀛﹀巻
-        /// </summary>
-        public string EducationalBackgroundContent { get; set; }
-
-        /// <summary>
-        /// 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅
-        /// </summary>
-        public List<UserExpectJob> UserExpectJobs { get; set; }
-
-        /// <summary>
-        /// 绌洪棽鏃堕棿
-        /// </summary>
-        public EnumPersonalFreeTime? FreeTime { get; set; }
-
-        /// <summary>
-        /// 姹傝亴鐘舵��
-        /// </summary>
-        public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; }
-
-        /// <summary>
-        /// 鐢ㄦ埛淇℃伅璧勬牸璇佷功
-        /// </summary>
-        public List<UserCredential> UserCredentials { get; set; }
-
-        /// <summary>
-        /// 宸ヤ綔璧勫巻
-        /// </summary>
-        public string WorkSeniority { get; set; }
-
-        /// <summary>
-        /// 宸ヤ綔缁忛獙
-        /// </summary>
-        public string WorkExperience { get; set; }
-
-        /// <summary>
-        /// 韬珮
-        /// </summary>
-        public int? Height { get; set; }
-
-        /// <summary>
-        /// 浣撻噸
-        /// </summary>
-        public int? Weight { get; set; }
-
-        /// <summary>
-        /// 鐢熸椿鐓�
-        /// </summary>
-        public List<UserPhoto> Photos { get; set; }
-    }
-}
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Repositories/UserRepository.cs b/FlexJobApi.Core/Models/UserServer/Users/Repositories/UserRepository.cs
new file mode 100644
index 0000000..24ffd8c
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/Users/Repositories/UserRepository.cs
@@ -0,0 +1,43 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鐢ㄦ埛浠撳簱
+    /// </summary>
+    public static class UserRepository
+    {
+        /// <summary>
+        /// 鑾峰彇涓汉鐢ㄦ埛鏌ヨ
+        /// </summary>
+        /// <param name="rep"></param>
+        /// <param name="tracking"></param>
+        /// <param name="logier"></param>
+        /// <returns></returns>
+        public static IQueryable<User> GetPersonalQueryable(this IRepository<User> rep, bool tracking = true, CurrentLogier logier = null)
+        {
+            logier = logier ?? JwtUtils.GetCurrentLogier();
+            var q = rep.AsQueryable();
+            if (tracking)
+            {
+                q = q.AsNoTracking();
+            }
+            q = q.OrderBy(it => it.CreatedTime);
+            if (logier != null)
+            {
+                if (logier.Type == EnumUserType.Personal)
+                {
+                    q = q.Where(it => it.Id == logier.Id);
+                }
+            }
+            return q;
+        }
+    }
+}
diff --git a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs
index 2e0f85f..2e1639d 100644
--- a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs
+++ b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs
@@ -148,7 +148,8 @@
             var q = rep.AsQueryable().AsNoTracking();
             if (query != null) q = query(q);
             else q = q.OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime);
-            q = q.CustomOrderBy(page.OrderInput);
+            if (page.OrderInput.IsNotNull())
+                q = q.CustomOrderBy(page.OrderInput);
             var s = selector == null
                 ? q.ProjectToType<TItem>()
                 : q.Select(selector);
@@ -176,7 +177,8 @@
             where TItem : class, new()
             where TResult : PagedListQueryResult<TItem>, new()
         {
-            q = q.CustomOrderBy(page.OrderInput);
+            if (page.OrderInput.IsNotNull())
+                q = q.CustomOrderBy(page.OrderInput);
             var pagedList = await q.ToPagedListAsync(page.Page, page.Rows, cancellationToken);
             var result = new TResult();
             result.PageModel = page.Adapt<PagedListQueryResultPageModel>();
@@ -250,6 +252,32 @@
             return Ordering(source, parameter, propertyName, "ThenByDescending");
         }
 
+        public static async Task<TResult> GetDetail<TEntity, TResult>(
+            this Guid id,
+            CancellationToken cancellationToken = default)
+            where TEntity : CommonEntity, new()
+        {
+            var rep = Db.GetRepository<TEntity>();
+            return await rep.AsQueryable().AsNoTracking()
+                .Where(it => it.Id == id)
+                .GetDetail<TEntity, TResult>(cancellationToken);
+        }
+
+        public static async Task<TResult> GetDetail<TEntity, TResult>(
+            this IQueryable<TEntity> q,
+            CancellationToken cancellationToken = default)
+        {
+            var model = await q
+                .ProjectToType<TResult>()
+                .FirstOrDefaultAsync(cancellationToken);
+            if (model == null)
+            {
+                var summary = await typeof(TEntity).GetSummary();
+                throw Oops.Oh(EnumErrorCodeType.s404, $"璇summary ?? "淇℃伅"}");
+            }
+            return model;
+        }
+
         /// <summary>
         /// 璁剧疆鏄惁绂佺敤
         /// </summary>
@@ -302,6 +330,27 @@
                 : 0;
         }
 
+        public static async Task<Guid> UpdateData<TEntity, TRequest>(
+            this IQueryable<TEntity> q,
+            TRequest request,
+            Action<TEntity> update = null,
+            CancellationToken cancellationToken = default)
+            where TEntity : CommonEntity, new()
+        {
+            var rep = Db.GetRepository<TEntity>();
+            var entity = await q.FirstOrDefaultAsync();
+            if (entity == null)
+            {
+                var summary = await typeof(TEntity).GetSummary();
+                throw Oops.Oh(EnumErrorCodeType.s404, $"璇summary ?? "淇℃伅"}");
+            }
+
+            if (update != null) update(entity);
+            else request.Adapt(entity);
+            await rep.UpdateAsync(entity);
+            return entity.Id;
+        }
+
         /// <summary>
         /// 淇濆瓨鏁版嵁
         /// </summary>
diff --git a/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResult.cs b/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResult.cs
index 28b6933..ee9e60f 100644
--- a/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResult.cs
+++ b/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResult.cs
@@ -6,11 +6,49 @@
 
 namespace FlexJobApi.Core
 {
+    public interface IFriendlyResult
+    {
+        /// <summary>
+        /// 璺熻釜Id
+        /// </summary>
+        public string TraceId { get; set; }
+
+        /// <summary>
+        /// 鐘舵�佺爜
+        /// </summary>
+        public int? Code { get; set; }
+
+        /// <summary>
+        /// 閿欒鐮�
+        /// </summary>
+        public string ErrorCode { get; set; }
+
+        /// <summary>
+        /// 鎵ц鎴愬姛
+        /// </summary>
+        public bool Success { get; set; }
+
+        /// <summary>
+        /// 閿欒淇℃伅
+        /// </summary>
+        public object Msg { get; set; }
+
+        /// <summary>
+        /// 闄勫姞鏁版嵁
+        /// </summary>
+        public object Extras { get; set; }
+
+        /// <summary>
+        /// 鏃堕棿鎴�
+        /// </summary>
+        public long Timestamp { get; set; }
+    }
+
     /// <summary>
     /// 鍙嬪ソ杩斿洖鍊�
     /// </summary>
     /// <typeparam name="T"></typeparam>
-    public class FriendlyResult<T>
+    public class FriendlyResult<T> : IFriendlyResult
     {
         /// <summary>
         /// 璺熻釜Id
diff --git a/FlexJobApi.Core/Utils/JwtUtils/JwtUtils.cs b/FlexJobApi.Core/Utils/JwtUtils/JwtUtils.cs
index 0743dc1..f9d47e6 100644
--- a/FlexJobApi.Core/Utils/JwtUtils/JwtUtils.cs
+++ b/FlexJobApi.Core/Utils/JwtUtils/JwtUtils.cs
@@ -43,8 +43,11 @@
             logier.RefreshToken = JWTEncryption.GenerateRefreshToken(logier.AccessToken, 60 * 24);
 
             // 璁剧疆鍝嶅簲鎶ユ枃澶�
-            httpContextAccessor.HttpContext.Response.Headers["access-token"] = logier.AccessToken;
-            httpContextAccessor.HttpContext.Response.Headers["x-access-token"] = logier.RefreshToken;
+            if (httpContextAccessor.HttpContext != null)
+            {
+                httpContextAccessor.HttpContext.Response.Headers["access-token"] = logier.AccessToken;
+                httpContextAccessor.HttpContext.Response.Headers["x-access-token"] = logier.RefreshToken;
+            }
         }
 
         /// <summary>
diff --git a/FlexJobApi.Core/Utils/LogUtils/LogServiceComponent.cs b/FlexJobApi.Core/Utils/LogUtils/LogServiceComponent.cs
new file mode 100644
index 0000000..ea581ad
--- /dev/null
+++ b/FlexJobApi.Core/Utils/LogUtils/LogServiceComponent.cs
@@ -0,0 +1,34 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    public class LogServiceComponent : IServiceComponent
+    {
+        public void Load(IServiceCollection services, ComponentContext componentContext)
+        {
+            services.AddConsoleFormatter(options =>
+            {
+                options.WithTraceId = true;
+            });
+
+            services.AddFileLogging(options =>
+            {
+                options.WithTraceId = true;
+                options.FileNameRule = fileName =>
+                {
+                    return string.Format(fileName, DateTime.Now);
+                };
+            });
+
+            //services.AddDatabaseLogging<DatabaseLoggingWriter>(options =>
+            //{
+            //    options.WithTraceId = true;
+            //});
+        }
+    }
+}
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs b/FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs
index 8cf27e5..bc12627 100644
--- a/FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs
+++ b/FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs
@@ -1,7 +1,12 @@
-锘縰sing Furion;
+锘縰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;
@@ -15,6 +20,7 @@
     {
         HttpRequestBuilder AddAuthentication(HttpRequestBuilder builder);
         Task<TResponse> SendAsAsync<TResponse>(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder);
+        Task<string> SendAsStringAsync(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder);
     }
 
     public class DefaultResourceHttpProvider : IResourceHttpProvider
@@ -30,17 +36,90 @@
 
         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);
-            dynamic clay = Clay.Parse(response);
-            if (clay.Code == 401)
+            return response;
+        }
+
+        public async Task<string> SendAsStringAsync(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder)
+        {
+            var response = await httpRemoteService.SendAsStringAsync(builder);
+            try
             {
-                Console.WriteLine();
-                throw new Exception();
+                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);
+                }
             }
-            else
+            catch { }
+            return response;
+        }
+
+        private TokenDataModel GetToken(bool recache = false)
+        {
+            var distributedCache = App.GetRequiredService<IDistributedCache>();
+            var token = distributedCache.GetString("SystemUserToken");
+            if (token == null || recache)
             {
-                return response;
+                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/ResourceHttpUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs
index db7a2db..dd0b166 100644
--- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs
@@ -1,4 +1,5 @@
-锘縰sing Consul;
+锘縰sing Azure;
+using Consul;
 using Furion;
 using Furion.FriendlyException;
 using Furion.HttpRemote;
@@ -44,8 +45,8 @@
 
             var jsonResourceModels = await distributedCache.GetStringAsync($"ResourceModel|{requestTypeFullName}");
             var resource = jsonResourceModels.JsonTo<ResourceModel>();
-            var domain = await GetHealthyServiceDomain(resource);
-            var builder = HttpRequestBuilder.Create(resource.GetHttpMethod(), $"{domain}{resource.Route}");
+            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
@@ -56,22 +57,42 @@
             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> GetUrl(string serviceName, string route)
+        {
+            var domain = await GetHealthyServiceDomain(serviceName);
+            return $"{domain}{route}";
+        }
+
         /// <summary>
         /// 鑾峰彇鍋ュ悍鏈嶅姟鍩熷悕
         /// </summary>
-        /// <param name="resource"></param>
+        /// <param name="serviceName"></param>
         /// <returns></returns>
-        public async Task<string> GetHealthyServiceDomain(ResourceModel resource)
+        public async Task<string> GetHealthyServiceDomain(string serviceName)
         {
-            var queryResult = await consulClient.Health.Service(resource.ServiceName, null, true);
+            var queryResult = await consulClient.Health.Service(serviceName, null, true);
             if (queryResult.StatusCode != System.Net.HttpStatusCode.OK)
-                throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔resource.Service}");
+                throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔serviceName}");
 
             var domains = queryResult.Response
                 .Select(s => $"http://{s.Service.Address}:{s.Service.Port}")
                 .ToList();
             if (domains.IsNull())
-                throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔resource.Service}");
+                throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔serviceName}");
             // 杞閫夋嫨瀹炰緥
             int randomIndex = new Random().Next(domains.Count);
             return domains[randomIndex];
diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
index b9d51e0..139d6ff 100644
--- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
@@ -38,22 +38,6 @@
     public static class ResourceUtils
     {
         /// <summary>
-        /// 鍙戦�丠TTP璇锋眰
-        /// </summary>
-        /// <typeparam name="TRequest"></typeparam>
-        /// <typeparam name="TResponse"></typeparam>
-        /// <param name="request"></param>
-        /// <param name="provider"></param>
-        /// <returns></returns>
-        public static Task<TResponse> SendHttpAsync<TRequest, TResponse>(
-            TRequest request,
-            IResourceHttpProvider provider = null)
-            where TRequest : class, new()
-        {
-            return App.GetRequiredService<ResourceHttpUtils>().SendHttpAsync<TRequest, TResponse>(request, provider);
-        }
-
-        /// <summary>
         /// 鐢熸垚鍔ㄦ�佹帶鍒跺櫒
         /// </summary>
         public static async Task BuildDynamicControllersAsync()
@@ -173,8 +157,7 @@
             var expiredResources = resources.Where(it => !models.Any(m => m.Route == it.Route && m.Method == it.Method)).ToList();
             foreach (var expiredResource in expiredResources)
             {
-                //expiredResource.IsExpired = true;
-                //await rep.UpdateAsync(expiredResource);
+                resources.Remove(expiredResource);
                 await rep.DeleteAsync(expiredResource);
             }
 
diff --git a/FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs b/FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs
new file mode 100644
index 0000000..c13c0ea
--- /dev/null
+++ b/FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs
@@ -0,0 +1,133 @@
+锘縰sing Furion;
+using Furion.DatabaseAccessor;
+using Furion.Schedule;
+using Mapster;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 浣滀笟鎸佷箙鍖栵紙鏁版嵁搴擄級
+    /// </summary>
+    public class DbJobPersistence : IJobPersistence, IDisposable
+    {
+        private readonly IServiceScope _serviceScope;
+        private readonly IRepository<ScheduleJobDetail> repScheduleJobDetail;
+        private readonly IRepository<ScheduleJobTrigger> repScheduleJobTrigger;
+        private readonly IRepository<ScheduleJobTriggerTimeline, LogDbContextLocator> repScheduleJobTriggerTimeline;
+
+        public DbJobPersistence(IServiceScopeFactory scopeFactory)
+        {
+            _serviceScope = scopeFactory.CreateScope();
+            var services = _serviceScope.ServiceProvider;
+
+            repScheduleJobDetail = services.GetService<IRepository<ScheduleJobDetail>>();
+            repScheduleJobTrigger = services.GetService<IRepository<ScheduleJobTrigger>>();
+            repScheduleJobTriggerTimeline = services.GetService<IRepository<ScheduleJobTriggerTimeline, LogDbContextLocator>>();
+        }
+
+        /// <summary>
+        /// 浣滀笟璋冨害鏈嶅姟鍚姩鏃�
+        /// </summary>
+        /// <returns></returns>
+        public async Task<IEnumerable<SchedulerBuilder>> PreloadAsync(CancellationToken stoppingToken)    // Furion 4.9.1.59 涔嬪墠涓� public IEnumerable<SchedulerBuilder> Preload()
+        {
+            var schedulers = new List<SchedulerBuilder>();
+            var jobDetails = await repScheduleJobDetail.AsQueryable().AsNoTracking().ToListAsync();
+            var jobTriggers = await repScheduleJobTrigger.AsQueryable().AsNoTracking().ToListAsync();
+            foreach (var jobDetail in jobDetails)
+            {
+                var triggers = jobTriggers.Where(it => it.JobId == jobDetail.JobId)
+                    .Select(it => TriggerBuilder.From(it.ToJson()))
+                    .ToArray();
+                var jobBuilder = JobBuilder.From(jobDetail.ToJson());
+                var scheduler = SchedulerBuilder.Create(jobBuilder, triggers);
+                schedulers.Add(scheduler);
+            }
+            return schedulers;
+        }
+
+        public Task<SchedulerBuilder> OnLoadingAsync(SchedulerBuilder builder, CancellationToken stoppingToken)
+        {
+            // 鏍囪浠庡叾浠栧湴鏂规洿鏂帮紝姣斿鏁版嵁搴�
+            return Task.FromResult(builder);
+        }
+
+        public async Task OnChangedAsync(PersistenceContext context)
+        {
+            switch (context.Behavior)
+            {
+                case PersistenceBehavior.Appended:
+                    var insertEntity = new ScheduleJobDetail();
+                    context.JobDetail.Adapt(insertEntity);
+                    await repScheduleJobDetail.InsertNowAsync(insertEntity);
+                    break;
+                case PersistenceBehavior.Updated:
+                    var updateEntity = await repScheduleJobDetail.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId);
+                    if (updateEntity != null)
+                    {
+                        context.JobDetail.Adapt(updateEntity);
+                        await repScheduleJobDetail.UpdateNowAsync(updateEntity);
+                    }
+                    break;
+                case PersistenceBehavior.Removed:
+                    var deleteEntity = await repScheduleJobDetail.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId);
+                    if (deleteEntity != null)
+                    {
+                        await repScheduleJobDetail.DeleteNowAsync(deleteEntity);
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        public async Task OnTriggerChangedAsync(PersistenceTriggerContext context)
+        {
+            switch (context.Behavior)
+            {
+                case PersistenceBehavior.Appended:
+                    var insertEntity = new ScheduleJobTrigger();
+                    context.Trigger.Adapt(insertEntity);
+                    await repScheduleJobTrigger.InsertNowAsync(insertEntity);
+                    break;
+                case PersistenceBehavior.Updated:
+                    var updateEntity = await repScheduleJobTrigger.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId && it.TriggerId == context.TriggerId);
+                    if (updateEntity != null)
+                    {
+                        context.Trigger.Adapt(updateEntity);
+                        await repScheduleJobTrigger.UpdateNowAsync(updateEntity);
+                    }
+                    break;
+                case PersistenceBehavior.Removed:
+                    var deleteEntity = await repScheduleJobTrigger.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId && it.TriggerId == context.TriggerId);
+                    if (deleteEntity != null)
+                    {
+                        await repScheduleJobTrigger.DeleteNowAsync(deleteEntity);
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        public async Task OnExecutionRecordAsync(PersistenceExecutionRecordContext context)
+        {
+            var entity = new ScheduleJobTriggerTimeline();
+            context.Timeline.Adapt(entity);
+            await repScheduleJobTriggerTimeline.InsertNowAsync(entity);
+        }
+
+        public void Dispose()
+        {
+            _serviceScope?.Dispose();
+        }
+    }
+}
diff --git a/FlexJobApi.Core/Utils/ScheduleUtils/ResourceHttpJob.cs b/FlexJobApi.Core/Utils/ScheduleUtils/ResourceHttpJob.cs
new file mode 100644
index 0000000..898f525
--- /dev/null
+++ b/FlexJobApi.Core/Utils/ScheduleUtils/ResourceHttpJob.cs
@@ -0,0 +1,45 @@
+锘縰sing Azure.Core;
+using Furion.DatabaseAccessor;
+using Furion.FriendlyException;
+using Furion.Schedule;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    public class ResourceHttpJob(
+            IRepository<Resource> rep,
+            ResourceHttpUtils resourceHttpUtils
+        ) : IJob
+    {
+        private readonly IRepository<Resource> rep = rep;
+        private readonly ResourceHttpUtils resourceHttpUtils = resourceHttpUtils;
+
+        public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
+        {
+            var jobDetail = context.JobDetail;
+
+            // 瑙f瀽 HTTP 璇锋眰鍙傛暟锛岄敭鍚嶇О涓虹被鍚�
+            var command = Schedular.Deserialize<SaveScheduleJobDetailCommand>(jobDetail.GetProperty<string>(nameof(ResourceHttpJob)));
+
+            var resource = await rep
+                .Where(it => it.Id == command.ResourceId)
+                .Select(it => new Resource
+                {
+                    ServiceName = it.ServiceName,
+                    Route = it.Route,
+                    Method = it.Method
+                })
+                .FirstOrDefaultAsync();
+            if (resource == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヨ祫婧�");
+
+            context.Result = await resourceHttpUtils.SendHttpAsync(resource, command.Body, new SystemUserResourceHttpProvider());
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.Designer.cs
new file mode 100644
index 0000000..df1c4d3
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.Designer.cs
@@ -0,0 +1,1954 @@
+锘�// <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("20250809150854_UpdateUser0809")]
+    partial class UpdateUser0809
+    {
+        /// <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>("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>("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<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.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>("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.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<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<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<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<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<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("HireStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("HireTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int?>("SignContractStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("SignContractTime")
+                        .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.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("TaskInfoUser");
+                });
+
+            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<string>("CityCode")
+                        .HasColumnType("nvarchar(128)");
+
+                    b.Property<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .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?>("RealAccess")
+                        .HasColumnType("int");
+
+                    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.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.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.TaskInfo", "TaskInfo")
+                        .WithMany("Users")
+                        .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.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.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("Users");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.User", b =>
+                {
+                    b.Navigation("BankCards");
+
+                    b.Navigation("Photos");
+
+                    b.Navigation("UserAuth");
+
+                    b.Navigation("UserCredentials");
+
+                    b.Navigation("UserDepartments");
+
+                    b.Navigation("UserExpectJobs");
+
+                    b.Navigation("UserRoles");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.cs b/FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.cs
new file mode 100644
index 0000000..edbec29
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.cs
@@ -0,0 +1,278 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations
+{
+    /// <inheritdoc />
+    public partial class UpdateUser0809 : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_UserExpectJob_DictionaryData_PersonalIdentityCode",
+                table: "UserExpectJob");
+
+            migrationBuilder.DropTable(
+                name: "UserResume");
+
+            migrationBuilder.RenameColumn(
+                name: "PersonalIdentityCode",
+                table: "UserExpectJob",
+                newName: "ExpectJobCode");
+
+            migrationBuilder.RenameIndex(
+                name: "IX_UserExpectJob_PersonalIdentityCode",
+                table: "UserExpectJob",
+                newName: "IX_UserExpectJob_ExpectJobCode");
+
+            migrationBuilder.AlterColumn<string>(
+                name: "Code",
+                table: "UserCredential",
+                type: "nvarchar(128)",
+                maxLength: 128,
+                nullable: true,
+                oldClrType: typeof(string),
+                oldType: "nvarchar(128)",
+                oldMaxLength: 128);
+
+            migrationBuilder.AddColumn<string>(
+                name: "EducationalBackgroundCode",
+                table: "User",
+                type: "nvarchar(128)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<int>(
+                name: "FreeTime",
+                table: "User",
+                type: "int",
+                nullable: true);
+
+            migrationBuilder.AddColumn<int>(
+                name: "Height",
+                table: "User",
+                type: "int",
+                nullable: true);
+
+            migrationBuilder.AddColumn<int>(
+                name: "JobSeekingStatus",
+                table: "User",
+                type: "int",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "PersonalIdentityCode",
+                table: "User",
+                type: "nvarchar(128)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<int>(
+                name: "Weight",
+                table: "User",
+                type: "int",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "WorkExperience",
+                table: "User",
+                type: "nvarchar(max)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "WorkSeniority",
+                table: "User",
+                type: "nvarchar(max)",
+                nullable: true);
+
+            migrationBuilder.UpdateData(
+                table: "User",
+                keyColumn: "Id",
+                keyValue: new Guid("11111111-1111-1111-1111-111111111111"),
+                columns: new[] { "EducationalBackgroundCode", "FreeTime", "Height", "JobSeekingStatus", "PersonalIdentityCode", "Weight", "WorkExperience", "WorkSeniority" },
+                values: new object[] { null, null, null, null, null, null, null, null });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_User_EducationalBackgroundCode",
+                table: "User",
+                column: "EducationalBackgroundCode");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_User_PersonalIdentityCode",
+                table: "User",
+                column: "PersonalIdentityCode");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_User_DictionaryData_EducationalBackgroundCode",
+                table: "User",
+                column: "EducationalBackgroundCode",
+                principalTable: "DictionaryData",
+                principalColumn: "Code",
+                onDelete: ReferentialAction.Restrict);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_User_DictionaryData_PersonalIdentityCode",
+                table: "User",
+                column: "PersonalIdentityCode",
+                principalTable: "DictionaryData",
+                principalColumn: "Code",
+                onDelete: ReferentialAction.Restrict);
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_UserExpectJob_DictionaryData_ExpectJobCode",
+                table: "UserExpectJob",
+                column: "ExpectJobCode",
+                principalTable: "DictionaryData",
+                principalColumn: "Code",
+                onDelete: ReferentialAction.Restrict);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_User_DictionaryData_EducationalBackgroundCode",
+                table: "User");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_User_DictionaryData_PersonalIdentityCode",
+                table: "User");
+
+            migrationBuilder.DropForeignKey(
+                name: "FK_UserExpectJob_DictionaryData_ExpectJobCode",
+                table: "UserExpectJob");
+
+            migrationBuilder.DropIndex(
+                name: "IX_User_EducationalBackgroundCode",
+                table: "User");
+
+            migrationBuilder.DropIndex(
+                name: "IX_User_PersonalIdentityCode",
+                table: "User");
+
+            migrationBuilder.DropColumn(
+                name: "EducationalBackgroundCode",
+                table: "User");
+
+            migrationBuilder.DropColumn(
+                name: "FreeTime",
+                table: "User");
+
+            migrationBuilder.DropColumn(
+                name: "Height",
+                table: "User");
+
+            migrationBuilder.DropColumn(
+                name: "JobSeekingStatus",
+                table: "User");
+
+            migrationBuilder.DropColumn(
+                name: "PersonalIdentityCode",
+                table: "User");
+
+            migrationBuilder.DropColumn(
+                name: "Weight",
+                table: "User");
+
+            migrationBuilder.DropColumn(
+                name: "WorkExperience",
+                table: "User");
+
+            migrationBuilder.DropColumn(
+                name: "WorkSeniority",
+                table: "User");
+
+            migrationBuilder.RenameColumn(
+                name: "ExpectJobCode",
+                table: "UserExpectJob",
+                newName: "PersonalIdentityCode");
+
+            migrationBuilder.RenameIndex(
+                name: "IX_UserExpectJob_ExpectJobCode",
+                table: "UserExpectJob",
+                newName: "IX_UserExpectJob_PersonalIdentityCode");
+
+            migrationBuilder.AlterColumn<string>(
+                name: "Code",
+                table: "UserCredential",
+                type: "nvarchar(128)",
+                maxLength: 128,
+                nullable: false,
+                defaultValue: "",
+                oldClrType: typeof(string),
+                oldType: "nvarchar(128)",
+                oldMaxLength: 128,
+                oldNullable: true);
+
+            migrationBuilder.CreateTable(
+                name: "UserResume",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
+                    EducationalBackgroundCode = table.Column<string>(type: "nvarchar(128)", nullable: true),
+                    PersonalIdentityCode = table.Column<string>(type: "nvarchar(128)", nullable: true),
+                    UserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
+                    CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false),
+                    CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    FreeTime = table.Column<int>(type: "int", nullable: true),
+                    Height = table.Column<int>(type: "int", nullable: true),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false),
+                    JobSeekingStatus = table.Column<int>(type: "int", nullable: true),
+                    Sort = table.Column<int>(type: "int", nullable: false),
+                    TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
+                    UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    Weight = table.Column<int>(type: "int", nullable: true),
+                    WorkExperience = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    WorkSeniority = table.Column<string>(type: "nvarchar(max)", nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_UserResume", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_UserResume_DictionaryData_EducationalBackgroundCode",
+                        column: x => x.EducationalBackgroundCode,
+                        principalTable: "DictionaryData",
+                        principalColumn: "Code",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "FK_UserResume_DictionaryData_PersonalIdentityCode",
+                        column: x => x.PersonalIdentityCode,
+                        principalTable: "DictionaryData",
+                        principalColumn: "Code",
+                        onDelete: ReferentialAction.Restrict);
+                    table.ForeignKey(
+                        name: "FK_UserResume_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_UserResume_EducationalBackgroundCode",
+                table: "UserResume",
+                column: "EducationalBackgroundCode");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_UserResume_PersonalIdentityCode",
+                table: "UserResume",
+                column: "PersonalIdentityCode");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_UserResume_UserId",
+                table: "UserResume",
+                column: "UserId");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_UserExpectJob_DictionaryData_PersonalIdentityCode",
+                table: "UserExpectJob",
+                column: "PersonalIdentityCode",
+                principalTable: "DictionaryData",
+                principalColumn: "Code",
+                onDelete: ReferentialAction.Restrict);
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.Designer.cs
new file mode 100644
index 0000000..72a028f
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.Designer.cs
@@ -0,0 +1,2117 @@
+锘�// <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("20250810144950_Update0810")]
+    partial class Update0810
+    {
+        /// <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>("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>("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<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.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>("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<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<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<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<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<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("HireStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("HireTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
+
+                    b.Property<int?>("SignContractStatus")
+                        .HasColumnType("int");
+
+                    b.Property<DateTime?>("SignContractTime")
+                        .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.Property<Guid>("UserId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("TaskInfoUser");
+                });
+
+            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<Guid?>("CreatedEnterpriseId")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserId")
+                        .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?>("RealAccess")
+                        .HasColumnType("int");
+
+                    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.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.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.TaskInfo", "TaskInfo")
+                        .WithMany("Users")
+                        .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.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.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("Users");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.User", b =>
+                {
+                    b.Navigation("BankCards");
+
+                    b.Navigation("Photos");
+
+                    b.Navigation("UserAuth");
+
+                    b.Navigation("UserCredentials");
+
+                    b.Navigation("UserDepartments");
+
+                    b.Navigation("UserExpectJobs");
+
+                    b.Navigation("UserRoles");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.cs b/FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.cs
new file mode 100644
index 0000000..9c36947
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.cs
@@ -0,0 +1,110 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations
+{
+    /// <inheritdoc />
+    public partial class Update0810 : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AddColumn<DateTime>(
+                name: "Birthday",
+                table: "User",
+                type: "datetime2",
+                nullable: true);
+
+            migrationBuilder.CreateTable(
+                name: "ScheduleJobDetail",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
+                    JobId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    GroupName = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    JobType = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Concurrent = table.Column<bool>(type: "bit", nullable: false),
+                    IncludeAnnotations = table.Column<bool>(type: "bit", nullable: false),
+                    Properties = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
+                    Sort = table.Column<int>(type: "int", nullable: false),
+                    TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ScheduleJobDetail", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "ScheduleJobTrigger",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
+                    TriggerId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    JobId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    TriggerType = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Args = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Status = table.Column<long>(type: "bigint", nullable: false),
+                    StartTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    EndTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    LastRunTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    NextRunTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    NumberOfRuns = table.Column<long>(type: "bigint", nullable: false),
+                    MaxNumberOfRuns = table.Column<long>(type: "bigint", nullable: false),
+                    NumberOfErrors = table.Column<long>(type: "bigint", nullable: false),
+                    MaxNumberOfErrors = table.Column<long>(type: "bigint", nullable: false),
+                    NumRetries = table.Column<long>(type: "bigint", nullable: false),
+                    RetryTimeout = table.Column<int>(type: "int", nullable: false),
+                    StartNow = table.Column<bool>(type: "bit", nullable: false),
+                    RunOnStart = table.Column<bool>(type: "bit", nullable: false),
+                    ResetOnlyOnce = table.Column<bool>(type: "bit", nullable: false),
+                    Result = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    ElapsedTime = table.Column<long>(type: "bigint", nullable: false),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
+                    Sort = table.Column<int>(type: "int", nullable: false),
+                    TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ScheduleJobTrigger", x => x.Id);
+                });
+
+            migrationBuilder.UpdateData(
+                table: "User",
+                keyColumn: "Id",
+                keyValue: new Guid("11111111-1111-1111-1111-111111111111"),
+                column: "Birthday",
+                value: null);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "ScheduleJobDetail");
+
+            migrationBuilder.DropTable(
+                name: "ScheduleJobTrigger");
+
+            migrationBuilder.DropColumn(
+                name: "Birthday",
+                table: "User");
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
index 13ee61a..2d845ee 100644
--- a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
+++ b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
@@ -763,6 +763,166 @@
                     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")
@@ -1032,6 +1192,9 @@
                     b.Property<string>("Avatar")
                         .HasColumnType("nvarchar(max)");
 
+                    b.Property<DateTime?>("Birthday")
+                        .HasColumnType("datetime2");
+
                     b.Property<string>("CityCode")
                         .HasColumnType("nvarchar(128)");
 
@@ -1044,10 +1207,19 @@
                     b.Property<Guid?>("CreatedUserId")
                         .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")
@@ -1062,6 +1234,9 @@
                     b.Property<bool>("IsReal")
                         .HasColumnType("bit");
 
+                    b.Property<int?>("JobSeekingStatus")
+                        .HasColumnType("int");
+
                     b.Property<int>("Level")
                         .HasColumnType("int");
 
@@ -1071,6 +1246,9 @@
 
                     b.Property<string>("Password")
                         .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("PersonalIdentityCode")
+                        .HasColumnType("nvarchar(128)");
 
                     b.Property<string>("PhoneNumber")
                         .HasMaxLength(11)
@@ -1108,6 +1286,15 @@
                         .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)");
@@ -1116,7 +1303,11 @@
 
                     b.HasIndex("CityCode");
 
+                    b.HasIndex("EducationalBackgroundCode");
+
                     b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("PersonalIdentityCode");
 
                     b.HasIndex("ProvinceCode");
 
@@ -1265,7 +1456,6 @@
                         .HasColumnType("nvarchar(max)");
 
                     b.Property<string>("Code")
-                        .IsRequired()
                         .HasMaxLength(128)
                         .HasColumnType("nvarchar(128)");
 
@@ -1384,12 +1574,12 @@
                     b.Property<Guid?>("CreatedUserId")
                         .HasColumnType("uniqueidentifier");
 
-                    b.Property<bool>("IsDeleted")
-                        .HasColumnType("bit");
-
-                    b.Property<string>("PersonalIdentityCode")
+                    b.Property<string>("ExpectJobCode")
                         .IsRequired()
                         .HasColumnType("nvarchar(128)");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit");
 
                     b.Property<int>("Sort")
                         .HasColumnType("int");
@@ -1408,7 +1598,7 @@
 
                     b.HasKey("Id");
 
-                    b.HasIndex("PersonalIdentityCode");
+                    b.HasIndex("ExpectJobCode");
 
                     b.HasIndex("UserId");
 
@@ -1456,74 +1646,6 @@
                     b.HasIndex("UserId");
 
                     b.ToTable("UserPhoto");
-                });
-
-            modelBuilder.Entity("FlexJobApi.Core.UserResume", 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>("EducationalBackgroundCode")
-                        .HasColumnType("nvarchar(128)");
-
-                    b.Property<int?>("FreeTime")
-                        .HasColumnType("int");
-
-                    b.Property<int?>("Height")
-                        .HasColumnType("int");
-
-                    b.Property<bool>("IsDeleted")
-                        .HasColumnType("bit");
-
-                    b.Property<int?>("JobSeekingStatus")
-                        .HasColumnType("int");
-
-                    b.Property<string>("PersonalIdentityCode")
-                        .HasColumnType("nvarchar(128)");
-
-                    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?>("Weight")
-                        .HasColumnType("int");
-
-                    b.Property<string>("WorkExperience")
-                        .HasColumnType("nvarchar(max)");
-
-                    b.Property<string>("WorkSeniority")
-                        .HasColumnType("nvarchar(max)");
-
-                    b.HasKey("Id");
-
-                    b.HasIndex("EducationalBackgroundCode");
-
-                    b.HasIndex("PersonalIdentityCode");
-
-                    b.HasIndex("UserId");
-
-                    b.ToTable("UserResume");
                 });
 
             modelBuilder.Entity("FlexJobApi.Core.UserRole", b =>
@@ -1784,9 +1906,21 @@
                         .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()
@@ -1796,7 +1930,11 @@
 
                     b.Navigation("City");
 
+                    b.Navigation("EducationalBackground");
+
                     b.Navigation("Enterprise");
+
+                    b.Navigation("PersonalIdentity");
 
                     b.Navigation("Province");
                 });
@@ -1864,9 +2002,9 @@
 
             modelBuilder.Entity("FlexJobApi.Core.UserExpectJob", b =>
                 {
-                    b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity")
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "ExpectJob")
                         .WithMany()
-                        .HasForeignKey("PersonalIdentityCode")
+                        .HasForeignKey("ExpectJobCode")
                         .HasPrincipalKey("Code")
                         .OnDelete(DeleteBehavior.Restrict)
                         .IsRequired();
@@ -1877,7 +2015,7 @@
                         .OnDelete(DeleteBehavior.Cascade)
                         .IsRequired();
 
-                    b.Navigation("PersonalIdentity");
+                    b.Navigation("ExpectJob");
 
                     b.Navigation("User");
                 });
@@ -1889,33 +2027,6 @@
                         .HasForeignKey("UserId")
                         .OnDelete(DeleteBehavior.Cascade)
                         .IsRequired();
-
-                    b.Navigation("User");
-                });
-
-            modelBuilder.Entity("FlexJobApi.Core.UserResume", b =>
-                {
-                    b.HasOne("FlexJobApi.Core.DictionaryData", "EducationalBackground")
-                        .WithMany()
-                        .HasForeignKey("EducationalBackgroundCode")
-                        .HasPrincipalKey("Code")
-                        .OnDelete(DeleteBehavior.Restrict);
-
-                    b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity")
-                        .WithMany()
-                        .HasForeignKey("PersonalIdentityCode")
-                        .HasPrincipalKey("Code")
-                        .OnDelete(DeleteBehavior.Restrict);
-
-                    b.HasOne("FlexJobApi.Core.User", "User")
-                        .WithMany()
-                        .HasForeignKey("UserId")
-                        .OnDelete(DeleteBehavior.Cascade)
-                        .IsRequired();
-
-                    b.Navigation("EducationalBackground");
-
-                    b.Navigation("PersonalIdentity");
 
                     b.Navigation("User");
                 });
diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.Designer.cs
new file mode 100644
index 0000000..123d64c
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.Designer.cs
@@ -0,0 +1,524 @@
+锘�// <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("20250809151036_UpdateSchedule")]
+    partial class UpdateSchedule
+    {
+        /// <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<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.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.ScheduleJobTriggers", 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("ScheduleJobTriggers");
+                });
+
+            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/20250809151036_UpdateSchedule.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.cs
new file mode 100644
index 0000000..fec0fe6
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.cs
@@ -0,0 +1,93 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations.LogDb
+{
+    /// <inheritdoc />
+    public partial class UpdateSchedule : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "ScheduleJobDetail",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
+                    JobId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    GroupName = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    JobType = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Concurrent = table.Column<bool>(type: "bit", nullable: false),
+                    IncludeAnnotations = table.Column<bool>(type: "bit", nullable: false),
+                    Properties = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
+                    Sort = table.Column<int>(type: "int", nullable: false),
+                    TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ScheduleJobDetail", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "ScheduleJobTriggers",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
+                    TriggerId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    JobId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    TriggerType = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Args = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Status = table.Column<long>(type: "bigint", nullable: false),
+                    StartTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    EndTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    LastRunTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    NextRunTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    NumberOfRuns = table.Column<long>(type: "bigint", nullable: false),
+                    MaxNumberOfRuns = table.Column<long>(type: "bigint", nullable: false),
+                    NumberOfErrors = table.Column<long>(type: "bigint", nullable: false),
+                    MaxNumberOfErrors = table.Column<long>(type: "bigint", nullable: false),
+                    NumRetries = table.Column<long>(type: "bigint", nullable: false),
+                    RetryTimeout = table.Column<int>(type: "int", nullable: false),
+                    StartNow = table.Column<bool>(type: "bit", nullable: false),
+                    RunOnStart = table.Column<bool>(type: "bit", nullable: false),
+                    ResetOnlyOnce = table.Column<bool>(type: "bit", nullable: false),
+                    Result = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    ElapsedTime = table.Column<long>(type: "bigint", nullable: false),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
+                    Sort = table.Column<int>(type: "int", nullable: false),
+                    TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ScheduleJobTriggers", x => x.Id);
+                });
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "ScheduleJobDetail");
+
+            migrationBuilder.DropTable(
+                name: "ScheduleJobTriggers");
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.Designer.cs
new file mode 100644
index 0000000..44e963e
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.Designer.cs
@@ -0,0 +1,429 @@
+锘�// <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("20250810145005_Update0810")]
+    partial class Update0810
+    {
+        /// <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<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/20250810145005_Update0810.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.cs
new file mode 100644
index 0000000..75ee9f0
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.cs
@@ -0,0 +1,125 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations.LogDb
+{
+    /// <inheritdoc />
+    public partial class Update0810 : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "ScheduleJobDetail");
+
+            migrationBuilder.DropTable(
+                name: "ScheduleJobTriggers");
+
+            migrationBuilder.CreateTable(
+                name: "ScheduleJobTriggerTimeline",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
+                    JobId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    TriggerId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    NumberOfRuns = table.Column<long>(type: "bigint", nullable: false),
+                    LastRunTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    NextRunTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    Status = table.Column<long>(type: "bigint", nullable: false),
+                    Result = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    ElapsedTime = table.Column<long>(type: "bigint", nullable: false),
+                    Mode = table.Column<int>(type: "int", nullable: false),
+                    Exception = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
+                    Sort = table.Column<int>(type: "int", nullable: false),
+                    TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ScheduleJobTriggerTimeline", x => x.Id);
+                });
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "ScheduleJobTriggerTimeline");
+
+            migrationBuilder.CreateTable(
+                name: "ScheduleJobDetail",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
+                    AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Concurrent = table.Column<bool>(type: "bit", nullable: false),
+                    CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false),
+                    CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    GroupName = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    IncludeAnnotations = table.Column<bool>(type: "bit", nullable: false),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false),
+                    JobId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    JobType = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Properties = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    Sort = table.Column<int>(type: "int", nullable: false),
+                    TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
+                    UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ScheduleJobDetail", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "ScheduleJobTriggers",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
+                    Args = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false),
+                    CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+                    Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    ElapsedTime = table.Column<long>(type: "bigint", nullable: false),
+                    EndTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false),
+                    JobId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    LastRunTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    MaxNumberOfErrors = table.Column<long>(type: "bigint", nullable: false),
+                    MaxNumberOfRuns = table.Column<long>(type: "bigint", nullable: false),
+                    NextRunTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    NumRetries = table.Column<long>(type: "bigint", nullable: false),
+                    NumberOfErrors = table.Column<long>(type: "bigint", nullable: false),
+                    NumberOfRuns = table.Column<long>(type: "bigint", nullable: false),
+                    ResetOnlyOnce = table.Column<bool>(type: "bit", nullable: false),
+                    Result = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    RetryTimeout = table.Column<int>(type: "int", nullable: false),
+                    RunOnStart = table.Column<bool>(type: "bit", nullable: false),
+                    Sort = table.Column<int>(type: "int", nullable: false),
+                    StartNow = table.Column<bool>(type: "bit", nullable: false),
+                    StartTime = table.Column<DateTime>(type: "datetime2", nullable: true),
+                    Status = table.Column<long>(type: "bigint", nullable: false),
+                    TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    TriggerId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    TriggerType = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
+                    UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ScheduleJobTriggers", x => x.Id);
+                });
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs
index 547acd2..10664ab 100644
--- a/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs
+++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs
@@ -299,6 +299,71 @@
                     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")
diff --git a/FlexJobApi.Database.Migrations/REDEME.MD b/FlexJobApi.Database.Migrations/REDEME.MD
index 0289096..6680c94 100644
--- a/FlexJobApi.Database.Migrations/REDEME.MD
+++ b/FlexJobApi.Database.Migrations/REDEME.MD
@@ -1,7 +1,7 @@
 -------------------------------主数据库---------------------------------------
 
 新增迁移文件
-dotnet ef migrations add UpdateUser0808 -s "../FlexJobApi.Web.Entry" -c DefaultDbContext
+dotnet ef migrations add Update0810 -s "../FlexJobApi.Web.Entry" -c DefaultDbContext
 
 删除迁移文件
 dotnet ef migrations remove -s "../FlexJobApi.Web.Entry" -c DefaultDbContext
@@ -12,7 +12,7 @@
 -------------------------------日志数据库---------------------------------------
 
 新增迁移文件
-dotnet ef migrations add UpdateCommon -s "../FlexJobApi.Web.Entry" -c LogDbContext
+dotnet ef migrations add Update0810 -s "../FlexJobApi.Web.Entry" -c LogDbContext
 
 删除迁移文件
 dotnet ef migrations remove -s "../FlexJobApi.Web.Entry" -c LogDbContext
diff --git a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
index 4ca909d..a0ca3ac 100644
--- a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
+++ b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
@@ -4,128 +4,6 @@
         <name>FlexJobApi.FlexJobServer.Application</name>
     </assembly>
     <members>
-        <member name="T:FlexJobApi.FlexJobServer.Application.DictionaryCategoryCommandHandler">
-            <summary>
-            瀛楀吀绫诲埆鍛戒护澶勭悊鍣�
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoryCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData})">
-            <summary>
-            瀛楀吀绫诲埆鍛戒护澶勭悊鍣�
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoryCommandHandler.Handle(FlexJobApi.Core.DeleteDictionaryCategoryCommand,System.Threading.CancellationToken)">
-            <summary>
-            鍒犻櫎鏁版嵁瀛楀吀绫诲埆
-            </summary>
-            <param name="request"></param>
-            <param name="cancellationToken"></param>
-            <returns></returns>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoryCommandHandler.Handle(FlexJobApi.Core.SaveDictionaryCategoryCommand,System.Threading.CancellationToken)">
-            <summary>
-            淇濆瓨鏁版嵁瀛楀吀绫诲埆
-            </summary>
-            <param name="request"></param>
-            <param name="cancellationToken"></param>
-            <returns></returns>
-        </member>
-        <member name="T:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler">
-            <summary>
-            鏁版嵁瀛楀吀鍛戒护澶勭悊鍣�
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory})">
-            <summary>
-            鏁版嵁瀛楀吀鍛戒护澶勭悊鍣�
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SaveDictionaryDataCommand,System.Threading.CancellationToken)">
-            <summary>
-            淇濆瓨鏁版嵁瀛楀吀
-            </summary>
-            <param name="request"></param>
-            <param name="cancellationToken"></param>
-            <returns></returns>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SetDictionaryDataIsDisabledCommand,System.Threading.CancellationToken)">
-            <summary>
-            璁剧疆鏁版嵁瀛楀吀鏄惁绂佺敤
-            </summary>
-            <param name="request"></param>
-            <param name="cancellationToken"></param>
-            <returns></returns>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SyncHumanResourcesAreaDictionaryDataCommand,System.Threading.CancellationToken)">
-            <summary>
-            鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁
-            </summary>
-            <param name="request"></param>
-            <param name="cancellationToken"></param>
-            <returns></returns>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler.LoopSyncHumanResourcesAreaDictionaryData(System.Guid,System.Collections.Generic.List{FlexJobApi.Core.DictionaryData},System.Collections.Generic.List{FlexJobApi.Core.BaseArea},System.Collections.Generic.List{FlexJobApi.Core.BaseArea},System.Int32)">
-            <summary>
-            閫掑綊鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁
-            </summary>
-            <param name="categoryId"></param>
-            <param name="entities"></param>
-            <param name="all"></param>
-            <param name="areas"></param>
-            <param name="deep"></param>
-        </member>
-        <member name="T:FlexJobApi.FlexJobServer.Application.DictionaryCategoriesQueryHandler">
-            <summary>
-            鏁版嵁瀛楀吀绫诲埆鏌ヨ澶勭悊鍣�
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoriesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory})">
-            <summary>
-            鏁版嵁瀛楀吀绫诲埆鏌ヨ澶勭悊鍣�
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoriesQueryHandler.Handle(FlexJobApi.Core.GetDictionaryCategoriesQuery,System.Threading.CancellationToken)">
-            <summary>
-            鏌ヨ鏁版嵁瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁
-            </summary>
-            <param name="request"></param>
-            <param name="cancellationToken"></param>
-            <returns></returns>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoriesQueryHandler.Handle(FlexJobApi.Core.GetDictionaryCategorySelectQuery,System.Threading.CancellationToken)">
-            <summary>
-            鏌ヨ鏁版嵁瀛楀吀绫诲埆閫夋嫨鍣ㄦ暟鎹�
-            </summary>
-            <param name="request"></param>
-            <param name="cancellationToken"></param>
-            <returns></returns>
-        </member>
-        <member name="T:FlexJobApi.FlexJobServer.Application.DictionaryDatasQueryHandler">
-            <summary>
-            鏁版嵁瀛楀吀鏌ヨ澶勭悊鍣�
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDatasQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData})">
-            <summary>
-            鏁版嵁瀛楀吀鏌ヨ澶勭悊鍣�
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDatasQueryHandler.Handle(FlexJobApi.Core.GetDictionaryDatasQuery,System.Threading.CancellationToken)">
-            <summary>
-            鑾峰彇鏁版嵁瀛楀吀鍒嗛〉鍒楄〃鏁版嵁
-            </summary>
-            <param name="request"></param>
-            <param name="cancellationToken"></param>
-            <returns></returns>
-        </member>
-        <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDatasQueryHandler.Handle(FlexJobApi.Core.GetDictionaryDataSelectQuery,System.Threading.CancellationToken)">
-            <summary>
-            鏌ヨ鏁版嵁瀛楀吀閫夋嫨鍣�
-            </summary>
-            <param name="request"></param>
-            <param name="cancellationToken"></param>
-            <returns></returns>
-        </member>
         <member name="T:FlexJobApi.FlexJobServer.Application.TaskInfoCommandHandler">
             <summary>
             浠诲姟鍛戒护澶勭悊鍣�
diff --git a/FlexJobApi.FlexJobServer.Test/Program.cs b/FlexJobApi.FlexJobServer.Test/Program.cs
deleted file mode 100644
index 611ed5a..0000000
--- a/FlexJobApi.FlexJobServer.Test/Program.cs
+++ /dev/null
@@ -1 +0,0 @@
-Serve.Run(RunOptions.Default.WithArgs(args));
\ No newline at end of file
diff --git a/FlexJobApi.FlexJobServer.Test/Startup.cs b/FlexJobApi.FlexJobServer.Test/Startup.cs
index 9d58144..6524f75 100644
--- a/FlexJobApi.FlexJobServer.Test/Startup.cs
+++ b/FlexJobApi.FlexJobServer.Test/Startup.cs
@@ -18,54 +18,12 @@
     {
         public void ConfigureServices(IServiceCollection services, IConfiguration config)
         {
-            services.AddSingleton<IConsulClient, ConsulClient>(p => new ConsulClient(options =>
-            {
-                var address = config["Consul:Address"] ?? "http://localhost:8500";
-                options.Address = new Uri(address);
-            }));
             services.AddComponent<DistributedCacheServiceComponent>();
             services.AddHttpRemote();
-            services.AddSingleton<ResourceHttpUtils>();
         }
 
         public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IConfiguration config)
         {
-            var consulClient = app.ApplicationServices.GetRequiredService<IConsulClient>();
-            var lifetime = app.ApplicationServices.GetRequiredService<IHostApplicationLifetime>();
-
-            // 鏈嶅姟閰嶇疆锛堜粠appsettings.json璇诲彇锛�
-            var serviceName = config["Consul:ServiceName"] ?? "UnknownService";
-            var serviceHost = config["Consul:ServiceIP"] ?? "localhost";
-            var servicePort = int.Parse(config["Consul:ServicePort"]); // 鎴栫洿鎺ョ敤鍚姩绔彛
-
-            // 鏈嶅姟鍞竴ID锛堥伩鍏嶅悓涓�鏈嶅姟澶氬疄渚嬪啿绐侊級
-            var serviceId = $"{serviceName}-{serviceHost}-{servicePort}";
-
-            // 鏈嶅姟娉ㄥ唽淇℃伅
-            var registration = new AgentServiceRegistration
-            {
-                ID = serviceId,
-                Name = serviceName,
-                Address = serviceHost,
-                Port = servicePort,
-                // 鍋ュ悍妫�鏌ラ厤缃�
-                Check = new AgentServiceCheck
-                {
-                    HTTP = $"http://{serviceHost}:{servicePort}{config["Consul:ServiceHealthCheck"]}",
-                    Interval = TimeSpan.FromSeconds(10),
-                    Timeout = TimeSpan.FromSeconds(5),
-                    DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(30)
-                }
-            };
-
-            // 娉ㄥ唽鏈嶅姟
-            consulClient.Agent.ServiceRegister(registration).Wait();
-
-            // 搴旂敤鍋滄鏃舵敞閿�鏈嶅姟
-            lifetime.ApplicationStopping.Register(() =>
-            {
-                consulClient.Agent.ServiceDeregister(serviceId).Wait();
-            });
         }
     }
 }
diff --git a/FlexJobApi.FlexJobServer.Test/Tasks/TaskUnitTest.cs b/FlexJobApi.FlexJobServer.Test/Tasks/TaskUnitTest.cs
index 4d96e1e..bd93c3f 100644
--- a/FlexJobApi.FlexJobServer.Test/Tasks/TaskUnitTest.cs
+++ b/FlexJobApi.FlexJobServer.Test/Tasks/TaskUnitTest.cs
@@ -1,36 +1,39 @@
 锘縰sing FlexJobApi.Core;
+using Microsoft.Extensions.DependencyInjection;
 using System.Threading.Tasks;
 
 namespace FlexJobApi.FlexJobServer.Test
 {
     public class TaskUnitTest
     {
-        private readonly ResourceHttpUtils http;
+        private readonly ResourceHttpUtils resourceHttpUtils;
 
-        public TaskUnitTest(ResourceHttpUtils http)
+        public TaskUnitTest(ResourceHttpUtils resourceHttpUtils)
         {
-            this.http = http;
+            this.resourceHttpUtils = resourceHttpUtils;
         }
 
         [Fact]
         public async Task Test1()
         {
-            var categories = await http.SendHttpAsync<
+            Console.WriteLine();
+            var categories = await resourceHttpUtils.SendHttpAsync<
                 GetDictionaryCategorySelectQuery,
                 FriendlyResult<SelectOption<Guid, GetDictionaryCategorySelectQueryOption>>>(
                 new GetDictionaryCategorySelectQuery());
             Console.WriteLine();
-            var result = await ResourceUtils.SendHttpAsync<SaveTaskInfoCommand, Guid>(new SaveTaskInfoCommand
-            {
-                Name = "娴嬭瘯浠诲姟",
-                BillingMethod = EnumBillingMethod.Month,
-                ServiceFee = 100,
-                SettlementCycle = EnumSettlementCycle.Month,
-                Benefits = new List<string>
-                {
+            //Console.WriteLine();
+            //var result = await resourceHttpUtils.SendHttpAsync<SaveTaskInfoCommand, Guid>(new SaveTaskInfoCommand
+            //{
+            //    Name = "娴嬭瘯浠诲姟",
+            //    BillingMethod = EnumBillingMethod.Month,
+            //    ServiceFee = 100,
+            //    SettlementCycle = EnumSettlementCycle.Month,
+            //    Benefits = new List<string>
+            //    {
 
-                }
-            });
+            //    }
+            //});
         }
     }
 }
diff --git a/FlexJobApi.FlexJobServer.Test/TestProgram.cs b/FlexJobApi.FlexJobServer.Test/TestProgram.cs
new file mode 100644
index 0000000..93c1891
--- /dev/null
+++ b/FlexJobApi.FlexJobServer.Test/TestProgram.cs
@@ -0,0 +1,21 @@
+锘縰sing FlexJobApi.Core;
+using Furion.Xunit;
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Xunit.Abstractions;
+
+[assembly: TestFramework("FlexJobApi.FlexJobServer.Test.TestProgram", "FlexJobApi.FlexJobServer.Test")]
+namespace FlexJobApi.FlexJobServer.Test
+{
+    public class TestProgram : TestStartup
+    {
+        public TestProgram(IMessageSink messageSink) : base(messageSink)
+        {
+            Serve.Run<Startup>(LegacyRunOptions.Default);
+        }
+    }
+}
diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.csproj b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.csproj
index c51f897..4f446cf 100644
--- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.csproj
+++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.csproj
@@ -15,8 +15,4 @@
 		<ProjectReference Include="..\FlexJobApi.Core\FlexJobApi.Core.csproj" />
 	</ItemGroup>
 
-	<ItemGroup>
-	  <Folder Include="UserResumes\Commands\" />
-	</ItemGroup>
-
 </Project>
diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
index a96c92a..5ec45ad 100644
--- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
+++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
@@ -322,32 +322,6 @@
             <param name="all"></param>
             <param name="roleMenuIds"></param>
         </member>
-        <member name="T:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler">
-            <summary>
-            鑾峰彇璧勬簮瀛楁
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource})">
-            <summary>
-            鑾峰彇璧勬簮瀛楁
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler.Handle(FlexJobApi.Core.GetResourceFieldsQuery,System.Threading.CancellationToken)">
-            <inheritdoc/>
-        </member>
-        <member name="T:FlexJobApi.UserServer.Application.GetResourcesQueryHandler">
-            <summary>
-            鑾峰彇璧勬簮鍒楄〃
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.UserServer.Application.GetResourcesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource})">
-            <summary>
-            鑾峰彇璧勬簮鍒楄〃
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.UserServer.Application.GetResourcesQueryHandler.Handle(FlexJobApi.Core.GetResourcesQuery,System.Threading.CancellationToken)">
-            <inheritdoc/>
-        </member>
         <member name="T:FlexJobApi.UserServer.Application.DeleteRoleCommandHandler">
             <summary>
             鍒犻櫎瑙掕壊
@@ -443,16 +417,130 @@
         <member name="M:FlexJobApi.UserServer.Application.GetRoleUserInfosQueryHandler.Handle(FlexJobApi.Core.GetRoleUserInfosQuery,System.Threading.CancellationToken)">
             <inheritdoc/>
         </member>
+        <member name="T:FlexJobApi.UserServer.Application.UserResumeCommandHandler">
+            <summary>
+            鐢ㄦ埛绠�鍘嗗懡浠ゅ鐞嗗櫒
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User})">
+            <summary>
+            鐢ㄦ埛绠�鍘嗗懡浠ゅ鐞嗗櫒
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.SaveUserResumePersonalCommand,System.Threading.CancellationToken)">
+            <summary>
+            淇濆瓨鐢ㄦ埛绠�鍘�-涓汉淇℃伅
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.SaveUserResumeJobSeekingCommand,System.Threading.CancellationToken)">
+            <summary>
+            淇濆瓨鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.SaveUserResumeCredentialCommand,System.Threading.CancellationToken)">
+            <summary>
+            淇濆瓨鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.DeleteUserResumeCredentialCommand,System.Threading.CancellationToken)">
+            <summary>
+            鍒犻櫎鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.SaveUserResumeWorkExperienceCommand,System.Threading.CancellationToken)">
+            <summary>
+            淇濆瓨鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.SaveUserResumeDetailCommand,System.Threading.CancellationToken)">
+            <summary>
+            淇濆瓨鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
         <member name="T:FlexJobApi.UserServer.Application.UserResumeQueryHandler">
             <summary>
             鐢ㄦ埛绠�鍘嗘煡璇㈠鐞嗗櫒
             </summary>
         </member>
-        <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.UserResume})">
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User})">
             <summary>
             鐢ㄦ埛绠�鍘嗘煡璇㈠鐞嗗櫒
             </summary>
         </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumeQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumePersonalQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-涓汉淇℃伅
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumeJobSeekingQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumeCredentialsQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功鍒楄〃
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumeCredentialQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumeWorkExperienceQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumeDetailQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
         <member name="T:FlexJobApi.UserServer.Application.UserInfos.Commands.UserInfoCommandHandler">
             <summary>
             鐢ㄦ埛淇℃伅鍛戒护澶勭悊鍣�
diff --git a/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs
new file mode 100644
index 0000000..4c65431
--- /dev/null
+++ b/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs
@@ -0,0 +1,117 @@
+锘縰sing FlexJobApi.Core;
+using Furion.DatabaseAccessor;
+using Furion.FriendlyException;
+using Mapster;
+using MediatR;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.UserServer.Application
+{
+    /// <summary>
+    /// 鐢ㄦ埛绠�鍘嗗懡浠ゅ鐞嗗櫒
+    /// </summary>
+    public class UserResumeCommandHandler(
+            IRepository<User> rep
+        ) :
+        IRequestHandler<SaveUserResumePersonalCommand, Guid>,
+        IRequestHandler<SaveUserResumeJobSeekingCommand, Guid>,
+        IRequestHandler<SaveUserResumeCredentialCommand, Guid>,
+        IRequestHandler<DeleteUserResumeCredentialCommand, int>,
+        IRequestHandler<SaveUserResumeWorkExperienceCommand, Guid>,
+        IRequestHandler<SaveUserResumeDetailCommand, Guid>
+    {
+        private readonly IRepository<User> rep = rep;
+
+        /// <summary>
+        /// 淇濆瓨鐢ㄦ埛绠�鍘�-涓汉淇℃伅
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<Guid> Handle(SaveUserResumePersonalCommand request, CancellationToken cancellationToken)
+        {
+            return rep.GetPersonalQueryable(true)
+                .UpdateData(request, cancellationToken: cancellationToken);
+        }
+
+        /// <summary>
+        /// 淇濆瓨鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<Guid> Handle(SaveUserResumeJobSeekingCommand request, CancellationToken cancellationToken)
+        {
+            return rep.GetPersonalQueryable(true)
+                .Include(it => it.UserExpectJobs)
+                .UpdateData(
+                    request,
+                    (entity) =>
+                    {
+                        request.Adapt(entity);
+                        entity.UserExpectJobs = request.UserExpectJobs.Select(it => new UserExpectJob
+                        {
+                            ExpectJobCode = it
+                        }).ToList();
+                    },
+                    cancellationToken: cancellationToken);
+        }
+
+        /// <summary>
+        /// 淇濆瓨鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<Guid> Handle(SaveUserResumeCredentialCommand request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            return request.SaveData<UserCredential, SaveUserResumeCredentialCommand>(
+                q => rep.GetPersonalQueryable(true).SelectMany(it => it.UserCredentials),
+                cancellationToken: cancellationToken);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<int> Handle(DeleteUserResumeCredentialCommand request, CancellationToken cancellationToken)
+        {
+            return request.DeleteData<UserCredential>(
+                q => rep.GetPersonalQueryable(true).SelectMany(it => it.UserCredentials),
+                cancellationToken);
+        }
+
+        /// <summary>
+        /// 淇濆瓨鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<Guid> Handle(SaveUserResumeWorkExperienceCommand request, CancellationToken cancellationToken)
+        {
+            return rep.GetPersonalQueryable(true)
+                .UpdateData(request, cancellationToken: cancellationToken);
+        }
+
+        /// <summary>
+        /// 淇濆瓨鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<Guid> Handle(SaveUserResumeDetailCommand request, CancellationToken cancellationToken)
+        {
+            return rep.GetPersonalQueryable(true)
+                .Include(it => it.Photos)
+                .UpdateData(request, cancellationToken: cancellationToken);
+        }
+    }
+}
diff --git a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs
index 4eaf42e..680d589 100644
--- a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs
+++ b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs
@@ -1,6 +1,9 @@
 锘縰sing FlexJobApi.Core;
 using Furion.DatabaseAccessor;
+using Furion.FriendlyException;
+using Mapster;
 using MediatR;
+using Microsoft.EntityFrameworkCore;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -13,15 +16,116 @@
     /// 鐢ㄦ埛绠�鍘嗘煡璇㈠鐞嗗櫒
     /// </summary>
     public class UserResumeQueryHandler(
-            IRepository<UserResume> rep
+            IRepository<User> rep
         ) :
-        IRequestHandler<GetUserResumeQuery, GetUserResumeQueryResult>
+        IRequestHandler<GetUserResumeQuery, GetUserResumeQueryResult>,
+        IRequestHandler<GetUserResumePersonalQuery, GetUserResumePersonalQueryResult>,
+        IRequestHandler<GetUserResumeJobSeekingQuery, GetUserResumeJobSeekingQueryResult>,
+        IRequestHandler<GetUserResumeCredentialsQuery, List<GetUserResumeCredentialsQueryResultItem>>,
+        IRequestHandler<GetUserResumeCredentialQuery, GetUserResumeCredentialQueryResult>,
+        IRequestHandler<GetUserResumeWorkExperienceQuery, GetUserResumeWorkExperienceQueryResult>,
+        IRequestHandler<GetUserResumeDetailQuery, GetUserResumeDetailQueryResult>
     {
-        private readonly IRepository<UserResume> rep = rep;
+        private readonly IRepository<User> rep = rep;
 
-        public Task<GetUserResumeQueryResult> Handle(GetUserResumeQuery request, CancellationToken cancellationToken)
+        /// <summary>
+        /// 鏌ヨ鐢ㄦ埛绠�鍘�
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<GetUserResumeQueryResult> Handle(GetUserResumeQuery request, CancellationToken cancellationToken)
         {
-            throw new NotImplementedException();
+            var logier = JwtUtils.GetCurrentLogier();
+            if (logier.Type == EnumUserType.Personal)
+            {
+                request.UserId = logier.Id;
+            }
+            if (request.UserId == null) throw Oops.Oh(EnumErrorCodeType.s400, "璇烽�夋嫨鐢ㄦ埛");
+            var model = await request.UserId.Value
+                 .GetDetail<User, GetUserResumeQueryResult>(cancellationToken);
+            model.TaskCount = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking()
+                .Where(it => it.UserId == model.Id && it.HireStatus == EnumTaskUserHireStatus.Pass)
+                .CountAsync();
+            return model;
         }
+
+        /// <summary>
+        /// 鏌ヨ鐢ㄦ埛绠�鍘�-涓汉淇℃伅
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<GetUserResumePersonalQueryResult> Handle(GetUserResumePersonalQuery request, CancellationToken cancellationToken)
+        {
+            return rep.GetPersonalQueryable(false)
+                .GetDetail<User, GetUserResumePersonalQueryResult>(cancellationToken);
+        }
+
+        /// <summary>
+        /// 鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<GetUserResumeJobSeekingQueryResult> Handle(GetUserResumeJobSeekingQuery request, CancellationToken cancellationToken)
+        {
+            return rep.GetPersonalQueryable(false)
+                .GetDetail<User, GetUserResumeJobSeekingQueryResult>(cancellationToken);
+        }
+
+        /// <summary>
+        /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功鍒楄〃
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<List<GetUserResumeCredentialsQueryResultItem>> Handle(GetUserResumeCredentialsQuery request, CancellationToken cancellationToken)
+        {
+            return await rep.GetPersonalQueryable(false)
+                .SelectMany(it => it.UserCredentials)
+                .OrderBy(it => it.CreatedTime)
+                .ProjectToType<GetUserResumeCredentialsQueryResultItem>()
+                .ToListAsync(cancellationToken);
+        }
+
+        /// <summary>
+        /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<GetUserResumeCredentialQueryResult> Handle(GetUserResumeCredentialQuery request, CancellationToken cancellationToken)
+        {
+            return rep.GetPersonalQueryable(false)
+                .SelectMany(it => it.UserCredentials)
+                .Where(it => it.Id == request.Id)
+                .GetDetail<UserCredential, GetUserResumeCredentialQueryResult>(cancellationToken);
+        }
+
+        /// <summary>
+        /// 鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<GetUserResumeWorkExperienceQueryResult> Handle(GetUserResumeWorkExperienceQuery request, CancellationToken cancellationToken)
+        {
+            return rep.GetPersonalQueryable(false)
+                .GetDetail<User, GetUserResumeWorkExperienceQueryResult>(cancellationToken);
+        }
+
+        /// <summary>
+        /// 鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<GetUserResumeDetailQueryResult> Handle(GetUserResumeDetailQuery request, CancellationToken cancellationToken)
+        {
+            return rep.GetPersonalQueryable(false)
+                .GetDetail<User, GetUserResumeDetailQueryResult>(cancellationToken);
+        }
+
     }
 }
diff --git a/FlexJobApi.Web.Entry/FlexJobApi.Web.Entry.csproj b/FlexJobApi.Web.Entry/FlexJobApi.Web.Entry.csproj
index d6cc33a..f86dd1d 100644
--- a/FlexJobApi.Web.Entry/FlexJobApi.Web.Entry.csproj
+++ b/FlexJobApi.Web.Entry/FlexJobApi.Web.Entry.csproj
@@ -22,6 +22,7 @@
 
 
 	<ItemGroup>
+		<ProjectReference Include="..\FlexJobApi.CommonServer.Application\FlexJobApi.CommonServer.Application.csproj" />
 		<ProjectReference Include="..\FlexJobApi.Database.Migrations\FlexJobApi.Database.Migrations.csproj" />
 		<ProjectReference Include="..\FlexJobApi.FlexJobServer.Application\FlexJobApi.FlexJobServer.Application.csproj" />
 		<ProjectReference Include="..\FlexJobApi.UserServer.Application\FlexJobApi.UserServer.Application.csproj" />
diff --git a/FlexJobApi.Core/FlexJobApiCoreStartup.cs b/FlexJobApi.Web.Entry/Startup.cs
similarity index 84%
rename from FlexJobApi.Core/FlexJobApiCoreStartup.cs
rename to FlexJobApi.Web.Entry/Startup.cs
index de3bf71..21d2a78 100644
--- a/FlexJobApi.Core/FlexJobApiCoreStartup.cs
+++ b/FlexJobApi.Web.Entry/Startup.cs
@@ -1,6 +1,8 @@
 锘縰sing Consul;
+using FlexJobApi.Core;
 using Furion;
 using Furion.EventBus;
+using Furion.Schedule;
 using MediatR;
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Hosting;
@@ -13,35 +15,18 @@
 using System.Text;
 using System.Threading.Tasks;
 
-namespace FlexJobApi.Core
+namespace FlexJobApi.Web.Entry
 {
     [AppStartup(2)]
-    public class FlexJobApiCoreStartup : AppStartup
+    public class Startup : AppStartup
     {
         public void ConfigureServices(IServiceCollection services)
         {
             services.AddHealthChecks();
 
-            services.AddConsoleFormatter(options =>
-            {
-                options.WithTraceId = true;
-            });
-
-            services.AddFileLogging(options =>
-            {
-                options.WithTraceId = true;
-                options.FileNameRule = fileName =>
-                {
-                    return string.Format(fileName, DateTime.Now);
-                };
-            });
-
-            //services.AddDatabaseLogging<DatabaseLoggingWriter>(options =>
-            //{
-            //    options.WithTraceId = true;
-            //});
-
             services.AddConfigurableOptions<AliyunOptions>();
+
+            services.AddComponent<LogServiceComponent>();
 
             services.AddComponent<ConsulServiceComponent>();
 
@@ -64,6 +49,13 @@
             services.AddCorsAccessor();
 
             services.AddHostedService<BuildDynamicControllersHostedService>();
+
+            services.AddSchedule(options =>
+            {
+                options.BuildSqlType = SqlTypes.SqlServer;
+                options.JobDetail.LogEnabled = true;
+                options.AddPersistence<DbJobPersistence>();
+            });
 
             services.AddSpecificationDocuments(options =>
             {
@@ -112,6 +104,9 @@
 
             app.UseInject(string.Empty);
 
+            app.UseStaticFiles();
+            app.UseScheduleUI();
+
             app.UseSpecificationDocuments();
 
             app.UseEndpoints(endpoints =>
diff --git a/FlexJobApi.sln b/FlexJobApi.sln
index 24a73e4..f2ca832 100644
--- a/FlexJobApi.sln
+++ b/FlexJobApi.sln
@@ -21,6 +21,10 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlexJobApi.FlexJobServer.Test", "FlexJobApi.FlexJobServer.Test\FlexJobApi.FlexJobServer.Test.csproj", "{1D9D054D-B5D4-4F5B-B1D1-0354CD0F322F}"
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FlexJobApi.CommonServer", "FlexJobApi.CommonServer", "{66290CF1-30A7-4F7F-8FF1-68030ECDBE6E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlexJobApi.CommonServer.Application", "FlexJobApi.CommonServer.Application\FlexJobApi.CommonServer.Application.csproj", "{EB492A13-0B50-4410-969A-CE98AA8E034C}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -55,6 +59,10 @@
 		{1D9D054D-B5D4-4F5B-B1D1-0354CD0F322F}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{1D9D054D-B5D4-4F5B-B1D1-0354CD0F322F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{1D9D054D-B5D4-4F5B-B1D1-0354CD0F322F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{EB492A13-0B50-4410-969A-CE98AA8E034C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{EB492A13-0B50-4410-969A-CE98AA8E034C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{EB492A13-0B50-4410-969A-CE98AA8E034C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{EB492A13-0B50-4410-969A-CE98AA8E034C}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -63,6 +71,7 @@
 		{BAC3E134-8D84-4F6D-8C25-AD6FD8A95697} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
 		{6D8B1CA5-5859-491D-8E16-027ED8E44BDE} = {39E37108-90DA-4908-B04C-B5A06591326D}
 		{1D9D054D-B5D4-4F5B-B1D1-0354CD0F322F} = {39E37108-90DA-4908-B04C-B5A06591326D}
+		{EB492A13-0B50-4410-969A-CE98AA8E034C} = {66290CF1-30A7-4F7F-8FF1-68030ECDBE6E}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {B2073C2C-0FD3-452B-8047-8134D68E12CE}

--
Gitblit v1.9.1