From 723bfd806486bb870f0003f2cfbf61476a4e70f6 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期一, 04 八月 2025 16:59:09 +0800
Subject: [PATCH] pref:资源接口

---
 FlexJobApi.User.Application/FlexJobApi.User.Application.xml                     |   38 
 FlexJobApi.Core/settings.json                                                   |    3 
 FlexJobApi.Database.Migrations/Migrations/20250804084910_UpdateRole.Designer.cs | 2145 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 FlexJobApi.User.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs  |    2 
 FlexJobApi.User.Application/Roles/RoleAppService.cs                             |   71 +
 FlexJobApi.User.Application/Resources/ResourceAppService.cs                     |    4 
 FlexJobApi.Application/Dictionaries/DictionaryAppService.cs                     |    2 
 FlexJobApi.User.Application/Menus/MenuAppService.cs                             |    4 
 FlexJobApi.User.Application/Auths/AuthAppService.cs                             |    2 
 FlexJobApi.Core/FlexJobApi.Core.xml                                             |    2 
 FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResultProvider.cs             |    2 
 FlexJobApi.User.Application/Roles/Commands/SaveRoleCommandHandler.cs            |   31 
 FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs      |   17 
 FlexJobApi.Database.Migrations/Migrations/20250804084910_UpdateRole.cs          |  121 ++
 14 files changed, 2,426 insertions(+), 18 deletions(-)

diff --git a/FlexJobApi.Application/Dictionaries/DictionaryAppService.cs b/FlexJobApi.Application/Dictionaries/DictionaryAppService.cs
index 0660235..2e6f38b 100644
--- a/FlexJobApi.Application/Dictionaries/DictionaryAppService.cs
+++ b/FlexJobApi.Application/Dictionaries/DictionaryAppService.cs
@@ -18,7 +18,7 @@
         /// </summary>
         /// <param name="query"></param>
         /// <returns></returns>
-        public Task<GetDictionaryDatasQueryResult> GetDictionaryDatas([FromQuery] GetDictionaryDatasQuery query)
+        public Task<GetDictionaryDatasQueryResult> GetDictionaryDatas(GetDictionaryDatasQuery query)
         {
             return mediator.Send(query);
         }
diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index 125dddc..d899a9b 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -3050,7 +3050,7 @@
             鎵ц鎴愬姛
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.FriendlyResult`1.Errors">
+        <member name="P:FlexJobApi.Core.FriendlyResult`1.Msg">
             <summary>
             閿欒淇℃伅
             </summary>
diff --git a/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResultProvider.cs b/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResultProvider.cs
index ba6ae8b..bc1ef72 100644
--- a/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResultProvider.cs
+++ b/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResultProvider.cs
@@ -49,7 +49,7 @@
                 GetResult(
                     metadata.StatusCode,
                     data: metadata.Data,
-                    errorCode: metadata.ErrorCode.ToString(),
+                    errorCode: metadata.ErrorCode?.ToString() ?? "s500",
                     errors: metadata.Errors)
                 , UnifyContext.GetSerializerSettings(context));
         }
diff --git a/FlexJobApi.Core/settings.json b/FlexJobApi.Core/settings.json
index 0a56a9d..5813776 100644
--- a/FlexJobApi.Core/settings.json
+++ b/FlexJobApi.Core/settings.json
@@ -17,7 +17,8 @@
   "DynamicApiControllerSettings": {
     "LowercaseRoute": false,
     "KeepName": true,
-    "AsLowerCamelCase": true
+    "AsLowerCamelCase": true,
+    "ModelToQuery": true
   },
   "CorsAccessorSettings": {
     "WithExposedHeaders": [
diff --git a/FlexJobApi.Database.Migrations/Migrations/20250804084910_UpdateRole.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250804084910_UpdateRole.Designer.cs
new file mode 100644
index 0000000..eea9759
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250804084910_UpdateRole.Designer.cs
@@ -0,0 +1,2145 @@
+锘�// <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("20250804084910_UpdateRole")]
+    partial class UpdateRole
+    {
+        /// <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)")
+                        .HasComment("閮ㄩ棬璺緞");
+
+                    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)")
+                        .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("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<int>("ClientType")
+                        .HasColumnType("int")
+                        .HasComment("瀹㈡埛绔被鍨�");
+
+                    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<string>("Location")
+                        .HasColumnType("nvarchar(max)")
+                        .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)")
+                        .HasComment("鑿滃崟璺緞");
+
+                    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>("UserType")
+                        .HasColumnType("int")
+                        .HasComment("鐢ㄦ埛绫诲瀷");
+
+                    b.Property<int>("VisitLevel")
+                        .HasColumnType("int")
+                        .HasComment("璁块棶绾у埆");
+
+                    b.Property<string>("Width")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍒楀锛堢敤浜庢寜閽�/鍒�/鍏冪礌锛�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("ParentId");
+
+                    b.ToTable("Menu", t =>
+                        {
+                            t.HasComment("鑿滃崟");
+                        });
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.Resource", 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>("IsExpired")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁宸茶繃鏈�");
+
+                    b.Property<int>("Method")
+                        .HasColumnType("int")
+                        .HasComment("璇锋眰鏂瑰紡");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("RequestTypeName")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璇锋眰绫诲瀷鍚嶇О");
+
+                    b.Property<string>("ResponseTypeName")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍝嶅簲绫诲瀷鍚嶇О");
+
+                    b.Property<string>("Route")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璺敱");
+
+                    b.Property<string>("Service")
+                        .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.HasKey("Id");
+
+                    b.ToTable("Resource", 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.RoleResource", 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>("ResourceId")
+                        .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("ResourceId");
+
+                    b.HasIndex("RoleId");
+
+                    b.ToTable("RoleResource", 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 = "绠$悊鍛�",
+                            Password = "iEYggKrMhQ3ASUGLobra1w==:fn/DsMJUbD9FGpvBvR3moMpMPptdxzZlourPVhU479I=",
+                            Sort = 0,
+                            UserName = "system"
+                        });
+                });
+
+            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.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.RoleResource", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.Resource", "Resource")
+                        .WithMany()
+                        .HasForeignKey("ResourceId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("FlexJobApi.Core.Role", "Role")
+                        .WithMany("RoleResources")
+                        .HasForeignKey("RoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Resource");
+
+                    b.Navigation("Role");
+                });
+
+            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
+                {
+                    b.HasOne("FlexJobApi.Core.DictionaryData", "City")
+                        .WithMany()
+                        .HasForeignKey("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("RoleResources");
+                });
+
+            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/20250804084910_UpdateRole.cs b/FlexJobApi.Database.Migrations/Migrations/20250804084910_UpdateRole.cs
new file mode 100644
index 0000000..288e011
--- /dev/null
+++ b/FlexJobApi.Database.Migrations/Migrations/20250804084910_UpdateRole.cs
@@ -0,0 +1,121 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace FlexJobApi.Database.Migrations.Migrations
+{
+    /// <inheritdoc />
+    public partial class UpdateRole : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_RoleResource_Menu_MenuId",
+                table: "RoleResource");
+
+            migrationBuilder.DropIndex(
+                name: "IX_RoleResource_MenuId",
+                table: "RoleResource");
+
+            migrationBuilder.DropColumn(
+                name: "MenuId",
+                table: "RoleResource");
+
+            migrationBuilder.AlterColumn<int>(
+                name: "DataPower",
+                table: "RoleResource",
+                type: "int",
+                nullable: false,
+                defaultValue: 0,
+                comment: "鏁版嵁鏉冮檺",
+                oldClrType: typeof(int),
+                oldType: "int",
+                oldNullable: true,
+                oldComment: "鏁版嵁鏉冮檺");
+
+            migrationBuilder.AddColumn<Guid>(
+                name: "ResourceId",
+                table: "RoleResource",
+                type: "uniqueidentifier",
+                nullable: false,
+                defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
+                comment: "璧勬簮Id");
+
+            migrationBuilder.UpdateData(
+                table: "UserAuth",
+                keyColumn: "Id",
+                keyValue: new Guid("11111111-1111-1111-1111-111111111111"),
+                columns: new[] { "Password", "UserName" },
+                values: new object[] { "iEYggKrMhQ3ASUGLobra1w==:fn/DsMJUbD9FGpvBvR3moMpMPptdxzZlourPVhU479I=", "system" });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_RoleResource_ResourceId",
+                table: "RoleResource",
+                column: "ResourceId");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_RoleResource_Resource_ResourceId",
+                table: "RoleResource",
+                column: "ResourceId",
+                principalTable: "Resource",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Cascade);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropForeignKey(
+                name: "FK_RoleResource_Resource_ResourceId",
+                table: "RoleResource");
+
+            migrationBuilder.DropIndex(
+                name: "IX_RoleResource_ResourceId",
+                table: "RoleResource");
+
+            migrationBuilder.DropColumn(
+                name: "ResourceId",
+                table: "RoleResource");
+
+            migrationBuilder.AlterColumn<int>(
+                name: "DataPower",
+                table: "RoleResource",
+                type: "int",
+                nullable: true,
+                comment: "鏁版嵁鏉冮檺",
+                oldClrType: typeof(int),
+                oldType: "int",
+                oldComment: "鏁版嵁鏉冮檺");
+
+            migrationBuilder.AddColumn<Guid>(
+                name: "MenuId",
+                table: "RoleResource",
+                type: "uniqueidentifier",
+                nullable: false,
+                defaultValue: new Guid("00000000-0000-0000-0000-000000000000"),
+                comment: "鑿滃崟Id");
+
+            migrationBuilder.UpdateData(
+                table: "UserAuth",
+                keyColumn: "Id",
+                keyValue: new Guid("11111111-1111-1111-1111-111111111111"),
+                columns: new[] { "Password", "UserName" },
+                values: new object[] { null, "admin" });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_RoleResource_MenuId",
+                table: "RoleResource",
+                column: "MenuId");
+
+            migrationBuilder.AddForeignKey(
+                name: "FK_RoleResource_Menu_MenuId",
+                table: "RoleResource",
+                column: "MenuId",
+                principalTable: "Menu",
+                principalColumn: "Id",
+                onDelete: ReferentialAction.Cascade);
+        }
+    }
+}
diff --git a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
index c866ce6..8ec9cca 100644
--- a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
+++ b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
@@ -813,7 +813,7 @@
                         .HasColumnType("uniqueidentifier")
                         .HasComment("鍒涘缓鎿嶄綔浜�");
 
-                    b.Property<int?>("DataPower")
+                    b.Property<int>("DataPower")
                         .HasColumnType("int")
                         .HasComment("鏁版嵁鏉冮檺");
 
@@ -821,9 +821,9 @@
                         .HasColumnType("bit")
                         .HasComment("鏄惁鍒犻櫎");
 
-                    b.Property<Guid>("MenuId")
+                    b.Property<Guid>("ResourceId")
                         .HasColumnType("uniqueidentifier")
-                        .HasComment("鑿滃崟Id");
+                        .HasComment("璧勬簮Id");
 
                     b.Property<Guid>("RoleId")
                         .HasColumnType("uniqueidentifier")
@@ -846,7 +846,7 @@
 
                     b.HasKey("Id");
 
-                    b.HasIndex("MenuId");
+                    b.HasIndex("ResourceId");
 
                     b.HasIndex("RoleId");
 
@@ -1235,8 +1235,9 @@
                             IsDeleted = false,
                             IsReal = false,
                             Name = "绠$悊鍛�",
+                            Password = "iEYggKrMhQ3ASUGLobra1w==:fn/DsMJUbD9FGpvBvR3moMpMPptdxzZlourPVhU479I=",
                             Sort = 0,
-                            UserName = "admin"
+                            UserName = "system"
                         });
                 });
 
@@ -1813,9 +1814,9 @@
 
             modelBuilder.Entity("FlexJobApi.Core.RoleResource", b =>
                 {
-                    b.HasOne("FlexJobApi.Core.Menu", "Menu")
+                    b.HasOne("FlexJobApi.Core.Resource", "Resource")
                         .WithMany()
-                        .HasForeignKey("MenuId")
+                        .HasForeignKey("ResourceId")
                         .OnDelete(DeleteBehavior.Cascade)
                         .IsRequired();
 
@@ -1825,7 +1826,7 @@
                         .OnDelete(DeleteBehavior.Cascade)
                         .IsRequired();
 
-                    b.Navigation("Menu");
+                    b.Navigation("Resource");
 
                     b.Navigation("Role");
                 });
diff --git a/FlexJobApi.User.Application/Auths/AuthAppService.cs b/FlexJobApi.User.Application/Auths/AuthAppService.cs
index f5764ff..5eccb25 100644
--- a/FlexJobApi.User.Application/Auths/AuthAppService.cs
+++ b/FlexJobApi.User.Application/Auths/AuthAppService.cs
@@ -22,7 +22,7 @@
         /// <param name="query"></param>
         /// <returns></returns>
         [AllowAnonymous]
-        public Task<GetAliyunOSSAcsQueryResult> GetAliyunOSSAcs([FromQuery] GetAliyunOSSAcsQuery query)
+        public Task<GetAliyunOSSAcsQueryResult> GetAliyunOSSAcs(GetAliyunOSSAcsQuery query)
         {
             return mediator.Send(query);
         }
diff --git a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml
index 0978003..c12e7f6 100644
--- a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml
+++ b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml
@@ -305,5 +305,43 @@
         <member name="M:FlexJobApi.User.Application.GetRolesQueryHandler.Handle(FlexJobApi.Core.GetRolesQuery,System.Threading.CancellationToken)">
             <inheritdoc/>
         </member>
+        <member name="T:FlexJobApi.User.Application.RoleAppService">
+            <summary>
+            瑙掕壊
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.User.Application.RoleAppService.#ctor(MediatR.IMediator)">
+            <summary>
+            瑙掕壊
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.User.Application.RoleAppService.GetRoles(FlexJobApi.Core.GetRolesQuery)">
+            <summary>
+            鏌ヨ瑙掕壊鍒楄〃
+            </summary>
+            <param name="query"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.User.Application.RoleAppService.GetRole(FlexJobApi.Core.GetRoleQuery)">
+            <summary>
+            鏌ヨ瑙掕壊璇︽儏
+            </summary>
+            <param name="query"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.User.Application.RoleAppService.DeleteRole(FlexJobApi.Core.DeleteRoleCommand)">
+            <summary>
+            鍒犻櫎瑙掕壊
+            </summary>
+            <param name="command"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.User.Application.RoleAppService.SaveRole(FlexJobApi.Core.SaveRoleCommand)">
+            <summary>
+            淇濆瓨瑙掕壊
+            </summary>
+            <param name="command"></param>
+            <returns></returns>
+        </member>
     </members>
 </doc>
diff --git a/FlexJobApi.User.Application/Menus/MenuAppService.cs b/FlexJobApi.User.Application/Menus/MenuAppService.cs
index 01fe257..e425eb6 100644
--- a/FlexJobApi.User.Application/Menus/MenuAppService.cs
+++ b/FlexJobApi.User.Application/Menus/MenuAppService.cs
@@ -26,7 +26,7 @@
         /// </summary>
         /// <param name="query"></param>
         /// <returns></returns>
-        public Task<List<GetMenusQueryResultItem>> GetMenus([FromQuery] GetMenusQuery query)
+        public Task<List<GetMenusQueryResultItem>> GetMenus(GetMenusQuery query)
         {
             return mediator.Send(query);
         }
@@ -36,7 +36,7 @@
         /// </summary>
         /// <param name="query"></param>
         /// <returns></returns>
-        public Task<GetMenuQueryResult> GetMenu([FromQuery] GetMenuQuery query)
+        public Task<GetMenuQueryResult> GetMenu(GetMenuQuery query)
         {
             return mediator.Send(query);
         }
diff --git a/FlexJobApi.User.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs b/FlexJobApi.User.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs
index b22e8e5..c2c5001 100644
--- a/FlexJobApi.User.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs
+++ b/FlexJobApi.User.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs
@@ -45,7 +45,7 @@
                 && requestType.BaseType.GetGenericTypeDefinition() == typeof(PagedListQuery<,>))
             {
                 var pagedListItemType = requestType.BaseType.GenericTypeArguments[1];
-                return await GetFields(requestType, xmlDoc, []);
+                return await GetFields(pagedListItemType, xmlDoc, []);
             }
             else if (requestType.Name.EndsWith("Command"))
             {
diff --git a/FlexJobApi.User.Application/Resources/ResourceAppService.cs b/FlexJobApi.User.Application/Resources/ResourceAppService.cs
index 8737eb6..dc6a671 100644
--- a/FlexJobApi.User.Application/Resources/ResourceAppService.cs
+++ b/FlexJobApi.User.Application/Resources/ResourceAppService.cs
@@ -18,7 +18,7 @@
         /// </summary>
         /// <param name="query"></param>
         /// <returns></returns>
-        public Task<List<GetResourcesQueryResultItem>> GetResources([FromQuery] GetResourcesQuery query)
+        public Task<List<GetResourcesQueryResultItem>> GetResources(GetResourcesQuery query)
         {
             return mediator.Send(query);
         }
@@ -28,7 +28,7 @@
         /// </summary>
         /// <param name="query"></param>
         /// <returns></returns>
-        public Task<List<GetResourceFieldsQueryResultItem>> GetResourceFields([FromQuery] GetResourceFieldsQuery query)
+        public Task<List<GetResourceFieldsQueryResultItem>> GetResourceFields(GetResourceFieldsQuery query)
         { 
             return mediator.Send(query);
         }
diff --git a/FlexJobApi.User.Application/Roles/Commands/SaveRoleCommandHandler.cs b/FlexJobApi.User.Application/Roles/Commands/SaveRoleCommandHandler.cs
index 781349f..5d952ac 100644
--- a/FlexJobApi.User.Application/Roles/Commands/SaveRoleCommandHandler.cs
+++ b/FlexJobApi.User.Application/Roles/Commands/SaveRoleCommandHandler.cs
@@ -32,6 +32,37 @@
                     .FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken);
                 if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "瑙掕壊");
                 request.Adapt(entity);
+                entity.RoleMenus = entity.RoleMenus.Where(it => request.MenuIds.Contains(it.MenuId)).ToList();
+                foreach (var menuId in request.MenuIds)
+                {
+                    var entityRoleMenu = entity.RoleMenus.FirstOrDefault(it => it.MenuId == menuId);
+                    if (entityRoleMenu == null)
+                    {
+                        entityRoleMenu = new RoleMenu
+                        {
+                            MenuId = menuId
+                        };
+                        entity.RoleMenus.Add(entityRoleMenu);
+                    }
+                }
+                entity.RoleResources = entity.RoleResources.Where(it => request.Resources.Any(r => r.ResourceId == it.ResourceId)).ToList();
+                foreach (var roleResource in entity.RoleResources)
+                {
+                    var entityRoleResource = entity.RoleResources.FirstOrDefault(it => it.ResourceId == roleResource.ResourceId);
+                    if (entityRoleResource == null)
+                    {
+                        entityRoleResource = new RoleResource
+                        {
+                            ResourceId = roleResource.ResourceId,
+                            DataPower = roleResource.DataPower
+                        };
+                        entity.RoleResources.Add(roleResource);
+                    }
+                    else
+                    {
+                        entityRoleResource.DataPower = roleResource.DataPower;
+                    }
+                }
                 await rep.UpdateAsync(entity);
                 return entity.Id;
             }
diff --git a/FlexJobApi.User.Application/Roles/RoleAppService.cs b/FlexJobApi.User.Application/Roles/RoleAppService.cs
new file mode 100644
index 0000000..7161fb8
--- /dev/null
+++ b/FlexJobApi.User.Application/Roles/RoleAppService.cs
@@ -0,0 +1,71 @@
+锘縰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;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
+
+namespace FlexJobApi.User.Application
+{
+    /// <summary>
+    /// 瑙掕壊
+    /// </summary>
+    [Route("api/user/[controller]")]
+    public class RoleAppService(IMediator mediator) : IDynamicApiController
+    {
+        private readonly IMediator mediator = mediator;
+
+        #region 鏌ヨ
+
+        /// <summary>
+        /// 鏌ヨ瑙掕壊鍒楄〃
+        /// </summary>
+        /// <param name="query"></param>
+        /// <returns></returns>
+        public Task<PagedListQueryResult<GetRolesQueryResultItem>> GetRoles(GetRolesQuery query)
+        {
+            return mediator.Send(query);
+        }
+
+        /// <summary>
+        /// 鏌ヨ瑙掕壊璇︽儏
+        /// </summary>
+        /// <param name="query"></param>
+        /// <returns></returns>
+        public Task<GetRoleQueryResult> GetRole(GetRoleQuery query)
+        {
+            return mediator.Send(query);
+        }
+
+        #endregion
+
+        #region 鍐欏叆
+
+        /// <summary>
+        /// 鍒犻櫎瑙掕壊
+        /// </summary>
+        /// <param name="command"></param>
+        /// <returns></returns>
+        public Task<int> DeleteRole(DeleteRoleCommand command)
+        {
+            return mediator.Send(command);
+        }
+
+        /// <summary>
+        /// 淇濆瓨瑙掕壊
+        /// </summary>
+        /// <param name="command"></param>
+        /// <returns></returns>
+        public Task<Guid> SaveRole(SaveRoleCommand command)
+        {
+            return mediator.Send(command);
+        }
+
+        #endregion
+
+    }
+}

--
Gitblit v1.9.1