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