From 1d2953530fc3019ffc2bbe71f4de2ab7820fe528 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期一, 11 八月 2025 17:26:31 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs | 2 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs | 2 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs | 134 +++++++++++ FlexJobApi.Core/Enums/Users/EnumUserRealMethod.cs | 2 FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs | 3 FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs | 6 FlexJobApi.Core/Entities/UserServer/Users/User.cs | 9 FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml | 15 + FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs | 52 ++++ FlexJobApi.Core/Utils/DbUtils/SelectQuery.cs | 2 FlexJobApi.Core/FlexJobApi.Core.xml | 264 ++++++++++++++++++++- FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs | 25 ++ FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs | 115 +++++++++ FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml | 8 FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs | 61 +++++ 15 files changed, 663 insertions(+), 37 deletions(-) diff --git a/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs index 1d96d5b..5443518 100644 --- a/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs +++ b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs @@ -18,7 +18,8 @@ public class DictionaryDatasQueryHandler( IRepository<DictionaryData> rep ) : IRequestHandler<GetDictionaryDatasQuery, PagedListQueryResult<GetDictionaryDatasQueryResultItem>>, - IRequestHandler<GetDictionaryDataSelectQuery, List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>> + IRequestHandler<GetDictionaryDataSelectQuery, List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>>, + IRequestHandler<GetAreaSelectQuery, List<GetAreaSelectQueryResultOption>> { private readonly IRepository<DictionaryData> rep = rep; @@ -71,15 +72,15 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - public Task<List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>> Handle(GetDictionaryDataSelectQuery request, CancellationToken cancellationToken) + public async Task<List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>>> Handle(GetDictionaryDataSelectQuery request, CancellationToken cancellationToken) { - return request.GetSelect<DictionaryData, string, GetDictionaryDataSelectQueryResultOption>( + var models = await request.GetSelect<DictionaryData, string, GetDictionaryDataSelectQueryResultOption>( it => it.Code, it => it.Content, q => { q = q - .OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime) + .OrderBy(it => it.Sort) .Where(it => !it.IsDisabled); if (request.All != true) { @@ -115,6 +116,49 @@ return q; }, cancellationToken); + if (request.WithChildren) + { + var parents = models.Where(it => it.Data.ParentId == null).ToList(); + LoopChildrens(parents, models); + return parents; + } + return models; + } + + /// <summary> + /// 鏌ヨ鍦板尯閫夋嫨鍣� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<GetAreaSelectQueryResultOption>> Handle(GetAreaSelectQuery request, CancellationToken cancellationToken) + { + var models = await Handle(new GetDictionaryDataSelectQuery + { + CategoryCode = "70", + All = true, + MaxDeep = request.MaxDeep, + WithChildren = true + }, cancellationToken); + var result = models.Adapt<List<GetAreaSelectQueryResultOption>>(); + return result; + } + + /// <summary> + /// 閫掑綊璧嬪�间笅绾� + /// </summary> + /// <param name="models"></param> + /// <param name="all"></param> + private void LoopChildrens(List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>> models, List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>> all) + { + foreach (var item in models) + { + item.Data.Children = all.Where(it => it.Data.ParentId == item.Data.Id).ToList(); + if (item.Data.Children.IsNotNull()) + { + LoopChildrens(item.Data.Children, all); + } + } } } } diff --git a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml index 1db7ce4..b0f27ae 100644 --- a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml +++ b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml @@ -126,6 +126,21 @@ <param name="cancellationToken"></param> <returns></returns> </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler.Handle(FlexJobApi.Core.GetAreaSelectQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ鍦板尯閫夋嫨鍣� + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler.LoopChildrens(System.Collections.Generic.List{FlexJobApi.Core.SelectOption{System.String,FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption}},System.Collections.Generic.List{FlexJobApi.Core.SelectOption{System.String,FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption}})"> + <summary> + 閫掑綊璧嬪�间笅绾� + </summary> + <param name="models"></param> + <param name="all"></param> + </member> <member name="T:FlexJobApi.CommonServer.Application.ScheduleJobDetailCommandHandler"> <summary> 浠诲姟璋冨害-浣滀笟 diff --git a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs index 47a7b5c..ea47cf7 100644 --- a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs +++ b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs @@ -163,7 +163,7 @@ /// <summary> /// 鐢ㄦ埛 /// </summary> - public List<TaskInfoUser> Users { get; set; } + public List<TaskInfoUser> TaskInfoUsers { get; set; } public void Configure(EntityTypeBuilder<TaskInfo> entityBuilder, DbContext dbContext, Type dbContextLocator) { diff --git a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs index b09201f..089aebb 100644 --- a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs +++ b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs @@ -7,7 +7,7 @@ namespace FlexJobApi.Core { /// <summary> - /// 浠诲姟鐢ㄦ埛淇℃伅 + /// 浠诲姟闆囦剑淇℃伅 /// </summary> public class TaskInfoUser : CommonEntity { diff --git a/FlexJobApi.Core/Entities/UserServer/Users/User.cs b/FlexJobApi.Core/Entities/UserServer/Users/User.cs index ab55926..5521fc0 100644 --- a/FlexJobApi.Core/Entities/UserServer/Users/User.cs +++ b/FlexJobApi.Core/Entities/UserServer/Users/User.cs @@ -1,5 +1,4 @@ -锘縰sing FlexJobApi.Core.Enums.Users; -using Furion.DatabaseAccessor; +锘縰sing Furion.DatabaseAccessor; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using System; @@ -24,6 +23,7 @@ UserExpectJobs = []; UserCredentials = []; Photos = []; + TaskInfoUsers = []; } /// <summary> @@ -244,6 +244,11 @@ /// </summary> public List<UserPhoto> Photos { get; set; } + /// <summary> + /// 浠诲姟闆囦剑淇℃伅 + /// </summary> + public List<TaskInfoUser> TaskInfoUsers { get; set; } + public void Configure(EntityTypeBuilder<User> entityBuilder, DbContext dbContext, Type dbContextLocator) { entityBuilder diff --git a/FlexJobApi.Core/Enums/Users/EnumUserRealMethod.cs b/FlexJobApi.Core/Enums/Users/EnumUserRealMethod.cs index 0119e34..ffaefb4 100644 --- a/FlexJobApi.Core/Enums/Users/EnumUserRealMethod.cs +++ b/FlexJobApi.Core/Enums/Users/EnumUserRealMethod.cs @@ -4,7 +4,7 @@ using System.Text; using System.Threading.Tasks; -namespace FlexJobApi.Core.Enums.Users +namespace FlexJobApi.Core { /// <summary> /// 鐢ㄦ埛瀹炲悕鏂瑰紡 diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index 068bd63..7ecbd15 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -854,7 +854,7 @@ 鎺ㄨ崘鐘舵�� </summary> </member> - <member name="P:FlexJobApi.Core.TaskInfo.Users"> + <member name="P:FlexJobApi.Core.TaskInfo.TaskInfoUsers"> <summary> 鐢ㄦ埛 </summary> @@ -906,7 +906,7 @@ </member> <member name="T:FlexJobApi.Core.TaskInfoUser"> <summary> - 浠诲姟鐢ㄦ埛淇℃伅 + 浠诲姟闆囦剑淇℃伅 </summary> </member> <member name="P:FlexJobApi.Core.TaskInfoUser.TaskInfoId"> @@ -1896,6 +1896,11 @@ 鐢熸椿鐓� </summary> </member> + <member name="P:FlexJobApi.Core.User.TaskInfoUsers"> + <summary> + 浠诲姟闆囦剑淇℃伅 + </summary> + </member> <member name="T:FlexJobApi.Core.UserAuth"> <summary> 鐢ㄦ埛璁よ瘉 @@ -2059,26 +2064,6 @@ <member name="F:FlexJobApi.Core.Enums.Common.EnumFileStoreAccess.AliyunOSS"> <summary> 闃块噷浜慜SS - </summary> - </member> - <member name="T:FlexJobApi.Core.Enums.Users.EnumUserRealMethod"> - <summary> - 鐢ㄦ埛瀹炲悕鏂瑰紡 - </summary> - </member> - <member name="F:FlexJobApi.Core.Enums.Users.EnumUserRealMethod.Identity3"> - <summary> - 涓汉鎵嬫満鍙蜂笁瑕佺礌 - </summary> - </member> - <member name="F:FlexJobApi.Core.Enums.Users.EnumUserRealMethod.Identity4"> - <summary> - 閾惰鍗″瑕佺礌 - </summary> - </member> - <member name="F:FlexJobApi.Core.Enums.Users.EnumUserRealMethod.Face"> - <summary> - 鍒疯劯璁よ瘉 </summary> </member> <member name="T:FlexJobApi.Core.EnumFileType"> @@ -2816,6 +2801,26 @@ 濂� </summary> </member> + <member name="T:FlexJobApi.Core.EnumUserRealMethod"> + <summary> + 鐢ㄦ埛瀹炲悕鏂瑰紡 + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumUserRealMethod.Identity3"> + <summary> + 涓汉鎵嬫満鍙蜂笁瑕佺礌 + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumUserRealMethod.Identity4"> + <summary> + 閾惰鍗″瑕佺礌 + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumUserRealMethod.Face"> + <summary> + 鍒疯劯璁よ瘉 + </summary> + </member> <member name="T:FlexJobApi.Core.EnumUserStatus"> <summary> 鐢ㄦ埛淇℃伅鐘舵�� @@ -3002,6 +3007,91 @@ 鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁 </summary> </member> + <member name="T:FlexJobApi.Core.GetAreaSelectQuery"> + <summary> + 鏌ヨ鏁版嵁瀛楀吀閫夋嫨鍣� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQuery.MaxDeep"> + <summary> + 鏈�澶ф繁搴� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Value"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Label"> + <summary> + 鍦板尯鍚嶇О + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Data"> + <summary> + 鏁版嵁 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Children"> + <summary> + 瀛愮骇 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Id"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.ParentCode"> + <summary> + 涓婄骇缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Leyer"> + <summary> + 灞傜骇 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.Sort"> + <summary> + 鎺掑簭 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOption.QuickQuery"> + <summary> + 蹇�熸煡璇� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.Children"> + <summary> + 瀛愮骇 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.AreaCode"> + <summary> + 缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.ParentCode"> + <summary> + 涓婄骇缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.Leyer"> + <summary> + 灞傜骇 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.Sort"> + <summary> + 鎺掑簭 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetAreaSelectQueryResultOptionData.QuickQuery"> + <summary> + 蹇�熸煡璇� + </summary> + </member> <member name="T:FlexJobApi.Core.GetDictionaryCategoriesQuery"> <summary> 鑾峰彇鏁版嵁瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁 @@ -3112,6 +3202,11 @@ 鏈�澶ф繁搴� </summary> </member> + <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQuery.WithChildren"> + <summary> + 鎼哄甫涓嬬骇 + </summary> + </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Id"> <summary> Id @@ -3127,9 +3222,24 @@ 涓婄骇缂栧彿 </summary> </member> + <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Children"> + <summary> + 瀛愮骇 + </summary> + </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Path"> <summary> 瀛楀吀璺緞 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Deep"> + <summary> + 娣卞害 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Sort"> + <summary> + 鎺掑簭 </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQueryResultOption.Code"> @@ -6134,6 +6244,116 @@ 鐓х墖 </summary> </member> + <member name="T:FlexJobApi.Core.GetUserResumesQuery"> + <summary> + 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQuery.UserExpectJobs"> + <summary> + 鏈熸湜宀椾綅缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQuery.Gender"> + <summary> + 鎬у埆 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQuery.PersonalIdentityCode"> + <summary> + 韬唤缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQuery.AgeMin"> + <summary> + 骞撮緞鑼冨洿鏈�灏� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQuery.AgeMax"> + <summary> + 骞撮緞鑼冨洿澶� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQuery.UserCredentials"> + <summary> + 璧勬牸璇佷功缂栧彿 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumesQueryResult"> + <summary> + 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁-缁撴灉 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumesQueryResultItem"> + <summary> + 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁-缁撴灉-椤� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Id"> + <summary> + 鐢ㄦ埛Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Avatar"> + <summary> + 澶村儚 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Name"> + <summary> + 濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Gender"> + <summary> + 鎬у埆 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.IsReal"> + <summary> + 鏄惁瀹炲悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.Age"> + <summary> + 骞撮緞 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.PersonalIdentityCode"> + <summary> + 韬唤缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.PersonalIdentityContent"> + <summary> + 韬唤 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.EducationalBackgroundCode"> + <summary> + 瀛﹀巻缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.EducationalBackgroundContent"> + <summary> + 瀛﹀巻 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.TaskCount"> + <summary> + 涓婂矖娆℃暟 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.WorkSeniority"> + <summary> + 宸ヤ綔璧勫巻 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumesQueryResultItem.WorkExperience"> + <summary> + 宸ヤ綔缁忛獙 + </summary> + </member> <member name="T:FlexJobApi.Core.GetUserResumeWorkExperienceQuery"> <summary> 鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙 diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs new file mode 100644 index 0000000..51328c0 --- /dev/null +++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetAreaSelectQuery.cs @@ -0,0 +1,115 @@ +锘縰sing Mapster; +using MediatR; +using Newtonsoft.Json; +using Swashbuckle.AspNetCore.Annotations; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鍦板尯閫夋嫨鍣� + /// </summary> + [Resource([EnumResourceController.Dictionary], AllowAnonymous = true)] + public class GetAreaSelectQuery : IRequest<List<GetAreaSelectQueryResultOption>> + { + /// <summary> + /// 鏈�澶ф繁搴� + /// </summary> + public int? MaxDeep { get; set; } + } + + public class GetAreaSelectQueryResultOption + { + public GetAreaSelectQueryResultOption() + { + + } + + /// <summary> + /// Id + /// </summary> + [JsonProperty("areaCode")] + public string Value { get; set; } + + /// <summary> + /// 鍦板尯鍚嶇О + /// </summary> + [JsonProperty("areaName")] + public string Label { get; set; } + + /// <summary> + /// 鏁版嵁 + /// </summary> + [JsonIgnore, SwaggerIgnore] + public GetDictionaryDataSelectQueryResultOption Data { get; set; } + + /// <summary> + /// 瀛愮骇 + /// </summary> + public List<GetAreaSelectQueryResultOption> Children => Data.Children.Adapt<List<GetAreaSelectQueryResultOption>>(); + + /// <summary> + /// Id + /// </summary> + public Guid Id => Data.Id; + + /// <summary> + /// 涓婄骇缂栧彿 + /// </summary> + public string ParentCode => Data.ParentCode; + + /// <summary> + /// 灞傜骇 + /// </summary> + public int Leyer => Data.Deep; + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int Sort => Data.Sort; + + /// <summary> + /// 蹇�熸煡璇� + /// </summary> + public string QuickQuery => Data.Field2; + + } + + public class GetAreaSelectQueryResultOptionData + { + /// <summary> + /// 瀛愮骇 + /// </summary> + public List<GetAreaSelectQueryResultOption> Children { get; set; } + + /// <summary> + /// 缂栧彿 + /// </summary> + public string AreaCode { get; set; } + + /// <summary> + /// 涓婄骇缂栧彿 + /// </summary> + public string ParentCode { get; set; } + + /// <summary> + /// 灞傜骇 + /// </summary> + public int Leyer { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int Sort { get; set; } + + /// <summary> + /// 蹇�熸煡璇� + /// </summary> + public string QuickQuery { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs index 2a9c6ae..acaacc2 100644 --- a/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs +++ b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs @@ -42,10 +42,20 @@ /// 鏈�澶ф繁搴� /// </summary> public int? MaxDeep { get; set; } + + /// <summary> + /// 鎼哄甫涓嬬骇 + /// </summary> + public bool WithChildren { get; set; } } public class GetDictionaryDataSelectQueryResultOption { + public GetDictionaryDataSelectQueryResultOption() + { + Children = []; + } + /// <summary> /// Id /// </summary> @@ -62,11 +72,26 @@ public string ParentCode { get; set; } /// <summary> + /// 瀛愮骇 + /// </summary> + public List<SelectOption<string, GetDictionaryDataSelectQueryResultOption>> Children { get; set; } + + /// <summary> /// 瀛楀吀璺緞 /// </summary> public string Path { get; set; } /// <summary> + /// 娣卞害 + /// </summary> + public int Deep { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + public int Sort { get; set; } + + /// <summary> /// 缂栧彿 /// </summary> [MaxLength(128)] diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs new file mode 100644 index 0000000..e87dd4d --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumesQuery.cs @@ -0,0 +1,134 @@ +锘縰sing Mapster; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class GetUserResumesQuery : PagedListQuery<GetUserResumesQueryResult, GetUserResumesQueryResultItem> + { + public GetUserResumesQuery() + { + UserExpectJobs = []; + UserCredentials = []; + } + + /// <summary> + /// 鏈熸湜宀椾綅缂栧彿 + /// </summary> + public List<string> UserExpectJobs { get; set; } + + /// <summary> + /// 鎬у埆 + /// </summary> + public EnumUserGender? Gender { get; set; } + + /// <summary> + /// 韬唤缂栧彿 + /// </summary> + public string PersonalIdentityCode { get; set; } + + /// <summary> + /// 骞撮緞鑼冨洿鏈�灏� + /// </summary> + public int? AgeMin { get; set; } + + /// <summary> + /// 骞撮緞鑼冨洿澶� + /// </summary> + public int? AgeMax { get; set; } + + /// <summary> + /// 璧勬牸璇佷功缂栧彿 + /// </summary> + public List<string> UserCredentials { get; set; } + + } + + /// <summary> + /// 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁-缁撴灉 + /// </summary> + public class GetUserResumesQueryResult : PagedListQueryResult<GetUserResumesQueryResultItem> + { + + } + + /// <summary> + /// 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁-缁撴灉-椤� + /// </summary> + public class GetUserResumesQueryResultItem + { + /// <summary> + /// 鐢ㄦ埛Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 澶村儚 + /// </summary> + public string Avatar { get; set; } + + /// <summary> + /// 濮撳悕 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 鎬у埆 + /// </summary> + public EnumUserGender? Gender { get; set; } + + /// <summary> + /// 鏄惁瀹炲悕 + /// </summary> + public bool IsReal { get; set; } + + /// <summary> + /// 骞撮緞 + /// </summary> + public int? Age { get; set; } + + /// <summary> + /// 韬唤缂栧彿 + /// </summary> + public string PersonalIdentityCode { get; set; } + + /// <summary> + /// 韬唤 + /// </summary> + public string PersonalIdentityContent { get; set; } + + /// <summary> + /// 瀛﹀巻缂栧彿 + /// </summary> + public string EducationalBackgroundCode { get; set; } + + /// <summary> + /// 瀛﹀巻 + /// </summary> + public string EducationalBackgroundContent { get; set; } + + /// <summary> + /// 涓婂矖娆℃暟 + /// </summary> + [AdaptIgnore] + public int TaskCount { get; set; } + + /// <summary> + /// 宸ヤ綔璧勫巻 + /// </summary> + public string WorkSeniority { get; set; } + + /// <summary> + /// 宸ヤ綔缁忛獙 + /// </summary> + public string WorkExperience { get; set; } + + } +} diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs index 9f95811..14c34bd 100644 --- a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs +++ b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetPersonalLoginInfoQuery.cs @@ -1,5 +1,4 @@ -锘縰sing FlexJobApi.Core.Enums.Users; -using MediatR; +锘縰sing MediatR; using System; using System.Collections.Generic; using System.Linq; diff --git a/FlexJobApi.Core/Utils/DbUtils/SelectQuery.cs b/FlexJobApi.Core/Utils/DbUtils/SelectQuery.cs index a920ef3..579de2d 100644 --- a/FlexJobApi.Core/Utils/DbUtils/SelectQuery.cs +++ b/FlexJobApi.Core/Utils/DbUtils/SelectQuery.cs @@ -35,6 +35,6 @@ /// <summary> /// 鏁版嵁 /// </summary> - public object Data { get; set; } + public TData Data { get; set; } } } diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs index e3468a9..016884a 100644 --- a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs @@ -84,7 +84,7 @@ } if (request.HireStatus.IsNotNull() && logier.Type == EnumUserType.Personal) { - q = q.Where(it => it.Users.Any(u => u.UserId == logier.Id && request.HireStatus.Contains(u.HireStatus))); + q = q.Where(it => it.TaskInfoUsers.Any(u => u.UserId == logier.Id && request.HireStatus.Contains(u.HireStatus))); } var count = new GetTaskInfosQueryResultObjectData @@ -139,7 +139,7 @@ AddressDetail = t.AddressDetail, Latitude = t.Latitude, Longitude = t.Longitude, - UserCount = t.Users.Count(), + UserCount = t.TaskInfoUsers.Count(tu => tu.SignContractStatus == EnumTaskUserSignContractStatus.Pass), Status = t.Status, BeginTime = t.BeginTime, EndTime = t.EndTime, @@ -149,7 +149,7 @@ RecommendStatus = t.RecommendStatus, SettlementStatus = t.SettlementStatus, HireStatus = logier != null - ? t.Users.Where(it => it.UserId == logier.Id).Select(u => u.HireStatus).FirstOrDefault() + ? t.TaskInfoUsers.Where(it => it.UserId == logier.Id).Select(u => u.HireStatus).FirstOrDefault() : null }; var result = await request.PageModel.GetPagedListAsync<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>(s, cancellationToken); diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml index f9a714a..93ce8b7 100644 --- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml +++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml @@ -539,6 +539,14 @@ 鐢ㄦ埛绠�鍘嗘煡璇㈠鐞嗗櫒 </summary> </member> + <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumesQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumeQuery,System.Threading.CancellationToken)"> <summary> 鏌ヨ鐢ㄦ埛绠�鍘� diff --git a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs index 20c861c..961938c 100644 --- a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs +++ b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs @@ -18,6 +18,7 @@ public class UserResumeQueryHandler( IRepository<User> rep ) : + IRequestHandler<GetUserResumesQuery, GetUserResumesQueryResult>, IRequestHandler<GetUserResumeQuery, GetUserResumeQueryResult>, IRequestHandler<GetUserResumePersonalQuery, GetUserResumePersonalQueryResult>, IRequestHandler<GetUserResumeJobSeekingQuery, GetUserResumeJobSeekingQueryResult>, @@ -29,6 +30,66 @@ private readonly IRepository<User> rep = rep; /// <summary> + /// 鏌ヨ鐏靛伐鍒嗛〉鍒楄〃鏁版嵁 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetUserResumesQueryResult> Handle(GetUserResumesQuery request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + var q = rep.AsQueryable().AsNoTracking(); + if (request.UserExpectJobs.IsNotNull()) + { + q = q.Where(it => + it.UserExpectJobs.Any(j => + request.UserExpectJobs.Contains(j.ExpectJobCode) + || j.ExpectJob.ParentId.HasValue + && (request.UserExpectJobs.Contains(j.ExpectJob.Parent.Code)))); + } + if (request.Gender.HasValue) + { + q = q.Where(it => it.Gender == request.Gender); + } + if (request.PersonalIdentityCode.IsNotNull()) + { + q = q.Where(it => it.PersonalIdentityCode == request.PersonalIdentityCode); + } + if (request.AgeMin.HasValue) + { + q = q.Where(it => it.Age >= request.AgeMin); + } + if (request.AgeMax.HasValue) + { + q = q.Where(it => it.Age <= request.AgeMax); + } + if (request.UserCredentials.IsNotNull()) + { + q = q.Where(it => + it.UserCredentials.Any(c => + request.UserCredentials.Contains(c.TypeCode))); + } + var s = q.Select(it => new GetUserResumesQueryResultItem + { + Id = it.Id, + Avatar = it.Avatar, + Name = it.Name, + Gender = it.Gender, + IsReal = it.IsReal, + Age = it.Age, + PersonalIdentityCode = it.PersonalIdentityCode, + PersonalIdentityContent = it.PersonalIdentity.Content, + EducationalBackgroundCode = it.EducationalBackgroundCode, + EducationalBackgroundContent = it.EducationalBackground.Content, + TaskCount = it.TaskInfoUsers.Count(tu => tu.SignContractStatus == EnumTaskUserSignContractStatus.Pass), + WorkSeniority = it.WorkSeniority, + WorkExperience = it.WorkExperience + }); + var result = await request.PageModel.GetPagedListAsync<GetUserResumesQueryResult, GetUserResumesQueryResultItem>(s, cancellationToken); + return result; + } + + /// <summary> /// 鏌ヨ鐢ㄦ埛绠�鍘� /// </summary> /// <param name="request"></param> -- Gitblit v1.9.1