From 3bd0644b62742cbabbb465f0fb4652807d2e2256 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 12 八月 2025 13:31:51 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs | 60 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs | 41 FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs | 56 FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.csproj | 4 FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml | 26 FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/ApplyTaskCommandHandler.cs | 116 + FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs | 77 + FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs | 9 FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseEmployee.cs | 118 + FlexJobApi.Database.Migrations/Migrations/20250812053139_UpdateUser0812002.Designer.cs | 2307 ++++++++++++++++++++++++++++++++++++ FlexJobApi.Database.Migrations/Migrations/20250812053139_UpdateUser0812002.cs | 222 +++ FlexJobApi.Core/FlexJobApi.Core.xml | 385 +++-- FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeesQuery.cs | 147 ++ FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml | 18 FlexJobApi.Database.Migrations/REDEME.MD | 2 FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs | 10 FlexJobApi.Core/Enums/Common/EnumResourceController.cs | 7 FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs | 6 FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfosQuery.cs | 15 FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs | 153 + FlexJobApi.Core/FlexJobApi.Core.csproj | 1 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs | 51 22 files changed, 3,467 insertions(+), 364 deletions(-) diff --git a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs index 2599559..862134a 100644 --- a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs +++ b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs @@ -1,4 +1,7 @@ -锘縰sing System; +锘縰sing Furion.DatabaseAccessor; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -9,7 +12,7 @@ /// <summary> /// 浠诲姟闆囦剑淇℃伅 /// </summary> - public class TaskInfoUser : CommonEntity + public class TaskInfoUser : CommonEntity, IEntityTypeBuilder<TaskInfoUser> { /// <summary> /// 浠诲姟Id @@ -22,49 +25,14 @@ public TaskInfo TaskInfo { get; set; } /// <summary> - /// 鐢ㄦ埛淇℃伅Id + /// 鐏靛伐Id /// </summary> - public Guid UserId { get; set; } + public Guid EnterpriseEmployeeId { get; set; } /// <summary> - /// 鐢ㄦ埛淇℃伅 + /// 鐏靛伐 /// </summary> - public User User { get; set; } - - /// <summary> - /// 褰曠敤鐘舵�� - /// </summary> - public EnumTaskUserHireStatus HireStatus { get; set; } - - /// <summary> - /// 褰曠敤鏃堕棿 - /// </summary> - public DateTime? HireTime { get; set; } - - /// <summary> - /// 鐏靛伐绛剧害鐘舵�� - /// </summary> - public EnumTaskUserSignContractStatus? UserSignContractStatus { get; set; } - - /// <summary> - /// 鐏靛伐绛剧害鏃堕棿 - /// </summary> - public DateTime? UserSignContractTime { get; set; } - - /// <summary> - /// 浼佷笟绛剧害鐘舵�� - /// </summary> - public EnumTaskUserSignContractStatus? EnterpriseSignContractStatus { get; set; } - - /// <summary> - /// 浼佷笟绛剧害鏃堕棿 - /// </summary> - public DateTime? EnterpriseSignContractTime { get; set; } - - /// <summary> - /// 鐢靛瓙鍚堝悓 - /// </summary> - public string ContractUrl { get; set; } + public EnterpriseEmployee EnterpriseEmployee { get; set; } /// <summary> /// 瀹夋帓鐘舵�� @@ -75,5 +43,15 @@ /// 瀹夋帓鐘舵�� /// </summary> public DateTime? ArrangeTime { get; set; } + + public void Configure(EntityTypeBuilder<TaskInfoUser> entityBuilder, DbContext dbContext, Type dbContextLocator) + { + entityBuilder + .HasOne(it => it.EnterpriseEmployee) + .WithMany(it => it.TaskInfoUsers) + .HasForeignKey(it => it.EnterpriseEmployeeId) + .IsRequired() + .OnDelete(DeleteBehavior.Restrict); + } } } diff --git a/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseEmployee.cs b/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseEmployee.cs new file mode 100644 index 0000000..5103c0d --- /dev/null +++ b/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseEmployee.cs @@ -0,0 +1,118 @@ +锘縰sing System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鐏靛伐 + /// </summary> + public class EnterpriseEmployee : CommonEntity + { + public EnterpriseEmployee() + { + TaskInfoUsers = []; + } + + /// <summary> + /// 浼佷笟Id + /// </summary> + public Guid EnterpriseId { get; set; } + + /// <summary> + /// 浼佷笟 + /// </summary> + public Enterprise Enterprise { get; set; } + + /// <summary> + /// 鐢ㄦ埛淇℃伅Id + /// </summary> + public Guid? UserId { get; set; } + + /// <summary> + /// 鐢ㄦ埛淇℃伅 + /// </summary> + public User User { get; set; } + + /// <summary> + /// 濮撳悕 + /// </summary> + [MaxLength(32)] + public string Name { get; set; } + + /// <summary> + /// 韬唤璇佸彿 + /// </summary> + public string Identity { get; set; } + + /// <summary> + /// 鎵嬫満鍙� + /// </summary> + /// <remarks>鐧诲綍鎵嬫満鍙�</remarks> + [MaxLength(11)] + public string PhoneNumber { get; set; } + + /// <summary> + /// 鎬у埆 + /// </summary> + public EnumUserGender? Gender { get; set; } + + /// <summary> + /// 骞撮緞 + /// </summary> + public int? Age { get; set; } + + /// <summary> + /// 韬唤璇佷汉鍍忛潰 + /// </summary> + public string IdentityImg { get; set; } + + /// <summary> + /// 韬唤璇佸浗寰介潰 + /// </summary> + public string IdentityBackImg { get; set; } + + /// <summary> + /// 褰曠敤鐘舵�� + /// </summary> + public EnumTaskUserHireStatus HireStatus { get; set; } + + /// <summary> + /// 褰曠敤鏃堕棿 + /// </summary> + public DateTime? HireTime { get; set; } + + /// <summary> + /// 鐏靛伐绛剧害鐘舵�� + /// </summary> + public EnumTaskUserSignContractStatus? UserSignContractStatus { get; set; } + + /// <summary> + /// 鐏靛伐绛剧害鏃堕棿 + /// </summary> + public DateTime? UserSignContractTime { get; set; } + + /// <summary> + /// 浼佷笟绛剧害鐘舵�� + /// </summary> + public EnumTaskUserSignContractStatus? EnterpriseSignContractStatus { get; set; } + + /// <summary> + /// 浼佷笟绛剧害鏃堕棿 + /// </summary> + public DateTime? EnterpriseSignContractTime { get; set; } + + /// <summary> + /// 鐢靛瓙鍚堝悓 + /// </summary> + public string ContractUrl { get; set; } + + /// <summary> + /// 浠诲姟闆囦剑淇℃伅 + /// </summary> + public List<TaskInfoUser> TaskInfoUsers { get; set; } + } +} diff --git a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs index ca3f486..d75c707 100644 --- a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs +++ b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs @@ -61,6 +61,11 @@ /// 浼佷笟淇℃伅 /// </summary> [ResourceController(Service = EnumResourceService.UserServer)] - Enterprise + Enterprise, + /// <summary> + /// 鐏靛伐淇℃伅 + /// </summary> + [ResourceController(Service = EnumResourceService.UserServer)] + EnterpriseEmployee } } diff --git a/FlexJobApi.Core/FlexJobApi.Core.csproj b/FlexJobApi.Core/FlexJobApi.Core.csproj index 7b5646b..4ef29dc 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.csproj +++ b/FlexJobApi.Core/FlexJobApi.Core.csproj @@ -38,6 +38,7 @@ <ItemGroup> <Folder Include="Models\CommonServer\Schedules\Queries\" /> <Folder Include="Models\FlexJobServer\TaskUsers\Queries\" /> + <Folder Include="Models\FlexJobServer\TaskUsers\Repositories\" /> </ItemGroup> </Project> diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index 80abc8a..48bc88f 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -919,49 +919,14 @@ 浠诲姟 </summary> </member> - <member name="P:FlexJobApi.Core.TaskInfoUser.UserId"> + <member name="P:FlexJobApi.Core.TaskInfoUser.EnterpriseEmployeeId"> <summary> - 鐢ㄦ埛淇℃伅Id + 鐏靛伐Id </summary> </member> - <member name="P:FlexJobApi.Core.TaskInfoUser.User"> + <member name="P:FlexJobApi.Core.TaskInfoUser.EnterpriseEmployee"> <summary> - 鐢ㄦ埛淇℃伅 - </summary> - </member> - <member name="P:FlexJobApi.Core.TaskInfoUser.HireStatus"> - <summary> - 褰曠敤鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.TaskInfoUser.HireTime"> - <summary> - 褰曠敤鏃堕棿 - </summary> - </member> - <member name="P:FlexJobApi.Core.TaskInfoUser.UserSignContractStatus"> - <summary> - 鐏靛伐绛剧害鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.TaskInfoUser.UserSignContractTime"> - <summary> - 鐏靛伐绛剧害鏃堕棿 - </summary> - </member> - <member name="P:FlexJobApi.Core.TaskInfoUser.EnterpriseSignContractStatus"> - <summary> - 浼佷笟绛剧害鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.TaskInfoUser.EnterpriseSignContractTime"> - <summary> - 浼佷笟绛剧害鏃堕棿 - </summary> - </member> - <member name="P:FlexJobApi.Core.TaskInfoUser.ContractUrl"> - <summary> - 鐢靛瓙鍚堝悓 + 鐏靛伐 </summary> </member> <member name="P:FlexJobApi.Core.TaskInfoUser.ArrangeStatus"> @@ -1342,6 +1307,107 @@ <member name="P:FlexJobApi.Core.EnterpriseAuth.ProxyPowerAttorneyUrl"> <summary> 浼佷笟鎺堟潈涔� + </summary> + </member> + <member name="T:FlexJobApi.Core.EnterpriseEmployee"> + <summary> + 鐏靛伐 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.EnterpriseId"> + <summary> + 浼佷笟Id + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.Enterprise"> + <summary> + 浼佷笟 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.UserId"> + <summary> + 鐢ㄦ埛淇℃伅Id + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.User"> + <summary> + 鐢ㄦ埛淇℃伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.Name"> + <summary> + 濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.Identity"> + <summary> + 韬唤璇佸彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.PhoneNumber"> + <summary> + 鎵嬫満鍙� + </summary> + <remarks>鐧诲綍鎵嬫満鍙�</remarks> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.Gender"> + <summary> + 鎬у埆 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.Age"> + <summary> + 骞撮緞 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.IdentityImg"> + <summary> + 韬唤璇佷汉鍍忛潰 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.IdentityBackImg"> + <summary> + 韬唤璇佸浗寰介潰 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.HireStatus"> + <summary> + 褰曠敤鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.HireTime"> + <summary> + 褰曠敤鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.UserSignContractStatus"> + <summary> + 鐏靛伐绛剧害鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.UserSignContractTime"> + <summary> + 鐏靛伐绛剧害鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.EnterpriseSignContractStatus"> + <summary> + 浼佷笟绛剧害鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.EnterpriseSignContractTime"> + <summary> + 浼佷笟绛剧害鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.ContractUrl"> + <summary> + 鐢靛瓙鍚堝悓 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseEmployee.TaskInfoUsers"> + <summary> + 浠诲姟闆囦剑淇℃伅 </summary> </member> <member name="T:FlexJobApi.Core.Menu"> @@ -2254,6 +2320,11 @@ <member name="F:FlexJobApi.Core.EnumResourceController.Enterprise"> <summary> 浼佷笟淇℃伅 + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumResourceController.EnterpriseEmployee"> + <summary> + 鐏靛伐淇℃伅 </summary> </member> <member name="T:FlexJobApi.Core.EnumResourceMethod"> @@ -4376,6 +4447,137 @@ 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛鑿滃崟 </summary> </member> + <member name="T:FlexJobApi.Core.GetEnterpriseEmployeesQuery"> + <summary> + 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQuery.Keywords"> + <summary> + 鍏抽敭瀛楋紙濮撳悕/鎵嬫満/韬唤璇佸彿锛� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQuery.CreatedTimeStart"> + <summary> + 鐧昏鏃堕棿-鏈�鏃╂椂闂� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQuery.CreatedTimeEnd"> + <summary> + 鐧昏鏃堕棿-鏈�鏅氭椂闂� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQuery.SignContractTimeStart"> + <summary> + 绛剧害鏃堕棿-鏈�鏃╂椂闂� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQuery.SignContractTimeEnd"> + <summary> + 绛剧害鏃堕棿-鏈�鏅氭椂闂� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQuery.HireStatus"> + <summary> + 褰曠敤鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQuery.IsReal"> + <summary> + 鏄惁瀹炲悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQuery.UserSignContractStatus"> + <summary> + 鐏靛伐绛剧害鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQuery.EnterpriseSignContractStatus"> + <summary> + 浼佷笟绛剧害鐘舵�� + </summary> + </member> + <member name="T:FlexJobApi.Core.GetEnterpriseEmployeesQueryResult"> + <summary> + 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁-缁撴灉 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem"> + <summary> + 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁-缁撴灉-椤� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.Id"> + <summary> + 鐏靛伐Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.Name"> + <summary> + 濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.Identity"> + <summary> + 韬唤璇佸彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.Gender"> + <summary> + 鎬у埆 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.Age"> + <summary> + 骞撮緞 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.PhoneNumber"> + <summary> + 鎵嬫満鍙� + </summary> + <remarks>鐧诲綍鎵嬫満鍙�</remarks> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.HireStatus"> + <summary> + 褰曠敤鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.UserIsReal"> + <summary> + 瀹炲悕鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.UserSignContractStatus"> + <summary> + 鐏靛伐绛剧害鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.HireTime"> + <summary> + 褰曠敤鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.UserRealTime"> + <summary> + 瀹炲悕鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.UserSignContractTime"> + <summary> + 绛剧害鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.EnterpriseSignContractStatus"> + <summary> + 浼佷笟绛剧害鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.EnterpriseSignContractTime"> + <summary> + 浼佷笟绛剧害鏃堕棿 + </summary> + </member> <member name="T:FlexJobApi.Core.SaveEnterpriseCommand"> <summary> 淇濆瓨浼佷笟 @@ -5817,11 +6019,6 @@ </summary> <remarks>鑱旂郴鐢佃瘽</remarks> </member> - <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.Identity"> - <summary> - 韬唤璇佸彿 - </summary> - </member> <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.PersonalIdentityCode"> <summary> 韬唤缂栧彿 @@ -6048,11 +6245,6 @@ </summary> <remarks>鑱旂郴鐢佃瘽</remarks> </member> - <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.Identity"> - <summary> - 韬唤璇佸彿 - </summary> - </member> <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.PersonalIdentityCode"> <summary> 韬唤缂栧彿 @@ -6252,56 +6444,6 @@ <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.TaskInfoUsers"> <summary> 缁忓巻 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.CreatedTime"> - <summary> - 鎶ュ悕鏃堕棿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.HireStatus"> - <summary> - 褰曠敤鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.HireTime"> - <summary> - 褰曠敤鏃堕棿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ArrangeStatus"> - <summary> - 瀹夋帓鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ArrangeTime"> - <summary> - 瀹夋帓鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserSignContractStatus"> - <summary> - 鐏靛伐绛剧害鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserSignContractTime"> - <summary> - 鐏靛伐绛剧害鏃堕棿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EnterpriseSignContractStatus"> - <summary> - 浼佷笟绛剧害鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EnterpriseSignContractTime"> - <summary> - 浼佷笟绛剧害鏃堕棿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ContractUrl"> - <summary> - 鐢靛瓙鍚堝悓 </summary> </member> <member name="T:FlexJobApi.Core.GetUserResumeQueryResultExpectJob"> @@ -6565,46 +6707,6 @@ 宸ヤ綔缁忛獙 </summary> </member> - <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.HireStatus"> - <summary> - 褰曠敤鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.HireTime"> - <summary> - 褰曠敤鏃堕棿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.ArrangeStatus"> - <summary> - 瀹夋帓鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.ArrangeTime"> - <summary> - 瀹夋帓鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.UserSignContractStatus"> - <summary> - 鐏靛伐绛剧害鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.UserSignContractTime"> - <summary> - 鐏靛伐绛剧害鏃堕棿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.EnterpriseSignContractStatus"> - <summary> - 浼佷笟绛剧害鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.EnterpriseSignContractTime"> - <summary> - 浼佷笟绛剧害鏃堕棿 - </summary> - </member> <member name="T:FlexJobApi.Core.GetUserResumeWorkExperienceQuery"> <summary> 鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙 @@ -6770,6 +6872,11 @@ 宸插彇娑� </summary> </member> + <member name="T:FlexJobApi.Core.GetPersonalUserInfosQuery"> + <summary> + 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁 + </summary> + </member> <member name="T:FlexJobApi.Core.GetUserInfoRolesQuery"> <summary> 鏌ヨ鐢ㄦ埛瑙掕壊鍒楄〃 diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeesQuery.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeesQuery.cs new file mode 100644 index 0000000..b719bc1 --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeesQuery.cs @@ -0,0 +1,147 @@ +锘縰sing System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁 + /// </summary> + [Resource([EnumResourceController.EnterpriseEmployee])] + public class GetEnterpriseEmployeesQuery : PagedListQuery<GetEnterpriseEmployeesQueryResult, GetEnterpriseEmployeesQueryResultItem> + { + /// <summary> + /// 鍏抽敭瀛楋紙濮撳悕/鎵嬫満/韬唤璇佸彿锛� + /// </summary> + public string Keywords { get; set; } + + /// <summary> + /// 鐧昏鏃堕棿-鏈�鏃╂椂闂� + /// </summary> + public DateTimeOffset? CreatedTimeStart { get; set; } + + /// <summary> + /// 鐧昏鏃堕棿-鏈�鏅氭椂闂� + /// </summary> + public DateTimeOffset? CreatedTimeEnd { get; set; } + + /// <summary> + /// 绛剧害鏃堕棿-鏈�鏃╂椂闂� + /// </summary> + public DateTime? SignContractTimeStart { get; set; } + + /// <summary> + /// 绛剧害鏃堕棿-鏈�鏅氭椂闂� + /// </summary> + public DateTime? SignContractTimeEnd { get; set; } + + /// <summary> + /// 褰曠敤鐘舵�� + /// </summary> + public EnumTaskUserHireStatus? HireStatus { get; set; } + + /// <summary> + /// 鏄惁瀹炲悕 + /// </summary> + public bool? IsReal { get; set; } + + /// <summary> + /// 鐏靛伐绛剧害鐘舵�� + /// </summary> + public EnumTaskUserSignContractStatus? UserSignContractStatus { get; set; } + + /// <summary> + /// 浼佷笟绛剧害鐘舵�� + /// </summary> + public EnumTaskUserSignContractStatus? EnterpriseSignContractStatus { get; set; } + } + + /// <summary> + /// 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁-缁撴灉 + /// </summary> + public class GetEnterpriseEmployeesQueryResult : PagedListQueryResult<GetEnterpriseEmployeesQueryResultItem> + { + + } + + /// <summary> + /// 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁-缁撴灉-椤� + /// </summary> + public class GetEnterpriseEmployeesQueryResultItem + { + /// <summary> + /// 鐏靛伐Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 濮撳悕 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 韬唤璇佸彿 + /// </summary> + public string Identity { get; set; } + + /// <summary> + /// 鎬у埆 + /// </summary> + public EnumUserGender? Gender { get; set; } + + /// <summary> + /// 骞撮緞 + /// </summary> + public int? Age { get; set; } + + /// <summary> + /// 鎵嬫満鍙� + /// </summary> + /// <remarks>鐧诲綍鎵嬫満鍙�</remarks> + public string PhoneNumber { get; set; } + + /// <summary> + /// 褰曠敤鐘舵�� + /// </summary> + public EnumTaskUserHireStatus HireStatus { get; set; } + + /// <summary> + /// 瀹炲悕鐘舵�� + /// </summary> + public bool? UserIsReal { get; set; } + + /// <summary> + /// 鐏靛伐绛剧害鐘舵�� + /// </summary> + public EnumTaskUserSignContractStatus? UserSignContractStatus { get; set; } + + /// <summary> + /// 褰曠敤鏃堕棿 + /// </summary> + public DateTime? HireTime { get; set; } + + /// <summary> + /// 瀹炲悕鏃堕棿 + /// </summary> + public DateTime? UserRealTime { get; set; } + + /// <summary> + /// 绛剧害鏃堕棿 + /// </summary> + public DateTime? UserSignContractTime { get; set; } + + /// <summary> + /// 浼佷笟绛剧害鐘舵�� + /// </summary> + public EnumTaskUserSignContractStatus? EnterpriseSignContractStatus { get; set; } + + /// <summary> + /// 浼佷笟绛剧害鏃堕棿 + /// </summary> + public DateTime? EnterpriseSignContractTime { get; set; } + + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs index e74306a..a52e72e 100644 --- a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs @@ -185,57 +185,6 @@ /// 缁忓巻 /// </summary> public List<GetUserResumeQueryResultExperience> TaskInfoUsers { get; set; } - - /// <summary> - /// 鎶ュ悕鏃堕棿 - /// </summary> - public DateTimeOffset? CreatedTime { get; set; } - - /// <summary> - /// 褰曠敤鐘舵�� - /// </summary> - public EnumTaskUserHireStatus? HireStatus { get; set; } - - /// <summary> - /// 褰曠敤鏃堕棿 - /// </summary> - public DateTime? HireTime { get; set; } - - /// <summary> - /// 瀹夋帓鐘舵�� - /// </summary> - public EnumTaskUserArrangeStatus? ArrangeStatus { get; set; } - - /// <summary> - /// 瀹夋帓鐘舵�� - /// </summary> - public DateTime? ArrangeTime { get; set; } - - /// <summary> - /// 鐏靛伐绛剧害鐘舵�� - /// </summary> - public EnumTaskUserSignContractStatus? UserSignContractStatus { get; set; } - - /// <summary> - /// 鐏靛伐绛剧害鏃堕棿 - /// </summary> - public DateTime? UserSignContractTime { get; set; } - - /// <summary> - /// 浼佷笟绛剧害鐘舵�� - /// </summary> - public EnumTaskUserSignContractStatus? EnterpriseSignContractStatus { get; set; } - - /// <summary> - /// 浼佷笟绛剧害鏃堕棿 - /// </summary> - public DateTime? EnterpriseSignContractTime { get; set; } - - /// <summary> - /// 鐢靛瓙鍚堝悓 - /// </summary> - public string ContractUrl { get; set; } - } /// <summary> diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs index d75ff77..c0c7c58 100644 --- a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs @@ -150,46 +150,5 @@ /// 宸ヤ綔缁忛獙 /// </summary> public string WorkExperience { get; set; } - - /// <summary> - /// 褰曠敤鐘舵�� - /// </summary> - public EnumTaskUserHireStatus? HireStatus { get; set; } - - /// <summary> - /// 褰曠敤鏃堕棿 - /// </summary> - public DateTime? HireTime { get; set; } - - /// <summary> - /// 瀹夋帓鐘舵�� - /// </summary> - public EnumTaskUserArrangeStatus? ArrangeStatus { get; set; } - - /// <summary> - /// 瀹夋帓鐘舵�� - /// </summary> - public DateTime? ArrangeTime { get; set; } - - /// <summary> - /// 鐏靛伐绛剧害鐘舵�� - /// </summary> - public EnumTaskUserSignContractStatus? UserSignContractStatus { get; set; } - - /// <summary> - /// 鐏靛伐绛剧害鏃堕棿 - /// </summary> - public DateTime? UserSignContractTime { get; set; } - - /// <summary> - /// 浼佷笟绛剧害鐘舵�� - /// </summary> - public EnumTaskUserSignContractStatus? EnterpriseSignContractStatus { get; set; } - - /// <summary> - /// 浼佷笟绛剧害鏃堕棿 - /// </summary> - public DateTime? EnterpriseSignContractTime { get; set; } - } } diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfosQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfosQuery.cs new file mode 100644 index 0000000..96e2dd7 --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalUserInfosQuery.cs @@ -0,0 +1,15 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁 + /// </summary> + public class GetPersonalUserInfosQuery:PagedList + { + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/20250812053139_UpdateUser0812002.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250812053139_UpdateUser0812002.Designer.cs new file mode 100644 index 0000000..ecaae9a --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250812053139_UpdateUser0812002.Designer.cs @@ -0,0 +1,2307 @@ +锘�// <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("20250812053139_UpdateUser0812002")] + partial class UpdateUser0812002 + { + /// <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<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("EnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsDisabled") + .HasColumnType("bit"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Path") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("ParentId"); + + b.ToTable("Department"); + }); + + modelBuilder.Entity("FlexJobApi.Core.DictionaryCategory", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Code") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("FieldNames") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("DictionaryCategory"); + }); + + modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("CategoryId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Code") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("Content") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Deep") + .HasColumnType("int"); + + b.Property<string>("Field1") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Field2") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Field3") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Field4") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Field5") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsDisabled") + .HasColumnType("bit"); + + b.Property<Guid?>("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Path") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CategoryId"); + + b.HasIndex("Code") + .IsUnique(); + + b.HasIndex("ParentId"); + + b.ToTable("DictionaryData"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Enterprise", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BankBranchName") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("BankCard") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("BankName") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("CityCode") + .HasColumnType("nvarchar(128)"); + + b.Property<string>("ContactEmail") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ContactPhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<string>("Contacts") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("EnterpriseName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("IndustryTypeCode") + .HasColumnType("nvarchar(128)"); + + b.Property<bool>("IsCheckedBankCard") + .HasColumnType("bit"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsReal") + .HasColumnType("bit"); + + b.Property<string>("LegalIdentity") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<string>("LegalPerson") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("LicenseImage") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("MainBusiness") + .HasColumnType("nvarchar(max)"); + + b.Property<decimal?>("MergeSignCost") + .HasColumnType("decimal(18,2)"); + + b.Property<int?>("PayAccess") + .HasColumnType("int"); + + b.Property<string>("ProvinceCode") + .HasColumnType("nvarchar(128)"); + + b.Property<int?>("RealAccess") + .HasColumnType("int"); + + b.Property<decimal?>("RealVerifyCost") + .HasColumnType("decimal(18,2)"); + + b.Property<decimal?>("SignCost") + .HasColumnType("decimal(18,2)"); + + b.Property<int?>("SmsAccess") + .HasColumnType("int"); + + b.Property<decimal>("SmsCost") + .HasColumnType("decimal(18,2)"); + + b.Property<string>("SocietyCreditCode") + .IsRequired() + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CityCode"); + + b.HasIndex("IndustryTypeCode"); + + b.HasIndex("ProvinceCode"); + + b.ToTable("Enterprise"); + }); + + modelBuilder.Entity("FlexJobApi.Core.EnterpriseAuth", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BankCard") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("BankCardImg") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("EnterpriseName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<int?>("EnterpriseRealMethod") + .HasColumnType("int"); + + b.Property<string>("Identity") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<string>("IdentityBackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityImg") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("LegalIdentity") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<string>("LegalPerson") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("LicenseImage") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Name") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<int?>("PersonalRealMethod") + .HasColumnType("int"); + + b.Property<string>("PhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<bool?>("Proxy") + .HasColumnType("bit"); + + b.Property<string>("ProxyPowerAttorneyUrl") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("SocietyCreditCode") + .IsRequired() + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("EnterpriseAuth"); + }); + + modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("Age") + .HasColumnType("int"); + + b.Property<string>("ContractUrl") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("EnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("EnterpriseSignContractStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("EnterpriseSignContractTime") + .HasColumnType("datetime2"); + + b.Property<int?>("Gender") + .HasColumnType("int"); + + b.Property<int>("HireStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("HireTime") + .HasColumnType("datetime2"); + + b.Property<string>("Identity") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityBackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityImg") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("Name") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("PhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("UserSignContractStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("UserSignContractTime") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("UserId"); + + b.ToTable("EnterpriseEmployee"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Menu", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int>("ClientType") + .HasColumnType("int"); + + b.Property<string>("Code") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Group") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Icon") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsCache") + .HasColumnType("bit"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsDisabled") + .HasColumnType("bit"); + + b.Property<string>("Location") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<Guid?>("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Path") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Type") + .HasColumnType("int"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Url") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("UserType") + .HasColumnType("int"); + + b.Property<int>("VisitLevel") + .HasColumnType("int"); + + b.Property<string>("Width") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ParentId"); + + b.ToTable("Menu"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Resource", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("ActionName") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ActionSummary") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("AllowAnonymous") + .HasColumnType("bit"); + + b.Property<string>("ApplicationName") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Code") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Controller") + .HasColumnType("int"); + + b.Property<string>("ControllerSummary") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("DynamicAssemblyName") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsExpired") + .HasColumnType("bit"); + + b.Property<int>("Method") + .HasColumnType("int"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("RequestTypeFullName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("RequestTypeName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ResponseTypeFullName") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ResponseTypeName") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Route") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("RouteArea") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Service") + .HasColumnType("int"); + + b.Property<string>("ServiceName") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("Resource"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Role", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int>("ClientType") + .HasColumnType("int"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("DataPower") + .HasColumnType("int"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsDisabled") + .HasColumnType("bit"); + + b.Property<int>("MinLevel") + .HasColumnType("int"); + + b.Property<string>("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("UserType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Role"); + }); + + modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<Guid>("MenuId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("MenuId"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleMenu"); + }); + + modelBuilder.Entity("FlexJobApi.Core.RoleResource", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("DataPower") + .HasColumnType("int"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<Guid>("ResourceId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("ResourceId"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleResource"); + }); + + modelBuilder.Entity("FlexJobApi.Core.ScheduleJobDetail", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("AssemblyName") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("Concurrent") + .HasColumnType("bit"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Description") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("GroupName") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IncludeAnnotations") + .HasColumnType("bit"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("JobId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("JobType") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("ScheduleJobDetail"); + }); + + modelBuilder.Entity("FlexJobApi.Core.ScheduleJobTrigger", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Args") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("AssemblyName") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Description") + .HasColumnType("nvarchar(max)"); + + b.Property<long>("ElapsedTime") + .HasColumnType("bigint"); + + b.Property<DateTime?>("EndTime") + .HasColumnType("datetime2"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("JobId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTime?>("LastRunTime") + .HasColumnType("datetime2"); + + b.Property<long>("MaxNumberOfErrors") + .HasColumnType("bigint"); + + b.Property<long>("MaxNumberOfRuns") + .HasColumnType("bigint"); + + b.Property<DateTime?>("NextRunTime") + .HasColumnType("datetime2"); + + b.Property<long>("NumRetries") + .HasColumnType("bigint"); + + b.Property<long>("NumberOfErrors") + .HasColumnType("bigint"); + + b.Property<long>("NumberOfRuns") + .HasColumnType("bigint"); + + b.Property<bool>("ResetOnlyOnce") + .HasColumnType("bit"); + + b.Property<string>("Result") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("RetryTimeout") + .HasColumnType("int"); + + b.Property<bool>("RunOnStart") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<bool>("StartNow") + .HasColumnType("bit"); + + b.Property<DateTime?>("StartTime") + .HasColumnType("datetime2"); + + b.Property<long>("Status") + .HasColumnType("bigint"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TriggerId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TriggerType") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("ScheduleJobTrigger"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("AddressDetail") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("AddressName") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("AgeMaxLimit") + .HasColumnType("int"); + + b.Property<int>("AgeMinLimit") + .HasColumnType("int"); + + b.Property<DateTime>("BeginTime") + .HasColumnType("datetime2"); + + b.Property<int>("BillingMethod") + .HasColumnType("int"); + + b.Property<int?>("CheckReceiveStatus") + .HasColumnType("int"); + + b.Property<string>("CityCode") + .HasColumnType("nvarchar(128)"); + + b.Property<string>("Code") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTime>("EndTime") + .HasColumnType("datetime2"); + + b.Property<Guid>("EnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("GenderLimit") + .HasColumnType("int"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<decimal?>("Latitude") + .HasColumnType("decimal(18,6)"); + + b.Property<decimal?>("Longitude") + .HasColumnType("decimal(18,6)"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ProvinceCode") + .HasColumnType("nvarchar(128)"); + + b.Property<int>("RecommendStatus") + .HasColumnType("int"); + + b.Property<int>("ReleaseStatus") + .HasColumnType("int"); + + b.Property<decimal>("ServiceFee") + .HasColumnType("decimal(18,2)"); + + b.Property<int>("SettlementCycle") + .HasColumnType("int"); + + b.Property<int?>("SettlementStatus") + .HasColumnType("int"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<int>("Status") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CityCode"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("ProvinceCode"); + + b.ToTable("TaskInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BenefitCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("TaskInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("BenefitCode"); + + b.HasIndex("TaskInfoId"); + + b.ToTable("TaskInfoBenefit"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("TaskInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TypeCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("TaskInfoId"); + + b.HasIndex("TypeCode"); + + b.ToTable("TaskInfoCredentialLimit"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("ArrangeStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("ArrangeTime") + .HasColumnType("datetime2"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("EnterpriseEmployeeId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("TaskInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("EnterpriseEmployeeId"); + + b.HasIndex("TaskInfoId"); + + b.HasIndex("UserId"); + + b.ToTable("TaskInfoUser"); + }); + + modelBuilder.Entity("FlexJobApi.Core.User", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("Age") + .HasColumnType("int"); + + b.Property<string>("Avatar") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTime?>("Birthday") + .HasColumnType("datetime2"); + + b.Property<string>("CityCode") + .HasColumnType("nvarchar(128)"); + + b.Property<string>("ContactPhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("EducationalBackgroundCode") + .HasColumnType("nvarchar(128)"); + + b.Property<Guid?>("EnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("FreeTime") + .HasColumnType("int"); + + b.Property<int?>("Gender") + .HasColumnType("int"); + + b.Property<int?>("Height") + .HasColumnType("int"); + + b.Property<string>("Identity") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsCheckPhoneNumber") + .HasColumnType("bit"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsReal") + .HasColumnType("bit"); + + b.Property<int?>("JobSeekingStatus") + .HasColumnType("int"); + + b.Property<int>("Level") + .HasColumnType("int"); + + b.Property<string>("Name") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("Password") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("PersonalIdentityCode") + .HasColumnType("nvarchar(128)"); + + b.Property<string>("PhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<string>("ProvinceCode") + .HasColumnType("nvarchar(128)"); + + b.Property<int?>("RealAccess") + .HasColumnType("int"); + + b.Property<int?>("RealMethod") + .HasColumnType("int"); + + b.Property<DateTime?>("RealTime") + .HasColumnType("datetime2"); + + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<int>("Status") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Type") + .HasColumnType("int"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("UserName") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<int?>("Weight") + .HasColumnType("int"); + + b.Property<string>("WorkExperience") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("WorkSeniority") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("WxmpOpenId") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.HasKey("Id"); + + b.HasIndex("CityCode"); + + b.HasIndex("EducationalBackgroundCode"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("PersonalIdentityCode"); + + b.HasIndex("ProvinceCode"); + + b.ToTable("User"); + + 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, + Level = 999, + Name = "绠$悊鍛�", + Password = "iEYggKrMhQ3ASUGLobra1w==:fn/DsMJUbD9FGpvBvR3moMpMPptdxzZlourPVhU479I=", + Sort = 0, + Status = 10, + Type = 100, + UserName = "system" + }); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserAuth", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BankCard") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("BankCardImg") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Identity") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityBackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityImg") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("Name") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("PhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("UserAuth"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserBankCard", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Bank") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("Code") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("PhoneNumber") + .IsRequired() + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserBankCard"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserCredential", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Code") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTime>("EndDate") + .HasColumnType("datetime2"); + + b.Property<string>("Img") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsForever") + .HasColumnType("bit"); + + b.Property<string>("IssueUnit") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<DateTime>("StartDate") + .HasColumnType("datetime2"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TypeCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("TypeCode"); + + b.HasIndex("UserId"); + + b.ToTable("UserCredential"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserDepartment", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("DepartmentId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("DepartmentId"); + + b.HasIndex("UserId"); + + b.ToTable("UserDepartment"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserExpectJob", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("ExpectJobCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("ExpectJobCode"); + + b.HasIndex("UserId"); + + b.ToTable("UserExpectJob"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserPhoto", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Img") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserPhoto"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserRole", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<Guid>("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.HasIndex("UserId"); + + b.ToTable("UserRole"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserTaskCollect", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("TaskInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("TaskInfoId"); + + b.HasIndex("UserId"); + + b.ToTable("UserTaskCollect"); + }); + + 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.DictionaryData", "City") + .WithMany() + .HasForeignKey("CityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.DictionaryData", "IndustryType") + .WithMany() + .HasForeignKey("IndustryTypeCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.DictionaryData", "Province") + .WithMany() + .HasForeignKey("ProvinceCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("City"); + + b.Navigation("IndustryType"); + + b.Navigation("Province"); + }); + + modelBuilder.Entity("FlexJobApi.Core.EnterpriseAuth", b => + { + b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") + .WithOne("EnterpriseAuth") + .HasForeignKey("FlexJobApi.Core.EnterpriseAuth", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Enterprise"); + }); + + modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b => + { + b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") + .WithMany() + .HasForeignKey("EnterpriseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany() + .HasForeignKey("UserId"); + + b.Navigation("Enterprise"); + + b.Navigation("User"); + }); + + 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("CityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") + .WithMany() + .HasForeignKey("EnterpriseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.DictionaryData", "Province") + .WithMany() + .HasForeignKey("ProvinceCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("City"); + + b.Navigation("Enterprise"); + + b.Navigation("Province"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "Benefit") + .WithMany() + .HasForeignKey("BenefitCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") + .WithMany("Benefits") + .HasForeignKey("TaskInfoId") + .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("TypeCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("TaskInfo"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b => + { + b.HasOne("FlexJobApi.Core.EnterpriseEmployee", "EnterpriseEmployee") + .WithMany("TaskInfoUsers") + .HasForeignKey("EnterpriseEmployeeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") + .WithMany("TaskInfoUsers") + .HasForeignKey("TaskInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.User", null) + .WithMany("TaskInfoUsers") + .HasForeignKey("UserId"); + + b.Navigation("EnterpriseEmployee"); + + b.Navigation("TaskInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.User", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "City") + .WithMany() + .HasForeignKey("CityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.DictionaryData", "EducationalBackground") + .WithMany() + .HasForeignKey("EducationalBackgroundCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") + .WithMany("Users") + .HasForeignKey("EnterpriseId"); + + b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity") + .WithMany() + .HasForeignKey("PersonalIdentityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.DictionaryData", "Province") + .WithMany() + .HasForeignKey("ProvinceCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("City"); + + b.Navigation("EducationalBackground"); + + b.Navigation("Enterprise"); + + b.Navigation("PersonalIdentity"); + + b.Navigation("Province"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserAuth", b => + { + b.HasOne("FlexJobApi.Core.User", "User") + .WithOne("UserAuth") + .HasForeignKey("FlexJobApi.Core.UserAuth", "Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserBankCard", b => + { + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany("BankCards") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserCredential", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "Type") + .WithMany() + .HasForeignKey("TypeCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany("UserCredentials") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Type"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserDepartment", b => + { + b.HasOne("FlexJobApi.Core.Department", "Department") + .WithMany() + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany("UserDepartments") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Department"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserExpectJob", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "ExpectJob") + .WithMany() + .HasForeignKey("ExpectJobCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany("UserExpectJobs") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ExpectJob"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserPhoto", b => + { + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany("Photos") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserRole", b => + { + b.HasOne("FlexJobApi.Core.Role", "Role") + .WithMany("UserRoles") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany("UserRoles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Role"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserTaskCollect", b => + { + b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") + .WithMany() + .HasForeignKey("TaskInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TaskInfo"); + + b.Navigation("User"); + }); + + 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("EnterpriseAuth"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b => + { + b.Navigation("TaskInfoUsers"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Menu", b => + { + b.Navigation("Children"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Role", b => + { + b.Navigation("RoleMenus"); + + b.Navigation("RoleResources"); + + b.Navigation("UserRoles"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b => + { + b.Navigation("Benefits"); + + b.Navigation("CredentialLimits"); + + b.Navigation("TaskInfoUsers"); + }); + + modelBuilder.Entity("FlexJobApi.Core.User", b => + { + b.Navigation("BankCards"); + + b.Navigation("Photos"); + + b.Navigation("TaskInfoUsers"); + + b.Navigation("UserAuth"); + + b.Navigation("UserCredentials"); + + b.Navigation("UserDepartments"); + + b.Navigation("UserExpectJobs"); + + b.Navigation("UserRoles"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/20250812053139_UpdateUser0812002.cs b/FlexJobApi.Database.Migrations/Migrations/20250812053139_UpdateUser0812002.cs new file mode 100644 index 0000000..fad2979 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250812053139_UpdateUser0812002.cs @@ -0,0 +1,222 @@ +锘縰sing System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace FlexJobApi.Database.Migrations.Migrations +{ + /// <inheritdoc /> + public partial class UpdateUser0812002 : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_TaskInfoUser_User_UserId", + table: "TaskInfoUser"); + + migrationBuilder.DropColumn( + name: "ContractUrl", + table: "TaskInfoUser"); + + migrationBuilder.DropColumn( + name: "EnterpriseSignContractStatus", + table: "TaskInfoUser"); + + migrationBuilder.DropColumn( + name: "EnterpriseSignContractTime", + table: "TaskInfoUser"); + + migrationBuilder.DropColumn( + name: "HireStatus", + table: "TaskInfoUser"); + + migrationBuilder.DropColumn( + name: "HireTime", + table: "TaskInfoUser"); + + migrationBuilder.DropColumn( + name: "UserSignContractStatus", + table: "TaskInfoUser"); + + migrationBuilder.DropColumn( + name: "UserSignContractTime", + table: "TaskInfoUser"); + + migrationBuilder.AlterColumn<Guid>( + name: "UserId", + table: "TaskInfoUser", + type: "uniqueidentifier", + nullable: true, + oldClrType: typeof(Guid), + oldType: "uniqueidentifier"); + + migrationBuilder.AddColumn<Guid>( + name: "EnterpriseEmployeeId", + table: "TaskInfoUser", + type: "uniqueidentifier", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000")); + + migrationBuilder.CreateTable( + name: "EnterpriseEmployee", + columns: table => new + { + Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), + EnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), + UserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), + Name = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: true), + Identity = table.Column<string>(type: "nvarchar(max)", nullable: true), + PhoneNumber = table.Column<string>(type: "nvarchar(11)", maxLength: 11, nullable: true), + Gender = table.Column<int>(type: "int", nullable: true), + Age = table.Column<int>(type: "int", nullable: true), + IdentityImg = table.Column<string>(type: "nvarchar(max)", nullable: true), + IdentityBackImg = table.Column<string>(type: "nvarchar(max)", nullable: true), + HireStatus = table.Column<int>(type: "int", nullable: false), + HireTime = table.Column<DateTime>(type: "datetime2", nullable: true), + UserSignContractStatus = table.Column<int>(type: "int", nullable: true), + UserSignContractTime = table.Column<DateTime>(type: "datetime2", nullable: true), + EnterpriseSignContractStatus = table.Column<int>(type: "int", nullable: true), + EnterpriseSignContractTime = table.Column<DateTime>(type: "datetime2", nullable: true), + ContractUrl = table.Column<string>(type: "nvarchar(max)", nullable: true), + CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false), + UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true), + Sort = table.Column<int>(type: "int", nullable: false), + TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true), + CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), + CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), + UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column<bool>(type: "bit", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_EnterpriseEmployee", x => x.Id); + table.ForeignKey( + name: "FK_EnterpriseEmployee_Enterprise_EnterpriseId", + column: x => x.EnterpriseId, + principalTable: "Enterprise", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_EnterpriseEmployee_User_UserId", + column: x => x.UserId, + principalTable: "User", + principalColumn: "Id"); + }); + + migrationBuilder.CreateIndex( + name: "IX_TaskInfoUser_EnterpriseEmployeeId", + table: "TaskInfoUser", + column: "EnterpriseEmployeeId"); + + migrationBuilder.CreateIndex( + name: "IX_EnterpriseEmployee_EnterpriseId", + table: "EnterpriseEmployee", + column: "EnterpriseId"); + + migrationBuilder.CreateIndex( + name: "IX_EnterpriseEmployee_UserId", + table: "EnterpriseEmployee", + column: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_TaskInfoUser_EnterpriseEmployee_EnterpriseEmployeeId", + table: "TaskInfoUser", + column: "EnterpriseEmployeeId", + principalTable: "EnterpriseEmployee", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_TaskInfoUser_User_UserId", + table: "TaskInfoUser", + column: "UserId", + principalTable: "User", + principalColumn: "Id"); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_TaskInfoUser_EnterpriseEmployee_EnterpriseEmployeeId", + table: "TaskInfoUser"); + + migrationBuilder.DropForeignKey( + name: "FK_TaskInfoUser_User_UserId", + table: "TaskInfoUser"); + + migrationBuilder.DropTable( + name: "EnterpriseEmployee"); + + migrationBuilder.DropIndex( + name: "IX_TaskInfoUser_EnterpriseEmployeeId", + table: "TaskInfoUser"); + + migrationBuilder.DropColumn( + name: "EnterpriseEmployeeId", + table: "TaskInfoUser"); + + migrationBuilder.AlterColumn<Guid>( + name: "UserId", + table: "TaskInfoUser", + type: "uniqueidentifier", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000"), + oldClrType: typeof(Guid), + oldType: "uniqueidentifier", + oldNullable: true); + + migrationBuilder.AddColumn<string>( + name: "ContractUrl", + table: "TaskInfoUser", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn<int>( + name: "EnterpriseSignContractStatus", + table: "TaskInfoUser", + type: "int", + nullable: true); + + migrationBuilder.AddColumn<DateTime>( + name: "EnterpriseSignContractTime", + table: "TaskInfoUser", + type: "datetime2", + nullable: true); + + migrationBuilder.AddColumn<int>( + name: "HireStatus", + table: "TaskInfoUser", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn<DateTime>( + name: "HireTime", + table: "TaskInfoUser", + type: "datetime2", + nullable: true); + + migrationBuilder.AddColumn<int>( + name: "UserSignContractStatus", + table: "TaskInfoUser", + type: "int", + nullable: true); + + migrationBuilder.AddColumn<DateTime>( + name: "UserSignContractTime", + table: "TaskInfoUser", + type: "datetime2", + nullable: true); + + migrationBuilder.AddForeignKey( + name: "FK_TaskInfoUser_User_UserId", + table: "TaskInfoUser", + column: "UserId", + principalTable: "User", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs index 70cab4d..c7f8b2b 100644 --- a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs +++ b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs @@ -427,6 +427,95 @@ b.ToTable("EnterpriseAuth"); }); + modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("Age") + .HasColumnType("int"); + + b.Property<string>("ContractUrl") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("EnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("EnterpriseSignContractStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("EnterpriseSignContractTime") + .HasColumnType("datetime2"); + + b.Property<int?>("Gender") + .HasColumnType("int"); + + b.Property<int>("HireStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("HireTime") + .HasColumnType("datetime2"); + + b.Property<string>("Identity") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityBackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityImg") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("Name") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("PhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("UserSignContractStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("UserSignContractTime") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("UserId"); + + b.ToTable("EnterpriseEmployee"); + }); + modelBuilder.Entity("FlexJobApi.Core.Menu", b => { b.Property<Guid>("Id") @@ -1135,9 +1224,6 @@ b.Property<DateTime?>("ArrangeTime") .HasColumnType("datetime2"); - b.Property<string>("ContractUrl") - .HasColumnType("nvarchar(max)"); - b.Property<Guid?>("CreatedEnterpriseId") .HasColumnType("uniqueidentifier"); @@ -1147,17 +1233,8 @@ b.Property<Guid?>("CreatedUserId") .HasColumnType("uniqueidentifier"); - b.Property<int?>("EnterpriseSignContractStatus") - .HasColumnType("int"); - - b.Property<DateTime?>("EnterpriseSignContractTime") - .HasColumnType("datetime2"); - - b.Property<int>("HireStatus") - .HasColumnType("int"); - - b.Property<DateTime?>("HireTime") - .HasColumnType("datetime2"); + b.Property<Guid>("EnterpriseEmployeeId") + .HasColumnType("uniqueidentifier"); b.Property<bool>("IsDeleted") .HasColumnType("bit"); @@ -1177,16 +1254,12 @@ b.Property<Guid?>("UpdatedUserId") .HasColumnType("uniqueidentifier"); - b.Property<Guid>("UserId") + b.Property<Guid?>("UserId") .HasColumnType("uniqueidentifier"); - b.Property<int?>("UserSignContractStatus") - .HasColumnType("int"); - - b.Property<DateTime?>("UserSignContractTime") - .HasColumnType("datetime2"); - b.HasKey("Id"); + + b.HasIndex("EnterpriseEmployeeId"); b.HasIndex("TaskInfoId"); @@ -1835,6 +1908,23 @@ b.Navigation("Enterprise"); }); + modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b => + { + b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") + .WithMany() + .HasForeignKey("EnterpriseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany() + .HasForeignKey("UserId"); + + b.Navigation("Enterprise"); + + b.Navigation("User"); + }); + modelBuilder.Entity("FlexJobApi.Core.Menu", b => { b.HasOne("FlexJobApi.Core.Menu", "Parent") @@ -1951,21 +2041,25 @@ modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b => { + b.HasOne("FlexJobApi.Core.EnterpriseEmployee", "EnterpriseEmployee") + .WithMany("TaskInfoUsers") + .HasForeignKey("EnterpriseEmployeeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") .WithMany("TaskInfoUsers") .HasForeignKey("TaskInfoId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("FlexJobApi.Core.User", "User") + b.HasOne("FlexJobApi.Core.User", null) .WithMany("TaskInfoUsers") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + .HasForeignKey("UserId"); + + b.Navigation("EnterpriseEmployee"); b.Navigation("TaskInfo"); - - b.Navigation("User"); }); modelBuilder.Entity("FlexJobApi.Core.User", b => @@ -2158,6 +2252,11 @@ b.Navigation("Users"); }); + modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b => + { + b.Navigation("TaskInfoUsers"); + }); + modelBuilder.Entity("FlexJobApi.Core.Menu", b => { b.Navigation("Children"); diff --git a/FlexJobApi.Database.Migrations/REDEME.MD b/FlexJobApi.Database.Migrations/REDEME.MD index 592cc08..78eab90 100644 --- a/FlexJobApi.Database.Migrations/REDEME.MD +++ b/FlexJobApi.Database.Migrations/REDEME.MD @@ -1,7 +1,7 @@ -------------------------------主数据库--------------------------------------- 新增迁移文件 -dotnet ef migrations add UpdateUser0812 -s "../FlexJobApi.Web.Entry" -c DefaultDbContext +dotnet ef migrations add UpdateUser0812002 -s "../FlexJobApi.Web.Entry" -c DefaultDbContext 删除迁移文件 dotnet ef migrations remove -s "../FlexJobApi.Web.Entry" -c DefaultDbContext diff --git a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.csproj b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.csproj index 92ae12a..f16b9d8 100644 --- a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.csproj +++ b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.csproj @@ -15,4 +15,8 @@ <ProjectReference Include="..\FlexJobApi.Core\FlexJobApi.Core.csproj" /> </ItemGroup> + <ItemGroup> + <Folder Include="TaskUsers\Queries\" /> + </ItemGroup> + </Project> diff --git a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml index 57c3cb0..56ed4c2 100644 --- a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml +++ b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml @@ -73,6 +73,24 @@ <param name="cancellationToken"></param> <returns></returns> </member> + <member name="T:FlexJobApi.FlexJobServer.Application.ApplyTaskCommandHandler"> + <summary> + 鎶ュ悕浠诲姟 + </summary> + </member> + <member name="M:FlexJobApi.FlexJobServer.Application.ApplyTaskCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUser},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfo},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseEmployee})"> + <summary> + 鎶ュ悕浠诲姟 + </summary> + </member> + <member name="M:FlexJobApi.FlexJobServer.Application.ApplyTaskCommandHandler.Handle(FlexJobApi.Core.ApplyTaskCommand,System.Threading.CancellationToken)"> + <summary> + 鎶ュ悕浠诲姟 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> <member name="T:FlexJobApi.FlexJobServer.Application.TaskUserCommandHandler"> <summary> 浠诲姟闆囦剑鍛戒护澶勭悊鍣� @@ -86,14 +104,6 @@ <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserCommandHandler.Handle(FlexJobApi.Core.CollectTaskCommand,System.Threading.CancellationToken)"> <summary> 鏀惰棌浠诲姟 - </summary> - <param name="request"></param> - <param name="cancellationToken"></param> - <returns></returns> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserCommandHandler.Handle(FlexJobApi.Core.ApplyTaskCommand,System.Threading.CancellationToken)"> - <summary> - 鎶ュ悕浠诲姟 </summary> <param name="request"></param> <param name="cancellationToken"></param> diff --git a/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/ApplyTaskCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/ApplyTaskCommandHandler.cs new file mode 100644 index 0000000..2b2e5c3 --- /dev/null +++ b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/ApplyTaskCommandHandler.cs @@ -0,0 +1,116 @@ +锘縰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.FlexJobServer.Application +{ + /// <summary> + /// 鎶ュ悕浠诲姟 + /// </summary> + public class ApplyTaskCommandHandler( + IRepository<TaskInfoUser> repTaskInfoUser, + IRepository<User> repUser, + IRepository<TaskInfo> repTaskInfo, + IRepository<EnterpriseEmployee> repEnterpriseEmployee + ) : + IRequestHandler<ApplyTaskCommand, int> + + { + private readonly IRepository<TaskInfoUser> repTaskInfoUser = repTaskInfoUser; + private readonly IRepository<User> repUser = repUser; + private readonly IRepository<TaskInfo> repTaskInfo = repTaskInfo; + private readonly IRepository<EnterpriseEmployee> repEnterpriseEmployee = repEnterpriseEmployee; + + /// <summary> + /// 鎶ュ悕浠诲姟 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<int> Handle(ApplyTaskCommand request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var applyTaskIds = await repTaskInfoUser.AsQueryable().AsNoTracking() + .Include(it => it.TaskInfo) + .Where(it => request.Ids.Contains(it.TaskInfoId) && it.EnterpriseEmployee.UserId == logier.Id) + .Select(it => it.TaskInfoId) + .ToListAsync(cancellationToken); + var taskIds = request.Ids.Where(it => !applyTaskIds.Contains(it)).ToList(); + if (taskIds.IsNotNull()) + { + var user = await repUser.AsQueryable().AsNoTracking() + .Include(it => it.UserAuth) + .Where(it => it.Id == logier.Id) + .Select(it => new + { + it.Name, + it.Identity, + it.ContactPhoneNumber, + it.Gender, + it.Age, + it.UserAuth.IdentityImg, + it.UserAuth.IdentityBackImg + }) + .FirstOrDefaultAsync(cancellationToken); + if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヨ处鍙�"); + var tasks = await repTaskInfo.AsQueryable().AsNoTracking() + .Where(it => taskIds.Contains(it.Id)) + .Select(it => new + { + it.Id, + it.EnterpriseId + }) + .ToListAsync(cancellationToken); + var enterpriseIds = tasks.DistinctSelect(it => it.EnterpriseId); + var employees = await repEnterpriseEmployee.AsQueryable() + .Where(it => + enterpriseIds.Contains(it.EnterpriseId) + && (it.UserId == logier.Id + || it.Name == user.Name + && it.Identity == user.Identity)) + .ToListAsync(); + foreach (var taskId in taskIds) + { + var task = tasks.FirstOrDefault(it => it.Id == taskId); + if (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヤ换鍔�"); + var employee = employees.FirstOrDefault(it => it.EnterpriseId == task.EnterpriseId && it.UserId == logier.Id); + if (employee == null) + { + employee = employees.FirstOrDefault(it => it.EnterpriseId == task.EnterpriseId && it.Name == user.Name && it.Identity == user.Name); + } + if (employee == null) + { + employee = new EnterpriseEmployee + { + EnterpriseId = task.EnterpriseId, + UserId = logier.Id, + Name = user.Name, + Identity = user.Identity, + PhoneNumber = user.ContactPhoneNumber, + Gender = user.Gender, + Age = user.Age, + IdentityImg = user.IdentityImg, + IdentityBackImg = user.IdentityBackImg, + HireStatus = EnumTaskUserHireStatus.Wait, + }; + await repEnterpriseEmployee.InsertAsync(employee); + } + var entity = new TaskInfoUser + { + TaskInfoId = taskId, + EnterpriseEmployeeId = employee.Id, + }; + await repTaskInfoUser.InsertAsync(entity); + } + } + return taskIds.Count; + } + } +} diff --git a/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs index 6e8a1e9..3bda8d9 100644 --- a/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs @@ -1,5 +1,6 @@ 锘縰sing FlexJobApi.Core; using Furion.DatabaseAccessor; +using Furion.FriendlyException; using MediatR; using Microsoft.EntityFrameworkCore; using System; @@ -18,7 +19,6 @@ IRepository<UserTaskCollect> repUserTaskCollect ) : IRequestHandler<CollectTaskCommand, int>, - IRequestHandler<ApplyTaskCommand, int>, IRequestHandler<SetTaskUserHireCommand, int> { private readonly IRepository<TaskInfoUser> rep = rep; @@ -58,33 +58,6 @@ } /// <summary> - /// 鎶ュ悕浠诲姟 - /// </summary> - /// <param name="request"></param> - /// <param name="cancellationToken"></param> - /// <returns></returns> - public async Task<int> Handle(ApplyTaskCommand request, CancellationToken cancellationToken) - { - var logier = JwtUtils.GetCurrentLogier(); - var applyIds = await rep.AsQueryable().AsNoTracking() - .Where(it => request.Ids.Contains(it.TaskInfoId) && it.UserId == logier.Id) - .Select(it => it.TaskInfoId) - .ToListAsync(cancellationToken); - var addIds = request.Ids.Where(it => !applyIds.Contains(it)).ToList(); - foreach (var addId in addIds) - { - var entity = new TaskInfoUser - { - TaskInfoId = addId, - UserId = logier.Id, - HireStatus = EnumTaskUserHireStatus.Wait - }; - await rep.InsertAsync(entity); - } - return addIds.Count; - } - - /// <summary> /// 浠诲姟褰曠敤 /// </summary> /// <param name="request"></param> @@ -94,24 +67,27 @@ { var logier = JwtUtils.GetCurrentLogier(); var entities = await rep.AsQueryable() - .Where(it => - it.TaskInfo.EnterpriseId == logier.Id - && it.TaskInfoId == request.Id - && request.UserIds.Contains(it.UserId) - && it.HireStatus != request.HireStatus) + .Include(it => it.EnterpriseEmployee) + .Where(it => + it.TaskInfo.EnterpriseId == logier.Id + && it.TaskInfoId == request.Id + && it.EnterpriseEmployee.UserId.HasValue + && request.UserIds.Contains(it.EnterpriseEmployee.UserId.Value) + && it.EnterpriseEmployee.HireStatus != request.HireStatus) .ToListAsync(cancellationToken); if (entities.IsNotNull()) { foreach (var entity in entities) { - entity.HireStatus = request.HireStatus; - if (entity.HireStatus == EnumTaskUserHireStatus.Pass) + entity.EnterpriseEmployee.HireStatus = request.HireStatus; + if (entity.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass) { - entity.HireTime = DateTime.Now; - entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass; - entity.UserSignContractTime = DateTime.Now; - entity.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass; - entity.EnterpriseSignContractTime = DateTime.Now; + entity.EnterpriseEmployee.HireTime = DateTime.Now; + entity.EnterpriseEmployee.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass; + entity.EnterpriseEmployee.UserSignContractTime = DateTime.Now; + entity.EnterpriseEmployee.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass; + entity.EnterpriseEmployee.EnterpriseSignContractTime = DateTime.Now; + entity.ArrangeStatus = EnumTaskUserArrangeStatus.Wait; } } diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs index 5b1b297..471d00c 100644 --- a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs @@ -46,8 +46,9 @@ if (logier != null && logier.Type == EnumUserType.Personal) { model.HireStatus = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() - .Where(it => it.TaskInfoId == model.Id && it.UserId == logier.Id) - .Select(it => it.HireStatus) + .Include(it => it.EnterpriseEmployee) + .Where(it => it.TaskInfoId == model.Id && it.EnterpriseEmployee.UserId == logier.Id) + .Select(it => it.EnterpriseEmployee.HireStatus) .FirstOrDefaultAsync(); } return model; @@ -93,7 +94,7 @@ } if (request.HireStatus.IsNotNull() && logier.Type == EnumUserType.Personal) { - q = q.Where(it => it.TaskInfoUsers.Any(u => u.UserId == logier.Id && request.HireStatus.Contains(u.HireStatus))); + q = q.Where(it => it.TaskInfoUsers.Any(u => request.HireStatus.Contains(u.EnterpriseEmployee.HireStatus))); } var count = new GetTaskInfosQueryResultObjectData @@ -158,7 +159,7 @@ RecommendStatus = t.RecommendStatus, SettlementStatus = t.SettlementStatus, HireStatus = logier != null - ? t.TaskInfoUsers.Where(it => it.UserId == logier.Id).Select(u => u.HireStatus).FirstOrDefault() + ? t.TaskInfoUsers.Where(it => it.EnterpriseEmployee.UserId == logier.Id).Select(u => u.EnterpriseEmployee.HireStatus).FirstOrDefault() : null }; var result = await request.PageModel.GetPagedListAsync<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>(s, cancellationToken); diff --git a/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs b/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs index 7685bd3..47fa3c8 100644 --- a/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/Auths/Commands/LoginCommandHandler.cs @@ -269,10 +269,10 @@ var model = await rep.GetPersonalQueryable(true) .GetDetail<User, GetPersonalLoginInfoQueryResult>(cancellationToken); var taskUserQueryable = rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() - .Where(it => it.UserId == model.Id); + .Where(it => it.EnterpriseEmployee.UserId == model.Id); model.TaskCount = await taskUserQueryable.CountAsync(); - model.HirePassTaskCount = await taskUserQueryable.CountAsync(it => it.HireStatus == EnumTaskUserHireStatus.Pass); - model.HireRefuseTaskCount = await taskUserQueryable.CountAsync(it => it.HireStatus == EnumTaskUserHireStatus.Refuse); + model.HirePassTaskCount = await taskUserQueryable.CountAsync(it => it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass); + model.HireRefuseTaskCount = await taskUserQueryable.CountAsync(it => it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Refuse); return model; } diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs new file mode 100644 index 0000000..d559f19 --- /dev/null +++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs @@ -0,0 +1,77 @@ +锘縰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.UserServer.Application +{ + /// <summary> + /// 鐏靛伐鏌ヨ澶勭悊鍣� + /// </summary> + public class EnterpriseEmployeeQueryHandler( + IRepository<EnterpriseEmployee> rep + ) : + IRequestHandler<GetEnterpriseEmployeesQuery, GetEnterpriseEmployeesQueryResult> + { + private readonly IRepository<EnterpriseEmployee> rep = rep; + + /// <summary> + /// 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetEnterpriseEmployeesQueryResult> Handle(GetEnterpriseEmployeesQuery request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var q = rep.AsQueryable().AsNoTracking() + .OrderBy(it => it.CreatedTime) + .Where(it => it.EnterpriseId == logier.Id); + if (request.Keywords.IsNotNull()) + { + q = q.Where(it => + it.Name.Contains(request.Keywords) + || it.PhoneNumber.Contains(request.Keywords) + || it.Identity.Contains(request.Keywords)); + } + if (request.CreatedTimeStart.HasValue && request.CreatedTimeEnd.HasValue) + { + q = q.Where(it => + it.CreatedTime >= request.CreatedTimeStart.Value + && it.CreatedTime <= request.CreatedTimeEnd.Value); + } + if (request.SignContractTimeStart.HasValue && request.SignContractTimeEnd.HasValue) + { + q = q.Where(it => + it.UserSignContractTime >= request.SignContractTimeStart.Value + && it.UserSignContractTime <= request.SignContractTimeEnd.Value + || it.EnterpriseSignContractTime >= request.SignContractTimeStart.Value + && it.EnterpriseSignContractTime <= request.SignContractTimeEnd.Value); + } + if (request.HireStatus.HasValue) + { + q = q.Where(it => it.HireStatus == request.HireStatus); + } + if (request.IsReal.HasValue) + { + q = q.Where(it => (it.UserId.HasValue && it.User.IsReal) == request.IsReal.Value); + } + if (request.UserSignContractStatus.HasValue) + { + q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); + } + if (request.EnterpriseSignContractStatus.HasValue) + { + q = q.Where(it => it.EnterpriseSignContractStatus == request.EnterpriseSignContractStatus); + } + var s = q.ProjectToType<GetEnterpriseEmployeesQueryResultItem>(); + return await request.PageModel.GetPagedListAsync<GetEnterpriseEmployeesQueryResult, GetEnterpriseEmployeesQueryResultItem>(s, cancellationToken); + } + } +} diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml index 93ce8b7..2d2a8c8 100644 --- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml +++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml @@ -148,6 +148,24 @@ <param name="all"></param> <param name="roleMenuIds"></param> </member> + <member name="T:FlexJobApi.UserServer.Application.EnterpriseEmployeeQueryHandler"> + <summary> + 鐏靛伐鏌ヨ澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.UserServer.Application.EnterpriseEmployeeQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseEmployee})"> + <summary> + 鐏靛伐鏌ヨ澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.UserServer.Application.EnterpriseEmployeeQueryHandler.Handle(FlexJobApi.Core.GetEnterpriseEmployeesQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> <member name="T:FlexJobApi.UserServer.Application.EnterpriseCommandHandler"> <summary> 浼佷笟鍛戒护澶勭悊鍣� diff --git a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs index ecc3042..ab0941d 100644 --- a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs +++ b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs @@ -85,15 +85,9 @@ PersonalIdentityContent = it.PersonalIdentity.Content, EducationalBackgroundCode = it.EducationalBackgroundCode, EducationalBackgroundContent = it.EducationalBackground.Content, - TaskCount = it.TaskInfoUsers.Count(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass), + TaskCount = it.TaskInfoUsers.Count(tu => tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass), WorkSeniority = it.WorkSeniority, WorkExperience = it.WorkExperience, - HireStatus = request.TaskInfoId.HasValue - ? it.TaskInfoUsers.Where(it => it.TaskInfoId == request.TaskInfoId).Select(it => it.HireStatus as EnumTaskUserHireStatus?).FirstOrDefault() - : null, - ArrangeStatus = request.TaskInfoId.HasValue - ? it.TaskInfoUsers.Where(it => it.TaskInfoId == request.TaskInfoId).Select(it => it.ArrangeStatus).FirstOrDefault() - : null, }); var result = await request.PageModel.GetPagedListAsync<GetUserResumesQueryResult, GetUserResumesQueryResultItem>(s, cancellationToken); return result; @@ -118,7 +112,7 @@ .GetDetail<User, GetUserResumeQueryResult>(cancellationToken); model.TaskInfoUsers = model.TaskInfoUsers.Where(it => it.SignContractTime.HasValue).ToList(); model.TaskCount = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() - .Where(it => it.UserId == model.Id && it.HireStatus == EnumTaskUserHireStatus.Pass) + .Where(it => it.EnterpriseEmployee.UserId == model.Id && it.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass) .CountAsync(); if (model.CityCode.IsNotNull()) { -- Gitblit v1.9.1