From 1ddd1094f635bdc69e1e236353aa77d5b400f007 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 05 八月 2025 16:46:39 +0800 Subject: [PATCH] feat:用户信息 --- FlexJobApi.User.Application/FlexJobApi.User.Application.xml | 66 + FlexJobApi.Core/Models/User/Roles/Queries/GetRoleUserInfosQuery.cs | 45 FlexJobApi.Database.Migrations/Migrations/20250805082824_UpdateUser0805.cs | 87 + FlexJobApi.User.Application/Roles/Commands/SetRoleUserInfosCommandHandler.cs | 44 FlexJobApi.Core/Models/User/UserInfos/Queries/GetUserInfoRolesQuery.cs | 53 FlexJobApi.User.Application/UserInfos/Commands/SetUserInfoStatusCommandHandler.cs | 35 FlexJobApi.Core/Enums/Common/EnumUserInfoStatus.cs | 27 FlexJobApi.Core/Models/User/UserInfos/Commands/SetUserInfoRolesCommand.cs | 31 FlexJobApi.Core/Models/User/Roles/Commands/SetRoleUserInfosCommand.cs | 31 FlexJobApi.Database.Migrations/Migrations/20250805082824_UpdateUser0805.Designer.cs | 2178 ++++++++++++++++++++++++++++++++++++++++ FlexJobApi.Core/Models/User/Roles/Queries/GetRolesQuery.cs | 5 FlexJobApi.User.Application/Roles/Queries/GetRoleUserInfosQueryHandler.cs | 59 + FlexJobApi.Core/Models/User/UserInfos/Queries/GetOperationUserInfosQuery.cs | 87 + FlexJobApi.Core/Entities/Users/UserInfo.cs | 10 FlexJobApi.Core/Entities/Users/Role.cs | 6 FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenusQueryHandler.cs | 64 + FlexJobApi.User.Application/UserInfos/Queries/GetOperationUserInfosQueryHandler.cs | 60 + FlexJobApi.User.Application/UserInfos/Queries/GetUserInfoRolesQueryHandler.cs | 58 + FlexJobApi.User.Application/Roles/Queries/GetRolesQueryHandler.cs | 31 FlexJobApi.Core/Models/User/UserInfos/Commands/SetUserInfoStatusCommand.cs | 31 FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs | 2 FlexJobApi.Core/FlexJobApi.Core.xml | 155 ++ FlexJobApi.Core/Enums/Common/EnumResourceController.cs | 7 FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs | 19 24 files changed, 3,177 insertions(+), 14 deletions(-) diff --git a/FlexJobApi.Core/Entities/Users/Role.cs b/FlexJobApi.Core/Entities/Users/Role.cs index 54ac0a2..c7ba6ce 100644 --- a/FlexJobApi.Core/Entities/Users/Role.cs +++ b/FlexJobApi.Core/Entities/Users/Role.cs @@ -16,6 +16,7 @@ { RoleMenus = []; RoleResources = []; + UserInfoRoles = []; } /// <summary> @@ -59,5 +60,10 @@ /// 瑙掕壊鎺ュ彛 /// </summary> public List<RoleResource> RoleResources { get; set; } + + /// <summary> + /// 鐢ㄦ埛瑙掕壊 + /// </summary> + public List<UserInfoRole> UserInfoRoles { get; set; } } } diff --git a/FlexJobApi.Core/Entities/Users/UserInfo.cs b/FlexJobApi.Core/Entities/Users/UserInfo.cs index b413c16..2869593 100644 --- a/FlexJobApi.Core/Entities/Users/UserInfo.cs +++ b/FlexJobApi.Core/Entities/Users/UserInfo.cs @@ -138,6 +138,16 @@ /// </summary> public int? Weight { get; set; } + /// <summary> + /// 澶囨敞 + /// </summary> + public string Remark { get; set; } + + /// <summary> + /// 鐘舵�� + /// </summary> + public EnumUserInfoStatus Status { get; set; } + public IEnumerable<UserInfo> HasData(DbContext dbContext, Type dbContextLocator) { return new List<UserInfo> diff --git a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs index b3968dc..333c7e7 100644 --- a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs +++ b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs @@ -35,6 +35,11 @@ /// 鐢ㄦ埛瑙掕壊 /// </summary> [ResourceController(Service = EnumResourceService.User)] - Role + Role, + /// <summary> + /// 鐢ㄦ埛淇℃伅 + /// </summary> + [ResourceController(Service = EnumResourceService.User)] + UserInfo } } diff --git a/FlexJobApi.Core/Enums/Common/EnumUserInfoStatus.cs b/FlexJobApi.Core/Enums/Common/EnumUserInfoStatus.cs new file mode 100644 index 0000000..a72e7f9 --- /dev/null +++ b/FlexJobApi.Core/Enums/Common/EnumUserInfoStatus.cs @@ -0,0 +1,27 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鐢ㄦ埛淇℃伅鐘舵�� + /// </summary> + public enum EnumUserInfoStatus + { + /// <summary> + /// 姝e父 + /// </summary> + Normal = 10, + /// <summary> + /// 鍐荤粨 + /// </summary> + Freeze = 20, + /// <summary> + /// 绂佺敤 + /// </summary> + Disabled = 100, + } +} diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index 4d7b06a..eb35731 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -974,6 +974,11 @@ 瑙掕壊鎺ュ彛 </summary> </member> + <member name="P:FlexJobApi.Core.Role.UserInfoRoles"> + <summary> + 鐢ㄦ埛瑙掕壊 + </summary> + </member> <member name="T:FlexJobApi.Core.RoleMenu"> <summary> 瑙掕壊鑿滃崟 @@ -1242,6 +1247,16 @@ <member name="P:FlexJobApi.Core.UserInfo.Weight"> <summary> 浣撻噸 + </summary> + </member> + <member name="P:FlexJobApi.Core.UserInfo.Remark"> + <summary> + 澶囨敞 + </summary> + </member> + <member name="P:FlexJobApi.Core.UserInfo.Status"> + <summary> + 鐘舵�� </summary> </member> <member name="T:FlexJobApi.Core.UserInfoBankCard"> @@ -1614,6 +1629,11 @@ 鐢ㄦ埛瑙掕壊 </summary> </member> + <member name="F:FlexJobApi.Core.EnumResourceController.UserInfo"> + <summary> + 鐢ㄦ埛淇℃伅 + </summary> + </member> <member name="T:FlexJobApi.Core.EnumResourceMethod"> <summary> 璧勬簮璇锋眰鏂瑰紡 @@ -1662,6 +1682,26 @@ <member name="F:FlexJobApi.Core.EnumSmsAccess.AliyunSms"> <summary> 闃块噷浜戠煭淇� + </summary> + </member> + <member name="T:FlexJobApi.Core.EnumUserInfoStatus"> + <summary> + 鐢ㄦ埛淇℃伅鐘舵�� + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumUserInfoStatus.Normal"> + <summary> + 姝e父 + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumUserInfoStatus.Freeze"> + <summary> + 鍐荤粨 + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumUserInfoStatus.Disabled"> + <summary> + 绂佺敤 </summary> </member> <member name="T:FlexJobApi.Core.EnumBillingMethod"> @@ -2924,6 +2964,21 @@ 璧勬簮 </summary> </member> + <member name="T:FlexJobApi.Core.SetRoleUserCommand"> + <summary> + 璁剧疆瑙掕壊鐢ㄦ埛 + </summary> + </member> + <member name="P:FlexJobApi.Core.SetRoleUserCommand.RoleId"> + <summary> + 瑙掕壊Id + </summary> + </member> + <member name="P:FlexJobApi.Core.SetRoleUserCommand.UserInfoIds"> + <summary> + 鐢ㄦ埛Id + </summary> + </member> <member name="T:FlexJobApi.Core.GetRoleQuery"> <summary> 鏌ヨ瑙掕壊璇︽儏 @@ -3049,11 +3104,111 @@ 鏁版嵁鏉冮檺 </summary> </member> + <member name="P:FlexJobApi.Core.GetRolesQueryResultItem.UserCount"> + <summary> + 鐢ㄦ埛鏁伴噺 + </summary> + </member> <member name="P:FlexJobApi.Core.GetRolesQueryResultItem.Remark"> <summary> 澶囨敞 </summary> </member> + <member name="T:FlexJobApi.Core.GetRoleUsersQuery"> + <summary> + 鏌ヨ瑙掕壊鐢ㄦ埛鍒楄〃 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetRoleUsersQuery.RoleId"> + <summary> + 瑙掕壊Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetRoleUsersQueryResultItem.Id"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetRoleUsersQueryResultItem.Name"> + <summary> + 濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetRoleUsersQueryResultItem.UserName"> + <summary> + 鐢ㄦ埛鍚� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetRoleUsersQueryResultItem.IsChecked"> + <summary> + 鏄惁閫変腑 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetOperationUserInfosQuery"> + <summary> + 鏌ヨ杩愯惀绔敤鎴峰垎椤靛垪琛ㄦ暟鎹� + </summary> + </member> + <member name="T:FlexJobApi.Core.GetOperationUserInfosQueryResultItem"> + <summary> + 鏌ヨ杩愯惀绔敤鎴峰垎椤靛垪琛ㄦ暟鎹�-缁撴灉-椤� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOperationUserInfosQueryResultItem.Id"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOperationUserInfosQueryResultItem.Name"> + <summary> + 濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOperationUserInfosQueryResultItem.UserName"> + <summary> + 鐢ㄦ埛鍚� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOperationUserInfosQueryResultItem.PhoneNumber"> + <summary> + 鎵嬫満鍙� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOperationUserInfosQueryResultItem.Remark"> + <summary> + 澶囨敞 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOperationUserInfosQueryResultItem.Roles"> + <summary> + 瑙掕壊 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOperationUserInfosQueryResultItem.Status"> + <summary> + 鐘舵�� + </summary> + </member> + <member name="T:FlexJobApi.Core.GetOperationUserInfosQueryResultItemRole"> + <summary> + 鏌ヨ杩愯惀绔敤鎴峰垎椤靛垪琛ㄦ暟鎹�-缁撴灉-椤� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOperationUserInfosQueryResultItemRole.UserInfoId"> + <summary> + 鐢ㄦ埛Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOperationUserInfosQueryResultItemRole.Id"> + <summary> + 瑙掕壊Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetOperationUserInfosQueryResultItemRole.Name"> + <summary> + 鍚嶇О + </summary> + </member> <member name="T:FlexJobApi.Core.AliyunOptions"> <summary> 闃块噷浜戦厤缃� diff --git a/FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs b/FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs index 6a103ca..9eeef3a 100644 --- a/FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs +++ b/FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs @@ -10,7 +10,7 @@ /// <summary> /// 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅 /// </summary> - [Resource([EnumResourceController.Auth])] + [Resource([EnumResourceController.Auth], AllowAnonymous = true)] public class GetAliyunOSSAcsQuery : IRequest<GetAliyunOSSAcsQueryResult> { } diff --git a/FlexJobApi.Core/Models/User/Roles/Commands/SetRoleUserInfosCommand.cs b/FlexJobApi.Core/Models/User/Roles/Commands/SetRoleUserInfosCommand.cs new file mode 100644 index 0000000..0619df5 --- /dev/null +++ b/FlexJobApi.Core/Models/User/Roles/Commands/SetRoleUserInfosCommand.cs @@ -0,0 +1,31 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 璁剧疆瑙掕壊鐢ㄦ埛 + /// </summary> + [Resource([EnumResourceController.Role])] + public class SetRoleUserInfosCommand : IRequest<int> + { + public SetRoleUserInfosCommand() + { + UserInfoIds = []; + } + + /// <summary> + /// 瑙掕壊Id + /// </summary> + public Guid RoleId { get; set; } + + /// <summary> + /// 鐢ㄦ埛Id + /// </summary> + public List<Guid> UserInfoIds { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/User/Roles/Queries/GetRoleUserInfosQuery.cs b/FlexJobApi.Core/Models/User/Roles/Queries/GetRoleUserInfosQuery.cs new file mode 100644 index 0000000..528cff6 --- /dev/null +++ b/FlexJobApi.Core/Models/User/Roles/Queries/GetRoleUserInfosQuery.cs @@ -0,0 +1,45 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ瑙掕壊鐢ㄦ埛鍒楄〃 + /// </summary> + [Resource([EnumResourceController.Role])] + public class GetRoleUserInfosQuery : IRequest<List<GetRoleUserInfosQueryResultItem>> + { + /// <summary> + /// 瑙掕壊Id + /// </summary> + public Guid RoleId { get; set; } + } + + public class GetRoleUserInfosQueryResultItem + { + /// <summary> + /// 鐢ㄦ埛Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 濮撳悕 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 鐢ㄦ埛鍚� + /// </summary> + public string UserName { get; set; } + + /// <summary> + /// 鏄惁閫変腑 + /// </summary> + public bool IsChecked { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/User/Roles/Queries/GetRolesQuery.cs b/FlexJobApi.Core/Models/User/Roles/Queries/GetRolesQuery.cs index 4eebf5e..4ade891 100644 --- a/FlexJobApi.Core/Models/User/Roles/Queries/GetRolesQuery.cs +++ b/FlexJobApi.Core/Models/User/Roles/Queries/GetRolesQuery.cs @@ -61,6 +61,11 @@ public EnumRoleWebApiDataPower DataPower { get; set; } /// <summary> + /// 鐢ㄦ埛鏁伴噺 + /// </summary> + public int UserCount { get; set; } + + /// <summary> /// 澶囨敞 /// </summary> public string Remark { get; set; } diff --git a/FlexJobApi.Core/Models/User/UserInfos/Commands/SetUserInfoRolesCommand.cs b/FlexJobApi.Core/Models/User/UserInfos/Commands/SetUserInfoRolesCommand.cs new file mode 100644 index 0000000..e695467 --- /dev/null +++ b/FlexJobApi.Core/Models/User/UserInfos/Commands/SetUserInfoRolesCommand.cs @@ -0,0 +1,31 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 璁剧疆鐢ㄦ埛淇℃伅瑙掕壊 + /// </summary> + [Resource([EnumResourceController.UserInfo])] + public class SetUserInfoRolesCommand : IRequest<int> + { + public SetUserInfoRolesCommand() + { + RoleIds = []; + } + + /// <summary> + /// 鐢ㄦ埛Id + /// </summary> + public Guid UserInfoId { get; set; } + + /// <summary> + /// 瑙掕壊Id + /// </summary> + public List<Guid> RoleIds { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/User/UserInfos/Commands/SetUserInfoStatusCommand.cs b/FlexJobApi.Core/Models/User/UserInfos/Commands/SetUserInfoStatusCommand.cs new file mode 100644 index 0000000..2a4a822 --- /dev/null +++ b/FlexJobApi.Core/Models/User/UserInfos/Commands/SetUserInfoStatusCommand.cs @@ -0,0 +1,31 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 璁剧疆鐢ㄦ埛淇℃伅鐘舵�� + /// </summary> + [Resource([EnumResourceController.UserInfo])] + public class SetUserInfoStatusCommand : IRequest<int> + { + public SetUserInfoStatusCommand() + { + Ids = []; + } + + /// <summary> + /// Id + /// </summary> + public List<Guid> Ids { get; set; } + + /// <summary> + /// 鐘舵�� + /// </summary> + public EnumUserInfoStatus Status { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/User/UserInfos/Queries/GetOperationUserInfosQuery.cs b/FlexJobApi.Core/Models/User/UserInfos/Queries/GetOperationUserInfosQuery.cs new file mode 100644 index 0000000..bc00d81 --- /dev/null +++ b/FlexJobApi.Core/Models/User/UserInfos/Queries/GetOperationUserInfosQuery.cs @@ -0,0 +1,87 @@ +锘縰sing MediatR; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ杩愯惀绔敤鎴峰垎椤靛垪琛ㄦ暟鎹� + /// </summary> + [Resource([EnumResourceController.UserInfo])] + public class GetOperationUserInfosQuery : PagedListQuery<PagedListQueryResult<GetOperationUserInfosQueryResultItem>, GetOperationUserInfosQueryResultItem>, IRequest<PagedListQueryResult<GetOperationUserInfosQueryResultItem>> + { + } + + /// <summary> + /// 鏌ヨ杩愯惀绔敤鎴峰垎椤靛垪琛ㄦ暟鎹�-缁撴灉-椤� + /// </summary> + public class GetOperationUserInfosQueryResultItem + { + public GetOperationUserInfosQueryResultItem() + { + Roles = []; + } + + /// <summary> + /// Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 濮撳悕 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 鐢ㄦ埛鍚� + /// </summary> + public string UserName { get; set; } + + /// <summary> + /// 鎵嬫満鍙� + /// </summary> + public string PhoneNumber { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public string Remark { get; set; } + + /// <summary> + /// 瑙掕壊 + /// </summary> + public List<GetOperationUserInfosQueryResultItemRole> Roles { get; set; } + + /// <summary> + /// 鐘舵�� + /// </summary> + public EnumUserInfoStatus Status { get; set; } + } + + /// <summary> + /// 鏌ヨ杩愯惀绔敤鎴峰垎椤靛垪琛ㄦ暟鎹�-缁撴灉-椤� + /// </summary> + public class GetOperationUserInfosQueryResultItemRole + { + /// <summary> + /// 鐢ㄦ埛Id + /// </summary> + [JsonIgnore] + public Guid UserInfoId { get; set; } + + /// <summary> + /// 瑙掕壊Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 鍚嶇О + /// </summary> + public string Name { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/User/UserInfos/Queries/GetUserInfoRolesQuery.cs b/FlexJobApi.Core/Models/User/UserInfos/Queries/GetUserInfoRolesQuery.cs new file mode 100644 index 0000000..0129d0f --- /dev/null +++ b/FlexJobApi.Core/Models/User/UserInfos/Queries/GetUserInfoRolesQuery.cs @@ -0,0 +1,53 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鐢ㄦ埛瑙掕壊鍒楄〃 + /// </summary> + [Resource([EnumResourceController.UserInfo])] + public class GetUserInfoRolesQuery : IRequest<List<GetUserInfoRolesQueryResultItem>> + { + /// <summary> + /// 鐢ㄦ埛Id + /// </summary> + public Guid UserInfoId { get; set; } + + /// <summary> + /// 瀹㈡埛绔被鍨� + /// </summary> + public EnumClientType ClientType { get; set; } + } + + + /// <summary> + /// 鏌ヨ鐢ㄦ埛瑙掕壊鍒楄〃 + /// </summary> + public class GetUserInfoRolesQueryResultItem + { + /// <summary> + /// 瑙掕壊Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 鍚嶇О + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public string Remark { get; set; } + + /// <summary> + /// 鏄惁閫変腑 + /// </summary> + public bool IsChecked { get; set; } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/20250805082824_UpdateUser0805.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250805082824_UpdateUser0805.Designer.cs new file mode 100644 index 0000000..05e4505 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250805082824_UpdateUser0805.Designer.cs @@ -0,0 +1,2178 @@ +锘�// <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("20250805082824_UpdateUser0805")] + partial class UpdateUser0805 + { + /// <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>("ActionName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasComment("濮旀墭鍚嶇О"); + + b.Property<string>("Code") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasComment("缂栧彿"); + + b.Property<int>("Controller") + .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<bool>("IsExpired") + .HasColumnType("bit") + .HasComment("鏄惁宸茶繃鏈�"); + + b.Property<int>("Method") + .HasColumnType("int") + .HasComment("璇锋眰鏂瑰紡"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasComment("鍚嶇О"); + + b.Property<string>("RequestTypeFullName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasComment("璇锋眰绫诲瀷鍏ㄥ悕"); + + b.Property<string>("RequestTypeName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasComment("璇锋眰绫诲瀷鍚嶇О"); + + b.Property<string>("ResponseTypeFullName") + .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<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<int>("DataPower") + .HasColumnType("int") + .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<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.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<string>("Remark") + .HasColumnType("nvarchar(max)") + .HasComment("澶囨敞"); + + b.Property<int>("Sort") + .HasColumnType("int") + .HasComment("鎺掑簭"); + + b.Property<int>("Status") + .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, + Status = 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("Children") + .HasForeignKey("ParentId"); + + b.Navigation("Enterprise"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b => + { + b.HasOne("FlexJobApi.Core.DictionaryCategory", "Category") + .WithMany() + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.DictionaryData", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId"); + + b.Navigation("Category"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Enterprise", b => + { + b.HasOne("FlexJobApi.Core.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("Children") + .HasForeignKey("ParentId"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b => + { + b.HasOne("FlexJobApi.Core.Menu", "Menu") + .WithMany() + .HasForeignKey("MenuId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.Role", "Role") + .WithMany("RoleMenus") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Menu"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("FlexJobApi.Core.RoleResource", b => + { + b.HasOne("FlexJobApi.Core.Resource", "Resource") + .WithMany() + .HasForeignKey("ResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.Role", "Role") + .WithMany("RoleResources") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resource"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "City") + .WithMany() + .HasForeignKey("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("UserInfoRoles") + .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("Children"); + }); + + modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b => + { + b.Navigation("Children"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Enterprise", b => + { + b.Navigation("Departments"); + + b.Navigation("UserInfos"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Menu", b => + { + b.Navigation("Children"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Role", b => + { + b.Navigation("RoleMenus"); + + b.Navigation("RoleResources"); + + b.Navigation("UserInfoRoles"); + }); + + 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/20250805082824_UpdateUser0805.cs b/FlexJobApi.Database.Migrations/Migrations/20250805082824_UpdateUser0805.cs new file mode 100644 index 0000000..0fe6191 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250805082824_UpdateUser0805.cs @@ -0,0 +1,87 @@ +锘縰sing System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace FlexJobApi.Database.Migrations.Migrations +{ + /// <inheritdoc /> + public partial class UpdateUser0805 : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn<string>( + name: "Remark", + table: "UserInfo", + type: "nvarchar(max)", + nullable: true, + comment: "澶囨敞"); + + migrationBuilder.AddColumn<int>( + name: "Status", + table: "UserInfo", + type: "int", + nullable: false, + defaultValue: 0, + comment: "鐘舵��"); + + migrationBuilder.AlterColumn<string>( + name: "Remark", + table: "Role", + type: "nvarchar(max)", + nullable: true, + comment: "澶囨敞", + oldClrType: typeof(string), + oldType: "nvarchar(max)", + oldNullable: true); + + migrationBuilder.AlterColumn<int>( + name: "DataPower", + table: "Role", + type: "int", + nullable: false, + comment: "鏁版嵁鏉冮檺", + oldClrType: typeof(int), + oldType: "int"); + + migrationBuilder.UpdateData( + table: "UserInfo", + keyColumn: "Id", + keyValue: new Guid("11111111-1111-1111-1111-111111111112"), + columns: new[] { "Remark", "Status" }, + values: new object[] { null, 0 }); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Remark", + table: "UserInfo"); + + migrationBuilder.DropColumn( + name: "Status", + table: "UserInfo"); + + migrationBuilder.AlterColumn<string>( + name: "Remark", + table: "Role", + type: "nvarchar(max)", + nullable: true, + oldClrType: typeof(string), + oldType: "nvarchar(max)", + oldNullable: true, + oldComment: "澶囨敞"); + + migrationBuilder.AlterColumn<int>( + name: "DataPower", + table: "Role", + type: "int", + nullable: false, + oldClrType: typeof(int), + oldType: "int", + oldComment: "鏁版嵁鏉冮檺"); + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs index 92d7f88..45ae60d 100644 --- a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs +++ b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs @@ -722,7 +722,8 @@ .HasComment("鍒涘缓鎿嶄綔浜�"); b.Property<int>("DataPower") - .HasColumnType("int"); + .HasColumnType("int") + .HasComment("鏁版嵁鏉冮檺"); b.Property<bool>("IsDeleted") .HasColumnType("bit") @@ -739,7 +740,8 @@ .HasComment("鍚嶇О"); b.Property<string>("Remark") - .HasColumnType("nvarchar(max)"); + .HasColumnType("nvarchar(max)") + .HasComment("澶囨敞"); b.Property<int>("Sort") .HasColumnType("int") @@ -1310,9 +1312,17 @@ .HasColumnType("uniqueidentifier") .HasComment("韬唤Id"); + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)") + .HasComment("澶囨敞"); + b.Property<int>("Sort") .HasColumnType("int") .HasComment("鎺掑簭"); + + b.Property<int>("Status") + .HasColumnType("int") + .HasComment("鐘舵��"); b.Property<string>("TraceId") .HasColumnType("nvarchar(max)") @@ -1375,6 +1385,7 @@ IsDeleted = false, Level = 999, Sort = 0, + Status = 0, Type = 100, UserAuthId = new Guid("11111111-1111-1111-1111-111111111111") }); @@ -2089,7 +2100,7 @@ modelBuilder.Entity("FlexJobApi.Core.UserInfoRole", b => { b.HasOne("FlexJobApi.Core.Role", "Role") - .WithMany() + .WithMany("UserInfoRoles") .HasForeignKey("RoleId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -2132,6 +2143,8 @@ b.Navigation("RoleMenus"); b.Navigation("RoleResources"); + + b.Navigation("UserInfoRoles"); }); modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b => diff --git a/FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenusQueryHandler.cs b/FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenusQueryHandler.cs new file mode 100644 index 0000000..f531070 --- /dev/null +++ b/FlexJobApi.User.Application/Auths/Queries/GetCurrentLogierMenusQueryHandler.cs @@ -0,0 +1,64 @@ +锘縰sing FlexJobApi.Core; +using Furion; +using Furion.DatabaseAccessor; +using Mapster; +using MediatR; +using Microsoft.AspNetCore.Http; +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 GetCurrentLogierMenusQueryHandler( + IRepository<Menu> repMenu, + IRepository<RoleMenu> repRoleMenu, + IRepository<UserInfoRole> repUserInfoRole + ) + : IRequestHandler<GetCurrentLogierMenusQuery, List<GetMenusQueryResultItem>> + { + private readonly IRepository<Menu> repMenu = repMenu; + private readonly IRepository<RoleMenu> repRoleMenu = repRoleMenu; + private readonly IRepository<UserInfoRole> repUserInfoRole = repUserInfoRole; + + /// <inheritdoc/> + public async Task<List<GetMenusQueryResultItem>> Handle(GetCurrentLogierMenusQuery request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var all = await (from m in repMenu.AsQueryable().AsNoTracking() + join rm in repRoleMenu.AsQueryable().AsNoTracking() on m.Id equals rm.MenuId + join ur in repUserInfoRole.AsQueryable().AsNoTracking() on rm.RoleId equals ur.RoleId + where ur.UserInfoId == logier.UserInfoId + && (m.Type == EnumMenuType.Menu || m.Type == EnumMenuType.Page || m.Type == EnumMenuType.Modal) + select m).ProjectToType<GetMenusQueryResultItem>().ToListAsync(); + var models = all.Where(it => it.ParentId == null).ToList(); + LoopChildrens(models, all, []); + return models; + } + + /// <summary> + /// 閫掑綊璧嬪�间笅绾ц彍鍗� + /// </summary> + /// <param name="models"></param> + /// <param name="all"></param> + /// <param name="roleMenuIds"></param> + private void LoopChildrens(List<GetMenusQueryResultItem> models, List<GetMenusQueryResultItem> all, List<Guid> roleMenuIds) + { + foreach (var item in models) + { + item.IsChecked = roleMenuIds.Contains(item.Id); + item.Children = all.Where(it => it.ParentId == item.Id).ToList(); + if (item.Children.IsNotNull()) + { + LoopChildrens(item.Children, all, roleMenuIds); + } + } + } + } +} diff --git a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml index c3be773..80160c1 100644 --- a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml +++ b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml @@ -25,6 +25,27 @@ <member name="M:FlexJobApi.User.Application.GetAliyunOSSAcsQueryHandler.Handle(FlexJobApi.Core.GetAliyunOSSAcsQuery,System.Threading.CancellationToken)"> <inheritdoc/> </member> + <member name="T:FlexJobApi.User.Application.GetCurrentLogierMenusQueryHandler"> + <summary> + 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛鑿滃崟 + </summary> + </member> + <member name="M:FlexJobApi.User.Application.GetCurrentLogierMenusQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Menu},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.RoleMenu},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.UserInfoRole})"> + <summary> + 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛鑿滃崟 + </summary> + </member> + <member name="M:FlexJobApi.User.Application.GetCurrentLogierMenusQueryHandler.Handle(FlexJobApi.Core.GetCurrentLogierMenusQuery,System.Threading.CancellationToken)"> + <inheritdoc/> + </member> + <member name="M:FlexJobApi.User.Application.GetCurrentLogierMenusQueryHandler.LoopChildrens(System.Collections.Generic.List{FlexJobApi.Core.GetMenusQueryResultItem},System.Collections.Generic.List{FlexJobApi.Core.GetMenusQueryResultItem},System.Collections.Generic.List{System.Guid})"> + <summary> + 閫掑綊璧嬪�间笅绾ц彍鍗� + </summary> + <param name="models"></param> + <param name="all"></param> + <param name="roleMenuIds"></param> + </member> <member name="F:FlexJobApi.User.Application.EnumUserErrorCodeType.u1000"> <summary> 璐﹀彿鎴栧瘑鐮佷笉瀛樺湪 @@ -245,6 +266,19 @@ <member name="M:FlexJobApi.User.Application.SaveRoleCommandHandler.Handle(FlexJobApi.Core.SaveRoleCommand,System.Threading.CancellationToken)"> <inheritdoc/> </member> + <member name="T:FlexJobApi.User.Application.SetRoleUserCommandHandler"> + <summary> + 璁剧疆瑙掕壊鐢ㄦ埛 + </summary> + </member> + <member name="M:FlexJobApi.User.Application.SetRoleUserCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.UserInfoRole})"> + <summary> + 璁剧疆瑙掕壊鐢ㄦ埛 + </summary> + </member> + <member name="M:FlexJobApi.User.Application.SetRoleUserCommandHandler.Handle(FlexJobApi.Core.SetRoleUserCommand,System.Threading.CancellationToken)"> + <inheritdoc/> + </member> <member name="T:FlexJobApi.User.Application.GetRoleQueryHandler"> <summary> 鑾峰彇瑙掕壊璇︽儏 @@ -262,16 +296,42 @@ <summary> 鏌ヨ瑙掕壊鍒嗛〉鍒楄〃 </summary> - <param name="rep"></param> + <param name="repRole"></param> </member> - <member name="M:FlexJobApi.User.Application.GetRolesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Role})"> + <member name="M:FlexJobApi.User.Application.GetRolesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Role},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.UserInfoRole})"> <summary> 鏌ヨ瑙掕壊鍒嗛〉鍒楄〃 </summary> - <param name="rep"></param> + <param name="repRole"></param> </member> <member name="M:FlexJobApi.User.Application.GetRolesQueryHandler.Handle(FlexJobApi.Core.GetRolesQuery,System.Threading.CancellationToken)"> <inheritdoc/> </member> + <member name="T:FlexJobApi.User.Application.GetRoleUsersQueryHandler"> + <summary> + 鏌ヨ瑙掕壊鐢ㄦ埛鍒楄〃 + </summary> + </member> + <member name="M:FlexJobApi.User.Application.GetRoleUsersQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Role},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.UserInfo},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.UserInfoRole})"> + <summary> + 鏌ヨ瑙掕壊鐢ㄦ埛鍒楄〃 + </summary> + </member> + <member name="M:FlexJobApi.User.Application.GetRoleUsersQueryHandler.Handle(FlexJobApi.Core.GetRoleUsersQuery,System.Threading.CancellationToken)"> + <inheritdoc/> + </member> + <member name="T:FlexJobApi.User.Application.GetOperationUserInfosQueryHandler"> + <summary> + 鑾峰彇杩愯惀绔敤鎴峰垎椤靛垪琛� + </summary> + </member> + <member name="M:FlexJobApi.User.Application.GetOperationUserInfosQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.UserInfo},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.UserInfoRole})"> + <summary> + 鑾峰彇杩愯惀绔敤鎴峰垎椤靛垪琛� + </summary> + </member> + <member name="M:FlexJobApi.User.Application.GetOperationUserInfosQueryHandler.Handle(FlexJobApi.Core.GetOperationUserInfosQuery,System.Threading.CancellationToken)"> + <inheritdoc/> + </member> </members> </doc> diff --git a/FlexJobApi.User.Application/Roles/Commands/SetRoleUserInfosCommandHandler.cs b/FlexJobApi.User.Application/Roles/Commands/SetRoleUserInfosCommandHandler.cs new file mode 100644 index 0000000..f8edf74 --- /dev/null +++ b/FlexJobApi.User.Application/Roles/Commands/SetRoleUserInfosCommandHandler.cs @@ -0,0 +1,44 @@ +锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +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 SetRoleUserInfosCommandHandler( + IRepository<UserInfoRole> rep + ) : IRequestHandler<SetRoleUserInfosCommand, int> + { + private readonly IRepository<UserInfoRole> rep = rep; + + /// <inheritdoc/> + public async Task<int> Handle(SetRoleUserInfosCommand request, CancellationToken cancellationToken) + { + var entities = await rep.AsQueryable() + .Where(it => + it.RoleId == request.RoleId + && request.UserInfoIds.Contains(it.UserInfoId)) + .ToListAsync(cancellationToken); + var removes = entities.Where(it => !request.UserInfoIds.Contains(it.UserInfoId)).ToList(); + if (removes.Any()) await rep.DeleteAsync(removes, cancellationToken); + var adds = request.UserInfoIds + .Where(it => !entities.Any(e => e.UserInfoId == it)) + .Select(it => new UserInfoRole + { + RoleId = request.RoleId, + UserInfoId = it + }) + .ToList(); + if (adds.Any()) await rep.InsertAsync(adds, cancellationToken); + return removes.Count + adds.Count; + } + } +} diff --git a/FlexJobApi.User.Application/Roles/Queries/GetRoleUserInfosQueryHandler.cs b/FlexJobApi.User.Application/Roles/Queries/GetRoleUserInfosQueryHandler.cs new file mode 100644 index 0000000..454ccc8 --- /dev/null +++ b/FlexJobApi.User.Application/Roles/Queries/GetRoleUserInfosQueryHandler.cs @@ -0,0 +1,59 @@ +锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using MediatR; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.User.Application +{ + /// <summary> + /// 鏌ヨ瑙掕壊鐢ㄦ埛鍒楄〃 + /// </summary> + public class GetRoleUserInfosQueryHandler( + IRepository<Role> repRole, + IRepository<UserInfo> repUserInfo, + IRepository<UserInfoRole> repUserInfoRole + ) : IRequestHandler<GetRoleUserInfosQuery, List<GetRoleUserInfosQueryResultItem>> + { + private readonly IRepository<Role> repRole = repRole; + private readonly IRepository<UserInfo> repUserInfo = repUserInfo; + private readonly IRepository<UserInfoRole> repUserInfoRole = repUserInfoRole; + + /// <inheritdoc/> + public async Task<List<GetRoleUserInfosQueryResultItem>> Handle(GetRoleUserInfosQuery request, CancellationToken cancellationToken) + { + var role = await repRole.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.RoleId) + .Select(it => new + { + it.UserType, + }) + .FirstOrDefaultAsync(cancellationToken); + if (role == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヨ鑹�"); + var userInfoIds = await repUserInfoRole.AsQueryable().AsNoTracking() + .Where(it => it.RoleId == request.RoleId) + .Select(it => it.UserInfoId) + .ToListAsync(cancellationToken); + var userInfos = await repUserInfo.AsQueryable().AsNoTracking() + .Include(it => it.UserAuth) + .Where(it => it.Type == role.UserType) + .Select(it => new GetRoleUserInfosQueryResultItem + { + Id = it.Id, + Name = it.UserAuth.Name, + UserName = it.UserAuth.UserName, + }) + .ToListAsync(cancellationToken); + foreach (var userInfo in userInfos) + { + userInfo.IsChecked = userInfoIds.Contains(userInfo.Id); + } + return userInfos; + } + } +} diff --git a/FlexJobApi.User.Application/Roles/Queries/GetRolesQueryHandler.cs b/FlexJobApi.User.Application/Roles/Queries/GetRolesQueryHandler.cs index 7ecb4e0..92ba664 100644 --- a/FlexJobApi.User.Application/Roles/Queries/GetRolesQueryHandler.cs +++ b/FlexJobApi.User.Application/Roles/Queries/GetRolesQueryHandler.cs @@ -14,17 +14,19 @@ /// <summary> /// 鏌ヨ瑙掕壊鍒嗛〉鍒楄〃 /// </summary> - /// <param name="rep"></param> + /// <param name="repRole"></param> public class GetRolesQueryHandler( - IRepository<Role> rep + IRepository<Role> repRole, + IRepository<UserInfoRole> repUserInfoRole ) : IRequestHandler<GetRolesQuery, PagedListQueryResult<GetRolesQueryResultItem>> { - private readonly IRepository<Role> rep = rep; + private readonly IRepository<Role> repRole = repRole; + private readonly IRepository<UserInfoRole> repUserInfoRole = repUserInfoRole; /// <inheritdoc/> - public Task<PagedListQueryResult<GetRolesQueryResultItem>> Handle(GetRolesQuery request, CancellationToken cancellationToken) + public async Task<PagedListQueryResult<GetRolesQueryResultItem>> Handle(GetRolesQuery request, CancellationToken cancellationToken) { - var q = rep.AsQueryable().AsNoTracking(); + var q = repRole.AsQueryable().AsNoTracking(); if (request.UserType.HasValue) { q = q.Where(it => it.UserType == request.UserType); @@ -33,10 +35,27 @@ { q = q.Where(it => it.ClientType == request.ClientType); } - var result = q + var result = await q .ProjectToType<GetRolesQueryResultItem>() .ToPagedListAsync(request.PageModel, cancellationToken); + if (result.Data.Any()) + { + var ids = result.Data.DistinctSelect(it => it.Id); + var userInfoRoles = await repUserInfoRole.AsQueryable().AsNoTracking() + .Where(it => ids.Contains(it.RoleId)) + .Select(it => new + { + it.UserInfoId, + it.RoleId + }) + .ToListAsync(); + foreach (var item in result.Data) + { + item.UserCount = userInfoRoles.Count(it => it.RoleId == item.Id); + } + } + return result; } } diff --git a/FlexJobApi.User.Application/UserInfos/Commands/SetUserInfoStatusCommandHandler.cs b/FlexJobApi.User.Application/UserInfos/Commands/SetUserInfoStatusCommandHandler.cs new file mode 100644 index 0000000..d91b776 --- /dev/null +++ b/FlexJobApi.User.Application/UserInfos/Commands/SetUserInfoStatusCommandHandler.cs @@ -0,0 +1,35 @@ +锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +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.UserInfos.Commands +{ + /// <summary> + /// 璁剧疆鐢ㄦ埛淇℃伅鐘舵�� + /// </summary> + public class SetUserInfoStatusCommandHandler( + IRepository<UserInfo> rep + ) : IRequestHandler<SetUserInfoStatusCommand, int> + { + private readonly IRepository<UserInfo> rep = rep; + + /// <inheritdoc/> + public async Task<int> Handle(SetUserInfoStatusCommand request, CancellationToken cancellationToken) + { + var entities = await rep.AsQueryable() + .Where(it => request.Ids.Contains(it.Id) && it.Status != request.Status) + .ToListAsync(cancellationToken); + foreach (var entity in entities) + { + entity.Status = request.Status; + } + return entities.Count; + } + } +} diff --git a/FlexJobApi.User.Application/UserInfos/Queries/GetOperationUserInfosQueryHandler.cs b/FlexJobApi.User.Application/UserInfos/Queries/GetOperationUserInfosQueryHandler.cs new file mode 100644 index 0000000..6aa9360 --- /dev/null +++ b/FlexJobApi.User.Application/UserInfos/Queries/GetOperationUserInfosQueryHandler.cs @@ -0,0 +1,60 @@ +锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +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 GetOperationUserInfosQueryHandler( + IRepository<UserInfo> repUser, + IRepository<UserInfoRole> repUserInfoRole + ) : IRequestHandler<GetOperationUserInfosQuery, PagedListQueryResult<GetOperationUserInfosQueryResultItem>> + { + private readonly IRepository<UserInfo> repUser = repUser; + private readonly IRepository<UserInfoRole> repUserInfoRole = repUserInfoRole; + + /// <inheritdoc/> + public async Task<PagedListQueryResult<GetOperationUserInfosQueryResultItem>> Handle(GetOperationUserInfosQuery request, CancellationToken cancellationToken) + { + var result = await repUser.AsQueryable().AsNoTracking() + .OrderByDescending(it => it.Level).ThenByDescending(it => it.CreatedTime) + .Where(it => it.Type == EnumUserType.Operation) + .Select(it => new GetOperationUserInfosQueryResultItem + { + Id = it.Id, + Name = it.UserAuth.Name, + UserName = it.UserAuth.UserName, + PhoneNumber = it.UserAuth.PhoneNumber, + Remark = it.Remark + }) + .ToPagedListAsync(request.PageModel, cancellationToken); + if (result.Data.Any()) + { + var ids = result.Data.DistinctSelect(it => it.Id); + var userRoles = await repUserInfoRole.AsQueryable().AsNoTracking() + .Include(it => it.Role) + .Where(it => ids.Contains(it.UserInfoId)) + .Select(it => new GetOperationUserInfosQueryResultItemRole + { + UserInfoId = it.UserInfoId, + Id = it.RoleId, + Name = it.Role.Name + }) + .ToListAsync(cancellationToken); + foreach (var item in result.Data) + { + item.Roles = userRoles.Where(it => it.UserInfoId == item.Id).ToList(); + } + } + return result; + } + } +} diff --git a/FlexJobApi.User.Application/UserInfos/Queries/GetUserInfoRolesQueryHandler.cs b/FlexJobApi.User.Application/UserInfos/Queries/GetUserInfoRolesQueryHandler.cs new file mode 100644 index 0000000..4fe2aed --- /dev/null +++ b/FlexJobApi.User.Application/UserInfos/Queries/GetUserInfoRolesQueryHandler.cs @@ -0,0 +1,58 @@ +锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using MediatR; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.User.Application +{ + /// <summary> + /// 鏌ヨ鐢ㄦ埛瑙掕壊鍒楄〃 + /// </summary> + public class GetUserInfoRolesQueryHandler( + IRepository<Role> repRole, + IRepository<UserInfo> repUserInfo, + IRepository<UserInfoRole> repUserInfoRole + ) : IRequestHandler<GetUserInfoRolesQuery, List<GetUserInfoRolesQueryResultItem>> + { + private readonly IRepository<Role> repRole = repRole; + private readonly IRepository<UserInfo> repUserInfo = repUserInfo; + private readonly IRepository<UserInfoRole> repUserInfoRole = repUserInfoRole; + + /// <inheritdoc/> + public async Task<List<GetUserInfoRolesQueryResultItem>> Handle(GetUserInfoRolesQuery request, CancellationToken cancellationToken) + { + var userInfo = await repUserInfo.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.UserInfoId) + .Select(it => new + { + it.Type, + }) + .FirstOrDefaultAsync(cancellationToken); + if (userInfo == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ョ敤鎴蜂俊鎭�"); + var roleIds = await repUserInfoRole.AsQueryable().AsNoTracking() + .Where(it => it.UserInfoId == request.UserInfoId) + .Select(it => it.RoleId) + .ToListAsync(cancellationToken); + var roles = await repRole.AsQueryable().AsNoTracking() + .Where(it => it.UserType == userInfo.Type && it.ClientType == request.ClientType) + .Select(it => new GetUserInfoRolesQueryResultItem + { + Id = it.Id, + Name = it.Name, + Remark = it.Remark, + }) + .ToListAsync(cancellationToken); + foreach (var role in roles) + { + role.IsChecked = roleIds.Contains(role.Id); + } + return roles; + } + } +} -- Gitblit v1.9.1