From 4ff56211fc609419efb1f8c15b1d684d72294ddc Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 05 八月 2025 18:04:29 +0800 Subject: [PATCH] feat:角色开发 --- FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs | 3 FlexJobApi.Core/Utils/DbUtils/SaveDataCommand.cs | 16 FlexJobApi.Core/Utils/XmlDocUtils/XmlDocUtils.cs | 6 FlexJobApi.Core/Models/User/Roles/Queries/GetRolesQuery.cs | 15 FlexJobApi.Core/Utils/DbUtils/DeleteDataCommand.cs | 4 FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs | 2 FlexJobApi.Application/FlexJobApi.Application.csproj | 4 FlexJobApi.Core/Entities/Users/Role.cs | 5 FlexJobApi.Core/Utils/DbUtils/DbUtils.cs | 69 + FlexJobApi.Core/Models/Main/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs | 18 FlexJobApi.Core/Models/Main/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs | 41 FlexJobApi.Core/FlexJobApi.Core.xml | 211 +++ FlexJobApi.Database.Migrations/Migrations/20250805095847_UpdateRole0805002.Designer.cs | 2196 ++++++++++++++++++++++++++++++++++++++++++++ FlexJobApi.User.Application/Roles/Commands/SetRoleIsDisabledCommandHandler.cs | 36 FlexJobApi.User.Application/FlexJobApi.User.Application.xml | 13 FlexJobApi.Application/Dictionaries/Commands/SaveDictionaryCategoryCommandHandler.cs | 21 FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs | 50 + FlexJobApi.Core/Entities/Common/DictionaryCategory.cs | 5 FlexJobApi.Core/Enums/Common/EnumUserInfoStatus.cs | 4 FlexJobApi.Application/FlexJobApi.Application.xml | 20 FlexJobApi.Core/Models/User/Menus/Commands/DeleteMenuCommand.cs | 2 FlexJobApi.Core/Utils/PagedListUtils/PagedListUtils.cs | 3 FlexJobApi.Application/Dictionaries/Commands/DeleteDictionaryCategoryCommandHandler.cs | 21 FlexJobApi.Core/Models/User/Roles/Commands/SetRoleIsDisabledCommand.cs | 33 FlexJobApi.Database.Migrations/Migrations/20250805095847_UpdateRole0805002.cs | 65 + FlexJobApi.Application/Dictionaries/Queries/GetDictionaryCategoriesQueryHandler.cs | 41 FlexJobApi.Core/Models/User/Roles/Commands/DeleteRoleCommand.cs | 2 FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs | 18 FlexJobApi.Core/FlexJobApi.Core.csproj | 4 29 files changed, 2,861 insertions(+), 67 deletions(-) diff --git a/FlexJobApi.Application/Dictionaries/Commands/DeleteDictionaryCategoryCommandHandler.cs b/FlexJobApi.Application/Dictionaries/Commands/DeleteDictionaryCategoryCommandHandler.cs new file mode 100644 index 0000000..a430922 --- /dev/null +++ b/FlexJobApi.Application/Dictionaries/Commands/DeleteDictionaryCategoryCommandHandler.cs @@ -0,0 +1,21 @@ +锘縰sing FlexJobApi.Core; +using MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Application +{ + /// <summary> + /// 鍒犻櫎瀛楀吀绫诲埆 + /// </summary> + public class DeleteDictionaryCategoryCommandHandler : IRequestHandler<DeleteDictionaryCategoryCommand, int> + { + public async Task<int> Handle(DeleteDictionaryCategoryCommand request, CancellationToken cancellationToken) + { + return await DbUtils.DeleteData<DictionaryCategory>(request, null, cancellationToken); + } + } +} diff --git a/FlexJobApi.Application/Dictionaries/Commands/SaveDictionaryCategoryCommandHandler.cs b/FlexJobApi.Application/Dictionaries/Commands/SaveDictionaryCategoryCommandHandler.cs new file mode 100644 index 0000000..bda9ef5 --- /dev/null +++ b/FlexJobApi.Application/Dictionaries/Commands/SaveDictionaryCategoryCommandHandler.cs @@ -0,0 +1,21 @@ +锘縰sing FlexJobApi.Core; +using MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Application +{ + /// <summary> + /// 淇濆瓨瀛楀吀绫诲埆 + /// </summary> + public class SaveDictionaryCategoryCommandHandler : IRequestHandler<SaveDictionaryCategoryCommand, Guid> + { + public Task<Guid> Handle(SaveDictionaryCategoryCommand request, CancellationToken cancellationToken) + { + return request.SaveData<DictionaryCategory, SaveDictionaryCategoryCommand>(); + } + } +} diff --git a/FlexJobApi.Application/Dictionaries/Queries/GetDictionaryCategoriesQueryHandler.cs b/FlexJobApi.Application/Dictionaries/Queries/GetDictionaryCategoriesQueryHandler.cs new file mode 100644 index 0000000..814b83b --- /dev/null +++ b/FlexJobApi.Application/Dictionaries/Queries/GetDictionaryCategoriesQueryHandler.cs @@ -0,0 +1,41 @@ +锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +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.Application +{ + /// <summary> + /// 鏌ヨ瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁 + /// </summary> + public class GetDictionaryCategoriesQueryHandler( + IRepository<DictionaryCategory> rep + ) : IRequestHandler<GetDictionaryCategoriesQuery, PagedListQueryResult<GetDictionaryCategoriesQueryResultItem>> + { + private readonly IRepository<DictionaryCategory> rep = rep; + + public async Task<PagedListQueryResult<GetDictionaryCategoriesQueryResultItem>> Handle(GetDictionaryCategoriesQuery request, CancellationToken cancellationToken) + { + var q = rep.AsQueryable().AsNoTracking() + .OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime) + .AsQueryable(); + if (request.Keywords.IsNotNull()) + { + q = q.Where(it => + it.Code.Contains(request.Keywords) || + it.Name.Contains(request.Keywords) || + it.Remark.Contains(request.Keywords)); + } + var result = await q + .ProjectToType<GetDictionaryCategoriesQueryResultItem>() + .ToPagedListAsync(request.PageModel, cancellationToken); + return result; + } + } +} diff --git a/FlexJobApi.Application/FlexJobApi.Application.csproj b/FlexJobApi.Application/FlexJobApi.Application.csproj index b3895fd..ee4ac83 100644 --- a/FlexJobApi.Application/FlexJobApi.Application.csproj +++ b/FlexJobApi.Application/FlexJobApi.Application.csproj @@ -16,8 +16,4 @@ <ProjectReference Include="..\FlexJobApi.Core\FlexJobApi.Core.csproj" /> </ItemGroup> - <ItemGroup> - <Folder Include="Dictionaries\Commands\" /> - </ItemGroup> - </Project> diff --git a/FlexJobApi.Application/FlexJobApi.Application.xml b/FlexJobApi.Application/FlexJobApi.Application.xml index 705ed9b..b9fd602 100644 --- a/FlexJobApi.Application/FlexJobApi.Application.xml +++ b/FlexJobApi.Application/FlexJobApi.Application.xml @@ -4,6 +4,26 @@ <name>FlexJobApi.Application</name> </assembly> <members> + <member name="T:FlexJobApi.Application.DeleteDictionaryCategoryCommandHandler"> + <summary> + 鍒犻櫎瀛楀吀绫诲埆 + </summary> + </member> + <member name="T:FlexJobApi.Application.SaveDictionaryCategoryCommandHandler"> + <summary> + 淇濆瓨瀛楀吀绫诲埆 + </summary> + </member> + <member name="T:FlexJobApi.Application.GetDictionaryCategoriesQueryHandler"> + <summary> + 鏌ヨ瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁 + </summary> + </member> + <member name="M:FlexJobApi.Application.GetDictionaryCategoriesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory})"> + <summary> + 鏌ヨ瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁 + </summary> + </member> <member name="T:FlexJobApi.Application.GetDictionaryDatasQueryHandler"> <summary> 鑾峰彇瀛楀吀鏁版嵁鍒嗛〉鍒楄〃 diff --git a/FlexJobApi.Core/Entities/Common/DictionaryCategory.cs b/FlexJobApi.Core/Entities/Common/DictionaryCategory.cs index 24a1f2b..2d3a1c1 100644 --- a/FlexJobApi.Core/Entities/Common/DictionaryCategory.cs +++ b/FlexJobApi.Core/Entities/Common/DictionaryCategory.cs @@ -30,5 +30,10 @@ /// 瀛楁鍚嶏紙閫楀彿闅斿紑锛� /// </summary> public string FieldNames { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public string Remark { get; set; } } } diff --git a/FlexJobApi.Core/Entities/Users/Role.cs b/FlexJobApi.Core/Entities/Users/Role.cs index c7ba6ce..8890d19 100644 --- a/FlexJobApi.Core/Entities/Users/Role.cs +++ b/FlexJobApi.Core/Entities/Users/Role.cs @@ -52,6 +52,11 @@ public string Remark { get; set; } /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool IsDisabled { get; set; } + + /// <summary> /// 瑙掕壊鑿滃崟 /// </summary> public List<RoleMenu> RoleMenus { get; set; } diff --git a/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs b/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs index 10e43f2..afbff32 100644 --- a/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs +++ b/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; -namespace FlexJobApi.User.Application +namespace FlexJobApi.Core { [ErrorCodeType] public enum EnumErrorCodeType diff --git a/FlexJobApi.Core/Enums/Common/EnumUserInfoStatus.cs b/FlexJobApi.Core/Enums/Common/EnumUserInfoStatus.cs index a72e7f9..b9ae601 100644 --- a/FlexJobApi.Core/Enums/Common/EnumUserInfoStatus.cs +++ b/FlexJobApi.Core/Enums/Common/EnumUserInfoStatus.cs @@ -16,10 +16,6 @@ /// </summary> Normal = 10, /// <summary> - /// 鍐荤粨 - /// </summary> - Freeze = 20, - /// <summary> /// 绂佺敤 /// </summary> Disabled = 100, diff --git a/FlexJobApi.Core/FlexJobApi.Core.csproj b/FlexJobApi.Core/FlexJobApi.Core.csproj index b6a8289..a658ceb 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.csproj +++ b/FlexJobApi.Core/FlexJobApi.Core.csproj @@ -27,10 +27,6 @@ </ItemGroup> <ItemGroup> - <Folder Include="Models\Main\Dictionaries\Commands\" /> - </ItemGroup> - - <ItemGroup> <None Update="settings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index ae0367c..66d9bb0 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -79,6 +79,11 @@ 瀛楁鍚嶏紙閫楀彿闅斿紑锛� </summary> </member> + <member name="P:FlexJobApi.Core.DictionaryCategory.Remark"> + <summary> + 澶囨敞 + </summary> + </member> <member name="T:FlexJobApi.Core.DictionaryData"> <summary> 瀛楀吀鏁版嵁 @@ -974,6 +979,11 @@ 澶囨敞 </summary> </member> + <member name="P:FlexJobApi.Core.Role.IsDisabled"> + <summary> + 鏄惁绂佺敤 + </summary> + </member> <member name="P:FlexJobApi.Core.Role.RoleMenus"> <summary> 瑙掕壊鑿滃崟 @@ -1504,6 +1514,36 @@ 鍒犻櫎 </summary> </member> + <member name="F:FlexJobApi.Core.EnumErrorCodeType.s400"> + <summary> + 鍙傛暟閿欒 + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumErrorCodeType.s404"> + <summary> + {0}涓嶅瓨鍦� + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumErrorCodeType.s405"> + <summary> + 璇0}宸插瓨鍦紝璇风‘璁ゅ悗鍐嶈瘯 + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumErrorCodeType.s406"> + <summary> + 瀛樺湪閲嶅鏁版嵁锛歿0}锛岃纭鍚庡啀璇� + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumErrorCodeType.s410"> + <summary> + 璇0}涓嶅彲淇敼 + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumErrorCodeType.s500"> + <summary> + 绯荤粺寮傚父锛岃鑱旂郴绠$悊鍛� + </summary> + </member> <member name="T:FlexJobApi.Core.Enums.Common.EnumFileStoreAccess"> <summary> 鏂囦欢瀛樺偍閫氶亾 @@ -1707,11 +1747,6 @@ <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"> @@ -2037,6 +2072,71 @@ <member name="T:FlexJobApi.Core.IPhysicalDeletion"> <summary> 鐗╃悊鍒犻櫎 + </summary> + </member> + <member name="T:FlexJobApi.Core.DeleteDictionaryCategoryCommand"> + <summary> + 鍒犻櫎瀛楀吀绫诲埆 + </summary> + </member> + <member name="T:FlexJobApi.Core.SaveDictionaryCategoryCommand"> + <summary> + 淇濆瓨瀛楀吀绫诲埆 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveDictionaryCategoryCommand.Code"> + <summary> + 缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveDictionaryCategoryCommand.Name"> + <summary> + 鍚嶇О + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveDictionaryCategoryCommand.FieldNames"> + <summary> + 瀛楁鍚嶏紙閫楀彿闅斿紑锛� + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveDictionaryCategoryCommand.Sort"> + <summary> + 鎺掑簭 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetDictionaryCategoriesQuery"> + <summary> + 鏌ヨ瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDictionaryCategoriesQuery.Keywords"> + <summary> + 鍏抽敭瀛� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDictionaryCategoriesQueryResultItem.Id"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDictionaryCategoriesQueryResultItem.Code"> + <summary> + 缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDictionaryCategoriesQueryResultItem.Name"> + <summary> + 鍚嶇О + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDictionaryCategoriesQueryResultItem.FieldNames"> + <summary> + 瀛楁鍚嶏紙閫楀彿闅斿紑锛� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDictionaryCategoriesQueryResultItem.Sort"> + <summary> + 鎺掑簭 </summary> </member> <member name="T:FlexJobApi.Core.GetDictionaryDatasQuery"> @@ -3029,6 +3129,21 @@ 璧勬簮 </summary> </member> + <member name="T:FlexJobApi.Core.SetRoleIsDisabledCommand"> + <summary> + 璁剧疆瑙掕壊鏄惁绂佺敤 + </summary> + </member> + <member name="P:FlexJobApi.Core.SetRoleIsDisabledCommand.Ids"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.SetRoleIsDisabledCommand.IsDisabled"> + <summary> + 鏄惁绂佺敤 + </summary> + </member> <member name="T:FlexJobApi.Core.SetRoleUserInfosCommand"> <summary> 璁剧疆瑙掕壊鐢ㄦ埛 @@ -3174,14 +3289,19 @@ 鏁版嵁鏉冮檺 </summary> </member> - <member name="P:FlexJobApi.Core.GetRolesQueryResultItem.UserCount"> - <summary> - 鐢ㄦ埛鏁伴噺 - </summary> - </member> <member name="P:FlexJobApi.Core.GetRolesQueryResultItem.Remark"> <summary> 澶囨敞 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetRolesQueryResultItem.IsDisabled"> + <summary> + 鏄惁绂佺敤 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetRolesQueryResultItem.UserCount"> + <summary> + 鐢ㄦ埛鏁伴噺 </summary> </member> <member name="T:FlexJobApi.Core.GetRoleUserInfosQuery"> @@ -3470,6 +3590,33 @@ <param name="span"></param> <returns></returns> </member> + <member name="T:FlexJobApi.Core.DbUtils"> + <summary> + 鏁版嵁搴撳伐鍏� + </summary> + </member> + <member name="M:FlexJobApi.Core.DbUtils.DeleteData``1(FlexJobApi.Core.DeleteDataCommand,System.Func{System.Linq.IQueryable{``0},System.Linq.IQueryable{``0}},System.Threading.CancellationToken)"> + <summary> + 鍒犻櫎鏁版嵁 + </summary> + <typeparam name="TEntity"></typeparam> + <param name="request"></param> + <param name="query"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.Core.DbUtils.SaveData``2(``1,System.Func{``0,``1,System.Boolean},System.Threading.CancellationToken)"> + <summary> + 淇濆瓨鏁版嵁 + </summary> + <typeparam name="TEntity"></typeparam> + <typeparam name="TRequest"></typeparam> + <param name="rep"></param> + <param name="request"></param> + <param name="checkExist"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> <member name="M:FlexJobApi.Core.DbUtils.BuildEntity(Microsoft.EntityFrameworkCore.ModelBuilder,System.Type)"> <summary> 鐢熸垚瀹炰綋 @@ -3478,9 +3625,21 @@ <param name="dbContextLocator"></param> <returns></returns> </member> - <member name="T:FlexJobApi.Core.DeleteCommand"> + <member name="M:FlexJobApi.Core.DbUtils.SavingChangesEvent(Microsoft.EntityFrameworkCore.Diagnostics.DbContextEventData,Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult{System.Int32})"> + <summary> + 鏁版嵁鍙樻洿浜嬩欢 + </summary> + <param name="eventData"></param> + <param name="result"></param> + </member> + <member name="T:FlexJobApi.Core.DeleteDataCommand"> <summary> 鍒犻櫎鍛戒护 + </summary> + </member> + <member name="T:FlexJobApi.Core.SaveDataCommand"> + <summary> + 淇濆瓨鏁版嵁鍛戒护 </summary> </member> <member name="P:FlexJobApi.Core.EnumModel.Name"> @@ -4091,36 +4250,6 @@ <param name="memberInfo"></param> <param name="xmlDoc"></param> <returns></returns> - </member> - <member name="F:FlexJobApi.User.Application.EnumErrorCodeType.s400"> - <summary> - 鍙傛暟閿欒 - </summary> - </member> - <member name="F:FlexJobApi.User.Application.EnumErrorCodeType.s404"> - <summary> - {0}涓嶅瓨鍦� - </summary> - </member> - <member name="F:FlexJobApi.User.Application.EnumErrorCodeType.s405"> - <summary> - 璇0}宸插瓨鍦紝璇风‘璁ゅ悗鍐嶈瘯 - </summary> - </member> - <member name="F:FlexJobApi.User.Application.EnumErrorCodeType.s406"> - <summary> - 瀛樺湪閲嶅鏁版嵁锛歿0}锛岃纭鍚庡啀璇� - </summary> - </member> - <member name="F:FlexJobApi.User.Application.EnumErrorCodeType.s410"> - <summary> - 璇0}涓嶅彲淇敼 - </summary> - </member> - <member name="F:FlexJobApi.User.Application.EnumErrorCodeType.s500"> - <summary> - 绯荤粺寮傚父锛岃鑱旂郴绠$悊鍛� - </summary> </member> </members> </doc> diff --git a/FlexJobApi.Core/Models/Main/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs b/FlexJobApi.Core/Models/Main/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs new file mode 100644 index 0000000..5099239 --- /dev/null +++ b/FlexJobApi.Core/Models/Main/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs @@ -0,0 +1,18 @@ +锘縰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.Dictionary])] + public class DeleteDictionaryCategoryCommand : DeleteDataCommand, IRequest<int> + { + + } +} diff --git a/FlexJobApi.Core/Models/Main/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs b/FlexJobApi.Core/Models/Main/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs new file mode 100644 index 0000000..113fc40 --- /dev/null +++ b/FlexJobApi.Core/Models/Main/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs @@ -0,0 +1,41 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 淇濆瓨瀛楀吀绫诲埆 + /// </summary> + [Resource([EnumResourceController.Dictionary])] + public class SaveDictionaryCategoryCommand : SaveDataCommand, IRequest<Guid> + { + /// <summary> + /// 缂栧彿 + /// </summary> + [MaxLength(128)] + [Required] + public string Code { get; set; } + + /// <summary> + /// 鍚嶇О + /// </summary> + [MaxLength(128)] + [Required] + public string Name { get; set; } + + /// <summary> + /// 瀛楁鍚嶏紙閫楀彿闅斿紑锛� + /// </summary> + public string FieldNames { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int Sort { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs b/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs new file mode 100644 index 0000000..a1a7a37 --- /dev/null +++ b/FlexJobApi.Core/Models/Main/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs @@ -0,0 +1,50 @@ +锘縰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.Dictionary])] + public class GetDictionaryCategoriesQuery : PagedListQuery<PagedListQueryResult<GetDictionaryCategoriesQueryResultItem>, GetDictionaryCategoriesQueryResultItem>, IRequest<PagedListQueryResult<GetDictionaryCategoriesQueryResultItem>> + { + /// <summary> + /// 鍏抽敭瀛� + /// </summary> + public string Keywords { get; set; } + } + + public class GetDictionaryCategoriesQueryResultItem + { + /// <summary> + /// Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 缂栧彿 + /// </summary> + public string Code { get; set; } + + /// <summary> + /// 鍚嶇О + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 瀛楁鍚嶏紙閫楀彿闅斿紑锛� + /// </summary> + public string FieldNames { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int Sort { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/User/Menus/Commands/DeleteMenuCommand.cs b/FlexJobApi.Core/Models/User/Menus/Commands/DeleteMenuCommand.cs index 13ce439..e924512 100644 --- a/FlexJobApi.Core/Models/User/Menus/Commands/DeleteMenuCommand.cs +++ b/FlexJobApi.Core/Models/User/Menus/Commands/DeleteMenuCommand.cs @@ -12,7 +12,7 @@ /// 鍒犻櫎鑿滃崟 /// </summary> [Resource([EnumResourceController.Menu])] - public class DeleteMenuCommand : DeleteCommand, IRequest<int> + public class DeleteMenuCommand : DeleteDataCommand, IRequest<int> { } diff --git a/FlexJobApi.Core/Models/User/Roles/Commands/DeleteRoleCommand.cs b/FlexJobApi.Core/Models/User/Roles/Commands/DeleteRoleCommand.cs index 98a987c..2607022 100644 --- a/FlexJobApi.Core/Models/User/Roles/Commands/DeleteRoleCommand.cs +++ b/FlexJobApi.Core/Models/User/Roles/Commands/DeleteRoleCommand.cs @@ -11,7 +11,7 @@ /// 鍒犻櫎瑙掕壊 /// </summary> [Resource([EnumResourceController.Role])] - public class DeleteRoleCommand : DeleteCommand, IRequest<int> + public class DeleteRoleCommand : DeleteDataCommand, IRequest<int> { } diff --git a/FlexJobApi.Core/Models/User/Roles/Commands/SetRoleIsDisabledCommand.cs b/FlexJobApi.Core/Models/User/Roles/Commands/SetRoleIsDisabledCommand.cs new file mode 100644 index 0000000..b84990b --- /dev/null +++ b/FlexJobApi.Core/Models/User/Roles/Commands/SetRoleIsDisabledCommand.cs @@ -0,0 +1,33 @@ +锘縰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 SetRoleIsDisabledCommand : IRequest<int> + { + public SetRoleIsDisabledCommand() + { + Ids = []; + } + + /// <summary> + /// Id + /// </summary> + [Required] + public List<Guid> Ids { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool IsDisabled { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/User/Roles/Queries/GetRolesQuery.cs b/FlexJobApi.Core/Models/User/Roles/Queries/GetRolesQuery.cs index 3ae3f9d..e96931f 100644 --- a/FlexJobApi.Core/Models/User/Roles/Queries/GetRolesQuery.cs +++ b/FlexJobApi.Core/Models/User/Roles/Queries/GetRolesQuery.cs @@ -66,13 +66,18 @@ public EnumRoleWebApiDataPower DataPower { get; set; } /// <summary> - /// 鐢ㄦ埛鏁伴噺 - /// </summary> - public int UserCount { get; set; } - - /// <summary> /// 澶囨敞 /// </summary> public string Remark { get; set; } + + /// <summary> + /// 鏄惁绂佺敤 + /// </summary> + public bool IsDisabled { get; set; } + + /// <summary> + /// 鐢ㄦ埛鏁伴噺 + /// </summary> + public int UserCount { get; set; } } } diff --git a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs index e4270af..a1465c0 100644 --- a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs +++ b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs @@ -1,6 +1,8 @@ 锘縰sing Furion; using Furion.DatabaseAccessor; using Furion.DistributedIDGenerator; +using Furion.FriendlyException; +using Mapster; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Diagnostics; @@ -12,12 +14,74 @@ using System.Linq; using System.Linq.Expressions; using System.Text; +using System.Threading; using System.Threading.Tasks; namespace FlexJobApi.Core { + /// <summary> + /// 鏁版嵁搴撳伐鍏� + /// </summary> public static class DbUtils { + /// <summary> + /// 鍒犻櫎鏁版嵁 + /// </summary> + /// <typeparam name="TEntity"></typeparam> + /// <param name="request"></param> + /// <param name="query"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public static async Task<int> DeleteData<TEntity>(this DeleteDataCommand request, Func<IQueryable<TEntity>, IQueryable<TEntity>> query = null, CancellationToken cancellationToken = default) + where TEntity : CommonEntity, new() + { + var rep = Db.GetRepository<TEntity>(); + var q = rep.AsQueryable(); + if (query != null) q = query(q); + var entities = await q + .Where(it => request.Ids.Contains(it.Id)) + .ToListAsync(cancellationToken); + return entities.Any() + ? await rep.DeleteNowAsync(entities, cancellationToken) + : 0; + } + + /// <summary> + /// 淇濆瓨鏁版嵁 + /// </summary> + /// <typeparam name="TEntity"></typeparam> + /// <typeparam name="TRequest"></typeparam> + /// <param name="rep"></param> + /// <param name="request"></param> + /// <param name="checkExist"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public static async Task<Guid> SaveData<TEntity, TRequest>(this TRequest request, Func<TEntity, TRequest, bool> checkExist = null, CancellationToken cancellationToken = default) + where TEntity : CommonEntity, new() + where TRequest : SaveDataCommand, new() + { + var xmlDoc = await XmlDocUtils.GetXmlDocAsync(); + var summary = await typeof(TEntity).GetSummary(xmlDoc); + var rep = Db.GetRepository<TEntity>(); + if (request.Id.HasValue) + { + var entity = await rep.AsQueryable().FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken); + if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, $"璇summary ?? "淇℃伅"}"); + if (checkExist != null && checkExist(entity, request)) throw Oops.Oh(EnumErrorCodeType.s405, $"璇summary ?? "淇℃伅"}"); + request.Adapt(entity); + await rep.UpdateAsync(entity); + return entity.Id; + } + else + { + var entity = new TEntity(); + if (checkExist != null && checkExist(entity, request)) throw Oops.Oh(EnumErrorCodeType.s405, $"璇summary ?? "淇℃伅"}"); + request.Adapt(entity); + await rep.InsertAsync(entity); + return entity.Id; + } + } + /// <summary> /// 鐢熸垚瀹炰綋 /// </summary> @@ -72,6 +136,11 @@ Console.WriteLine("鏁版嵁搴撻摼鎺ュ湴鍧�锛�" + App.Configuration.GetConnectionString("FlexJobApi")); } + /// <summary> + /// 鏁版嵁鍙樻洿浜嬩欢 + /// </summary> + /// <param name="eventData"></param> + /// <param name="result"></param> public static void SavingChangesEvent(DbContextEventData eventData, InterceptionResult<int> result) { // 鑾峰彇褰撳墠浜嬩欢瀵瑰簲涓婁笅鏂� diff --git a/FlexJobApi.Core/Utils/DeleteUtils/DeleteCommand.cs b/FlexJobApi.Core/Utils/DbUtils/DeleteDataCommand.cs similarity index 81% rename from FlexJobApi.Core/Utils/DeleteUtils/DeleteCommand.cs rename to FlexJobApi.Core/Utils/DbUtils/DeleteDataCommand.cs index 2b9edb9..a5e8a26 100644 --- a/FlexJobApi.Core/Utils/DeleteUtils/DeleteCommand.cs +++ b/FlexJobApi.Core/Utils/DbUtils/DeleteDataCommand.cs @@ -10,9 +10,9 @@ /// <summary> /// 鍒犻櫎鍛戒护 /// </summary> - public abstract class DeleteCommand + public abstract class DeleteDataCommand { - protected DeleteCommand() + protected DeleteDataCommand() { Ids = []; } diff --git a/FlexJobApi.Core/Utils/DbUtils/SaveDataCommand.cs b/FlexJobApi.Core/Utils/DbUtils/SaveDataCommand.cs new file mode 100644 index 0000000..2dbcbc8 --- /dev/null +++ b/FlexJobApi.Core/Utils/DbUtils/SaveDataCommand.cs @@ -0,0 +1,16 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 淇濆瓨鏁版嵁鍛戒护 + /// </summary> + public abstract class SaveDataCommand + { + public Guid? Id { get; set; } + } +} diff --git a/FlexJobApi.Core/Utils/PagedListUtils/PagedListUtils.cs b/FlexJobApi.Core/Utils/PagedListUtils/PagedListUtils.cs index 0d57bd7..402f2aa 100644 --- a/FlexJobApi.Core/Utils/PagedListUtils/PagedListUtils.cs +++ b/FlexJobApi.Core/Utils/PagedListUtils/PagedListUtils.cs @@ -1,5 +1,4 @@ -锘縰sing FlexJobApi.User.Application; -using Furion.DatabaseAccessor; +锘縰sing Furion.DatabaseAccessor; using Furion.FriendlyException; using Mapster; using System; diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs index 5f02b3f..79e9361 100644 --- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs +++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs @@ -1,5 +1,4 @@ -锘縰sing FlexJobApi.User.Application; -using Furion; +锘縰sing Furion; using Furion.DatabaseAccessor; using Furion.DistributedIDGenerator; using Furion.DynamicApiController; diff --git a/FlexJobApi.Core/Utils/XmlDocUtils/XmlDocUtils.cs b/FlexJobApi.Core/Utils/XmlDocUtils/XmlDocUtils.cs index ea7cf5f..146d576 100644 --- a/FlexJobApi.Core/Utils/XmlDocUtils/XmlDocUtils.cs +++ b/FlexJobApi.Core/Utils/XmlDocUtils/XmlDocUtils.cs @@ -129,6 +129,12 @@ return null; } + public static async Task<string> GetSummary(this MemberInfo memberInfo, XmlDoc xmlDoc = null) + { + var memberXmlDoc = await memberInfo.GetXmlDocMemberAsync(xmlDoc); + return memberXmlDoc?.Summary; + } + private static string GetXmlDocMemberName(MemberInfo memberInfo) { if (memberInfo != null) diff --git a/FlexJobApi.Database.Migrations/Migrations/20250805095847_UpdateRole0805002.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250805095847_UpdateRole0805002.Designer.cs new file mode 100644 index 0000000..9f574fe --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250805095847_UpdateRole0805002.Designer.cs @@ -0,0 +1,2196 @@ +锘�// <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("20250805095847_UpdateRole0805002")] + partial class UpdateRole0805002 + { + /// <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<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.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<string>("ContactNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)") + .HasComment("鑱旂郴鐢佃瘽"); + + b.Property<string>("Contacts") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)") + .HasComment("鑱旂郴浜�"); + + 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<bool>("IsDisabled") + .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/20250805095847_UpdateRole0805002.cs b/FlexJobApi.Database.Migrations/Migrations/20250805095847_UpdateRole0805002.cs new file mode 100644 index 0000000..24569c6 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250805095847_UpdateRole0805002.cs @@ -0,0 +1,65 @@ +锘縰sing Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace FlexJobApi.Database.Migrations.Migrations +{ + /// <inheritdoc /> + public partial class UpdateRole0805002 : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn<bool>( + name: "IsDisabled", + table: "Role", + type: "bit", + nullable: false, + defaultValue: false, + comment: "鏄惁绂佺敤"); + + migrationBuilder.AddColumn<string>( + name: "ContactNumber", + table: "Enterprise", + type: "nvarchar(11)", + maxLength: 11, + nullable: true, + comment: "鑱旂郴鐢佃瘽"); + + migrationBuilder.AddColumn<string>( + name: "Contacts", + table: "Enterprise", + type: "nvarchar(32)", + maxLength: 32, + nullable: true, + comment: "鑱旂郴浜�"); + + migrationBuilder.AddColumn<string>( + name: "Remark", + table: "DictionaryCategory", + type: "nvarchar(max)", + nullable: true, + comment: "澶囨敞"); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "IsDisabled", + table: "Role"); + + migrationBuilder.DropColumn( + name: "ContactNumber", + table: "Enterprise"); + + migrationBuilder.DropColumn( + name: "Contacts", + table: "Enterprise"); + + migrationBuilder.DropColumn( + name: "Remark", + table: "DictionaryCategory"); + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs index 45ae60d..e20265a 100644 --- a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs +++ b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs @@ -124,6 +124,10 @@ .HasColumnType("nvarchar(128)") .HasComment("鍚嶇О"); + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)") + .HasComment("澶囨敞"); + b.Property<int>("Sort") .HasColumnType("int") .HasComment("鎺掑簭"); @@ -247,6 +251,16 @@ b.Property<Guid?>("BankCardImgId") .HasColumnType("uniqueidentifier") .HasComment("娉曚汉鎴栫粡鍔炰汉閾惰鍗$収鐗嘔d"); + + b.Property<string>("ContactNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)") + .HasComment("鑱旂郴鐢佃瘽"); + + b.Property<string>("Contacts") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)") + .HasComment("鑱旂郴浜�"); b.Property<DateTimeOffset>("CreatedTime") .HasColumnType("datetimeoffset"); @@ -729,6 +743,10 @@ .HasColumnType("bit") .HasComment("鏄惁鍒犻櫎"); + b.Property<bool>("IsDisabled") + .HasColumnType("bit") + .HasComment("鏄惁绂佺敤"); + b.Property<int>("MinLevel") .HasColumnType("int") .HasComment("鏈�浣庣骇鍒�"); diff --git a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml index 50f4733..4d13375 100644 --- a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml +++ b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml @@ -266,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.SetRoleIsDisabledCommandHandler"> + <summary> + 璁剧疆瑙掕壊鏄惁绂佺敤 + </summary> + </member> + <member name="M:FlexJobApi.User.Application.SetRoleIsDisabledCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Role})"> + <summary> + 璁剧疆瑙掕壊鏄惁绂佺敤 + </summary> + </member> + <member name="M:FlexJobApi.User.Application.SetRoleIsDisabledCommandHandler.Handle(FlexJobApi.Core.SetRoleIsDisabledCommand,System.Threading.CancellationToken)"> + <inheritdoc/> + </member> <member name="T:FlexJobApi.User.Application.SetRoleUserInfosCommandHandler"> <summary> 璁剧疆瑙掕壊鐢ㄦ埛 diff --git a/FlexJobApi.User.Application/Roles/Commands/SetRoleIsDisabledCommandHandler.cs b/FlexJobApi.User.Application/Roles/Commands/SetRoleIsDisabledCommandHandler.cs new file mode 100644 index 0000000..eb437e5 --- /dev/null +++ b/FlexJobApi.User.Application/Roles/Commands/SetRoleIsDisabledCommandHandler.cs @@ -0,0 +1,36 @@ +锘縰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> + [Resource([EnumResourceController.Role])] + public class SetRoleIsDisabledCommandHandler( + IRepository<Role> rep + ) : IRequestHandler<SetRoleIsDisabledCommand, int> + { + private readonly IRepository<Role> rep = rep; + + /// <inheritdoc/> + public async Task<int> Handle(SetRoleIsDisabledCommand request, CancellationToken cancellationToken) + { + var entities = await rep.AsQueryable() + .Where(it => request.Ids.Contains(it.Id) && it.IsDisabled != request.IsDisabled) + .ToListAsync(); + foreach (var entity in entities) + { + entity.IsDisabled = request.IsDisabled; + } + return entities.Count; + } + } +} -- Gitblit v1.9.1