From 937dbb7cc77729b1a7d35b87fd421bc44046c108 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 01 八月 2025 13:57:29 +0800
Subject: [PATCH] feat:基础框架开发

---
 FlexJobApi.Core/settings.json                                                           |   20 
 FlexJobApi.Core/Models/User/Auths/Commands/AuthPasswordLoginCommand.cs                  |    4 
 FlexJobApi.User.Application/FlexJobApi.User.Application.csproj                          |    4 
 FlexJobApi.User.Application/Auths/Commands/AuthPasswordLoginCommandHandler.cs           |   10 
 FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.cs          |   88 +
 FlexJobApi.Core/Entities/Users/Department.cs                                            |    5 
 FlexJobApi.User.Application/Menus/MenuAppService.cs                                     |   37 
 FlexJobApi.Core/Entities/Users/Menu.cs                                                  |    9 
 FlexJobApi.User.Application/Auths/AuthAppService.cs                                     |    2 
 FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.Designer.cs | 2116 +++++++++++++++++++++++++++++++++++++++++++++
 FlexJobApi.User.Application/EnumUserErrorCodeType.cs                                    |    8 
 FlexJobApi.Application/FlexJobApi.Application.csproj                                    |    7 
 FlexJobApi.User.Application/Menus/Queries/MenuAllQueryHandler.cs                        |   14 
 /dev/null                                                                               |   23 
 FlexJobApi.Core/Entities/Common/DictionaryData.cs                                       |    5 
 FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs                    |   40 
 FlexJobApi.Core/Models/User/Menus/Queries/MenuAllQuery.cs                               |  105 ++
 FlexJobApi.Core/FlexJobApi.Core.xml                                                     |  196 ++++
 FlexJobApi.Core/Models/User/Menus/Commands/MenuSaveCommand.cs                           |   94 ++
 FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs              |   19 
 FlexJobApi.Core/FlexJobApi.Core.csproj                                                  |    4 
 21 files changed, 2,750 insertions(+), 60 deletions(-)

diff --git a/FlexJobApi.Application/FlexJobApi.Application.csproj b/FlexJobApi.Application/FlexJobApi.Application.csproj
index fdfcdaf..ee4ac83 100644
--- a/FlexJobApi.Application/FlexJobApi.Application.csproj
+++ b/FlexJobApi.Application/FlexJobApi.Application.csproj
@@ -9,14 +9,7 @@
 	</PropertyGroup>
 
 	<ItemGroup>
-		<None Remove="applicationsettings.json" />
 		<None Remove="FlexJobApi.Application.xml" />
-	</ItemGroup>
-
-	<ItemGroup>
-		<Content Include="applicationsettings.json">
-			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-		</Content>
 	</ItemGroup>
 
 	<ItemGroup>
diff --git a/FlexJobApi.Application/applicationsettings.json b/FlexJobApi.Application/applicationsettings.json
deleted file mode 100644
index 87a8a19..0000000
--- a/FlexJobApi.Application/applicationsettings.json
+++ /dev/null
@@ -1,23 +0,0 @@
-锘縶
-  "$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json",
-  "SpecificationDocumentSettings": {
-    "DocumentTitle": "鐏垫椿鐢ㄥ伐 | 瑙勮寖鍖栨帴鍙�",
-    "GroupOpenApiInfos": [
-      {
-        "Group": "Default",
-        "Title": "瑙勮寖鍖栨帴鍙f紨绀�",
-        "Version": "1.0.0",
-        "Contact": {
-          "Name": "瀛欓箯椋�",
-        }
-      }
-    ]
-  },
-  "CorsAccessorSettings": {
-    "WithExposedHeaders": [
-      "access-token",
-      "x-access-token",
-      "environment"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/FlexJobApi.Core/Entities/Common/DictionaryData.cs b/FlexJobApi.Core/Entities/Common/DictionaryData.cs
index 5b55b65..776160e 100644
--- a/FlexJobApi.Core/Entities/Common/DictionaryData.cs
+++ b/FlexJobApi.Core/Entities/Common/DictionaryData.cs
@@ -46,6 +46,11 @@
         public List<DictionaryData> Childrens { get; set; }
 
         /// <summary>
+        /// 瀛楀吀璺緞
+        /// </summary>
+        public string Path { get; set; }
+
+        /// <summary>
         /// 缂栧彿
         /// </summary>
         [MaxLength(128)]
diff --git a/FlexJobApi.Core/Entities/Users/Department.cs b/FlexJobApi.Core/Entities/Users/Department.cs
index a6a7629..3dcfe6a 100644
--- a/FlexJobApi.Core/Entities/Users/Department.cs
+++ b/FlexJobApi.Core/Entities/Users/Department.cs
@@ -36,6 +36,11 @@
         public List<Department> Childrens { get; set; }
 
         /// <summary>
+        /// 閮ㄩ棬璺緞
+        /// </summary>
+        public string Path { get; set; }
+
+        /// <summary>
         /// 浼佷笟Id
         /// </summary>
         public Guid EnterpriseId { get; set; }
diff --git a/FlexJobApi.Core/Entities/Users/Menu.cs b/FlexJobApi.Core/Entities/Users/Menu.cs
index 29b0efb..cb18619 100644
--- a/FlexJobApi.Core/Entities/Users/Menu.cs
+++ b/FlexJobApi.Core/Entities/Users/Menu.cs
@@ -36,6 +36,11 @@
         public List<Menu> Childrens { get; set; }
 
         /// <summary>
+        /// 鑿滃崟璺緞
+        /// </summary>
+        public string Path { get; set; }
+
+        /// <summary>
         /// 缂栧彿
         /// </summary>
         [Required]
@@ -74,9 +79,9 @@
         public string Group { get; set; }
 
         /// <summary>
-        /// 缁戝畾瀛楁
+        /// 鍒楀锛堢敤浜庢寜閽�/鍒�/鍏冪礌锛�
         /// </summary>
-        public string BindField { get; set; }
+        public string Width { get; set; }
 
         /// <summary>
         /// 鏄惁绂佺敤
diff --git a/FlexJobApi.Core/FlexJobApi.Core.csproj b/FlexJobApi.Core/FlexJobApi.Core.csproj
index e1c31cd..fda7117 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.csproj
+++ b/FlexJobApi.Core/FlexJobApi.Core.csproj
@@ -27,9 +27,7 @@
 
 	<ItemGroup>
 	  <Folder Include="Models\Main\" />
-	  <Folder Include="Models\User\Auth\Queries\" />
-	  <Folder Include="Models\User\Menu\Commands\" />
-	  <Folder Include="Models\User\Menu\Queries\" />
+	  <Folder Include="Models\User\Auths\Queries\" />
 	</ItemGroup>
 
 	<ItemGroup>
diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index f508e35..680801f 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -109,6 +109,11 @@
             涓嬬骇
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.DictionaryData.Path">
+            <summary>
+            瀛楀吀璺緞
+            </summary>
+        </member>
         <member name="P:FlexJobApi.Core.DictionaryData.Code">
             <summary>
             缂栧彿
@@ -654,6 +659,11 @@
             涓嬬骇
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.Department.Path">
+            <summary>
+            閮ㄩ棬璺緞
+            </summary>
+        </member>
         <member name="P:FlexJobApi.Core.Department.EnterpriseId">
             <summary>
             浼佷笟Id
@@ -814,6 +824,11 @@
             涓嬬骇
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.Menu.Path">
+            <summary>
+            鑿滃崟璺緞
+            </summary>
+        </member>
         <member name="P:FlexJobApi.Core.Menu.Code">
             <summary>
             缂栧彿
@@ -849,9 +864,9 @@
             鍒嗙粍鍚嶇О锛堢敤浜庢寜閽�/瀛楁锛�
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.Menu.BindField">
+        <member name="P:FlexJobApi.Core.Menu.Width">
             <summary>
-            缁戝畾瀛楁
+            鍒楀锛堢敤浜庢寜閽�/鍒�/鍏冪礌锛�
             </summary>
         </member>
         <member name="P:FlexJobApi.Core.Menu.IsDisabled">
@@ -1864,36 +1879,201 @@
             鐗╃悊鍒犻櫎
             </summary>
         </member>
-        <member name="T:FlexJobApi.Core.UserAuthPasswordLoginCommand">
+        <member name="T:FlexJobApi.Core.AuthPasswordLoginCommand">
             <summary>
             瀵嗙爜鐧诲綍
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.UserAuthPasswordLoginCommand.UserName">
+        <member name="P:FlexJobApi.Core.AuthPasswordLoginCommand.UserName">
             <summary>
             璐﹀彿
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.UserAuthPasswordLoginCommand.Password">
+        <member name="P:FlexJobApi.Core.AuthPasswordLoginCommand.Password">
             <summary>
             瀵嗙爜
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.UserAuthPasswordLoginCommand.Type">
+        <member name="P:FlexJobApi.Core.AuthPasswordLoginCommand.Type">
             <summary>
             鐢ㄦ埛绫诲瀷
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.UserAuthPasswordLoginCommand.ClientType">
+        <member name="P:FlexJobApi.Core.AuthPasswordLoginCommand.ClientType">
             <summary>
             瀹㈡埛绔被鍨�
             </summary>
         </member>
-        <member name="T:FlexJobApi.Core.UserAuthPasswordLoginCallback">
+        <member name="T:FlexJobApi.Core.AuthPasswordLoginCallback">
             <summary>
             瀵嗙爜鐧诲綍缁撴灉
             </summary>
         </member>
+        <member name="T:FlexJobApi.Core.MenuSaveCommand">
+            <summary>
+            淇濆瓨鑿滃崟
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.ParentId">
+            <summary>
+            涓婄骇Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.Code">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.Type">
+            <summary>
+            绫诲瀷
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.VisitLevel">
+            <summary>
+            璁块棶绾у埆
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.Url">
+            <summary>
+            閾炬帴鍦板潃
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.Group">
+            <summary>
+            鍒嗙粍鍚嶇О锛堢敤浜庢寜閽�/瀛楁锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.Width">
+            <summary>
+            鍒楀锛堢敤浜庢寜閽�/鍒�/鍏冪礌锛�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.IsDisabled">
+            <summary>
+            鏄惁绂佺敤
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.IsHidden">
+            <summary>
+            鏄惁闅愯棌
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.IsCache">
+            <summary>
+            鏄惁缂撳瓨
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuSaveCommand.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.MenuAllQuery">
+            <summary>
+            鏌ヨ鎵�鏈夎彍鍗�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.MenuAllCallback">
+            <summary>
+            鏌ヨ鎵�鏈夎彍鍗�-缁撴灉
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.MenuAllCallbackItem">
+            <summary>
+            鏌ヨ鎵�鏈夎彍鍗�-缁撴灉-椤�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.ParentId">
+            <summary>
+            涓婄骇Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Path">
+            <summary>
+            鑿滃崟璺緞
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Code">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Type">
+            <summary>
+            绫诲瀷
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.VisitLevel">
+            <summary>
+            璁块棶绾у埆
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Url">
+            <summary>
+            閾炬帴鍦板潃
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.IsDisabled">
+            <summary>
+            鏄惁绂佺敤
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.IsHidden">
+            <summary>
+            鏄惁闅愯棌
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.IsCache">
+            <summary>
+            鏄惁缂撳瓨
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
         <member name="M:FlexJobApi.Core.CollectionUtils.DistinctAdd``1(System.Collections.Generic.List{``0},``0,System.Collections.Generic.IEqualityComparer{``0})">
             <summary>
             鍘婚噸娣诲姞
diff --git a/FlexJobApi.Core/Models/User/Auth/Commands/UserAuthPasswordLoginCommand.cs b/FlexJobApi.Core/Models/User/Auths/Commands/AuthPasswordLoginCommand.cs
similarity index 87%
rename from FlexJobApi.Core/Models/User/Auth/Commands/UserAuthPasswordLoginCommand.cs
rename to FlexJobApi.Core/Models/User/Auths/Commands/AuthPasswordLoginCommand.cs
index 2fdf245..e13c745 100644
--- a/FlexJobApi.Core/Models/User/Auth/Commands/UserAuthPasswordLoginCommand.cs
+++ b/FlexJobApi.Core/Models/User/Auths/Commands/AuthPasswordLoginCommand.cs
@@ -12,7 +12,7 @@
     /// <summary>
     /// 瀵嗙爜鐧诲綍
     /// </summary>
-    public class UserAuthPasswordLoginCommand : IRequest<UserAuthPasswordLoginCallback>
+    public class AuthPasswordLoginCommand : IRequest<AuthPasswordLoginCallback>
     {
         /// <summary>
         /// 璐﹀彿
@@ -41,7 +41,7 @@
     /// <summary>
     /// 瀵嗙爜鐧诲綍缁撴灉
     /// </summary>
-    public class UserAuthPasswordLoginCallback
+    public class AuthPasswordLoginCallback
     {
 
     }
diff --git a/FlexJobApi.Core/Models/User/Menus/Commands/MenuSaveCommand.cs b/FlexJobApi.Core/Models/User/Menus/Commands/MenuSaveCommand.cs
new file mode 100644
index 0000000..a5987dd
--- /dev/null
+++ b/FlexJobApi.Core/Models/User/Menus/Commands/MenuSaveCommand.cs
@@ -0,0 +1,94 @@
+锘縰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>
+    public class MenuSaveCommand : IRequest<Guid>
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public Guid? Id { get; set; }
+
+        /// <summary>
+        /// 涓婄骇Id
+        /// </summary>
+        public Guid? ParentId { get; set; }
+
+        /// <summary>
+        /// 缂栧彿
+        /// </summary>
+        [Required]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required]
+        [MaxLength(128)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public EnumMenuType Type { get; set; }
+
+        /// <summary>
+        /// 璁块棶绾у埆
+        /// </summary>
+        public EnumMenuVisitLevel VisitLevel { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 閾炬帴鍦板潃
+        /// </summary>
+        public string Url { get; set; }
+
+        /// <summary>
+        /// 鍒嗙粍鍚嶇О锛堢敤浜庢寜閽�/瀛楁锛�
+        /// </summary>
+        public string Group { get; set; }
+
+        /// <summary>
+        /// 鍒楀锛堢敤浜庢寜閽�/鍒�/鍏冪礌锛�
+        /// </summary>
+        public string Width { get; set; }
+
+        /// <summary>
+        /// 鏄惁绂佺敤
+        /// </summary>
+        public bool IsDisabled { get; set; }
+
+        /// <summary>
+        /// 鏄惁闅愯棌
+        /// </summary>
+        public bool IsHidden { get; set; }
+
+        /// <summary>
+        /// 鏄惁缂撳瓨
+        /// </summary>
+        public bool IsCache { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/User/Menus/Queries/MenuAllQuery.cs b/FlexJobApi.Core/Models/User/Menus/Queries/MenuAllQuery.cs
new file mode 100644
index 0000000..9215ab7
--- /dev/null
+++ b/FlexJobApi.Core/Models/User/Menus/Queries/MenuAllQuery.cs
@@ -0,0 +1,105 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鏌ヨ鎵�鏈夎彍鍗�
+    /// </summary>
+    public class MenuAllQuery
+    {
+    }
+
+    /// <summary>
+    /// 鏌ヨ鎵�鏈夎彍鍗�-缁撴灉
+    /// </summary>
+    public class MenuAllCallback
+    {
+        public MenuAllCallback()
+        {
+            Items = [];
+        }
+
+        public List<MenuAllCallbackItem> Items { get; set; }
+    }
+
+    /// <summary>
+    /// 鏌ヨ鎵�鏈夎彍鍗�-缁撴灉-椤�
+    /// </summary>
+    public class MenuAllCallbackItem
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public Guid? Id { get; set; }
+
+        /// <summary>
+        /// 涓婄骇Id
+        /// </summary>
+        public Guid? ParentId { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟璺緞
+        /// </summary>
+        public string Path { get; set; }
+
+        /// <summary>
+        /// 缂栧彿
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public EnumMenuType Type { get; set; }
+
+        /// <summary>
+        /// 璁块棶绾у埆
+        /// </summary>
+        public EnumMenuVisitLevel VisitLevel { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 閾炬帴鍦板潃
+        /// </summary>
+        public string Url { get; set; }
+
+        /// <summary>
+        /// 鏄惁绂佺敤
+        /// </summary>
+        public bool IsDisabled { get; set; }
+
+        /// <summary>
+        /// 鏄惁闅愯棌
+        /// </summary>
+        public bool IsHidden { get; set; }
+
+        /// <summary>
+        /// 鏄惁缂撳瓨
+        /// </summary>
+        public bool IsCache { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/settings.json b/FlexJobApi.Core/settings.json
index 2925db2..05ffed3 100644
--- a/FlexJobApi.Core/settings.json
+++ b/FlexJobApi.Core/settings.json
@@ -1,5 +1,25 @@
 {
   "$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json",
+  "SpecificationDocumentSettings": {
+    "DocumentTitle": "鐏垫椿鐢ㄥ伐 | 瑙勮寖鍖栨帴鍙�",
+    "GroupOpenApiInfos": [
+      {
+        "Group": "Default",
+        "Title": "瑙勮寖鍖栨帴鍙f紨绀�",
+        "Version": "1.0.0",
+        "Contact": {
+          "Name": "瀛欓箯椋�"
+        }
+      }
+    ]
+  },
+  "CorsAccessorSettings": {
+    "WithExposedHeaders": [
+      "access-token",
+      "x-access-token",
+      "environment"
+    ]
+  },
   "AllowedHosts": "*",
   "FriendlyExceptionSettings": {
     "DefaultErrorCode": "500",
diff --git a/FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.Designer.cs
new file mode 100644
index 0000000..c883397
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.Designer.cs
@@ -0,0 +1,2116 @@
+锘�// <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("20250801052306_UpdateTreeData0801")]
+    partial class UpdateTreeData0801
+    {
+        /// <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<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<Guid>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("浼佷笟Id");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<bool>("IsDisabled")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁绂佺敤");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<Guid?>("ParentId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("涓婄骇Id");
+
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("ParentId");
+
+                    b.ToTable("Department", t =>
+                        {
+                            t.HasComment("閮ㄩ棬");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DictionaryCategory", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)")
+                        .HasComment("缂栧彿");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<string>("FieldNames")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("瀛楁鍚嶏紙閫楀彿闅斿紑锛�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("DictionaryCategory", t =>
+                        {
+                            t.HasComment("瀛楀吀绫诲埆");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("CategoryId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("绫诲埆Id");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)")
+                        .HasComment("缂栧彿");
+
+                    b.Property<string>("Content")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鏄剧ず鍐呭");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<string>("Field1")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("瀛楁1");
+
+                    b.Property<string>("Field2")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("瀛楁2");
+
+                    b.Property<string>("Field3")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("瀛楁3");
+
+                    b.Property<string>("Field4")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("瀛楁4");
+
+                    b.Property<string>("Field5")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("瀛楁5");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<Guid?>("ParentId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("涓婄骇Id");
+
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CategoryId");
+
+                    b.HasIndex("ParentId");
+
+                    b.ToTable("DictionaryData", t =>
+                        {
+                            t.HasComment("瀛楀吀鏁版嵁");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("BankCard")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("娉曚汉鎴栫粡鍔炰汉閾惰鍗″彿");
+
+                    b.Property<Guid?>("BankCardImgId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("娉曚汉鎴栫粡鍔炰汉閾惰鍗$収鐗嘔d");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<string>("EnterpriseName")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)")
+                        .HasComment("浼佷笟鍏ㄧО");
+
+                    b.Property<int?>("EnterpriseRealMethod")
+                        .HasColumnType("int")
+                        .HasComment("浼佷笟璁よ瘉鏂瑰紡");
+
+                    b.Property<string>("Identity")
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)")
+                        .HasComment("娉曚汉鎴栫粡鍔炰汉韬唤璇佸彿");
+
+                    b.Property<Guid?>("IdentityBackImgId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("娉曚汉鎴栫粡鍔炰汉韬唤璇佸浗寰介潰Id");
+
+                    b.Property<Guid?>("IdentityImgId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("娉曚汉鎴栫粡鍔炰汉韬唤璇佷汉鍍忛潰Id");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<bool>("IsReal")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁瀹炲悕");
+
+                    b.Property<string>("LegalPerson")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("娉曚汉濮撳悕");
+
+                    b.Property<Guid?>("LicenseImageId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("钀ヤ笟鎵х収鐓х墖Id");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("娉曚汉鎴栫粡鍔炰汉濮撳悕");
+
+                    b.Property<int?>("PersonalRealMethod")
+                        .HasColumnType("int")
+                        .HasComment("娉曚汉鎴栫粡鍔炰汉瀹炲悕鏂瑰紡");
+
+                    b.Property<string>("PhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)")
+                        .HasComment("娉曚汉鎴栫粡鍔炰汉鎵嬫満鍙�");
+
+                    b.Property<bool?>("Proxy")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁濮旀墭缁忓姙浜�");
+
+                    b.Property<string>("ProxyPowerAttorneyUrl")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("浼佷笟鎺堟潈涔�");
+
+                    b.Property<int?>("RealAccess")
+                        .HasColumnType("int")
+                        .HasComment("瀹炲悕閫氶亾");
+
+                    b.Property<string>("SocietyCreditCode")
+                        .IsRequired()
+                        .HasMaxLength(18)
+                        .HasColumnType("nvarchar(18)")
+                        .HasComment("缁熶竴绀句細淇$敤浠g爜");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdentityBackImgId");
+
+                    b.HasIndex("IdentityImgId");
+
+                    b.HasIndex("LicenseImageId");
+
+                    b.ToTable("Enterprise", t =>
+                        {
+                            t.HasComment("浼佷笟");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.FileStore", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("AbsolutePath")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("缁濆璺緞");
+
+                    b.Property<int>("Access")
+                        .HasColumnType("int")
+                        .HasComment("閫氶亾");
+
+                    b.Property<string>("ContentType")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)")
+                        .HasComment("鍐呭绫诲瀷");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<string>("Extension")
+                        .IsRequired()
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("鎵╁睍鍚�");
+
+                    b.Property<int>("FileType")
+                        .HasColumnType("int")
+                        .HasComment("鏂囦欢绫诲瀷");
+
+                    b.Property<string>("Hash")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍝堝笇");
+
+                    b.Property<int?>("ImageHeight")
+                        .HasColumnType("int")
+                        .HasComment("楂樺害锛堝儚绱狅級");
+
+                    b.Property<int?>("ImageWidth")
+                        .HasColumnType("int")
+                        .HasComment("瀹藉害锛堝儚绱狅級");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<long>("Length")
+                        .HasColumnType("bigint")
+                        .HasComment("鏂囦欢澶у皬锛堝瓧鑺傦級");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("RelativePath")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鐩稿璺緞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("FileStore", t =>
+                        {
+                            t.HasComment("鏂囦欢瀛樺偍");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.FileVirtualPath", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<Guid>("StoreId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏂囦欢瀛樺偍Id");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<string>("VirtualPath")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("铏氭嫙璺緞");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("StoreId");
+
+                    b.ToTable("FileVirtualPath", t =>
+                        {
+                            t.HasComment("鏂囦欢铏氭嫙璺緞");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("缂栧彿");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<string>("Group")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍒嗙粍鍚嶇О锛堢敤浜庢寜閽�/瀛楁锛�");
+
+                    b.Property<string>("Icon")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍥炬爣");
+
+                    b.Property<bool>("IsCache")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁缂撳瓨");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<bool>("IsDisabled")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁绂佺敤");
+
+                    b.Property<bool>("IsHidden")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁闅愯棌");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<Guid?>("ParentId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("涓婄骇Id");
+
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("Remark")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int")
+                        .HasComment("绫诲瀷");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<string>("Url")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("閾炬帴鍦板潃");
+
+                    b.Property<int>("VisitLevel")
+                        .HasColumnType("int")
+                        .HasComment("璁块棶绾у埆");
+
+                    b.Property<string>("Width")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ParentId");
+
+                    b.ToTable("Menu", t =>
+                        {
+                            t.HasComment("鑿滃崟");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Role", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<int>("ClientType")
+                        .HasColumnType("int")
+                        .HasComment("瀹㈡埛绔被鍨�");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<int>("MinLevel")
+                        .HasColumnType("int")
+                        .HasComment("鏈�浣庣骇鍒�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<int>("UserType")
+                        .HasColumnType("int")
+                        .HasComment("鐢ㄦ埛绫诲瀷");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Role", t =>
+                        {
+                            t.HasComment("瑙掕壊");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<Guid>("MenuId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鑿滃崟Id");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("瑙掕壊Id");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MenuId");
+
+                    b.HasIndex("RoleId");
+
+                    b.ToTable("RoleMenu", t =>
+                        {
+                            t.HasComment("瑙掕壊鑿滃崟");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.RoleWebApi", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<int?>("DataPower")
+                        .HasColumnType("int")
+                        .HasComment("鏁版嵁鏉冮檺");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<Guid>("MenuId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鑿滃崟Id");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("瑙掕壊Id");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MenuId");
+
+                    b.HasIndex("RoleId");
+
+                    b.ToTable("RoleWebApi", t =>
+                        {
+                            t.HasComment("瑙掕壊鎺ュ彛");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Address")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("浠诲姟鍦扮偣璇︾粏鍦板潃");
+
+                    b.Property<int>("AgeMaxLimit")
+                        .HasColumnType("int")
+                        .HasComment("骞撮緞鑼冨洿澶�");
+
+                    b.Property<int>("AgeMinLimit")
+                        .HasColumnType("int")
+                        .HasComment("骞撮緞鑼冨洿鏈�灏�");
+
+                    b.Property<DateTime>("BeginTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("浠诲姟寮�濮嬫椂闂�");
+
+                    b.Property<int>("BillingMethod")
+                        .HasColumnType("int")
+                        .HasComment("璁¤垂鏂瑰紡");
+
+                    b.Property<Guid>("CityId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("浠诲姟鍦扮偣鎵�灞炲尯鍩烮d");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<DateTime>("EndTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("浠诲姟缁撴潫鏃堕棿");
+
+                    b.Property<Guid>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("浼佷笟Id");
+
+                    b.Property<int>("GenderLimit")
+                        .HasColumnType("int")
+                        .HasComment("鎬у埆瑕佹眰");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("浠诲姟鍚嶇О");
+
+                    b.Property<decimal>("ServiceFee")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏈嶅姟璐�");
+
+                    b.Property<int>("SettlementCycle")
+                        .HasColumnType("int")
+                        .HasComment("缁撶畻鏂瑰紡");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CityId");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.ToTable("TaskInfo", t =>
+                        {
+                            t.HasComment("浠诲姟淇℃伅");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid>("BenefitId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("绂忓埄Id");
+
+                    b.Property<Guid>("BenefitId1")
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<Guid>("TaskInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("浠诲姟Id");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("BenefitId");
+
+                    b.HasIndex("BenefitId1");
+
+                    b.ToTable("TaskInfoBenefit", t =>
+                        {
+                            t.HasComment("浠诲姟绂忓埄");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<Guid>("TaskInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("浠诲姟Id");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<Guid?>("TypeId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("璇佷功绫诲瀷Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.HasIndex("TypeId");
+
+                    b.ToTable("TaskInfoCredentialLimit");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<int>("HireStatus")
+                        .HasColumnType("int")
+                        .HasComment("褰曠敤鐘舵��");
+
+                    b.Property<DateTime?>("HireTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("褰曠敤鏃堕棿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<int?>("SignContractStatus")
+                        .HasColumnType("int")
+                        .HasComment("绛剧害鐘舵��");
+
+                    b.Property<DateTime?>("SignContractTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("绛剧害鏃堕棿");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<Guid>("TaskInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("浠诲姟Id");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<Guid>("UserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鐢ㄦ埛淇℃伅Id");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TaskInfoId");
+
+                    b.HasIndex("UserInfoId");
+
+                    b.ToTable("TaskInfoUser", t =>
+                        {
+                            t.HasComment("浠诲姟鐢ㄦ埛淇℃伅");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserAuth", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("AvatarId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("澶村儚Id");
+
+                    b.Property<string>("BankCard")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("閾惰鍗″彿");
+
+                    b.Property<Guid?>("BankCardImgId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("閾惰鍗$収鐗嘔d");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<string>("Identity")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("韬唤璇佸彿");
+
+                    b.Property<Guid?>("IdentityBackImgId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("韬唤璇佸浗寰介潰Id");
+
+                    b.Property<Guid?>("IdentityImgId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("韬唤璇佷汉鍍忛潰Id");
+
+                    b.Property<bool>("IsCheckPhoneNumber")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁宸叉牎楠屾墜鏈哄彿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<bool>("IsReal")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁瀹炲悕");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("濮撳悕");
+
+                    b.Property<string>("Password")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("瀵嗙爜");
+
+                    b.Property<string>("PhoneNumber")
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)")
+                        .HasComment("鎵嬫満鍙�");
+
+                    b.Property<int?>("RealAccess")
+                        .HasColumnType("int")
+                        .HasComment("瀹炲悕閫氶亾");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<string>("UserName")
+                        .IsRequired()
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("鐢ㄦ埛鍚�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("AvatarId");
+
+                    b.HasIndex("BankCardImgId");
+
+                    b.HasIndex("IdentityBackImgId");
+
+                    b.HasIndex("IdentityImgId");
+
+                    b.ToTable("UserAuth", t =>
+                        {
+                            t.HasComment("鐢ㄦ埛");
+                        });
+
+                    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,
+                            Name = "绠$悊鍛�",
+                            Sort = 0,
+                            UserName = "admin"
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfo", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("CityId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("甯搁┗鍩庡競Id");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<Guid?>("EducationalBackgroundId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("瀛﹀巻Id");
+
+                    b.Property<Guid?>("EnterpriseId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("浼佷笟Id");
+
+                    b.Property<int?>("FreeTime")
+                        .HasColumnType("int")
+                        .HasComment("绌洪棽鏃堕棿");
+
+                    b.Property<int?>("Height")
+                        .HasColumnType("int")
+                        .HasComment("韬珮");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<int?>("JobSeekingStatus")
+                        .HasColumnType("int")
+                        .HasComment("姹傝亴鐘舵��");
+
+                    b.Property<int>("Level")
+                        .HasColumnType("int")
+                        .HasComment("绾у埆");
+
+                    b.Property<Guid?>("PersonalIdentityId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("韬唤Id");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int")
+                        .HasComment("鐢ㄦ埛绫诲瀷");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<Guid>("UserAuthId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鐢ㄦ埛Id");
+
+                    b.Property<int?>("Weight")
+                        .HasColumnType("int")
+                        .HasComment("浣撻噸");
+
+                    b.Property<string>("WorkExperience")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("宸ヤ綔缁忛獙");
+
+                    b.Property<string>("WorkSeniority")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("宸ヤ綔璧勫巻");
+
+                    b.Property<string>("WxmpOpenId")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("寰俊寮�鏀綢d");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("CityId");
+
+                    b.HasIndex("EducationalBackgroundId");
+
+                    b.HasIndex("EnterpriseId");
+
+                    b.HasIndex("PersonalIdentityId");
+
+                    b.HasIndex("UserAuthId");
+
+                    b.ToTable("UserInfo", t =>
+                        {
+                            t.HasComment("鐢ㄦ埛淇℃伅");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = new Guid("11111111-1111-1111-1111-111111111112"),
+                            CreatedTime = new DateTimeOffset(new DateTime(2000, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+                            IsDeleted = false,
+                            Level = 999,
+                            Sort = 0,
+                            Type = 100,
+                            UserAuthId = new Guid("11111111-1111-1111-1111-111111111111")
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoBankCard", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Bank")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)")
+                        .HasComment("寮�鎴疯");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("閾惰鍗″彿");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<string>("PhoneNumber")
+                        .IsRequired()
+                        .HasMaxLength(11)
+                        .HasColumnType("nvarchar(11)")
+                        .HasComment("閾惰棰勭暀鎵嬫満鍙�");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<Guid>("UserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鐢ㄦ埛淇℃伅Id");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserInfoId");
+
+                    b.ToTable("UserInfoBankCard", t =>
+                        {
+                            t.HasComment("鐢ㄦ埛閾惰鍗′俊鎭�");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoCredential", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<Guid?>("BackImgId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("璇佷功鍙嶉潰鐓х墖Id");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)")
+                        .HasComment("璇佷功缂栧彿");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<DateTime>("EndDate")
+                        .HasColumnType("datetime2")
+                        .HasComment("缁撴潫鏃ユ湡");
+
+                    b.Property<Guid>("ImgId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("璇佷功姝i潰鐓х墖Id");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<bool>("IsForever")
+                        .HasColumnType("bit")
+                        .HasComment("姘镐箙璇佷功");
+
+                    b.Property<string>("IssueUnit")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍙戣瘉鍗曚綅");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<DateTime>("StartDate")
+                        .HasColumnType("datetime2")
+                        .HasComment("寮�濮嬫棩鏈�");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<Guid?>("TypeId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("璇佷功绫诲瀷Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<Guid>("UserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鐢ㄦ埛淇℃伅Id");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("BackImgId");
+
+                    b.HasIndex("ImgId");
+
+                    b.HasIndex("TypeId");
+
+                    b.HasIndex("UserInfoId");
+
+                    b.ToTable("UserInfoCredential", t =>
+                        {
+                            t.HasComment("鐢ㄦ埛淇℃伅璧勬牸璇佷功");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoDepartment", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<Guid>("DepartmentId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("閮ㄩ棬Id");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<Guid>("UserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鐢ㄦ埛淇℃伅Id");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("DepartmentId");
+
+                    b.HasIndex("UserInfoId");
+
+                    b.ToTable("UserInfoDepartment", t =>
+                        {
+                            t.HasComment("鐢ㄦ埛淇℃伅閮ㄩ棬");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoExpectJob", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<Guid>("PersonalIdentityId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈熸湜宀椾綅Id");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<Guid>("UserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鐢ㄦ埛淇℃伅Id");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("PersonalIdentityId");
+
+                    b.HasIndex("UserInfoId");
+
+                    b.ToTable("UserInfoExpectJob", t =>
+                        {
+                            t.HasComment("鐢ㄦ埛淇℃伅鏈熸湜宀椾綅");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoPhoto", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<Guid>("ImgId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鐓х墖Id");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<Guid>("UserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鐢ㄦ埛淇℃伅Id");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ImgId");
+
+                    b.HasIndex("UserInfoId");
+
+                    b.ToTable("UserInfoPhoto", t =>
+                        {
+                            t.HasComment("鐢ㄦ埛淇℃伅鐢熸椿鐓�");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoRole", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<Guid>("RoleId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("瑙掕壊Id");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<Guid>("UserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鐢ㄦ埛淇℃伅Id");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("RoleId");
+
+                    b.HasIndex("UserInfoId");
+
+                    b.ToTable("UserInfoRole", t =>
+                        {
+                            t.HasComment("鐢ㄦ埛淇℃伅瑙掕壊");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.WebApi", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("uniqueidentifier");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("缂栧彿");
+
+                    b.Property<DateTimeOffset>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("CreatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鍒涘缓鎿嶄綔浜�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍒犻櫎");
+
+                    b.Property<bool>("IsDisabled")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁绂佺敤");
+
+                    b.Property<int>("Method")
+                        .HasColumnType("int")
+                        .HasComment("璇锋眰鏂瑰紡");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<string>("TraceId")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺熻釜Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<Guid?>("UpdatedUserInfoId")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
+
+                    b.Property<string>("Url")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺敱鍦板潃");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("WebApi", t =>
+                        {
+                            t.HasComment("鎺ュ彛");
+                        });
+                });
+
+            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("Childrens")
+                        .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("Childrens")
+                        .HasForeignKey("ParentId");
+
+                    b.Navigation("Category");
+
+                    b.Navigation("Parent");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "IdentityBackImg")
+                        .WithMany()
+                        .HasForeignKey("IdentityBackImgId");
+
+                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "IdentityImg")
+                        .WithMany()
+                        .HasForeignKey("IdentityImgId");
+
+                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "LicenseImage")
+                        .WithMany()
+                        .HasForeignKey("LicenseImageId");
+
+                    b.Navigation("IdentityBackImg");
+
+                    b.Navigation("IdentityImg");
+
+                    b.Navigation("LicenseImage");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.FileVirtualPath", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.FileStore", "Store")
+                        .WithMany()
+                        .HasForeignKey("StoreId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Store");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Menu", "Parent")
+                        .WithMany("Childrens")
+                        .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.RoleWebApi", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Menu", "Menu")
+                        .WithMany()
+                        .HasForeignKey("MenuId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.Role", "Role")
+                        .WithMany("RoleWebApis")
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Menu");
+
+                    b.Navigation("Role");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "City")
+                        .WithMany()
+                        .HasForeignKey("CityId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany()
+                        .HasForeignKey("EnterpriseId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("City");
+
+                    b.Navigation("Enterprise");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
+                        .WithMany("Benefits")
+                        .HasForeignKey("BenefitId")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Benefit")
+                        .WithMany()
+                        .HasForeignKey("BenefitId1")
+                        .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("TypeId");
+
+                    b.Navigation("TaskInfo");
+
+                    b.Navigation("Type");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
+                        .WithMany()
+                        .HasForeignKey("TaskInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
+                        .WithMany()
+                        .HasForeignKey("UserInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("TaskInfo");
+
+                    b.Navigation("UserInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserAuth", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "Avatar")
+                        .WithMany()
+                        .HasForeignKey("AvatarId");
+
+                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "BankCardImg")
+                        .WithMany()
+                        .HasForeignKey("BankCardImgId");
+
+                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "IdentityBackImg")
+                        .WithMany()
+                        .HasForeignKey("IdentityBackImgId");
+
+                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "IdentityImg")
+                        .WithMany()
+                        .HasForeignKey("IdentityImgId");
+
+                    b.Navigation("Avatar");
+
+                    b.Navigation("BankCardImg");
+
+                    b.Navigation("IdentityBackImg");
+
+                    b.Navigation("IdentityImg");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfo", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "City")
+                        .WithMany()
+                        .HasForeignKey("CityId");
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "EducationalBackground")
+                        .WithMany()
+                        .HasForeignKey("EducationalBackgroundId");
+
+                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
+                        .WithMany("UserInfos")
+                        .HasForeignKey("EnterpriseId");
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity")
+                        .WithMany()
+                        .HasForeignKey("PersonalIdentityId");
+
+                    b.HasOne("FlexJobApi.Core.UserAuth", "UserAuth")
+                        .WithMany("UserInfos")
+                        .HasForeignKey("UserAuthId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("City");
+
+                    b.Navigation("EducationalBackground");
+
+                    b.Navigation("Enterprise");
+
+                    b.Navigation("PersonalIdentity");
+
+                    b.Navigation("UserAuth");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoBankCard", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
+                        .WithMany()
+                        .HasForeignKey("UserInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("UserInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoCredential", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "BackImg")
+                        .WithMany()
+                        .HasForeignKey("BackImgId");
+
+                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "Img")
+                        .WithMany()
+                        .HasForeignKey("ImgId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "Type")
+                        .WithMany()
+                        .HasForeignKey("TypeId");
+
+                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
+                        .WithMany("UserInfoCredentials")
+                        .HasForeignKey("UserInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("BackImg");
+
+                    b.Navigation("Img");
+
+                    b.Navigation("Type");
+
+                    b.Navigation("UserInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoDepartment", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Department", "Department")
+                        .WithMany()
+                        .HasForeignKey("DepartmentId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
+                        .WithMany("UserInfoDepartments")
+                        .HasForeignKey("UserInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Department");
+
+                    b.Navigation("UserInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoExpectJob", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity")
+                        .WithMany()
+                        .HasForeignKey("PersonalIdentityId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
+                        .WithMany("UserInfoExpectJobs")
+                        .HasForeignKey("UserInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("PersonalIdentity");
+
+                    b.Navigation("UserInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoPhoto", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "Img")
+                        .WithMany()
+                        .HasForeignKey("ImgId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
+                        .WithMany()
+                        .HasForeignKey("UserInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Img");
+
+                    b.Navigation("UserInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfoRole", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Role", "Role")
+                        .WithMany()
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
+                        .WithMany("UserInfoRoles")
+                        .HasForeignKey("UserInfoId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Role");
+
+                    b.Navigation("UserInfo");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Department", b =>
+                {
+                    b.Navigation("Childrens");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b =>
+                {
+                    b.Navigation("Childrens");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
+                {
+                    b.Navigation("Departments");
+
+                    b.Navigation("UserInfos");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
+                {
+                    b.Navigation("Childrens");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Role", b =>
+                {
+                    b.Navigation("RoleMenus");
+
+                    b.Navigation("RoleWebApis");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
+                {
+                    b.Navigation("Benefits");
+
+                    b.Navigation("CredentialLimits");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserAuth", b =>
+                {
+                    b.Navigation("UserInfos");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.UserInfo", b =>
+                {
+                    b.Navigation("UserInfoCredentials");
+
+                    b.Navigation("UserInfoDepartments");
+
+                    b.Navigation("UserInfoExpectJobs");
+
+                    b.Navigation("UserInfoRoles");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.cs b/FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.cs
new file mode 100644
index 0000000..ef4f380
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.cs
@@ -0,0 +1,88 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations
+{
+    /// <inheritdoc />
+    public partial class UpdateTreeData0801 : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "BindField",
+                table: "Menu");
+
+            migrationBuilder.AlterColumn<Guid>(
+                name: "UserAuthId",
+                table: "UserInfo",
+                type: "uniqueidentifier",
+                nullable: false,
+                comment: "鐢ㄦ埛Id",
+                oldClrType: typeof(Guid),
+                oldType: "uniqueidentifier");
+
+            migrationBuilder.AddColumn<string>(
+                name: "Path",
+                table: "Menu",
+                type: "nvarchar(max)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "Width",
+                table: "Menu",
+                type: "nvarchar(max)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "Path",
+                table: "DictionaryData",
+                type: "nvarchar(max)",
+                nullable: true);
+
+            migrationBuilder.AddColumn<string>(
+                name: "Path",
+                table: "Department",
+                type: "nvarchar(max)",
+                nullable: true);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "Path",
+                table: "Menu");
+
+            migrationBuilder.DropColumn(
+                name: "Width",
+                table: "Menu");
+
+            migrationBuilder.DropColumn(
+                name: "Path",
+                table: "DictionaryData");
+
+            migrationBuilder.DropColumn(
+                name: "Path",
+                table: "Department");
+
+            migrationBuilder.AlterColumn<Guid>(
+                name: "UserAuthId",
+                table: "UserInfo",
+                type: "uniqueidentifier",
+                nullable: false,
+                oldClrType: typeof(Guid),
+                oldType: "uniqueidentifier",
+                oldComment: "鐢ㄦ埛Id");
+
+            migrationBuilder.AddColumn<string>(
+                name: "BindField",
+                table: "Menu",
+                type: "nvarchar(max)",
+                nullable: true,
+                comment: "缁戝畾瀛楁");
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
index a0ea0fc..91283db 100644
--- a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
+++ b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
@@ -56,6 +56,9 @@
                         .HasColumnType("uniqueidentifier")
                         .HasComment("涓婄骇Id");
 
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
                     b.Property<string>("Remark")
                         .HasColumnType("nvarchar(max)")
                         .HasComment("澶囨敞");
@@ -197,6 +200,9 @@
                     b.Property<Guid?>("ParentId")
                         .HasColumnType("uniqueidentifier")
                         .HasComment("涓婄骇Id");
+
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
 
                     b.Property<int>("Sort")
                         .HasColumnType("int")
@@ -501,10 +507,6 @@
                         .ValueGeneratedOnAdd()
                         .HasColumnType("uniqueidentifier");
 
-                    b.Property<string>("BindField")
-                        .HasColumnType("nvarchar(max)")
-                        .HasComment("缁戝畾瀛楁");
-
                     b.Property<string>("Code")
                         .IsRequired()
                         .HasColumnType("nvarchar(max)")
@@ -551,6 +553,9 @@
                         .HasColumnType("uniqueidentifier")
                         .HasComment("涓婄骇Id");
 
+                    b.Property<string>("Path")
+                        .HasColumnType("nvarchar(max)");
+
                     b.Property<string>("Remark")
                         .HasColumnType("nvarchar(max)")
                         .HasComment("澶囨敞");
@@ -581,6 +586,9 @@
                     b.Property<int>("VisitLevel")
                         .HasColumnType("int")
                         .HasComment("璁块棶绾у埆");
+
+                    b.Property<string>("Width")
+                        .HasColumnType("nvarchar(max)");
 
                     b.HasKey("Id");
 
@@ -1211,7 +1219,8 @@
                         .HasComment("鏈�鍚庢洿鏂版搷浣滀汉");
 
                     b.Property<Guid>("UserAuthId")
-                        .HasColumnType("uniqueidentifier");
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("鐢ㄦ埛Id");
 
                     b.Property<int?>("Weight")
                         .HasColumnType("int")
diff --git a/FlexJobApi.User.Application/Auth/AuthAppService.cs b/FlexJobApi.User.Application/Auths/AuthAppService.cs
similarity index 88%
rename from FlexJobApi.User.Application/Auth/AuthAppService.cs
rename to FlexJobApi.User.Application/Auths/AuthAppService.cs
index a0d6612..a2da39a 100644
--- a/FlexJobApi.User.Application/Auth/AuthAppService.cs
+++ b/FlexJobApi.User.Application/Auths/AuthAppService.cs
@@ -27,7 +27,7 @@
         /// <returns></returns>
         [AllowAnonymous]
         [IfException(ErrorCode = EnumUserErrorCodeType.u1000)]
-        public Task<UserAuthPasswordLoginCallback> PasswordLogin(UserAuthPasswordLoginCommand command)
+        public Task<AuthPasswordLoginCallback> PasswordLogin(AuthPasswordLoginCommand command)
         {
             return mediator.Send(command);
         }
diff --git a/FlexJobApi.User.Application/Auth/Commands/UserAuthPasswordLoginCommandHandler.cs b/FlexJobApi.User.Application/Auths/Commands/AuthPasswordLoginCommandHandler.cs
similarity index 81%
rename from FlexJobApi.User.Application/Auth/Commands/UserAuthPasswordLoginCommandHandler.cs
rename to FlexJobApi.User.Application/Auths/Commands/AuthPasswordLoginCommandHandler.cs
index 7b772ed..018d847 100644
--- a/FlexJobApi.User.Application/Auth/Commands/UserAuthPasswordLoginCommandHandler.cs
+++ b/FlexJobApi.User.Application/Auths/Commands/AuthPasswordLoginCommandHandler.cs
@@ -16,12 +16,12 @@
     /// <summary>
     /// 瀵嗙爜鐧诲綍
     /// </summary>
-    public class UserAuthPasswordLoginCommandHandler : IRequestHandler<UserAuthPasswordLoginCommand, UserAuthPasswordLoginCallback>
+    public class AuthPasswordLoginCommandHandler : IRequestHandler<AuthPasswordLoginCommand, AuthPasswordLoginCallback>
     {
         private readonly IRepository<UserAuth> userAuthRep;
         private readonly IRepository<UserInfo> userInfoRep;
 
-        public UserAuthPasswordLoginCommandHandler(
+        public AuthPasswordLoginCommandHandler(
             IRepository<UserAuth> userAuthRep,
             IRepository<UserInfo> userInfoRep)
         {
@@ -29,7 +29,7 @@
             this.userInfoRep = userInfoRep;
         }
 
-        public async Task<UserAuthPasswordLoginCallback> Handle(UserAuthPasswordLoginCommand request, CancellationToken cancellationToken)
+        public async Task<AuthPasswordLoginCallback> Handle(AuthPasswordLoginCommand request, CancellationToken cancellationToken)
         {
             var userInfo = await userInfoRep.AsQueryable().AsNoTracking()
                 .Include(it => it.UserAuth)
@@ -43,7 +43,7 @@
                     it.UserAuth.PhoneNumber,
                     it.UserAuth.Password
                 })
-                .FirstOrDefaultAsync();
+                .FirstOrDefaultAsync(cancellationToken);
             if (userInfo == null) throw Oops.Oh(EnumUserErrorCodeType.u1000);
             if (!PBKDF2Encryption.Compare(request.Password, userInfo.Password)) throw Oops.Oh(EnumUserErrorCodeType.u1000);
             var logier = new CurrentLogier
@@ -55,7 +55,7 @@
                 PhoneNumber = userInfo.PhoneNumber,
             };
             JwtUtils.GenerateToken(logier);
-            return new UserAuthPasswordLoginCallback();
+            return new AuthPasswordLoginCallback();
         }
     }
 }
diff --git a/FlexJobApi.User.Application/EnumUserErrorCodeType.cs b/FlexJobApi.User.Application/EnumUserErrorCodeType.cs
index 6967961..e0fe456 100644
--- a/FlexJobApi.User.Application/EnumUserErrorCodeType.cs
+++ b/FlexJobApi.User.Application/EnumUserErrorCodeType.cs
@@ -11,9 +11,15 @@
     public enum EnumUserErrorCodeType
     {
         /// <summary>
+        /// {0}涓嶅瓨鍦�
+        /// </summary>
+        [ErrorCodeItemMetadata("{0}涓嶅瓨鍦�")]
+        s100 = 100,
+        /// <summary>
         /// 璐﹀彿鎴栧瘑鐮佷笉瀛樺湪
         /// </summary>
         [ErrorCodeItemMetadata("璐﹀彿鎴栧瘑鐮佷笉瀛樺湪")]
-        u1000,
+        u1000 = 1000,
+        
     }
 }
diff --git a/FlexJobApi.User.Application/FlexJobApi.User.Application.csproj b/FlexJobApi.User.Application/FlexJobApi.User.Application.csproj
index 5181d03..7e7c430 100644
--- a/FlexJobApi.User.Application/FlexJobApi.User.Application.csproj
+++ b/FlexJobApi.User.Application/FlexJobApi.User.Application.csproj
@@ -11,9 +11,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <Folder Include="Auth\Queries\" />
-    <Folder Include="Menu\Commands\" />
-    <Folder Include="Menu\Queries\" />
+    <Folder Include="Auths\Queries\" />
   </ItemGroup>
 
 </Project>
diff --git a/FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs b/FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs
new file mode 100644
index 0000000..480faa0
--- /dev/null
+++ b/FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs
@@ -0,0 +1,40 @@
+锘縰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.User.Application
+{
+    /// <summary>
+    /// 淇濆瓨鑿滃崟
+    /// </summary>
+    public class MenuSaveCommandHandler : IRequestHandler<MenuSaveCommand, Guid>
+    {
+        private readonly IRepository<Menu> menuRep;
+
+        public MenuSaveCommandHandler(
+            IRepository<Menu> menuRep)
+        {
+            this.menuRep = menuRep;
+        }
+
+        public async Task<Guid> Handle(MenuSaveCommand request, CancellationToken cancellationToken)
+        {
+            var menu =
+                request.Id.HasValue
+                ? await menuRep.AsQueryable().FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken)
+                : new Menu();
+            if (menu == null) throw Oops.Oh(EnumUserErrorCodeType.s100, "鑿滃崟");
+            menu.Adapt(request);
+            await menuRep.SaveNowAsync(cancellationToken);
+            return menu.Id;
+        }
+    }
+}
diff --git a/FlexJobApi.User.Application/Menus/MenuAppService.cs b/FlexJobApi.User.Application/Menus/MenuAppService.cs
new file mode 100644
index 0000000..0a0eb18
--- /dev/null
+++ b/FlexJobApi.User.Application/Menus/MenuAppService.cs
@@ -0,0 +1,37 @@
+锘縰sing FlexJobApi.Core;
+using Furion.DynamicApiController;
+using MediatR;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.User.Application
+{
+    /// <summary>
+    /// 鑿滃崟
+    /// </summary>
+    [Route("api/user/[controller]")]
+    public class MenuAppServiceV1 : IDynamicApiController
+    {
+        private readonly IMediator mediator;
+
+        public MenuAppServiceV1(IMediator mediator)
+        {
+            this.mediator = mediator;
+        }
+
+        /// <summary>
+        /// 淇濆瓨鑿滃崟
+        /// </summary>
+        /// <param name="command"></param>
+        /// <returns></returns>
+        public async Task<Guid> Save(MenuSaveCommand command)
+        {
+            return await mediator.Send(command);
+        }
+
+    }
+}
diff --git a/FlexJobApi.User.Application/Menus/Queries/MenuAllQueryHandler.cs b/FlexJobApi.User.Application/Menus/Queries/MenuAllQueryHandler.cs
new file mode 100644
index 0000000..7a6011d
--- /dev/null
+++ b/FlexJobApi.User.Application/Menus/Queries/MenuAllQueryHandler.cs
@@ -0,0 +1,14 @@
+锘縰sing FlexJobApi.Core;
+using MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+锛氾細
+namespace FlexJobApi.User.Application
+{
+    //public class MenuAllQueryHandler:IRequestHandler<MenuAllQuery, >
+    //{
+    //}
+}

--
Gitblit v1.9.1