From 1759ab1a7d3e536eb812dcfbf5a7c8792ed28b2e Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期一, 11 八月 2025 09:04:29 +0800 Subject: [PATCH] feat:简历开发 --- FlexJobApi.Core/Entities/CommonServer/Resource.cs | 0 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs | 0 FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs | 37 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs | 38 FlexJobApi.Core/Entities/UserServer/Users/UserBankCard.cs | 0 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs | 35 FlexJobApi.Core/Entities/UserServer/Users/User.cs | 67 FlexJobApi.Core/Entities/UserServer/Users/UserAuth.cs | 0 FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs | 2 FlexJobApi.Core/FlexJobApi.Core.xml | 1481 ++++++-- FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryData.cs | 0 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoCredentialLimit.cs | 0 FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseAuth.cs | 0 FlexJobApi.sln | 9 FlexJobApi.Core/Entities/CommonServer/LogRecords/SmsLog.cs | 0 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs | 0 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs | 62 FlexJobApi.Core/Enums/Common/EnumResourceService.cs | 5 FlexJobApi.Core/Entities/CommonServer/LogRecords/ConsoleLog.cs | 0 FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryCategory.cs | 0 FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml | 174 + FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs | 3 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs | 17 FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs | 114 FlexJobApi.Core/Utils/JwtUtils/JwtUtils.cs | 7 FlexJobApi.CommonServer.Application/Schedules/Commands/ScheduleJobDetailCommandHandler.cs | 48 FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourceFieldsQuery.cs | 0 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs | 0 FlexJobApi.Core/Entities/UserServer/Powers/Menu.cs | 0 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs | 0 FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs | 0 FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.Designer.cs | 1954 +++++++++++ FlexJobApi.Core/Utils/ScheduleUtils/ResourceHttpJob.cs | 45 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs | 41 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs | 45 FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs | 2 FlexJobApi.Core/Entities/UserServer/Enterprises/Department.cs | 0 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs | 59 FlexJobApi.Core/Models/UserServer/Users/Repositories/UserRepository.cs | 43 FlexJobApi.FlexJobServer.Test/TestProgram.cs | 21 FlexJobApi.Core/Entities/UserServer/Powers/RoleResource.cs | 0 FlexJobApi.Core/Entities/HumanResourcesServer/Area.cs | 0 FlexJobApi.Core/Models/CommonServer/Schedules/Commands/SaveScheduleJobDetailCommand.cs | 31 FlexJobApi.Core/Entities/UserServer/UserResumes/UserExpectJob.cs | 8 FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs | 93 FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.Designer.cs | 429 ++ FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs | 2 FlexJobApi.Web.Entry/Startup.cs | 37 FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj | 22 FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.csproj | 4 FlexJobApi.Core/Utils/DbUtils/DbUtils.cs | 53 FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobDetail.cs | 56 FlexJobApi.Core/Entities/UserServer/UserResumes/UserPhoto.cs | 0 FlexJobApi.Core/Entities/CommonServer/LogRecords/DbAuditLog.cs | 0 FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResult.cs | 40 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs | 0 FlexJobApi.Core/Entities/UserServer/Powers/UserRole.cs | 0 FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs | 2 FlexJobApi.Core/Entities/CommonServer/LogRecords/QueueLog.cs | 0 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs | 0 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs | 0 FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourcesQuery.cs | 0 FlexJobApi.Core/Entities/CommonServer/LogRecords/ResourceLog.cs | 0 FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs | 133 FlexJobApi.Core/Entities/UserServer/Powers/Role.cs | 0 FlexJobApi.CommonServer.Application/Resources/Queries/GetResourcesQueryHandler.cs | 0 FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.cs | 278 + FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobTrigger.cs | 129 FlexJobApi.Core/Utils/LogUtils/LogServiceComponent.cs | 34 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs | 81 FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs | 319 + FlexJobApi.Core/Entities/UserServer/Powers/RoleMenu.cs | 0 FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.Designer.cs | 2117 ++++++++++++ FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs | 39 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs | 0 FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs | 19 FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs | 65 FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml | 122 FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.Designer.cs | 524 +++ FlexJobApi.CommonServer.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs | 0 FlexJobApi.Web.Entry/FlexJobApi.Web.Entry.csproj | 1 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs | 0 FlexJobApi.Core/Entities/UserServer/UserResumes/UserDepartment.cs | 0 FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs | 117 FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml | 142 FlexJobApi.Database.Migrations/REDEME.MD | 4 FlexJobApi.Core/Entities/CommonServer/LogRecords/ExceptionLog.cs | 0 FlexJobApi.Core/Enums/Common/EnumResourceController.cs | 5 FlexJobApi.Core/Entities/UserServer/UserResumes/UserCredential.cs | 1 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs | 254 + FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs | 67 FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs | 27 FlexJobApi.FlexJobServer.Test/Startup.cs | 42 FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.cs | 125 FlexJobApi.FlexJobServer.Test/Tasks/TaskUnitTest.cs | 31 FlexJobApi.Core/Entities/CommonServer/LogRecords/ScheduleJobTriggerTimeline.cs | 67 /dev/null | 1 FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.cs | 110 FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs | 0 FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs | 78 FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs | 0 FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoBenefit.cs | 0 FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.cs | 93 FlexJobApi.Core/FlexJobApi.Core.csproj | 4 104 files changed, 9,361 insertions(+), 754 deletions(-) diff --git a/FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs b/FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs similarity index 97% rename from FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs rename to FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs index ab817a7..22ee32b 100644 --- a/FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs +++ b/FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs @@ -9,7 +9,7 @@ using System.Text; using System.Threading.Tasks; -namespace FlexJobApi.FlexJobServer.Application +namespace FlexJobApi.CommonServer.Application { /// <summary> /// 瀛楀吀绫诲埆鍛戒护澶勭悊鍣� diff --git a/FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs b/FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs similarity index 99% rename from FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs rename to FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs index c96b463..3e15749 100644 --- a/FlexJobApi.FlexJobServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs +++ b/FlexJobApi.CommonServer.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs @@ -14,7 +14,7 @@ using System.Text; using System.Threading.Tasks; -namespace FlexJobApi.FlexJobServer.Application +namespace FlexJobApi.CommonServer.Application { /// <summary> /// 鏁版嵁瀛楀吀鍛戒护澶勭悊鍣� diff --git a/FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs similarity index 97% rename from FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs rename to FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs index 1309300..203eb16 100644 --- a/FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs +++ b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryCategoriesQueryHandler.cs @@ -9,7 +9,7 @@ using System.Text; using System.Threading.Tasks; -namespace FlexJobApi.FlexJobServer.Application +namespace FlexJobApi.CommonServer.Application { /// <summary> /// 鏁版嵁瀛楀吀绫诲埆鏌ヨ澶勭悊鍣� diff --git a/FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs similarity index 98% rename from FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs rename to FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs index 1a6e385..1d96d5b 100644 --- a/FlexJobApi.FlexJobServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs +++ b/FlexJobApi.CommonServer.Application/Dictionaries/Queries/DictionaryDatasQueryHandler.cs @@ -10,7 +10,7 @@ using System.Text; using System.Threading.Tasks; -namespace FlexJobApi.FlexJobServer.Application +namespace FlexJobApi.CommonServer.Application { /// <summary> /// 鏁版嵁瀛楀吀鏌ヨ澶勭悊鍣� diff --git a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj new file mode 100644 index 0000000..75e6e25 --- /dev/null +++ b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj @@ -0,0 +1,22 @@ +锘�<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net9.0</TargetFramework> + <DocumentationFile>FlexJobApi.CommonServer.Application.xml</DocumentationFile> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + + <ItemGroup> + <None Remove="FlexJobApi.CommonServer.Application.xml" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\FlexJobApi.Core\FlexJobApi.Core.csproj" /> + </ItemGroup> + + <ItemGroup> + <Folder Include="Schedules\Queries\" /> + </ItemGroup> + +</Project> diff --git a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml new file mode 100644 index 0000000..1db7ce4 --- /dev/null +++ b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml @@ -0,0 +1,174 @@ +<?xml version="1.0"?> +<doc> + <assembly> + <name>FlexJobApi.CommonServer.Application</name> + </assembly> + <members> + <member name="T:FlexJobApi.CommonServer.Application.DictionaryCategoryCommandHandler"> + <summary> + 瀛楀吀绫诲埆鍛戒护澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoryCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData})"> + <summary> + 瀛楀吀绫诲埆鍛戒护澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoryCommandHandler.Handle(FlexJobApi.Core.DeleteDictionaryCategoryCommand,System.Threading.CancellationToken)"> + <summary> + 鍒犻櫎鏁版嵁瀛楀吀绫诲埆 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoryCommandHandler.Handle(FlexJobApi.Core.SaveDictionaryCategoryCommand,System.Threading.CancellationToken)"> + <summary> + 淇濆瓨鏁版嵁瀛楀吀绫诲埆 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="T:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler"> + <summary> + 鏁版嵁瀛楀吀鍛戒护澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory})"> + <summary> + 鏁版嵁瀛楀吀鍛戒护澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SaveDictionaryDataCommand,System.Threading.CancellationToken)"> + <summary> + 淇濆瓨鏁版嵁瀛楀吀 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SetDictionaryDataIsDisabledCommand,System.Threading.CancellationToken)"> + <summary> + 璁剧疆鏁版嵁瀛楀吀鏄惁绂佺敤 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SyncHumanResourcesAreaDictionaryDataCommand,System.Threading.CancellationToken)"> + <summary> + 鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryDataCommandHandler.LoopSyncHumanResourcesAreaDictionaryData(System.Guid,System.Collections.Generic.List{FlexJobApi.Core.DictionaryData},System.Collections.Generic.List{FlexJobApi.Core.BaseArea},System.Collections.Generic.List{FlexJobApi.Core.BaseArea},System.Int32)"> + <summary> + 閫掑綊鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁 + </summary> + <param name="categoryId"></param> + <param name="entities"></param> + <param name="all"></param> + <param name="areas"></param> + <param name="deep"></param> + </member> + <member name="T:FlexJobApi.CommonServer.Application.DictionaryCategoriesQueryHandler"> + <summary> + 鏁版嵁瀛楀吀绫诲埆鏌ヨ澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoriesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory})"> + <summary> + 鏁版嵁瀛楀吀绫诲埆鏌ヨ澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoriesQueryHandler.Handle(FlexJobApi.Core.GetDictionaryCategoriesQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ鏁版嵁瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryCategoriesQueryHandler.Handle(FlexJobApi.Core.GetDictionaryCategorySelectQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ鏁版嵁瀛楀吀绫诲埆閫夋嫨鍣ㄦ暟鎹� + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="T:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler"> + <summary> + 鏁版嵁瀛楀吀鏌ヨ澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData})"> + <summary> + 鏁版嵁瀛楀吀鏌ヨ澶勭悊鍣� + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler.Handle(FlexJobApi.Core.GetDictionaryDatasQuery,System.Threading.CancellationToken)"> + <summary> + 鑾峰彇鏁版嵁瀛楀吀鍒嗛〉鍒楄〃鏁版嵁 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.CommonServer.Application.DictionaryDatasQueryHandler.Handle(FlexJobApi.Core.GetDictionaryDataSelectQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ鏁版嵁瀛楀吀閫夋嫨鍣� + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="T:FlexJobApi.CommonServer.Application.ScheduleJobDetailCommandHandler"> + <summary> + 浠诲姟璋冨害-浣滀笟 + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.ScheduleJobDetailCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource},FlexJobApi.Core.ResourceHttpUtils,Furion.Schedule.ISchedulerFactory)"> + <summary> + 浠诲姟璋冨害-浣滀笟 + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.ScheduleJobDetailCommandHandler.Handle(FlexJobApi.Core.SaveScheduleJobDetailCommand,System.Threading.CancellationToken)"> + <summary> + 淇濆瓨浠诲姟璋冨害-浣滀笟 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="T:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler"> + <summary> + 鑾峰彇璧勬簮瀛楁 + </summary> + </member> + <member name="M:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource})"> + <summary> + 鑾峰彇璧勬簮瀛楁 + </summary> + </member> + <member name="M:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler.Handle(FlexJobApi.Core.GetResourceFieldsQuery,System.Threading.CancellationToken)"> + <inheritdoc/> + </member> + <member name="T:FlexJobApi.UserServer.Application.GetResourcesQueryHandler"> + <summary> + 鑾峰彇璧勬簮鍒楄〃 + </summary> + </member> + <member name="M:FlexJobApi.UserServer.Application.GetResourcesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource})"> + <summary> + 鑾峰彇璧勬簮鍒楄〃 + </summary> + </member> + <member name="M:FlexJobApi.UserServer.Application.GetResourcesQueryHandler.Handle(FlexJobApi.Core.GetResourcesQuery,System.Threading.CancellationToken)"> + <inheritdoc/> + </member> + </members> +</doc> diff --git a/FlexJobApi.UserServer.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs b/FlexJobApi.CommonServer.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs similarity index 100% rename from FlexJobApi.UserServer.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs rename to FlexJobApi.CommonServer.Application/Resources/Queries/GetResourceFieldsQueryHandler.cs diff --git a/FlexJobApi.UserServer.Application/Resources/Queries/GetResourcesQueryHandler.cs b/FlexJobApi.CommonServer.Application/Resources/Queries/GetResourcesQueryHandler.cs similarity index 100% rename from FlexJobApi.UserServer.Application/Resources/Queries/GetResourcesQueryHandler.cs rename to FlexJobApi.CommonServer.Application/Resources/Queries/GetResourcesQueryHandler.cs diff --git a/FlexJobApi.CommonServer.Application/Schedules/Commands/ScheduleJobDetailCommandHandler.cs b/FlexJobApi.CommonServer.Application/Schedules/Commands/ScheduleJobDetailCommandHandler.cs new file mode 100644 index 0000000..e258937 --- /dev/null +++ b/FlexJobApi.CommonServer.Application/Schedules/Commands/ScheduleJobDetailCommandHandler.cs @@ -0,0 +1,48 @@ +锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using Furion.Schedule; +using MediatR; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using Microsoft.Extensions.Options; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.CommonServer.Application +{ + /// <summary> + /// 浠诲姟璋冨害-浣滀笟 + /// </summary> + public class ScheduleJobDetailCommandHandler( + IRepository<Resource> repResource, + ResourceHttpUtils resourceHttpUtils, + ISchedulerFactory schedulerFactory + ) : + IRequestHandler<SaveScheduleJobDetailCommand, bool> + { + private readonly IRepository<Resource> repResource = repResource; + private readonly ResourceHttpUtils resourceHttpUtils = resourceHttpUtils; + private readonly ISchedulerFactory schedulerFactory = schedulerFactory; + + /// <summary> + /// 淇濆瓨浠诲姟璋冨害-浣滀笟 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<bool> Handle(SaveScheduleJobDetailCommand request, CancellationToken cancellationToken) + { + // 鍒涘缓 HTTP 浣滀笟娑堟伅 + var jobBuilder = JobBuilder + .Create<ResourceHttpJob>() + .AddProperty(nameof(ResourceHttpJob), Schedular.Serialize(request)); + // 娣诲姞浣滀笟 + schedulerFactory.AddJob(jobBuilder, Triggers.Cron(request.Cron, Furion.TimeCrontab.CronStringFormat.WithSeconds)); + return Task.FromResult(true); + } + } +} diff --git a/FlexJobApi.Core/Entities/Common/DictionaryCategory.cs b/FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryCategory.cs similarity index 100% rename from FlexJobApi.Core/Entities/Common/DictionaryCategory.cs rename to FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryCategory.cs diff --git a/FlexJobApi.Core/Entities/Common/DictionaryData.cs b/FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryData.cs similarity index 100% rename from FlexJobApi.Core/Entities/Common/DictionaryData.cs rename to FlexJobApi.Core/Entities/CommonServer/Dictionaries/DictionaryData.cs diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/ConsoleLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ConsoleLog.cs similarity index 100% rename from FlexJobApi.Core/Entities/Common/LogRecords/ConsoleLog.cs rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/ConsoleLog.cs diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/DbAuditLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/DbAuditLog.cs similarity index 100% rename from FlexJobApi.Core/Entities/Common/LogRecords/DbAuditLog.cs rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/DbAuditLog.cs diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/ExceptionLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ExceptionLog.cs similarity index 100% rename from FlexJobApi.Core/Entities/Common/LogRecords/ExceptionLog.cs rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/ExceptionLog.cs diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/QueueLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/QueueLog.cs similarity index 100% rename from FlexJobApi.Core/Entities/Common/LogRecords/QueueLog.cs rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/QueueLog.cs diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/ResourceLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ResourceLog.cs similarity index 100% rename from FlexJobApi.Core/Entities/Common/LogRecords/ResourceLog.cs rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/ResourceLog.cs diff --git a/FlexJobApi.Core/Entities/CommonServer/LogRecords/ScheduleJobTriggerTimeline.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ScheduleJobTriggerTimeline.cs new file mode 100644 index 0000000..96d7ac1 --- /dev/null +++ b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ScheduleJobTriggerTimeline.cs @@ -0,0 +1,67 @@ +锘縰sing Furion.Schedule; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Json.Serialization; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 瀹氭椂浠诲姟-浣滀笟瑙﹀彂鍣ㄨ繍琛岃褰� + /// </summary> + public class ScheduleJobTriggerTimeline : CommonEntity<LogDbContextLocator> + { + /// <summary> + /// 浣滀笟 Id + /// </summary> + public string JobId { get; internal set; } + + /// <summary> + /// 浣滀笟瑙﹀彂鍣� Id + /// </summary> + public string TriggerId { get; internal set; } + + /// <summary> + /// 褰撳墠杩愯娆℃暟 + /// </summary> + public long NumberOfRuns { get; internal set; } + + /// <summary> + /// 鏈�杩戣繍琛屾椂闂� + /// </summary> + public DateTime? LastRunTime { get; internal set; } + + /// <summary> + /// 涓嬩竴娆¤繍琛屾椂闂� + /// </summary> + public DateTime? NextRunTime { get; internal set; } + + /// <summary> + /// 浣滀笟瑙﹀彂鍣ㄧ姸鎬� + /// </summary> + public TriggerStatus Status { get; internal set; } + + /// <summary> + /// 鏈鎵ц缁撴灉 + /// </summary> + public string Result { get; internal set; } + + /// <summary> + /// 鏈鎵ц鑰楁椂 + /// </summary> + public long ElapsedTime { get; internal set; } + + /// <summary> + /// 瑙﹀彂妯″紡 + /// </summary> + /// <remarks>榛樿涓哄畾鏃惰Е鍙戯紝0:瀹氭椂锛�1:鎵嬪姩</remarks> + public int Mode { get; internal set; } + + /// <summary> + /// 寮傚父淇℃伅 + /// </summary> + public string Exception { get; internal set; } + } +} diff --git a/FlexJobApi.Core/Entities/Common/LogRecords/SmsLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/SmsLog.cs similarity index 100% rename from FlexJobApi.Core/Entities/Common/LogRecords/SmsLog.cs rename to FlexJobApi.Core/Entities/CommonServer/LogRecords/SmsLog.cs diff --git a/FlexJobApi.Core/Entities/Common/Resource.cs b/FlexJobApi.Core/Entities/CommonServer/Resource.cs similarity index 100% rename from FlexJobApi.Core/Entities/Common/Resource.cs rename to FlexJobApi.Core/Entities/CommonServer/Resource.cs diff --git a/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobDetail.cs b/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobDetail.cs new file mode 100644 index 0000000..1928cc2 --- /dev/null +++ b/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobDetail.cs @@ -0,0 +1,56 @@ +锘縰sing Furion.DatabaseAccessor; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 瀹氭椂浠诲姟-浣滀笟璇︽儏 + /// </summary> + public class ScheduleJobDetail : CommonEntity, IDbAuditLogIgnore + { + /// <summary> + /// 浣滀笟Id + /// </summary> + public string JobId { get; set; } + + /// <summary> + /// 浣滀笟缁勫悕绉� + /// </summary> + public string GroupName { get; set; } + + /// <summary> + /// 浣滀笟澶勭悊绋嬪簭绫诲瀷锛屽瓨鍌ㄧ殑鏄被鍨嬬殑 FullName + /// </summary> + public string JobType { get; set; } + + /// <summary> + /// 浣滀笟澶勭悊绋嬪簭绫诲瀷鎵�鍦ㄧ▼搴忛泦锛屽瓨鍌ㄧ殑鏄▼搴忛泦 Name + /// </summary> + public string AssemblyName { get; set; } + + /// <summary> + /// 鎻忚堪淇℃伅 + /// </summary> + public string Description { get; set; } + + /// <summary> + /// 浣滀笟鎵ц鏂瑰紡锛屽鏋滆缃负 false锛岄偅涔堜娇鐢� 涓茶 鎵ц锛屽惁鍒� 骞惰 鎵ц + /// </summary> + public bool Concurrent { get; set; } + + /// <summary> + /// 鏄惁鎵弿 IJob 瀹炵幇绫� [Trigger] 鐗规�цЕ鍙戝櫒 + /// </summary> + public bool IncludeAnnotations { get; set; } + + /// <summary> + /// 浣滀笟淇℃伅棰濆鏁版嵁 + /// 鐢� Dictionary string, object 搴忓垪鍖栨垚瀛楃涓插瓨鍌� + /// </summary> + public string Properties { get; set; } + } +} diff --git a/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobTrigger.cs b/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobTrigger.cs new file mode 100644 index 0000000..1cf573b --- /dev/null +++ b/FlexJobApi.Core/Entities/CommonServer/Schedules/ScheduleJobTrigger.cs @@ -0,0 +1,129 @@ +锘縰sing Furion.DatabaseAccessor; +using Furion.Schedule; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 瀹氭椂浠诲姟-浣滀笟瑙﹀彂鍣� + /// </summary> + public class ScheduleJobTrigger : CommonEntity, IDbAuditLogIgnore + { + /// <summary> + /// 浣滀笟瑙﹀彂鍣↖d + /// </summary> + public string TriggerId { get; set; } + + /// <summary> + /// 浣滀笟Id + /// </summary> + public string JobId { get; set; } + + /// <summary> + /// 浣滀笟瑙﹀彂鍣ㄧ被鍨嬶紝瀛樺偍鐨勬槸绫诲瀷鐨� FullName + /// </summary> + public string TriggerType { get; set; } + + /// <summary> + /// 浣滀笟瑙﹀彂鍣ㄧ被鍨嬫墍鍦ㄧ▼搴忛泦锛屽瓨鍌ㄧ殑鏄▼搴忛泦 Name + /// </summary> + public string AssemblyName { get; set; } + + /// <summary> + /// 浣滀笟瑙﹀彂鍣ㄥ垵濮嬪寲鍙傛暟锛岃繍琛屾椂灏嗗弽搴忓垪鍖栦负 object[] 绫诲瀷骞朵綔涓烘瀯閫犲嚱鏁板弬鏁� + /// </summary> + public string Args { get; set; } + + /// <summary> + /// 鎻忚堪淇℃伅 + /// </summary> + public string Description { get; set; } + + /// <summary> + /// 浣滀笟瑙﹀彂鍣ㄧ姸鎬� + /// </summary> + public TriggerStatus Status { get; set; } + + /// <summary> + /// 璧峰鏃堕棿 + /// </summary> + public DateTime? StartTime { get; set; } + + /// <summary> + /// 缁撴潫鏃堕棿 + /// </summary> + public DateTime? EndTime { get; set; } + + /// <summary> + /// 鏈�杩戣繍琛屾椂闂� + /// </summary> + public DateTime? LastRunTime { get; set; } + + /// <summary> + /// 涓嬩竴娆¤繍琛屾椂闂� + /// </summary> + public DateTime? NextRunTime { get; set; } + + /// <summary> + /// 褰撳墠杩愯娆℃暟 + /// </summary> + public long NumberOfRuns { get; set; } + + /// <summary> + /// 鏈�澶цЕ鍙戞鏁帮紝0锛氫笉闄愬埗锛宯锛歂 娆� + /// </summary> + public long MaxNumberOfRuns { get; set; } + + /// <summary> + /// 鍑洪敊娆℃暟 + /// </summary> + public long NumberOfErrors { get; set; } + + /// <summary> + /// 鏈�澶у嚭閿欐鏁帮紝0锛氫笉闄愬埗锛宯锛歂 娆� + /// </summary> + public long MaxNumberOfErrors { get; set; } + + /// <summary> + /// 閲嶈瘯娆℃暟 + /// </summary> + public long NumRetries { get; set; } + + /// <summary> + /// 閲嶈瘯闂撮殧鏃堕棿锛屾绉掑崟浣� + /// </summary> + public int RetryTimeout { get; set; } + + /// <summary> + /// 鏄惁绔嬪嵆鍚姩锛岃缃� false 灏嗘墜鍔ㄥ惎鍔� + /// </summary> + public bool StartNow { get; set; } + + /// <summary> + /// 鏄惁鍚姩鏃舵墽琛屼竴娆� + /// 鍙�氳繃 StartTime 鎺у埗璧峰鏃堕棿 + /// 鑻� StartTime 涓� null 鎴栧皬浜庡綋鍓嶆椂闂达紝鍒欏湪绋嬪簭鍚姩鏃舵墽琛� + /// 鍚﹀垯鍦� StartTime 鏃堕棿鎵ц + /// </summary> + public bool RunOnStart { get; set; } + + /// <summary> + /// 鏄惁鍦ㄥ惎鍔ㄦ椂閲嶇疆鏈�澶цЕ鍙戞鏁扮瓑浜庝竴娆$殑浣滀笟 + /// </summary> + public bool ResetOnlyOnce { get; set; } + + /// <summary> + /// 鏈鎵ц缁撴灉 + /// </summary> + public string Result { get; set; } + + /// <summary> + /// 鏈鎵ц鑰楁椂 + /// </summary> + public long ElapsedTime { get; set; } + } +} \ No newline at end of file diff --git a/FlexJobApi.Core/Entities/Tasks/TaskInfo.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs similarity index 100% rename from FlexJobApi.Core/Entities/Tasks/TaskInfo.cs rename to FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs diff --git a/FlexJobApi.Core/Entities/Tasks/TaskInfoBenefit.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoBenefit.cs similarity index 100% rename from FlexJobApi.Core/Entities/Tasks/TaskInfoBenefit.cs rename to FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoBenefit.cs diff --git a/FlexJobApi.Core/Entities/Tasks/TaskInfoCredentialLimit.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoCredentialLimit.cs similarity index 100% rename from FlexJobApi.Core/Entities/Tasks/TaskInfoCredentialLimit.cs rename to FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoCredentialLimit.cs diff --git a/FlexJobApi.Core/Entities/Tasks/TaskInfoUser.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs similarity index 100% rename from FlexJobApi.Core/Entities/Tasks/TaskInfoUser.cs rename to FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfoUser.cs diff --git a/FlexJobApi.Core/Entities/HumanResources/Area.cs b/FlexJobApi.Core/Entities/HumanResourcesServer/Area.cs similarity index 100% rename from FlexJobApi.Core/Entities/HumanResources/Area.cs rename to FlexJobApi.Core/Entities/HumanResourcesServer/Area.cs diff --git a/FlexJobApi.Core/Entities/Users/Enterprises/Department.cs b/FlexJobApi.Core/Entities/UserServer/Enterprises/Department.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/Enterprises/Department.cs rename to FlexJobApi.Core/Entities/UserServer/Enterprises/Department.cs diff --git a/FlexJobApi.Core/Entities/Users/Enterprises/Enterprise.cs b/FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/Enterprises/Enterprise.cs rename to FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs diff --git a/FlexJobApi.Core/Entities/Users/Enterprises/EnterpriseAuth.cs b/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseAuth.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/Enterprises/EnterpriseAuth.cs rename to FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseAuth.cs diff --git a/FlexJobApi.Core/Entities/Users/Powers/Menu.cs b/FlexJobApi.Core/Entities/UserServer/Powers/Menu.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/Powers/Menu.cs rename to FlexJobApi.Core/Entities/UserServer/Powers/Menu.cs diff --git a/FlexJobApi.Core/Entities/Users/Powers/Role.cs b/FlexJobApi.Core/Entities/UserServer/Powers/Role.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/Powers/Role.cs rename to FlexJobApi.Core/Entities/UserServer/Powers/Role.cs diff --git a/FlexJobApi.Core/Entities/Users/Powers/RoleMenu.cs b/FlexJobApi.Core/Entities/UserServer/Powers/RoleMenu.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/Powers/RoleMenu.cs rename to FlexJobApi.Core/Entities/UserServer/Powers/RoleMenu.cs diff --git a/FlexJobApi.Core/Entities/Users/Powers/RoleResource.cs b/FlexJobApi.Core/Entities/UserServer/Powers/RoleResource.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/Powers/RoleResource.cs rename to FlexJobApi.Core/Entities/UserServer/Powers/RoleResource.cs diff --git a/FlexJobApi.Core/Entities/Users/Powers/UserRole.cs b/FlexJobApi.Core/Entities/UserServer/Powers/UserRole.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/Powers/UserRole.cs rename to FlexJobApi.Core/Entities/UserServer/Powers/UserRole.cs diff --git a/FlexJobApi.Core/Entities/Users/UserResumes/UserCredential.cs b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserCredential.cs similarity index 98% rename from FlexJobApi.Core/Entities/Users/UserResumes/UserCredential.cs rename to FlexJobApi.Core/Entities/UserServer/UserResumes/UserCredential.cs index b489180..e353b7d 100644 --- a/FlexJobApi.Core/Entities/Users/UserResumes/UserCredential.cs +++ b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserCredential.cs @@ -40,7 +40,6 @@ /// 璇佷功缂栧彿 /// </summary> [MaxLength(128)] - [Required] public string Code { get; set; } /// <summary> diff --git a/FlexJobApi.Core/Entities/Users/UserResumes/UserDepartment.cs b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserDepartment.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/UserResumes/UserDepartment.cs rename to FlexJobApi.Core/Entities/UserServer/UserResumes/UserDepartment.cs diff --git a/FlexJobApi.Core/Entities/Users/UserResumes/UserExpectJob.cs b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserExpectJob.cs similarity index 82% rename from FlexJobApi.Core/Entities/Users/UserResumes/UserExpectJob.cs rename to FlexJobApi.Core/Entities/UserServer/UserResumes/UserExpectJob.cs index b78a964..ef9a043 100644 --- a/FlexJobApi.Core/Entities/Users/UserResumes/UserExpectJob.cs +++ b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserExpectJob.cs @@ -27,19 +27,19 @@ /// <summary> /// 鏈熸湜宀椾綅缂栧彿 /// </summary> - public string PersonalIdentityCode { get; set; } + public string ExpectJobCode { get; set; } /// <summary> /// 鏈熸湜宀椾綅 /// </summary> - public DictionaryData PersonalIdentity { get; set; } + public DictionaryData ExpectJob { get; set; } public void Configure(EntityTypeBuilder<UserExpectJob> entityBuilder, DbContext dbContext, Type dbContextLocator) { entityBuilder - .HasOne(it => it.PersonalIdentity) + .HasOne(it => it.ExpectJob) .WithMany() - .HasForeignKey(it => it.PersonalIdentityCode) + .HasForeignKey(it => it.ExpectJobCode) .HasPrincipalKey(it => it.Code) .IsRequired() .OnDelete(DeleteBehavior.Restrict); diff --git a/FlexJobApi.Core/Entities/Users/UserResumes/UserPhoto.cs b/FlexJobApi.Core/Entities/UserServer/UserResumes/UserPhoto.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/UserResumes/UserPhoto.cs rename to FlexJobApi.Core/Entities/UserServer/UserResumes/UserPhoto.cs diff --git a/FlexJobApi.Core/Entities/Users/Users/User.cs b/FlexJobApi.Core/Entities/UserServer/Users/User.cs similarity index 75% rename from FlexJobApi.Core/Entities/Users/Users/User.cs rename to FlexJobApi.Core/Entities/UserServer/Users/User.cs index 9b039d3..3a61e75 100644 --- a/FlexJobApi.Core/Entities/Users/Users/User.cs +++ b/FlexJobApi.Core/Entities/UserServer/Users/User.cs @@ -85,6 +85,11 @@ public EnumUserGender? Gender { get; set; } /// <summary> + /// 鐢熸棩 + /// </summary> + public DateTime? Birthday { get; set; } + + /// <summary> /// 骞撮緞 /// </summary> public int? Age { get; set; } @@ -134,6 +139,56 @@ /// 甯搁┗鍩庡競 /// </summary> public DictionaryData City { get; set; } + + /// <summary> + /// 韬唤缂栧彿 + /// </summary> + public string PersonalIdentityCode { get; set; } + + /// <summary> + /// 韬唤 + /// </summary> + public DictionaryData PersonalIdentity { get; set; } + + /// <summary> + /// 瀛﹀巻缂栧彿 + /// </summary> + public string EducationalBackgroundCode { get; set; } + + /// <summary> + /// 瀛﹀巻 + /// </summary> + public DictionaryData EducationalBackground { get; set; } + + /// <summary> + /// 绌洪棽鏃堕棿 + /// </summary> + public EnumPersonalFreeTime? FreeTime { get; set; } + + /// <summary> + /// 姹傝亴鐘舵�� + /// </summary> + public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; } + + /// <summary> + /// 宸ヤ綔璧勫巻 + /// </summary> + public string WorkSeniority { get; set; } + + /// <summary> + /// 宸ヤ綔缁忛獙 + /// </summary> + public string WorkExperience { get; set; } + + /// <summary> + /// 韬珮 + /// </summary> + public int? Height { get; set; } + + /// <summary> + /// 浣撻噸 + /// </summary> + public int? Weight { get; set; } /// <summary> /// 澶囨敞 @@ -193,6 +248,18 @@ .HasForeignKey(it => it.CityCode) .HasPrincipalKey(it => it.Code) .OnDelete(DeleteBehavior.Restrict); + entityBuilder + .HasOne(it => it.PersonalIdentity) + .WithMany() + .HasForeignKey(it => it.PersonalIdentityCode) + .HasPrincipalKey(it => it.Code) + .OnDelete(DeleteBehavior.Restrict); + entityBuilder + .HasOne(it => it.EducationalBackground) + .WithMany() + .HasForeignKey(it => it.EducationalBackgroundCode) + .HasPrincipalKey(it => it.Code) + .OnDelete(DeleteBehavior.Restrict); } public IEnumerable<User> HasData(DbContext dbContext, Type dbContextLocator) diff --git a/FlexJobApi.Core/Entities/Users/Users/UserAuth.cs b/FlexJobApi.Core/Entities/UserServer/Users/UserAuth.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/Users/UserAuth.cs rename to FlexJobApi.Core/Entities/UserServer/Users/UserAuth.cs diff --git a/FlexJobApi.Core/Entities/Users/Users/UserBankCard.cs b/FlexJobApi.Core/Entities/UserServer/Users/UserBankCard.cs similarity index 100% rename from FlexJobApi.Core/Entities/Users/Users/UserBankCard.cs rename to FlexJobApi.Core/Entities/UserServer/Users/UserBankCard.cs diff --git a/FlexJobApi.Core/Entities/Users/UserResumes/UserResume.cs b/FlexJobApi.Core/Entities/Users/UserResumes/UserResume.cs deleted file mode 100644 index 61b469b..0000000 --- a/FlexJobApi.Core/Entities/Users/UserResumes/UserResume.cs +++ /dev/null @@ -1,93 +0,0 @@ -锘縰sing Furion.DatabaseAccessor; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FlexJobApi.Core -{ - /// <summary> - /// 鐢ㄦ埛绠�鍘� - /// </summary> - public class UserResume : CommonEntity, IEntityTypeBuilder<UserResume> - { - /// <summary> - /// 鐢ㄦ埛Id - /// </summary> - public Guid UserId { get; set; } - - /// <summary> - /// 鐢ㄦ埛 - /// </summary> - public User User { get; set; } - - /// <summary> - /// 韬唤缂栧彿 - /// </summary> - public string PersonalIdentityCode { get; set; } - - /// <summary> - /// 韬唤 - /// </summary> - public DictionaryData PersonalIdentity { get; set; } - - /// <summary> - /// 瀛﹀巻缂栧彿 - /// </summary> - public string EducationalBackgroundCode { get; set; } - - /// <summary> - /// 瀛﹀巻 - /// </summary> - public DictionaryData EducationalBackground { get; set; } - - /// <summary> - /// 绌洪棽鏃堕棿 - /// </summary> - public EnumPersonalFreeTime? FreeTime { get; set; } - - /// <summary> - /// 姹傝亴鐘舵�� - /// </summary> - public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; } - - /// <summary> - /// 宸ヤ綔璧勫巻 - /// </summary> - public string WorkSeniority { get; set; } - - /// <summary> - /// 宸ヤ綔缁忛獙 - /// </summary> - public string WorkExperience { get; set; } - - /// <summary> - /// 韬珮 - /// </summary> - public int? Height { get; set; } - - /// <summary> - /// 浣撻噸 - /// </summary> - public int? Weight { get; set; } - - public void Configure(EntityTypeBuilder<UserResume> entityBuilder, DbContext dbContext, Type dbContextLocator) - { - entityBuilder - .HasOne(it => it.PersonalIdentity) - .WithMany() - .HasForeignKey(it => it.PersonalIdentityCode) - .HasPrincipalKey(it => it.Code) - .OnDelete(DeleteBehavior.Restrict); - entityBuilder - .HasOne(it => it.EducationalBackground) - .WithMany() - .HasForeignKey(it => it.EducationalBackgroundCode) - .HasPrincipalKey(it => it.Code) - .OnDelete(DeleteBehavior.Restrict); - } - } -} diff --git a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs index e15b5df..2e1f1ad 100644 --- a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs +++ b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs @@ -48,6 +48,11 @@ [ResourceController(Service = EnumResourceService.UserServer)] User, /// <summary> + /// 鐢ㄦ埛绠�鍘� + /// </summary> + [ResourceController(Service = EnumResourceService.UserServer)] + UserResume, + /// <summary> /// 浼佷笟淇℃伅 /// </summary> [ResourceController(Service = EnumResourceService.UserServer)] diff --git a/FlexJobApi.Core/Enums/Common/EnumResourceService.cs b/FlexJobApi.Core/Enums/Common/EnumResourceService.cs index 8cd6d61..bd0c5c8 100644 --- a/FlexJobApi.Core/Enums/Common/EnumResourceService.cs +++ b/FlexJobApi.Core/Enums/Common/EnumResourceService.cs @@ -18,6 +18,11 @@ [ResourceService(ApplicationName = "FlexJobApi.FlexJobServer.Application", RouteArea = "flexjob", ServiceName = "Local_FlexJobApi")] FlexJobServer, /// <summary> + /// 閫氱敤鏈嶅姟 + /// </summary> + [ResourceService(ApplicationName = "FlexJobApi.CommonServer.Application", RouteArea = "common", ServiceName = "Local_FlexJobApi")] + CommonServer, + /// <summary> /// 鐢ㄦ埛鏈嶅姟 /// </summary> [ResourceService(ApplicationName = "FlexJobApi.UserServer.Application", RouteArea = "user", ServiceName = "Local_FlexJobApi")] diff --git a/FlexJobApi.Core/FlexJobApi.Core.csproj b/FlexJobApi.Core/FlexJobApi.Core.csproj index 8dee6b3..b34761c 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.csproj +++ b/FlexJobApi.Core/FlexJobApi.Core.csproj @@ -34,4 +34,8 @@ </None> </ItemGroup> + <ItemGroup> + <Folder Include="Models\CommonServer\Schedules\Queries\" /> + </ItemGroup> + </Project> diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index c3b2dec..77bd1a7 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -359,6 +359,62 @@ 鑰楁椂姣鏁� </summary> </member> + <member name="T:FlexJobApi.Core.ScheduleJobTriggerTimeline"> + <summary> + 瀹氭椂浠诲姟-浣滀笟瑙﹀彂鍣ㄨ繍琛岃褰� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.JobId"> + <summary> + 浣滀笟 Id + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.TriggerId"> + <summary> + 浣滀笟瑙﹀彂鍣� Id + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.NumberOfRuns"> + <summary> + 褰撳墠杩愯娆℃暟 + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.LastRunTime"> + <summary> + 鏈�杩戣繍琛屾椂闂� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.NextRunTime"> + <summary> + 涓嬩竴娆¤繍琛屾椂闂� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.Status"> + <summary> + 浣滀笟瑙﹀彂鍣ㄧ姸鎬� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.Result"> + <summary> + 鏈鎵ц缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.ElapsedTime"> + <summary> + 鏈鎵ц鑰楁椂 + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.Mode"> + <summary> + 瑙﹀彂妯″紡 + </summary> + <remarks>榛樿涓哄畾鏃惰Е鍙戯紝0:瀹氭椂锛�1:鎵嬪姩</remarks> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTriggerTimeline.Exception"> + <summary> + 寮傚父淇℃伅 + </summary> + </member> <member name="T:FlexJobApi.Core.SmsLog"> <summary> 鐭俊鏃ュ織 @@ -494,54 +550,168 @@ 鏄惁宸茶繃鏈� </summary> </member> - <member name="T:FlexJobApi.Core.BaseArea"> + <member name="T:FlexJobApi.Core.ScheduleJobDetail"> <summary> - 鍦板尯 + 瀹氭椂浠诲姟-浣滀笟璇︽儏 </summary> </member> - <member name="P:FlexJobApi.Core.BaseArea.ParentId"> + <member name="P:FlexJobApi.Core.ScheduleJobDetail.JobId"> <summary> - 涓婄骇鍦板尯缂栧彿 + 浣滀笟Id </summary> </member> - <member name="P:FlexJobApi.Core.BaseArea.AreaCode"> + <member name="P:FlexJobApi.Core.ScheduleJobDetail.GroupName"> <summary> - 鍦板尯缂栧彿 + 浣滀笟缁勫悕绉� </summary> </member> - <member name="P:FlexJobApi.Core.BaseArea.AreaName"> + <member name="P:FlexJobApi.Core.ScheduleJobDetail.JobType"> <summary> - 鍦板尯鍚嶇О + 浣滀笟澶勭悊绋嬪簭绫诲瀷锛屽瓨鍌ㄧ殑鏄被鍨嬬殑 FullName </summary> </member> - <member name="P:FlexJobApi.Core.BaseArea.QuickQuery"> + <member name="P:FlexJobApi.Core.ScheduleJobDetail.AssemblyName"> <summary> - 蹇嵎鏌ヨ + 浣滀笟澶勭悊绋嬪簭绫诲瀷鎵�鍦ㄧ▼搴忛泦锛屽瓨鍌ㄧ殑鏄▼搴忛泦 Name </summary> </member> - <member name="P:FlexJobApi.Core.BaseArea.Description"> + <member name="P:FlexJobApi.Core.ScheduleJobDetail.Description"> <summary> - 鎻忚堪 + 鎻忚堪淇℃伅 </summary> </member> - <member name="P:FlexJobApi.Core.BaseArea.Layer"> + <member name="P:FlexJobApi.Core.ScheduleJobDetail.Concurrent"> <summary> - 灞傜骇 + 浣滀笟鎵ц鏂瑰紡锛屽鏋滆缃负 false锛岄偅涔堜娇鐢� 涓茶 鎵ц锛屽惁鍒� 骞惰 鎵ц </summary> </member> - <member name="P:FlexJobApi.Core.BaseArea.Sort"> + <member name="P:FlexJobApi.Core.ScheduleJobDetail.IncludeAnnotations"> <summary> - 鎺掑簭 + 鏄惁鎵弿 IJob 瀹炵幇绫� [Trigger] 鐗规�цЕ鍙戝櫒 </summary> </member> - <member name="P:FlexJobApi.Core.BaseArea.SimpleSpelling"> + <member name="P:FlexJobApi.Core.ScheduleJobDetail.Properties"> <summary> - 绠�鎷� + 浣滀笟淇℃伅棰濆鏁版嵁 + 鐢� Dictionary string, object 搴忓垪鍖栨垚瀛楃涓插瓨鍌� </summary> </member> - <member name="P:FlexJobApi.Core.BaseArea.IsEnable"> + <member name="T:FlexJobApi.Core.ScheduleJobTrigger"> <summary> - 鏄惁鍚敤 + 瀹氭椂浠诲姟-浣滀笟瑙﹀彂鍣� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.TriggerId"> + <summary> + 浣滀笟瑙﹀彂鍣↖d + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.JobId"> + <summary> + 浣滀笟Id + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.TriggerType"> + <summary> + 浣滀笟瑙﹀彂鍣ㄧ被鍨嬶紝瀛樺偍鐨勬槸绫诲瀷鐨� FullName + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.AssemblyName"> + <summary> + 浣滀笟瑙﹀彂鍣ㄧ被鍨嬫墍鍦ㄧ▼搴忛泦锛屽瓨鍌ㄧ殑鏄▼搴忛泦 Name + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.Args"> + <summary> + 浣滀笟瑙﹀彂鍣ㄥ垵濮嬪寲鍙傛暟锛岃繍琛屾椂灏嗗弽搴忓垪鍖栦负 object[] 绫诲瀷骞朵綔涓烘瀯閫犲嚱鏁板弬鏁� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.Description"> + <summary> + 鎻忚堪淇℃伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.Status"> + <summary> + 浣滀笟瑙﹀彂鍣ㄧ姸鎬� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.StartTime"> + <summary> + 璧峰鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.EndTime"> + <summary> + 缁撴潫鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.LastRunTime"> + <summary> + 鏈�杩戣繍琛屾椂闂� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.NextRunTime"> + <summary> + 涓嬩竴娆¤繍琛屾椂闂� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.NumberOfRuns"> + <summary> + 褰撳墠杩愯娆℃暟 + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.MaxNumberOfRuns"> + <summary> + 鏈�澶цЕ鍙戞鏁帮紝0锛氫笉闄愬埗锛宯锛歂 娆� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.NumberOfErrors"> + <summary> + 鍑洪敊娆℃暟 + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.MaxNumberOfErrors"> + <summary> + 鏈�澶у嚭閿欐鏁帮紝0锛氫笉闄愬埗锛宯锛歂 娆� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.NumRetries"> + <summary> + 閲嶈瘯娆℃暟 + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.RetryTimeout"> + <summary> + 閲嶈瘯闂撮殧鏃堕棿锛屾绉掑崟浣� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.StartNow"> + <summary> + 鏄惁绔嬪嵆鍚姩锛岃缃� false 灏嗘墜鍔ㄥ惎鍔� + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.RunOnStart"> + <summary> + 鏄惁鍚姩鏃舵墽琛屼竴娆� + 鍙�氳繃 StartTime 鎺у埗璧峰鏃堕棿 + 鑻� StartTime 涓� null 鎴栧皬浜庡綋鍓嶆椂闂达紝鍒欏湪绋嬪簭鍚姩鏃舵墽琛� + 鍚﹀垯鍦� StartTime 鏃堕棿鎵ц + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.ResetOnlyOnce"> + <summary> + 鏄惁鍦ㄥ惎鍔ㄦ椂閲嶇疆鏈�澶цЕ鍙戞鏁扮瓑浜庝竴娆$殑浣滀笟 + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.Result"> + <summary> + 鏈鎵ц缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.ScheduleJobTrigger.ElapsedTime"> + <summary> + 鏈鎵ц鑰楁椂 </summary> </member> <member name="T:FlexJobApi.Core.TaskInfo"> @@ -777,6 +947,56 @@ <member name="P:FlexJobApi.Core.TaskInfoUser.SignContractTime"> <summary> 绛剧害鏃堕棿 + </summary> + </member> + <member name="T:FlexJobApi.Core.BaseArea"> + <summary> + 鍦板尯 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaseArea.ParentId"> + <summary> + 涓婄骇鍦板尯缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaseArea.AreaCode"> + <summary> + 鍦板尯缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaseArea.AreaName"> + <summary> + 鍦板尯鍚嶇О + </summary> + </member> + <member name="P:FlexJobApi.Core.BaseArea.QuickQuery"> + <summary> + 蹇嵎鏌ヨ + </summary> + </member> + <member name="P:FlexJobApi.Core.BaseArea.Description"> + <summary> + 鎻忚堪 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaseArea.Layer"> + <summary> + 灞傜骇 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaseArea.Sort"> + <summary> + 鎺掑簭 + </summary> + </member> + <member name="P:FlexJobApi.Core.BaseArea.SimpleSpelling"> + <summary> + 绠�鎷� + </summary> + </member> + <member name="P:FlexJobApi.Core.BaseArea.IsEnable"> + <summary> + 鏄惁鍚敤 </summary> </member> <member name="T:FlexJobApi.Core.Department"> @@ -1404,12 +1624,12 @@ 鐢ㄦ埛淇℃伅 </summary> </member> - <member name="P:FlexJobApi.Core.UserExpectJob.PersonalIdentityCode"> + <member name="P:FlexJobApi.Core.UserExpectJob.ExpectJobCode"> <summary> 鏈熸湜宀椾綅缂栧彿 </summary> </member> - <member name="P:FlexJobApi.Core.UserExpectJob.PersonalIdentity"> + <member name="P:FlexJobApi.Core.UserExpectJob.ExpectJob"> <summary> 鏈熸湜宀椾綅 </summary> @@ -1432,71 +1652,6 @@ <member name="P:FlexJobApi.Core.UserPhoto.Img"> <summary> 鐓х墖 - </summary> - </member> - <member name="T:FlexJobApi.Core.UserResume"> - <summary> - 鐢ㄦ埛绠�鍘� - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.UserId"> - <summary> - 鐢ㄦ埛Id - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.User"> - <summary> - 鐢ㄦ埛 - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.PersonalIdentityCode"> - <summary> - 韬唤缂栧彿 - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.PersonalIdentity"> - <summary> - 韬唤 - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.EducationalBackgroundCode"> - <summary> - 瀛﹀巻缂栧彿 - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.EducationalBackground"> - <summary> - 瀛﹀巻 - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.FreeTime"> - <summary> - 绌洪棽鏃堕棿 - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.JobSeekingStatus"> - <summary> - 姹傝亴鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.WorkSeniority"> - <summary> - 宸ヤ綔璧勫巻 - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.WorkExperience"> - <summary> - 宸ヤ綔缁忛獙 - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.Height"> - <summary> - 韬珮 - </summary> - </member> - <member name="P:FlexJobApi.Core.UserResume.Weight"> - <summary> - 浣撻噸 </summary> </member> <member name="T:FlexJobApi.Core.User"> @@ -1559,6 +1714,11 @@ 鎬у埆 </summary> </member> + <member name="P:FlexJobApi.Core.User.Birthday"> + <summary> + 鐢熸棩 + </summary> + </member> <member name="P:FlexJobApi.Core.User.Age"> <summary> 骞撮緞 @@ -1607,6 +1767,56 @@ <member name="P:FlexJobApi.Core.User.City"> <summary> 甯搁┗鍩庡競 + </summary> + </member> + <member name="P:FlexJobApi.Core.User.PersonalIdentityCode"> + <summary> + 韬唤缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.User.PersonalIdentity"> + <summary> + 韬唤 + </summary> + </member> + <member name="P:FlexJobApi.Core.User.EducationalBackgroundCode"> + <summary> + 瀛﹀巻缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.User.EducationalBackground"> + <summary> + 瀛﹀巻 + </summary> + </member> + <member name="P:FlexJobApi.Core.User.FreeTime"> + <summary> + 绌洪棽鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.User.JobSeekingStatus"> + <summary> + 姹傝亴鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.User.WorkSeniority"> + <summary> + 宸ヤ綔璧勫巻 + </summary> + </member> + <member name="P:FlexJobApi.Core.User.WorkExperience"> + <summary> + 宸ヤ綔缁忛獙 + </summary> + </member> + <member name="P:FlexJobApi.Core.User.Height"> + <summary> + 韬珮 + </summary> + </member> + <member name="P:FlexJobApi.Core.User.Weight"> + <summary> + 浣撻噸 </summary> </member> <member name="P:FlexJobApi.Core.User.Remark"> @@ -1959,6 +2169,11 @@ 鐢ㄦ埛淇℃伅 </summary> </member> + <member name="F:FlexJobApi.Core.EnumResourceController.UserResume"> + <summary> + 鐢ㄦ埛绠�鍘� + </summary> + </member> <member name="F:FlexJobApi.Core.EnumResourceController.Enterprise"> <summary> 浼佷笟淇℃伅 @@ -1997,6 +2212,11 @@ <member name="F:FlexJobApi.Core.EnumResourceService.FlexJobServer"> <summary> 鐏垫椿鐢ㄥ伐鏈嶅姟 + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumResourceService.CommonServer"> + <summary> + 閫氱敤鏈嶅姟 </summary> </member> <member name="F:FlexJobApi.Core.EnumResourceService.UserServer"> @@ -2615,21 +2835,6 @@ 缂栧彿 </summary> </member> - <member name="T:FlexJobApi.Core.Models.Common.DictionaryDataQueryModel"> - <summary> - 鏁版嵁瀛楀吀鏌ヨ妯″瀷 - </summary> - </member> - <member name="P:FlexJobApi.Core.Models.Common.DictionaryDataQueryModel.Code"> - <summary> - 缂栧彿 - </summary> - </member> - <member name="P:FlexJobApi.Core.Models.Common.DictionaryDataQueryModel.Content"> - <summary> - 鍚嶇О - </summary> - </member> <member name="T:FlexJobApi.Core.DeleteDictionaryCategoryCommand"> <summary> 鍒犻櫎鏁版嵁瀛楀吀绫诲埆 @@ -3003,6 +3208,136 @@ <member name="P:FlexJobApi.Core.GetDictionaryDatasQueryResultItemCategory.Name"> <summary> 鍚嶇О + </summary> + </member> + <member name="T:FlexJobApi.Core.GetResourceFieldsQuery"> + <summary> + 鑾峰彇璧勬簮瀛楁 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceFieldsQuery.Id"> + <summary> + Id + </summary> + </member> + <member name="T:FlexJobApi.Core.GetResourceFieldsQueryResultItem"> + <summary> + 鑾峰彇璧勬簮瀛楁-缁撴灉-椤� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceFieldsQueryResultItem.Code"> + <summary> + 缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceFieldsQueryResultItem.Name"> + <summary> + 鍚嶇О + </summary> + </member> + <member name="T:FlexJobApi.Core.GetResourcesQuery"> + <summary> + 鑾峰彇璧勬簮鍒楄〃 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQuery.Method"> + <summary> + 璇锋眰鏂瑰紡 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQuery.Keywords"> + <summary> + 鍏抽敭瀛� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQuery.RoleId"> + <summary> + 瑙掕壊Id + </summary> + </member> + <member name="T:FlexJobApi.Core.GetResourcesQueryResultItem"> + <summary> + 鑾峰彇璧勬簮鍒楄〃-缁撴灉-椤� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Id"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.IsChecked"> + <summary> + 鏄惁閫変腑锛堢敤浜庤鑹叉巿鏉冿級 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Controller"> + <summary> + 鎺у埗鍣� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ActionName"> + <summary> + 濮旀墭鍚嶇О + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Code"> + <summary> + 缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Name"> + <summary> + 鍚嶇О + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Method"> + <summary> + 璇锋眰鏂瑰紡 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Route"> + <summary> + 璺敱 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.RequestTypeName"> + <summary> + 璇锋眰绫诲瀷鍚嶇О + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.RequestTypeFullName"> + <summary> + 璇锋眰绫诲瀷鍏ㄥ悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ResponseTypeName"> + <summary> + 鍝嶅簲绫诲瀷鍚嶇О + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ResponseTypeFullName"> + <summary> + 鍝嶅簲绫诲瀷鍏ㄥ悕 + </summary> + </member> + <member name="T:FlexJobApi.Core.SaveScheduleJobDetailCommand"> + <summary> + 淇濆瓨浠诲姟璋冨害-浣滀笟 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveScheduleJobDetailCommand.ResourceId"> + <summary> + 璧勬簮Id + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveScheduleJobDetailCommand.Body"> + <summary> + 璇锋眰鏁版嵁 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveScheduleJobDetailCommand.Cron"> + <summary> + Cron琛ㄨ揪寮� </summary> </member> <member name="T:FlexJobApi.Core.DeleteTaskInfoCommand"> @@ -4739,116 +5074,6 @@ 澶囨敞 </summary> </member> - <member name="T:FlexJobApi.Core.GetResourceFieldsQuery"> - <summary> - 鑾峰彇璧勬簮瀛楁 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourceFieldsQuery.Id"> - <summary> - Id - </summary> - </member> - <member name="T:FlexJobApi.Core.GetResourceFieldsQueryResultItem"> - <summary> - 鑾峰彇璧勬簮瀛楁-缁撴灉-椤� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourceFieldsQueryResultItem.Code"> - <summary> - 缂栧彿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourceFieldsQueryResultItem.Name"> - <summary> - 鍚嶇О - </summary> - </member> - <member name="T:FlexJobApi.Core.GetResourcesQuery"> - <summary> - 鑾峰彇璧勬簮鍒楄〃 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQuery.Method"> - <summary> - 璇锋眰鏂瑰紡 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQuery.Keywords"> - <summary> - 鍏抽敭瀛� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQuery.RoleId"> - <summary> - 瑙掕壊Id - </summary> - </member> - <member name="T:FlexJobApi.Core.GetResourcesQueryResultItem"> - <summary> - 鑾峰彇璧勬簮鍒楄〃-缁撴灉-椤� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Id"> - <summary> - Id - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.IsChecked"> - <summary> - 鏄惁閫変腑锛堢敤浜庤鑹叉巿鏉冿級 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Controller"> - <summary> - 鎺у埗鍣� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ActionName"> - <summary> - 濮旀墭鍚嶇О - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Code"> - <summary> - 缂栧彿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Name"> - <summary> - 鍚嶇О - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Method"> - <summary> - 璇锋眰鏂瑰紡 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.Route"> - <summary> - 璺敱 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.RequestTypeName"> - <summary> - 璇锋眰绫诲瀷鍚嶇О - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.RequestTypeFullName"> - <summary> - 璇锋眰绫诲瀷鍏ㄥ悕 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ResponseTypeName"> - <summary> - 鍝嶅簲绫诲瀷鍚嶇О - </summary> - </member> - <member name="P:FlexJobApi.Core.GetResourcesQueryResultItem.ResponseTypeFullName"> - <summary> - 鍝嶅簲绫诲瀷鍏ㄥ悕 - </summary> - </member> <member name="T:FlexJobApi.Core.DeleteRoleCommand"> <summary> 鍒犻櫎瑙掕壊 @@ -5099,6 +5324,621 @@ 鏄惁閫変腑 </summary> </member> + <member name="T:FlexJobApi.Core.DeleteUserResumeCredentialCommand"> + <summary> + 鍒犻櫎鐢ㄦ埛绠�鍘�-璧勬牸璇佷功 + </summary> + </member> + <member name="T:FlexJobApi.Core.SaveUserResumeCredentialCommand"> + <summary> + 淇濆瓨鐢ㄦ埛绠�鍘�-璧勬牸璇佷功 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.TypeCode"> + <summary> + 璇佷功绫诲瀷缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.Code"> + <summary> + 璇佷功缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.IsForever"> + <summary> + 姘镐箙璇佷功 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.StartDate"> + <summary> + 寮�濮嬫棩鏈� + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.EndDate"> + <summary> + 缁撴潫鏃ユ湡 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.IssueUnit"> + <summary> + 鍙戣瘉鍗曚綅 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.Img"> + <summary> + 璇佷功姝i潰鐓х墖 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeCredentialCommand.BackImg"> + <summary> + 璇佷功鍙嶉潰鐓х墖 + </summary> + </member> + <member name="T:FlexJobApi.Core.SaveUserResumeDetailCommand"> + <summary> + 淇濆瓨鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeDetailCommand.Height"> + <summary> + 韬珮 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeDetailCommand.Weight"> + <summary> + 浣撻噸 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeDetailCommand.Photos"> + <summary> + 鐢熸椿鐓� + </summary> + </member> + <member name="T:FlexJobApi.Core.SaveUserResumeJobSeekingCommand"> + <summary> + 淇濆瓨鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeJobSeekingCommand.UserExpectJobs"> + <summary> + 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeJobSeekingCommand.FreeTime"> + <summary> + 绌洪棽鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeJobSeekingCommand.JobSeekingStatus"> + <summary> + 姹傝亴鐘舵�� + </summary> + </member> + <member name="T:FlexJobApi.Core.SaveUserResumePersonalCommand"> + <summary> + 淇濆瓨鐢ㄦ埛绠�鍘�-涓汉淇℃伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.Avatar"> + <summary> + 澶村儚 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.Name"> + <summary> + 濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.Identity"> + <summary> + 韬唤璇佸彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.PersonalIdentityCode"> + <summary> + 韬唤缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.EducationalBackgroundCode"> + <summary> + 瀛﹀巻缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.ProvinceCode"> + <summary> + 甯搁┗鐪佷唤缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumePersonalCommand.CityCode"> + <summary> + 甯搁┗鍩庡競缂栧彿 + </summary> + </member> + <member name="T:FlexJobApi.Core.SaveUserResumeWorkExperienceCommand"> + <summary> + 淇濆瓨鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeWorkExperienceCommand.WorkSeniority"> + <summary> + 宸ヤ綔璧勫巻 + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveUserResumeWorkExperienceCommand.WorkExperience"> + <summary> + 宸ヤ綔缁忛獙 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeCredentialQuery"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialQuery.Id"> + <summary> + Id + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeCredentialQueryResult"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.Id"> + <summary> + 璧勬牸璇佷功Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.TypeCode"> + <summary> + 璇佷功绫诲瀷缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.TypeContent"> + <summary> + 璇佷功绫诲瀷 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.Code"> + <summary> + 璇佷功缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.IsForever"> + <summary> + 姘镐箙璇佷功 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.StartDate"> + <summary> + 寮�濮嬫棩鏈� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.EndDate"> + <summary> + 缁撴潫鏃ユ湡 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.IssueUnit"> + <summary> + 鍙戣瘉鍗曚綅 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.Img"> + <summary> + 璇佷功姝i潰鐓х墖 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialQueryResult.BackImg"> + <summary> + 璇佷功鍙嶉潰鐓х墖 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeCredentialsQuery"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功鍒楄〃 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeCredentialsQueryResultItem"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功鍒楄〃-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialsQueryResultItem.Id"> + <summary> + 璧勬牸璇佷功Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialsQueryResultItem.TypeCode"> + <summary> + 璇佷功绫诲瀷缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeCredentialsQueryResultItem.TypeContent"> + <summary> + 璇佷功绫诲瀷 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeDetailQuery"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeDetailQueryResult"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeDetailQueryResult.Height"> + <summary> + 韬珮 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeDetailQueryResult.Weight"> + <summary> + 浣撻噸 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeDetailQueryResult.Photos"> + <summary> + 鐢熸椿鐓� + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeJobSeekingQuery"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeJobSeekingQueryResult"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResult.UserExpectJobs"> + <summary> + 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResult.FreeTime"> + <summary> + 绌洪棽鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResult.JobSeekingStatus"> + <summary> + 姹傝亴鐘舵�� + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeJobSeekingQueryResultExpectJob"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜-缁撴灉-鏈熸湜宀椾綅 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResultExpectJob.ExpectJobParentCode"> + <summary> + 鏈熸湜宀椾綅涓婄骇缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResultExpectJob.ExpectJobCode"> + <summary> + 鏈熸湜宀椾綅缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeJobSeekingQueryResultExpectJob.ExpectJobContent"> + <summary> + 鏈熸湜宀椾綅 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumePersonalQuery"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-涓汉淇℃伅 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumePersonalQueryResult"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-涓汉淇℃伅-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.Avatar"> + <summary> + 澶村儚 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.Name"> + <summary> + 濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.Identity"> + <summary> + 韬唤璇佸彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.PersonalIdentityCode"> + <summary> + 韬唤缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.PersonalIdentityContent"> + <summary> + 韬唤 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.EducationalBackgroundCode"> + <summary> + 瀛﹀巻缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.EducationalBackgroundContent"> + <summary> + 瀛﹀巻 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.ProvinceCode"> + <summary> + 甯搁┗鐪佷唤缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.ProvinceContent"> + <summary> + 甯搁┗鐪佷唤 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.CityCode"> + <summary> + 甯搁┗鍩庡競缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumePersonalQueryResult.CityContent"> + <summary> + 甯搁┗鍩庡競 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeQuery"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQuery.UserId"> + <summary> + 鐢ㄦ埛Id + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeQueryResult"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Id"> + <summary> + 鐢ㄦ埛Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Avatar"> + <summary> + 澶村儚 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Name"> + <summary> + 濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PhoneNumber"> + <summary> + 鎵嬫満鍙� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Identity"> + <summary> + 韬唤璇佸彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Gender"> + <summary> + 鎬у埆 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Age"> + <summary> + 骞撮緞 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.IsReal"> + <summary> + 鏄惁瀹炲悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.TaskCount"> + <summary> + 涓婂矖娆℃暟 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ProvinceCode"> + <summary> + 甯搁┗鐪佷唤缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ProvinceContent"> + <summary> + 甯搁┗鐪佷唤 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.CityCode"> + <summary> + 甯搁┗鍩庡競缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.CityContent"> + <summary> + 甯搁┗鍩庡競 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PersonalIdentityCode"> + <summary> + 韬唤缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PersonalIdentityContent"> + <summary> + 韬唤 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EducationalBackgroundCode"> + <summary> + 瀛﹀巻缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EducationalBackgroundContent"> + <summary> + 瀛﹀巻 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserExpectJobs"> + <summary> + 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.FreeTime"> + <summary> + 绌洪棽鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.JobSeekingStatus"> + <summary> + 姹傝亴鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserCredentials"> + <summary> + 鐢ㄦ埛淇℃伅璧勬牸璇佷功 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.WorkSeniority"> + <summary> + 宸ヤ綔璧勫巻 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.WorkExperience"> + <summary> + 宸ヤ綔缁忛獙 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Height"> + <summary> + 韬珮 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Weight"> + <summary> + 浣撻噸 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Photos"> + <summary> + 鐢熸椿鐓� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PhotoImgs"> + <summary> + 鐢熸椿鐓� + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeQueryResultExpectJob"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultExpectJob.PersonalIdentityCode"> + <summary> + 鏈熸湜宀椾綅缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultExpectJob.PersonalIdentityContent"> + <summary> + 鏈熸湜宀椾綅 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeQueryResultCredential"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.TypeCode"> + <summary> + 璇佷功绫诲瀷缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.TypeContent"> + <summary> + 璇佷功绫诲瀷 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.Code"> + <summary> + 璇佷功缂栧彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.IsForever"> + <summary> + 姘镐箙璇佷功 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.StartDate"> + <summary> + 寮�濮嬫棩鏈� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.EndDate"> + <summary> + 缁撴潫鏃ユ湡 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.IssueUnit"> + <summary> + 鍙戣瘉鍗曚綅 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.Img"> + <summary> + 璇佷功姝i潰鐓х墖 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultCredential.BackImg"> + <summary> + 璇佷功鍙嶉潰鐓х墖 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeQueryResultPhoto"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeQueryResultPhoto.Img"> + <summary> + 鐓х墖 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeWorkExperienceQuery"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetUserResumeWorkExperienceQueryResult"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙-缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeWorkExperienceQueryResult.WorkSeniority"> + <summary> + 宸ヤ綔璧勫巻 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetUserResumeWorkExperienceQueryResult.WorkExperience"> + <summary> + 宸ヤ綔缁忛獙 + </summary> + </member> <member name="T:FlexJobApi.Core.SetUserInfoRolesCommand"> <summary> 璁剧疆鐢ㄦ埛淇℃伅瑙掕壊 @@ -5239,150 +6079,19 @@ 鏄惁閫変腑 </summary> </member> - <member name="T:FlexJobApi.Core.GetUserResumeQuery"> + <member name="T:FlexJobApi.Core.UserRepository"> <summary> - 鏌ヨ鐢ㄦ埛绠�鍘� + 鐢ㄦ埛浠撳簱 </summary> </member> - <member name="P:FlexJobApi.Core.GetUserResumeQuery.UserId"> + <member name="M:FlexJobApi.Core.UserRepository.GetPersonalQueryable(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User},System.Boolean,FlexJobApi.Core.CurrentLogier)"> <summary> - 鐢ㄦ埛Id + 鑾峰彇涓汉鐢ㄦ埛鏌ヨ </summary> - </member> - <member name="T:FlexJobApi.Core.GetUserResumeQueryResult"> - <summary> - 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Id"> - <summary> - Id - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Avatar"> - <summary> - 澶村儚 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Name"> - <summary> - 濮撳悕 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PhoneNumber"> - <summary> - 鎵嬫満鍙� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Identity"> - <summary> - 韬唤璇佸彿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Gender"> - <summary> - 鎬у埆 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Age"> - <summary> - 骞撮緞 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.IsReal"> - <summary> - 鏄惁瀹炲悕 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.TaskCount"> - <summary> - 涓婂矖娆℃暟 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ProvinceCode"> - <summary> - 甯搁┗鐪佷唤缂栧彿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.ProvinceContent"> - <summary> - 甯搁┗鐪佷唤 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.CityCode"> - <summary> - 甯搁┗鍩庡競缂栧彿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.CityContent"> - <summary> - 甯搁┗鍩庡競 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PersonalIdentityCode"> - <summary> - 韬唤缂栧彿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.PersonalIdentityContent"> - <summary> - 韬唤 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EducationalBackgroundCode"> - <summary> - 瀛﹀巻缂栧彿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.EducationalBackgroundContent"> - <summary> - 瀛﹀巻 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserExpectJobs"> - <summary> - 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.FreeTime"> - <summary> - 绌洪棽鏃堕棿 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.JobSeekingStatus"> - <summary> - 姹傝亴鐘舵�� - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.UserCredentials"> - <summary> - 鐢ㄦ埛淇℃伅璧勬牸璇佷功 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.WorkSeniority"> - <summary> - 宸ヤ綔璧勫巻 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.WorkExperience"> - <summary> - 宸ヤ綔缁忛獙 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Height"> - <summary> - 韬珮 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Weight"> - <summary> - 浣撻噸 - </summary> - </member> - <member name="P:FlexJobApi.Core.GetUserResumeQueryResult.Photos"> - <summary> - 鐢熸椿鐓� - </summary> + <param name="rep"></param> + <param name="tracking"></param> + <param name="logier"></param> + <returns></returns> </member> <member name="T:FlexJobApi.Core.AliyunOptions"> <summary> @@ -5917,6 +6626,41 @@ 閲婃斁闈炴墭绠¤祫婧� </summary> </member> + <member name="P:FlexJobApi.Core.IFriendlyResult.TraceId"> + <summary> + 璺熻釜Id + </summary> + </member> + <member name="P:FlexJobApi.Core.IFriendlyResult.Code"> + <summary> + 鐘舵�佺爜 + </summary> + </member> + <member name="P:FlexJobApi.Core.IFriendlyResult.ErrorCode"> + <summary> + 閿欒鐮� + </summary> + </member> + <member name="P:FlexJobApi.Core.IFriendlyResult.Success"> + <summary> + 鎵ц鎴愬姛 + </summary> + </member> + <member name="P:FlexJobApi.Core.IFriendlyResult.Msg"> + <summary> + 閿欒淇℃伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.IFriendlyResult.Extras"> + <summary> + 闄勫姞鏁版嵁 + </summary> + </member> + <member name="P:FlexJobApi.Core.IFriendlyResult.Timestamp"> + <summary> + 鏃堕棿鎴� + </summary> + </member> <member name="T:FlexJobApi.Core.FriendlyResult`1"> <summary> 鍙嬪ソ杩斿洖鍊� @@ -6133,6 +6877,16 @@ </summary> <returns></returns> </member> + <member name="P:FlexJobApi.Core.TokenDataModel.AccessToken"> + <summary> + 鐢ㄦ埛璁块棶浠ょ墝 + </summary> + </member> + <member name="P:FlexJobApi.Core.TokenDataModel.RefreshToken"> + <summary> + 鍒锋柊浠ょ墝 + </summary> + </member> <member name="M:FlexJobApi.Core.ResourceHttpUtils.SendHttpAsync``2(``0,FlexJobApi.Core.IResourceHttpProvider)"> <summary> 鍙戦�丠TTP璇锋眰 @@ -6143,11 +6897,11 @@ <param name="provider"></param> <returns></returns> </member> - <member name="M:FlexJobApi.Core.ResourceHttpUtils.GetHealthyServiceDomain(FlexJobApi.Core.ResourceModel)"> + <member name="M:FlexJobApi.Core.ResourceHttpUtils.GetHealthyServiceDomain(System.String)"> <summary> 鑾峰彇鍋ュ悍鏈嶅姟鍩熷悕 </summary> - <param name="resource"></param> + <param name="serviceName"></param> <returns></returns> </member> <member name="P:FlexJobApi.Core.ResourceModel.TraceId"> @@ -6300,16 +7054,6 @@ 璧勬簮宸ュ叿 </summary> </member> - <member name="M:FlexJobApi.Core.ResourceUtils.SendHttpAsync``2(``0,FlexJobApi.Core.IResourceHttpProvider)"> - <summary> - 鍙戦�丠TTP璇锋眰 - </summary> - <typeparam name="TRequest"></typeparam> - <typeparam name="TResponse"></typeparam> - <param name="request"></param> - <param name="provider"></param> - <returns></returns> - </member> <member name="M:FlexJobApi.Core.ResourceUtils.BuildDynamicControllersAsync"> <summary> 鐢熸垚鍔ㄦ�佹帶鍒跺櫒 @@ -6345,6 +7089,17 @@ <param name="type"></param> <returns></returns> </member> + <member name="T:FlexJobApi.Core.DbJobPersistence"> + <summary> + 浣滀笟鎸佷箙鍖栵紙鏁版嵁搴擄級 + </summary> + </member> + <member name="M:FlexJobApi.Core.DbJobPersistence.PreloadAsync(System.Threading.CancellationToken)"> + <summary> + 浣滀笟璋冨害鏈嶅姟鍚姩鏃� + </summary> + <returns></returns> + </member> <member name="M:FlexJobApi.Core.AliyunSmsUtils.SendAsync(System.String,FlexJobApi.Core.EnumSmsTemplateCode,System.String,System.Threading.CancellationToken)"> <summary> 鍙戦�佺煭淇� diff --git a/FlexJobApi.Core/Models/Common/DictionaryDataQueryModel.cs b/FlexJobApi.Core/Models/Common/DictionaryDataQueryModel.cs deleted file mode 100644 index 667c582..0000000 --- a/FlexJobApi.Core/Models/Common/DictionaryDataQueryModel.cs +++ /dev/null @@ -1,24 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FlexJobApi.Core.Models.Common -{ - /// <summary> - /// 鏁版嵁瀛楀吀鏌ヨ妯″瀷 - /// </summary> - public class DictionaryDataQueryModel - { - /// <summary> - /// 缂栧彿 - /// </summary> - public string Code { get; set; } - - /// <summary> - /// 鍚嶇О - /// </summary> - public string Content { get; set; } - } -} diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs similarity index 100% rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/DeleteDictionaryCategoryCommand.cs diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs similarity index 100% rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryCategoryCommand.cs diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs similarity index 100% rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SaveDictionaryDataCommand.cs diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs similarity index 100% rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SetDictionaryDataIsDisabledCommand.cs diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs similarity index 100% rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Commands/SyncHumanResourcesAreaDictionaryDataCommand.cs diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs similarity index 100% rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategoriesQuery.cs diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs similarity index 100% rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryCategorySelectQuery.cs diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs similarity index 100% rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDataSelectQuery.cs diff --git a/FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs b/FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs similarity index 100% rename from FlexJobApi.Core/Models/FlexJobServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs rename to FlexJobApi.Core/Models/CommonServer/Dictionaries/Queries/GetDictionaryDatasQuery.cs diff --git a/FlexJobApi.Core/Models/UserServer/Resources/Queries/GetResourceFieldsQuery.cs b/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourceFieldsQuery.cs similarity index 100% rename from FlexJobApi.Core/Models/UserServer/Resources/Queries/GetResourceFieldsQuery.cs rename to FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourceFieldsQuery.cs diff --git a/FlexJobApi.Core/Models/UserServer/Resources/Queries/GetResourcesQuery.cs b/FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourcesQuery.cs similarity index 100% rename from FlexJobApi.Core/Models/UserServer/Resources/Queries/GetResourcesQuery.cs rename to FlexJobApi.Core/Models/CommonServer/Resources/Queries/GetResourcesQuery.cs diff --git a/FlexJobApi.Core/Models/CommonServer/Schedules/Commands/SaveScheduleJobDetailCommand.cs b/FlexJobApi.Core/Models/CommonServer/Schedules/Commands/SaveScheduleJobDetailCommand.cs new file mode 100644 index 0000000..c03d847 --- /dev/null +++ b/FlexJobApi.Core/Models/CommonServer/Schedules/Commands/SaveScheduleJobDetailCommand.cs @@ -0,0 +1,31 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 淇濆瓨浠诲姟璋冨害-浣滀笟 + /// </summary> + [Resource([EnumResourceController.Resource])] + public class SaveScheduleJobDetailCommand : IRequest<bool> + { + /// <summary> + /// 璧勬簮Id + /// </summary> + public Guid ResourceId { get; set; } + + /// <summary> + /// 璇锋眰鏁版嵁 + /// </summary> + public string Body { get; set; } + + /// <summary> + /// Cron琛ㄨ揪寮� + /// </summary> + public string Cron { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs index b20ca6f..af6affd 100644 --- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs +++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs @@ -1,5 +1,4 @@ -锘縰sing FlexJobApi.Core.Models.Common; -using Mapster; +锘縰sing Mapster; using MediatR; using Newtonsoft.Json; using System; diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs new file mode 100644 index 0000000..b9bf3d2 --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/DeleteUserResumeCredentialCommand.cs @@ -0,0 +1,17 @@ +锘縰sing 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 DeleteUserResumeCredentialCommand : DeleteDataCommand + { + + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs new file mode 100644 index 0000000..4da28c3 --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeCredentialCommand.cs @@ -0,0 +1,62 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 淇濆瓨鐢ㄦ埛绠�鍘�-璧勬牸璇佷功 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class SaveUserResumeCredentialCommand : SaveDataCommand + { + /// <summary> + /// 璇佷功绫诲瀷缂栧彿 + /// </summary> + [Required] + public string TypeCode { get; set; } + + /// <summary> + /// 璇佷功缂栧彿 + /// </summary> + [MaxLength(128)] + public string Code { get; set; } + + /// <summary> + /// 姘镐箙璇佷功 + /// </summary> + public bool IsForever { get; set; } + + /// <summary> + /// 寮�濮嬫棩鏈� + /// </summary> + [Required] + public DateTime StartDate { get; set; } + + /// <summary> + /// 缁撴潫鏃ユ湡 + /// </summary> + [Required] + public DateTime EndDate { get; set; } + + /// <summary> + /// 鍙戣瘉鍗曚綅 + /// </summary> + public string IssueUnit { get; set; } + + /// <summary> + /// 璇佷功姝i潰鐓х墖 + /// </summary> + [Required] + public string Img { get; set; } + + /// <summary> + /// 璇佷功鍙嶉潰鐓х墖 + /// </summary> + public string BackImg { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs new file mode 100644 index 0000000..b84a2ed --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeDetailCommand.cs @@ -0,0 +1,38 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 淇濆瓨鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class SaveUserResumeDetailCommand : IRequest<Guid> + { + public SaveUserResumeDetailCommand() + { + Photos = []; + } + + /// <summary> + /// 韬珮 + /// </summary> + public int? Height { get; set; } + + /// <summary> + /// 浣撻噸 + /// </summary> + public int? Weight { get; set; } + + /// <summary> + /// 鐢熸椿鐓� + /// </summary> + public List<string> Photos { get; set; } + + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs new file mode 100644 index 0000000..61087bf --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeJobSeekingCommand.cs @@ -0,0 +1,41 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 淇濆瓨鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class SaveUserResumeJobSeekingCommand : IRequest<Guid> + { + public SaveUserResumeJobSeekingCommand() + { + UserExpectJobs = []; + } + + /// <summary> + /// 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅 + /// </summary> + [Required] + public List<string> UserExpectJobs { get; set; } + + /// <summary> + /// 绌洪棽鏃堕棿 + /// </summary> + [Required] + public EnumPersonalFreeTime? FreeTime { get; set; } + + /// <summary> + /// 姹傝亴鐘舵�� + /// </summary> + [Required] + public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; } + + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs new file mode 100644 index 0000000..e70b71f --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumePersonalCommand.cs @@ -0,0 +1,59 @@ +锘縰sing Furion.DataValidation; +using MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 淇濆瓨鐢ㄦ埛绠�鍘�-涓汉淇℃伅 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class SaveUserResumePersonalCommand : IRequest<Guid> + { + /// <summary> + /// 澶村儚 + /// </summary> + public string Avatar { get; set; } + + /// <summary> + /// 濮撳悕 + /// </summary> + [MaxLength(32)] + public string Name { get; set; } + + /// <summary> + /// 韬唤璇佸彿 + /// </summary> + [Required, DataValidation(ValidationTypes.IDCard)] + public string Identity { get; set; } + + /// <summary> + /// 韬唤缂栧彿 + /// </summary> + [Required] + public string PersonalIdentityCode { get; set; } + + /// <summary> + /// 瀛﹀巻缂栧彿 + /// </summary> + [Required] + public string EducationalBackgroundCode { get; set; } + + /// <summary> + /// 甯搁┗鐪佷唤缂栧彿 + /// </summary> + [Required] + public string ProvinceCode { get; set; } + + /// <summary> + /// 甯搁┗鍩庡競缂栧彿 + /// </summary> + [Required] + public string CityCode { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs new file mode 100644 index 0000000..4fd4ace --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Commands/SaveUserResumeWorkExperienceCommand.cs @@ -0,0 +1,27 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 淇濆瓨鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class SaveUserResumeWorkExperienceCommand : IRequest<Guid> + { + /// <summary> + /// 宸ヤ綔璧勫巻 + /// </summary> + public string WorkSeniority { get; set; } + + /// <summary> + /// 宸ヤ綔缁忛獙 + /// </summary> + public string WorkExperience { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs new file mode 100644 index 0000000..15c6b9b --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialQuery.cs @@ -0,0 +1,78 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class GetUserResumeCredentialQuery : IRequest<GetUserResumeCredentialQueryResult> + { + /// <summary> + /// Id + /// </summary> + public Guid Id { get; set; } + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功-缁撴灉 + /// </summary> + public class GetUserResumeCredentialQueryResult + { + /// <summary> + /// 璧勬牸璇佷功Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 璇佷功绫诲瀷缂栧彿 + /// </summary> + public string TypeCode { get; set; } + + /// <summary> + /// 璇佷功绫诲瀷 + /// </summary> + public string TypeContent { get; set; } + + /// <summary> + /// 璇佷功缂栧彿 + /// </summary> + public string Code { get; set; } + + /// <summary> + /// 姘镐箙璇佷功 + /// </summary> + public bool IsForever { get; set; } + + /// <summary> + /// 寮�濮嬫棩鏈� + /// </summary> + public DateTime StartDate { get; set; } + + /// <summary> + /// 缁撴潫鏃ユ湡 + /// </summary> + public DateTime EndDate { get; set; } + + /// <summary> + /// 鍙戣瘉鍗曚綅 + /// </summary> + public string IssueUnit { get; set; } + + /// <summary> + /// 璇佷功姝i潰鐓х墖 + /// </summary> + public string Img { get; set; } + + /// <summary> + /// 璇佷功鍙嶉潰鐓х墖 + /// </summary> + public string BackImg { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs new file mode 100644 index 0000000..dd3004f --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeCredentialsQuery.cs @@ -0,0 +1,39 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功鍒楄〃 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class GetUserResumeCredentialsQuery : IRequest<List<GetUserResumeCredentialsQueryResultItem>> + { + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功鍒楄〃-缁撴灉 + /// </summary> + public class GetUserResumeCredentialsQueryResultItem + { + /// <summary> + /// 璧勬牸璇佷功Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 璇佷功绫诲瀷缂栧彿 + /// </summary> + public string TypeCode { get; set; } + + /// <summary> + /// 璇佷功绫诲瀷 + /// </summary> + public string TypeContent { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs new file mode 100644 index 0000000..a95460a --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeDetailQuery.cs @@ -0,0 +1,45 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class GetUserResumeDetailQuery : IRequest<GetUserResumeDetailQueryResult> + { + + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅-缁撴灉 + /// </summary> + public class GetUserResumeDetailQueryResult + { + public GetUserResumeDetailQueryResult() + { + Photos = []; + } + + /// <summary> + /// 韬珮 + /// </summary> + public int? Height { get; set; } + + /// <summary> + /// 浣撻噸 + /// </summary> + public int? Weight { get; set; } + + /// <summary> + /// 鐢熸椿鐓� + /// </summary> + public List<string> Photos { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs new file mode 100644 index 0000000..52da082 --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeJobSeekingQuery.cs @@ -0,0 +1,67 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class GetUserResumeJobSeekingQuery : IRequest<GetUserResumeJobSeekingQueryResult> + { + + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜-缁撴灉 + /// </summary> + public class GetUserResumeJobSeekingQueryResult + { + public GetUserResumeJobSeekingQueryResult() + { + UserExpectJobs = []; + } + + /// <summary> + /// 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅 + /// </summary> + public List<GetUserResumeJobSeekingQueryResultExpectJob> UserExpectJobs { get; set; } + + /// <summary> + /// 绌洪棽鏃堕棿 + /// </summary> + public EnumPersonalFreeTime? FreeTime { get; set; } + + /// <summary> + /// 姹傝亴鐘舵�� + /// </summary> + public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; } + + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜-缁撴灉-鏈熸湜宀椾綅 + /// </summary> + public class GetUserResumeJobSeekingQueryResultExpectJob + { + /// <summary> + /// 鏈熸湜宀椾綅涓婄骇缂栧彿 + /// </summary> + public string ExpectJobParentCode { get; set; } + + /// <summary> + /// 鏈熸湜宀椾綅缂栧彿 + /// </summary> + public string ExpectJobCode { get; set; } + + /// <summary> + /// 鏈熸湜宀椾綅 + /// </summary> + public string ExpectJobContent { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs new file mode 100644 index 0000000..56d9c6a --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumePersonalQuery.cs @@ -0,0 +1,81 @@ +锘縰sing Furion.DataValidation; +using MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-涓汉淇℃伅 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class GetUserResumePersonalQuery : IRequest<GetUserResumePersonalQueryResult> + { + + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-涓汉淇℃伅-缁撴灉 + /// </summary> + public class GetUserResumePersonalQueryResult + { + /// <summary> + /// 澶村儚 + /// </summary> + public string Avatar { get; set; } + + /// <summary> + /// 濮撳悕 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 韬唤璇佸彿 + /// </summary> + public string Identity { 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> + public string ProvinceCode { get; set; } + + /// <summary> + /// 甯搁┗鐪佷唤 + /// </summary> + public string ProvinceContent { get; set; } + + /// <summary> + /// 甯搁┗鍩庡競缂栧彿 + /// </summary> + public string CityCode { get; set; } + + /// <summary> + /// 甯搁┗鍩庡競 + /// </summary> + public string CityContent { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs new file mode 100644 index 0000000..c71f632 --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeQuery.cs @@ -0,0 +1,254 @@ +锘縰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.UserResume])] + public class GetUserResumeQuery : IRequest<GetUserResumeQueryResult> + { + /// <summary> + /// 鐢ㄦ埛Id + /// </summary> + public Guid? UserId { get; set; } + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉 + /// </summary> + public class GetUserResumeQueryResult + { + public GetUserResumeQueryResult() + { + UserExpectJobs = []; + UserCredentials = []; + Photos = []; + } + + /// <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 string PhoneNumber { 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> + public bool IsReal { get; set; } + + /// <summary> + /// 涓婂矖娆℃暟 + /// </summary> + [AdaptIgnore] + public int TaskCount { get; set; } + + /// <summary> + /// 甯搁┗鐪佷唤缂栧彿 + /// </summary> + public string ProvinceCode { get; set; } + + /// <summary> + /// 甯搁┗鐪佷唤 + /// </summary> + public string ProvinceContent { get; set; } + + /// <summary> + /// 甯搁┗鍩庡競缂栧彿 + /// </summary> + public string CityCode { get; set; } + + /// <summary> + /// 甯搁┗鍩庡競 + /// </summary> + public string CityContent { 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> + public List<GetUserResumeQueryResultExpectJob> UserExpectJobs { get; set; } + + /// <summary> + /// 绌洪棽鏃堕棿 + /// </summary> + public EnumPersonalFreeTime? FreeTime { get; set; } + + /// <summary> + /// 姹傝亴鐘舵�� + /// </summary> + public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; } + + /// <summary> + /// 鐢ㄦ埛淇℃伅璧勬牸璇佷功 + /// </summary> + public List<GetUserResumeQueryResultCredential> UserCredentials { get; set; } + + /// <summary> + /// 宸ヤ綔璧勫巻 + /// </summary> + public string WorkSeniority { get; set; } + + /// <summary> + /// 宸ヤ綔缁忛獙 + /// </summary> + public string WorkExperience { get; set; } + + /// <summary> + /// 韬珮 + /// </summary> + public int? Height { get; set; } + + /// <summary> + /// 浣撻噸 + /// </summary> + public int? Weight { get; set; } + + /// <summary> + /// 鐢熸椿鐓� + /// </summary> + [JsonIgnore, SwaggerIgnore] + public List<GetUserResumeQueryResultPhoto> Photos { get; set; } + + /// <summary> + /// 鐢熸椿鐓� + /// </summary> + [AdaptIgnore] + public List<string> PhotoImgs => Photos.Select(it => it.Img).ToList(); + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉 + /// </summary> + public class GetUserResumeQueryResultExpectJob + { + /// <summary> + /// 鏈熸湜宀椾綅缂栧彿 + /// </summary> + public string PersonalIdentityCode { get; set; } + + /// <summary> + /// 鏈熸湜宀椾綅 + /// </summary> + public string PersonalIdentityContent { get; set; } + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉 + /// </summary> + public class GetUserResumeQueryResultCredential + { + /// <summary> + /// 璇佷功绫诲瀷缂栧彿 + /// </summary> + public string TypeCode { get; set; } + + /// <summary> + /// 璇佷功绫诲瀷 + /// </summary> + public string TypeContent { get; set; } + + /// <summary> + /// 璇佷功缂栧彿 + /// </summary> + public string Code { get; set; } + + /// <summary> + /// 姘镐箙璇佷功 + /// </summary> + public bool IsForever { get; set; } + + /// <summary> + /// 寮�濮嬫棩鏈� + /// </summary> + public DateTime StartDate { get; set; } + + /// <summary> + /// 缁撴潫鏃ユ湡 + /// </summary> + public DateTime EndDate { get; set; } + + /// <summary> + /// 鍙戣瘉鍗曚綅 + /// </summary> + public string IssueUnit { get; set; } + + /// <summary> + /// 璇佷功姝i潰鐓х墖 + /// </summary> + public string Img { get; set; } + + /// <summary> + /// 璇佷功鍙嶉潰鐓х墖 + /// </summary> + public string BackImg { get; set; } + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉 + /// </summary> + public class GetUserResumeQueryResultPhoto + { + /// <summary> + /// 鐓х墖 + /// </summary> + public string Img { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs new file mode 100644 index 0000000..f1b8594 --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/UserResumes/Queries/GetUserResumeWorkExperienceQuery.cs @@ -0,0 +1,35 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙 + /// </summary> + [Resource([EnumResourceController.UserResume])] + public class GetUserResumeWorkExperienceQuery : IRequest<GetUserResumeWorkExperienceQueryResult> + { + + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙-缁撴灉 + /// </summary> + public class GetUserResumeWorkExperienceQueryResult + { + /// <summary> + /// 宸ヤ綔璧勫巻 + /// </summary> + public string WorkSeniority { get; set; } + + /// <summary> + /// 宸ヤ綔缁忛獙 + /// </summary> + public string WorkExperience { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserResumeQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserResumeQuery.cs deleted file mode 100644 index 0ff3b61..0000000 --- a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserResumeQuery.cs +++ /dev/null @@ -1,158 +0,0 @@ -锘縰sing MediatR; -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FlexJobApi.Core -{ - /// <summary> - /// 鏌ヨ鐢ㄦ埛绠�鍘� - /// </summary> - [Resource([EnumResourceController.User])] - public class GetUserResumeQuery : IRequest<GetUserResumeQueryResult> - { - /// <summary> - /// 鐢ㄦ埛Id - /// </summary> - public Guid? UserId { get; set; } - } - - /// <summary> - /// 鏌ヨ鐢ㄦ埛绠�鍘�-缁撴灉 - /// </summary> - public class GetUserResumeQueryResult - { - /// <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 string PhoneNumber { 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> - public bool IsReal { get; set; } - - /// <summary> - /// 涓婂矖娆℃暟 - /// </summary> - public int TaskCount { get; set; } - - /// <summary> - /// 甯搁┗鐪佷唤缂栧彿 - /// </summary> - public string ProvinceCode { get; set; } - - /// <summary> - /// 甯搁┗鐪佷唤 - /// </summary> - public string ProvinceContent { get; set; } - - /// <summary> - /// 甯搁┗鍩庡競缂栧彿 - /// </summary> - public string CityCode { get; set; } - - /// <summary> - /// 甯搁┗鍩庡競 - /// </summary> - public string CityContent { 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> - public List<UserExpectJob> UserExpectJobs { get; set; } - - /// <summary> - /// 绌洪棽鏃堕棿 - /// </summary> - public EnumPersonalFreeTime? FreeTime { get; set; } - - /// <summary> - /// 姹傝亴鐘舵�� - /// </summary> - public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; } - - /// <summary> - /// 鐢ㄦ埛淇℃伅璧勬牸璇佷功 - /// </summary> - public List<UserCredential> UserCredentials { get; set; } - - /// <summary> - /// 宸ヤ綔璧勫巻 - /// </summary> - public string WorkSeniority { get; set; } - - /// <summary> - /// 宸ヤ綔缁忛獙 - /// </summary> - public string WorkExperience { get; set; } - - /// <summary> - /// 韬珮 - /// </summary> - public int? Height { get; set; } - - /// <summary> - /// 浣撻噸 - /// </summary> - public int? Weight { get; set; } - - /// <summary> - /// 鐢熸椿鐓� - /// </summary> - public List<UserPhoto> Photos { get; set; } - } -} diff --git a/FlexJobApi.Core/Models/UserServer/Users/Repositories/UserRepository.cs b/FlexJobApi.Core/Models/UserServer/Users/Repositories/UserRepository.cs new file mode 100644 index 0000000..24ffd8c --- /dev/null +++ b/FlexJobApi.Core/Models/UserServer/Users/Repositories/UserRepository.cs @@ -0,0 +1,43 @@ +锘縰sing Furion.DatabaseAccessor; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鐢ㄦ埛浠撳簱 + /// </summary> + public static class UserRepository + { + /// <summary> + /// 鑾峰彇涓汉鐢ㄦ埛鏌ヨ + /// </summary> + /// <param name="rep"></param> + /// <param name="tracking"></param> + /// <param name="logier"></param> + /// <returns></returns> + public static IQueryable<User> GetPersonalQueryable(this IRepository<User> rep, bool tracking = true, CurrentLogier logier = null) + { + logier = logier ?? JwtUtils.GetCurrentLogier(); + var q = rep.AsQueryable(); + if (tracking) + { + q = q.AsNoTracking(); + } + q = q.OrderBy(it => it.CreatedTime); + if (logier != null) + { + if (logier.Type == EnumUserType.Personal) + { + q = q.Where(it => it.Id == logier.Id); + } + } + return q; + } + } +} diff --git a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs index 2e0f85f..2e1639d 100644 --- a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs +++ b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs @@ -148,7 +148,8 @@ var q = rep.AsQueryable().AsNoTracking(); if (query != null) q = query(q); else q = q.OrderBy(it => it.Sort).ThenBy(it => it.CreatedTime); - q = q.CustomOrderBy(page.OrderInput); + if (page.OrderInput.IsNotNull()) + q = q.CustomOrderBy(page.OrderInput); var s = selector == null ? q.ProjectToType<TItem>() : q.Select(selector); @@ -176,7 +177,8 @@ where TItem : class, new() where TResult : PagedListQueryResult<TItem>, new() { - q = q.CustomOrderBy(page.OrderInput); + if (page.OrderInput.IsNotNull()) + q = q.CustomOrderBy(page.OrderInput); var pagedList = await q.ToPagedListAsync(page.Page, page.Rows, cancellationToken); var result = new TResult(); result.PageModel = page.Adapt<PagedListQueryResultPageModel>(); @@ -250,6 +252,32 @@ return Ordering(source, parameter, propertyName, "ThenByDescending"); } + public static async Task<TResult> GetDetail<TEntity, TResult>( + this Guid id, + CancellationToken cancellationToken = default) + where TEntity : CommonEntity, new() + { + var rep = Db.GetRepository<TEntity>(); + return await rep.AsQueryable().AsNoTracking() + .Where(it => it.Id == id) + .GetDetail<TEntity, TResult>(cancellationToken); + } + + public static async Task<TResult> GetDetail<TEntity, TResult>( + this IQueryable<TEntity> q, + CancellationToken cancellationToken = default) + { + var model = await q + .ProjectToType<TResult>() + .FirstOrDefaultAsync(cancellationToken); + if (model == null) + { + var summary = await typeof(TEntity).GetSummary(); + throw Oops.Oh(EnumErrorCodeType.s404, $"璇summary ?? "淇℃伅"}"); + } + return model; + } + /// <summary> /// 璁剧疆鏄惁绂佺敤 /// </summary> @@ -302,6 +330,27 @@ : 0; } + public static async Task<Guid> UpdateData<TEntity, TRequest>( + this IQueryable<TEntity> q, + TRequest request, + Action<TEntity> update = null, + CancellationToken cancellationToken = default) + where TEntity : CommonEntity, new() + { + var rep = Db.GetRepository<TEntity>(); + var entity = await q.FirstOrDefaultAsync(); + if (entity == null) + { + var summary = await typeof(TEntity).GetSummary(); + throw Oops.Oh(EnumErrorCodeType.s404, $"璇summary ?? "淇℃伅"}"); + } + + if (update != null) update(entity); + else request.Adapt(entity); + await rep.UpdateAsync(entity); + return entity.Id; + } + /// <summary> /// 淇濆瓨鏁版嵁 /// </summary> diff --git a/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResult.cs b/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResult.cs index 28b6933..ee9e60f 100644 --- a/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResult.cs +++ b/FlexJobApi.Core/Utils/FriendlyResultUtils/FriendlyResult.cs @@ -6,11 +6,49 @@ namespace FlexJobApi.Core { + public interface IFriendlyResult + { + /// <summary> + /// 璺熻釜Id + /// </summary> + public string TraceId { get; set; } + + /// <summary> + /// 鐘舵�佺爜 + /// </summary> + public int? Code { get; set; } + + /// <summary> + /// 閿欒鐮� + /// </summary> + public string ErrorCode { get; set; } + + /// <summary> + /// 鎵ц鎴愬姛 + /// </summary> + public bool Success { get; set; } + + /// <summary> + /// 閿欒淇℃伅 + /// </summary> + public object Msg { get; set; } + + /// <summary> + /// 闄勫姞鏁版嵁 + /// </summary> + public object Extras { get; set; } + + /// <summary> + /// 鏃堕棿鎴� + /// </summary> + public long Timestamp { get; set; } + } + /// <summary> /// 鍙嬪ソ杩斿洖鍊� /// </summary> /// <typeparam name="T"></typeparam> - public class FriendlyResult<T> + public class FriendlyResult<T> : IFriendlyResult { /// <summary> /// 璺熻釜Id diff --git a/FlexJobApi.Core/Utils/JwtUtils/JwtUtils.cs b/FlexJobApi.Core/Utils/JwtUtils/JwtUtils.cs index 0743dc1..f9d47e6 100644 --- a/FlexJobApi.Core/Utils/JwtUtils/JwtUtils.cs +++ b/FlexJobApi.Core/Utils/JwtUtils/JwtUtils.cs @@ -43,8 +43,11 @@ logier.RefreshToken = JWTEncryption.GenerateRefreshToken(logier.AccessToken, 60 * 24); // 璁剧疆鍝嶅簲鎶ユ枃澶� - httpContextAccessor.HttpContext.Response.Headers["access-token"] = logier.AccessToken; - httpContextAccessor.HttpContext.Response.Headers["x-access-token"] = logier.RefreshToken; + if (httpContextAccessor.HttpContext != null) + { + httpContextAccessor.HttpContext.Response.Headers["access-token"] = logier.AccessToken; + httpContextAccessor.HttpContext.Response.Headers["x-access-token"] = logier.RefreshToken; + } } /// <summary> diff --git a/FlexJobApi.Core/Utils/LogUtils/LogServiceComponent.cs b/FlexJobApi.Core/Utils/LogUtils/LogServiceComponent.cs new file mode 100644 index 0000000..ea581ad --- /dev/null +++ b/FlexJobApi.Core/Utils/LogUtils/LogServiceComponent.cs @@ -0,0 +1,34 @@ +锘縰sing Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + public class LogServiceComponent : IServiceComponent + { + public void Load(IServiceCollection services, ComponentContext componentContext) + { + services.AddConsoleFormatter(options => + { + options.WithTraceId = true; + }); + + services.AddFileLogging(options => + { + options.WithTraceId = true; + options.FileNameRule = fileName => + { + return string.Format(fileName, DateTime.Now); + }; + }); + + //services.AddDatabaseLogging<DatabaseLoggingWriter>(options => + //{ + // options.WithTraceId = true; + //}); + } + } +} diff --git a/FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs b/FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs index 8cf27e5..bc12627 100644 --- a/FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs +++ b/FlexJobApi.Core/Utils/ResourceUtils/IResourceHttpProvider.cs @@ -1,7 +1,12 @@ -锘縰sing Furion; +锘縰sing Azure; +using Azure.Core; +using Furion; using Furion.FriendlyException; using Furion.HttpRemote; using Furion.Shapeless; +using Mapster; +using Microsoft.Extensions.Caching.Distributed; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; @@ -15,6 +20,7 @@ { HttpRequestBuilder AddAuthentication(HttpRequestBuilder builder); Task<TResponse> SendAsAsync<TResponse>(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder); + Task<string> SendAsStringAsync(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder); } public class DefaultResourceHttpProvider : IResourceHttpProvider @@ -30,17 +36,90 @@ public async Task<TResponse> SendAsAsync<TResponse>(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder) { + return await httpRemoteService.SendAsAsync<TResponse>(builder); + } + + public async Task<string> SendAsStringAsync(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder) + { + return await httpRemoteService.SendAsStringAsync(builder); + } + } + + public class TokenDataModel + { + /// <summary> + /// 鐢ㄦ埛璁块棶浠ょ墝 + /// </summary> + public string AccessToken { get; set; } + + /// <summary> + /// 鍒锋柊浠ょ墝 + /// </summary> + public string RefreshToken { get; set; } + } + + public class SystemUserResourceHttpProvider : IResourceHttpProvider + { + public HttpRequestBuilder AddAuthentication(HttpRequestBuilder builder) + { + var token = GetToken(); + return builder + .WithHeader("Authorization", "Bearer " + token.AccessToken) + .WithHeader("X-Authorization", "Bearer " + token.RefreshToken); + } + + public async Task<TResponse> SendAsAsync<TResponse>(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder) + { var response = await httpRemoteService.SendAsAsync<TResponse>(builder); - dynamic clay = Clay.Parse(response); - if (clay.Code == 401) + return response; + } + + public async Task<string> SendAsStringAsync(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder) + { + var response = await httpRemoteService.SendAsStringAsync(builder); + try { - Console.WriteLine(); - throw new Exception(); + var result = response.JsonTo(new + { + Code = 0 + }); + if (result.Code == 401) + { + var token = GetToken(true); + builder = builder + .WithHeader("Authorization", "Bearer " + token.AccessToken) + .WithHeader("X-Authorization", "Bearer " + token.RefreshToken); + response = await httpRemoteService.SendAsStringAsync(builder); + } } - else + catch { } + return response; + } + + private TokenDataModel GetToken(bool recache = false) + { + var distributedCache = App.GetRequiredService<IDistributedCache>(); + var token = distributedCache.GetString("SystemUserToken"); + if (token == null || recache) { - return response; + var logier = new CurrentLogier + { + Id = new Guid("11111111-1111-1111-1111-111111111111"), + Name = "绠$悊鍛�", + UserName = "system", + Type = EnumUserType.Operation, + ClientType = EnumClientType.PcWeb, + Level = 999, + }; + JwtUtils.GenerateToken(logier); + token = logier.Adapt<TokenDataModel>().ToJson(); + distributedCache.SetString("SystemUserToken", token, new DistributedCacheEntryOptions + { + AbsoluteExpiration = DateTime.Now.AddMinutes(60 * 23) + }); } + var tokenData = token.JsonTo<TokenDataModel>(); + return tokenData; } } } diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs index db7a2db..dd0b166 100644 --- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs +++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs @@ -1,4 +1,5 @@ -锘縰sing Consul; +锘縰sing Azure; +using Consul; using Furion; using Furion.FriendlyException; using Furion.HttpRemote; @@ -44,8 +45,8 @@ var jsonResourceModels = await distributedCache.GetStringAsync($"ResourceModel|{requestTypeFullName}"); var resource = jsonResourceModels.JsonTo<ResourceModel>(); - var domain = await GetHealthyServiceDomain(resource); - var builder = HttpRequestBuilder.Create(resource.GetHttpMethod(), $"{domain}{resource.Route}"); + var url = await GetUrl(resource.ServiceName, resource.Route); + var builder = HttpRequestBuilder.Create(resource.GetHttpMethod(), url); if (resource.Method == EnumResourceMethod.Get) builder = builder.WithQueryParameters(request); else @@ -56,22 +57,42 @@ return response; } + public async Task<string> SendHttpAsync(Resource resource, string request, IResourceHttpProvider provider = null) + { + var url = await GetUrl(resource.ServiceName, resource.Route); + var builder = HttpRequestBuilder.Create(resource.GetHttpMethod(), url); + if (resource.Method == EnumResourceMethod.Get) + builder = builder.WithQueryParameters(request); + else + builder = builder.SetJsonContent(request); + provider = provider ?? new DefaultResourceHttpProvider(); + builder = provider.AddAuthentication(builder); + var response = await provider.SendAsStringAsync(httpRemoteService, builder); + return response; + } + + public async Task<string> GetUrl(string serviceName, string route) + { + var domain = await GetHealthyServiceDomain(serviceName); + return $"{domain}{route}"; + } + /// <summary> /// 鑾峰彇鍋ュ悍鏈嶅姟鍩熷悕 /// </summary> - /// <param name="resource"></param> + /// <param name="serviceName"></param> /// <returns></returns> - public async Task<string> GetHealthyServiceDomain(ResourceModel resource) + public async Task<string> GetHealthyServiceDomain(string serviceName) { - var queryResult = await consulClient.Health.Service(resource.ServiceName, null, true); + var queryResult = await consulClient.Health.Service(serviceName, null, true); if (queryResult.StatusCode != System.Net.HttpStatusCode.OK) - throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔resource.Service}"); + throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔serviceName}"); var domains = queryResult.Response .Select(s => $"http://{s.Service.Address}:{s.Service.Port}") .ToList(); if (domains.IsNull()) - throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔resource.Service}"); + throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔serviceName}"); // 杞閫夋嫨瀹炰緥 int randomIndex = new Random().Next(domains.Count); return domains[randomIndex]; diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs index b9d51e0..139d6ff 100644 --- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs +++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs @@ -38,22 +38,6 @@ public static class ResourceUtils { /// <summary> - /// 鍙戦�丠TTP璇锋眰 - /// </summary> - /// <typeparam name="TRequest"></typeparam> - /// <typeparam name="TResponse"></typeparam> - /// <param name="request"></param> - /// <param name="provider"></param> - /// <returns></returns> - public static Task<TResponse> SendHttpAsync<TRequest, TResponse>( - TRequest request, - IResourceHttpProvider provider = null) - where TRequest : class, new() - { - return App.GetRequiredService<ResourceHttpUtils>().SendHttpAsync<TRequest, TResponse>(request, provider); - } - - /// <summary> /// 鐢熸垚鍔ㄦ�佹帶鍒跺櫒 /// </summary> public static async Task BuildDynamicControllersAsync() @@ -173,8 +157,7 @@ var expiredResources = resources.Where(it => !models.Any(m => m.Route == it.Route && m.Method == it.Method)).ToList(); foreach (var expiredResource in expiredResources) { - //expiredResource.IsExpired = true; - //await rep.UpdateAsync(expiredResource); + resources.Remove(expiredResource); await rep.DeleteAsync(expiredResource); } diff --git a/FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs b/FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs new file mode 100644 index 0000000..c13c0ea --- /dev/null +++ b/FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs @@ -0,0 +1,133 @@ +锘縰sing Furion; +using Furion.DatabaseAccessor; +using Furion.Schedule; +using Mapster; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 浣滀笟鎸佷箙鍖栵紙鏁版嵁搴擄級 + /// </summary> + public class DbJobPersistence : IJobPersistence, IDisposable + { + private readonly IServiceScope _serviceScope; + private readonly IRepository<ScheduleJobDetail> repScheduleJobDetail; + private readonly IRepository<ScheduleJobTrigger> repScheduleJobTrigger; + private readonly IRepository<ScheduleJobTriggerTimeline, LogDbContextLocator> repScheduleJobTriggerTimeline; + + public DbJobPersistence(IServiceScopeFactory scopeFactory) + { + _serviceScope = scopeFactory.CreateScope(); + var services = _serviceScope.ServiceProvider; + + repScheduleJobDetail = services.GetService<IRepository<ScheduleJobDetail>>(); + repScheduleJobTrigger = services.GetService<IRepository<ScheduleJobTrigger>>(); + repScheduleJobTriggerTimeline = services.GetService<IRepository<ScheduleJobTriggerTimeline, LogDbContextLocator>>(); + } + + /// <summary> + /// 浣滀笟璋冨害鏈嶅姟鍚姩鏃� + /// </summary> + /// <returns></returns> + public async Task<IEnumerable<SchedulerBuilder>> PreloadAsync(CancellationToken stoppingToken) // Furion 4.9.1.59 涔嬪墠涓� public IEnumerable<SchedulerBuilder> Preload() + { + var schedulers = new List<SchedulerBuilder>(); + var jobDetails = await repScheduleJobDetail.AsQueryable().AsNoTracking().ToListAsync(); + var jobTriggers = await repScheduleJobTrigger.AsQueryable().AsNoTracking().ToListAsync(); + foreach (var jobDetail in jobDetails) + { + var triggers = jobTriggers.Where(it => it.JobId == jobDetail.JobId) + .Select(it => TriggerBuilder.From(it.ToJson())) + .ToArray(); + var jobBuilder = JobBuilder.From(jobDetail.ToJson()); + var scheduler = SchedulerBuilder.Create(jobBuilder, triggers); + schedulers.Add(scheduler); + } + return schedulers; + } + + public Task<SchedulerBuilder> OnLoadingAsync(SchedulerBuilder builder, CancellationToken stoppingToken) + { + // 鏍囪浠庡叾浠栧湴鏂规洿鏂帮紝姣斿鏁版嵁搴� + return Task.FromResult(builder); + } + + public async Task OnChangedAsync(PersistenceContext context) + { + switch (context.Behavior) + { + case PersistenceBehavior.Appended: + var insertEntity = new ScheduleJobDetail(); + context.JobDetail.Adapt(insertEntity); + await repScheduleJobDetail.InsertNowAsync(insertEntity); + break; + case PersistenceBehavior.Updated: + var updateEntity = await repScheduleJobDetail.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId); + if (updateEntity != null) + { + context.JobDetail.Adapt(updateEntity); + await repScheduleJobDetail.UpdateNowAsync(updateEntity); + } + break; + case PersistenceBehavior.Removed: + var deleteEntity = await repScheduleJobDetail.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId); + if (deleteEntity != null) + { + await repScheduleJobDetail.DeleteNowAsync(deleteEntity); + } + break; + default: + break; + } + } + + public async Task OnTriggerChangedAsync(PersistenceTriggerContext context) + { + switch (context.Behavior) + { + case PersistenceBehavior.Appended: + var insertEntity = new ScheduleJobTrigger(); + context.Trigger.Adapt(insertEntity); + await repScheduleJobTrigger.InsertNowAsync(insertEntity); + break; + case PersistenceBehavior.Updated: + var updateEntity = await repScheduleJobTrigger.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId && it.TriggerId == context.TriggerId); + if (updateEntity != null) + { + context.Trigger.Adapt(updateEntity); + await repScheduleJobTrigger.UpdateNowAsync(updateEntity); + } + break; + case PersistenceBehavior.Removed: + var deleteEntity = await repScheduleJobTrigger.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId && it.TriggerId == context.TriggerId); + if (deleteEntity != null) + { + await repScheduleJobTrigger.DeleteNowAsync(deleteEntity); + } + break; + default: + break; + } + } + + public async Task OnExecutionRecordAsync(PersistenceExecutionRecordContext context) + { + var entity = new ScheduleJobTriggerTimeline(); + context.Timeline.Adapt(entity); + await repScheduleJobTriggerTimeline.InsertNowAsync(entity); + } + + public void Dispose() + { + _serviceScope?.Dispose(); + } + } +} diff --git a/FlexJobApi.Core/Utils/ScheduleUtils/ResourceHttpJob.cs b/FlexJobApi.Core/Utils/ScheduleUtils/ResourceHttpJob.cs new file mode 100644 index 0000000..898f525 --- /dev/null +++ b/FlexJobApi.Core/Utils/ScheduleUtils/ResourceHttpJob.cs @@ -0,0 +1,45 @@ +锘縰sing Azure.Core; +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using Furion.Schedule; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + public class ResourceHttpJob( + IRepository<Resource> rep, + ResourceHttpUtils resourceHttpUtils + ) : IJob + { + private readonly IRepository<Resource> rep = rep; + private readonly ResourceHttpUtils resourceHttpUtils = resourceHttpUtils; + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + var jobDetail = context.JobDetail; + + // 瑙f瀽 HTTP 璇锋眰鍙傛暟锛岄敭鍚嶇О涓虹被鍚� + var command = Schedular.Deserialize<SaveScheduleJobDetailCommand>(jobDetail.GetProperty<string>(nameof(ResourceHttpJob))); + + var resource = await rep + .Where(it => it.Id == command.ResourceId) + .Select(it => new Resource + { + ServiceName = it.ServiceName, + Route = it.Route, + Method = it.Method + }) + .FirstOrDefaultAsync(); + if (resource == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヨ祫婧�"); + + context.Result = await resourceHttpUtils.SendHttpAsync(resource, command.Body, new SystemUserResourceHttpProvider()); + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.Designer.cs new file mode 100644 index 0000000..df1c4d3 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.Designer.cs @@ -0,0 +1,1954 @@ +锘�// <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("20250809150854_UpdateUser0809")] + partial class UpdateUser0809 + { + /// <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.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.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<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("HireStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("HireTime") + .HasColumnType("datetime2"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int?>("SignContractStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("SignContractTime") + .HasColumnType("datetime2"); + + 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("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<string>("CityCode") + .HasColumnType("nvarchar(128)"); + + 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<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.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.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.TaskInfo", "TaskInfo") + .WithMany("Users") + .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.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.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.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("Users"); + }); + + modelBuilder.Entity("FlexJobApi.Core.User", b => + { + b.Navigation("BankCards"); + + b.Navigation("Photos"); + + 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/20250809150854_UpdateUser0809.cs b/FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.cs new file mode 100644 index 0000000..edbec29 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250809150854_UpdateUser0809.cs @@ -0,0 +1,278 @@ +锘縰sing System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace FlexJobApi.Database.Migrations.Migrations +{ + /// <inheritdoc /> + public partial class UpdateUser0809 : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_UserExpectJob_DictionaryData_PersonalIdentityCode", + table: "UserExpectJob"); + + migrationBuilder.DropTable( + name: "UserResume"); + + migrationBuilder.RenameColumn( + name: "PersonalIdentityCode", + table: "UserExpectJob", + newName: "ExpectJobCode"); + + migrationBuilder.RenameIndex( + name: "IX_UserExpectJob_PersonalIdentityCode", + table: "UserExpectJob", + newName: "IX_UserExpectJob_ExpectJobCode"); + + migrationBuilder.AlterColumn<string>( + name: "Code", + table: "UserCredential", + type: "nvarchar(128)", + maxLength: 128, + nullable: true, + oldClrType: typeof(string), + oldType: "nvarchar(128)", + oldMaxLength: 128); + + migrationBuilder.AddColumn<string>( + name: "EducationalBackgroundCode", + table: "User", + type: "nvarchar(128)", + nullable: true); + + migrationBuilder.AddColumn<int>( + name: "FreeTime", + table: "User", + type: "int", + nullable: true); + + migrationBuilder.AddColumn<int>( + name: "Height", + table: "User", + type: "int", + nullable: true); + + migrationBuilder.AddColumn<int>( + name: "JobSeekingStatus", + table: "User", + type: "int", + nullable: true); + + migrationBuilder.AddColumn<string>( + name: "PersonalIdentityCode", + table: "User", + type: "nvarchar(128)", + nullable: true); + + migrationBuilder.AddColumn<int>( + name: "Weight", + table: "User", + type: "int", + nullable: true); + + migrationBuilder.AddColumn<string>( + name: "WorkExperience", + table: "User", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn<string>( + name: "WorkSeniority", + table: "User", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.UpdateData( + table: "User", + keyColumn: "Id", + keyValue: new Guid("11111111-1111-1111-1111-111111111111"), + columns: new[] { "EducationalBackgroundCode", "FreeTime", "Height", "JobSeekingStatus", "PersonalIdentityCode", "Weight", "WorkExperience", "WorkSeniority" }, + values: new object[] { null, null, null, null, null, null, null, null }); + + migrationBuilder.CreateIndex( + name: "IX_User_EducationalBackgroundCode", + table: "User", + column: "EducationalBackgroundCode"); + + migrationBuilder.CreateIndex( + name: "IX_User_PersonalIdentityCode", + table: "User", + column: "PersonalIdentityCode"); + + migrationBuilder.AddForeignKey( + name: "FK_User_DictionaryData_EducationalBackgroundCode", + table: "User", + column: "EducationalBackgroundCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_User_DictionaryData_PersonalIdentityCode", + table: "User", + column: "PersonalIdentityCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_UserExpectJob_DictionaryData_ExpectJobCode", + table: "UserExpectJob", + column: "ExpectJobCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_User_DictionaryData_EducationalBackgroundCode", + table: "User"); + + migrationBuilder.DropForeignKey( + name: "FK_User_DictionaryData_PersonalIdentityCode", + table: "User"); + + migrationBuilder.DropForeignKey( + name: "FK_UserExpectJob_DictionaryData_ExpectJobCode", + table: "UserExpectJob"); + + migrationBuilder.DropIndex( + name: "IX_User_EducationalBackgroundCode", + table: "User"); + + migrationBuilder.DropIndex( + name: "IX_User_PersonalIdentityCode", + table: "User"); + + migrationBuilder.DropColumn( + name: "EducationalBackgroundCode", + table: "User"); + + migrationBuilder.DropColumn( + name: "FreeTime", + table: "User"); + + migrationBuilder.DropColumn( + name: "Height", + table: "User"); + + migrationBuilder.DropColumn( + name: "JobSeekingStatus", + table: "User"); + + migrationBuilder.DropColumn( + name: "PersonalIdentityCode", + table: "User"); + + migrationBuilder.DropColumn( + name: "Weight", + table: "User"); + + migrationBuilder.DropColumn( + name: "WorkExperience", + table: "User"); + + migrationBuilder.DropColumn( + name: "WorkSeniority", + table: "User"); + + migrationBuilder.RenameColumn( + name: "ExpectJobCode", + table: "UserExpectJob", + newName: "PersonalIdentityCode"); + + migrationBuilder.RenameIndex( + name: "IX_UserExpectJob_ExpectJobCode", + table: "UserExpectJob", + newName: "IX_UserExpectJob_PersonalIdentityCode"); + + migrationBuilder.AlterColumn<string>( + name: "Code", + table: "UserCredential", + type: "nvarchar(128)", + maxLength: 128, + nullable: false, + defaultValue: "", + oldClrType: typeof(string), + oldType: "nvarchar(128)", + oldMaxLength: 128, + oldNullable: true); + + migrationBuilder.CreateTable( + name: "UserResume", + columns: table => new + { + Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), + EducationalBackgroundCode = table.Column<string>(type: "nvarchar(128)", nullable: true), + PersonalIdentityCode = table.Column<string>(type: "nvarchar(128)", nullable: true), + UserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), + CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), + CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false), + CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), + FreeTime = table.Column<int>(type: "int", nullable: true), + Height = table.Column<int>(type: "int", nullable: true), + IsDeleted = table.Column<bool>(type: "bit", nullable: false), + JobSeekingStatus = table.Column<int>(type: "int", nullable: true), + Sort = table.Column<int>(type: "int", nullable: false), + TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true), + UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true), + UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), + Weight = table.Column<int>(type: "int", nullable: true), + WorkExperience = table.Column<string>(type: "nvarchar(max)", nullable: true), + WorkSeniority = table.Column<string>(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_UserResume", x => x.Id); + table.ForeignKey( + name: "FK_UserResume_DictionaryData_EducationalBackgroundCode", + column: x => x.EducationalBackgroundCode, + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_UserResume_DictionaryData_PersonalIdentityCode", + column: x => x.PersonalIdentityCode, + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_UserResume_User_UserId", + column: x => x.UserId, + principalTable: "User", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_UserResume_EducationalBackgroundCode", + table: "UserResume", + column: "EducationalBackgroundCode"); + + migrationBuilder.CreateIndex( + name: "IX_UserResume_PersonalIdentityCode", + table: "UserResume", + column: "PersonalIdentityCode"); + + migrationBuilder.CreateIndex( + name: "IX_UserResume_UserId", + table: "UserResume", + column: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_UserExpectJob_DictionaryData_PersonalIdentityCode", + table: "UserExpectJob", + column: "PersonalIdentityCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.Designer.cs new file mode 100644 index 0000000..72a028f --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.Designer.cs @@ -0,0 +1,2117 @@ +锘�// <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("20250810144950_Update0810")] + partial class Update0810 + { + /// <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.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<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("HireStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("HireTime") + .HasColumnType("datetime2"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int?>("SignContractStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("SignContractTime") + .HasColumnType("datetime2"); + + 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("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<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<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.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.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.TaskInfo", "TaskInfo") + .WithMany("Users") + .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.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.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.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("Users"); + }); + + modelBuilder.Entity("FlexJobApi.Core.User", b => + { + b.Navigation("BankCards"); + + b.Navigation("Photos"); + + 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/20250810144950_Update0810.cs b/FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.cs new file mode 100644 index 0000000..9c36947 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250810144950_Update0810.cs @@ -0,0 +1,110 @@ +锘縰sing System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace FlexJobApi.Database.Migrations.Migrations +{ + /// <inheritdoc /> + public partial class Update0810 : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn<DateTime>( + name: "Birthday", + table: "User", + type: "datetime2", + nullable: true); + + migrationBuilder.CreateTable( + name: "ScheduleJobDetail", + columns: table => new + { + Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), + JobId = table.Column<string>(type: "nvarchar(max)", nullable: true), + GroupName = table.Column<string>(type: "nvarchar(max)", nullable: true), + JobType = table.Column<string>(type: "nvarchar(max)", nullable: true), + AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true), + Description = table.Column<string>(type: "nvarchar(max)", nullable: true), + Concurrent = table.Column<bool>(type: "bit", nullable: false), + IncludeAnnotations = table.Column<bool>(type: "bit", nullable: false), + Properties = 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_ScheduleJobDetail", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ScheduleJobTrigger", + columns: table => new + { + Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), + TriggerId = table.Column<string>(type: "nvarchar(max)", nullable: true), + JobId = table.Column<string>(type: "nvarchar(max)", nullable: true), + TriggerType = table.Column<string>(type: "nvarchar(max)", nullable: true), + AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true), + Args = table.Column<string>(type: "nvarchar(max)", nullable: true), + Description = table.Column<string>(type: "nvarchar(max)", nullable: true), + Status = table.Column<long>(type: "bigint", nullable: false), + StartTime = table.Column<DateTime>(type: "datetime2", nullable: true), + EndTime = table.Column<DateTime>(type: "datetime2", nullable: true), + LastRunTime = table.Column<DateTime>(type: "datetime2", nullable: true), + NextRunTime = table.Column<DateTime>(type: "datetime2", nullable: true), + NumberOfRuns = table.Column<long>(type: "bigint", nullable: false), + MaxNumberOfRuns = table.Column<long>(type: "bigint", nullable: false), + NumberOfErrors = table.Column<long>(type: "bigint", nullable: false), + MaxNumberOfErrors = table.Column<long>(type: "bigint", nullable: false), + NumRetries = table.Column<long>(type: "bigint", nullable: false), + RetryTimeout = table.Column<int>(type: "int", nullable: false), + StartNow = table.Column<bool>(type: "bit", nullable: false), + RunOnStart = table.Column<bool>(type: "bit", nullable: false), + ResetOnlyOnce = table.Column<bool>(type: "bit", nullable: false), + Result = table.Column<string>(type: "nvarchar(max)", nullable: true), + ElapsedTime = table.Column<long>(type: "bigint", nullable: false), + 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_ScheduleJobTrigger", x => x.Id); + }); + + migrationBuilder.UpdateData( + table: "User", + keyColumn: "Id", + keyValue: new Guid("11111111-1111-1111-1111-111111111111"), + column: "Birthday", + value: null); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ScheduleJobDetail"); + + migrationBuilder.DropTable( + name: "ScheduleJobTrigger"); + + migrationBuilder.DropColumn( + name: "Birthday", + table: "User"); + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs index 13ee61a..2d845ee 100644 --- a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs +++ b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs @@ -763,6 +763,166 @@ 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") @@ -1032,6 +1192,9 @@ b.Property<string>("Avatar") .HasColumnType("nvarchar(max)"); + b.Property<DateTime?>("Birthday") + .HasColumnType("datetime2"); + b.Property<string>("CityCode") .HasColumnType("nvarchar(128)"); @@ -1044,10 +1207,19 @@ 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") @@ -1062,6 +1234,9 @@ b.Property<bool>("IsReal") .HasColumnType("bit"); + b.Property<int?>("JobSeekingStatus") + .HasColumnType("int"); + b.Property<int>("Level") .HasColumnType("int"); @@ -1071,6 +1246,9 @@ b.Property<string>("Password") .HasColumnType("nvarchar(max)"); + + b.Property<string>("PersonalIdentityCode") + .HasColumnType("nvarchar(128)"); b.Property<string>("PhoneNumber") .HasMaxLength(11) @@ -1108,6 +1286,15 @@ .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)"); @@ -1116,7 +1303,11 @@ b.HasIndex("CityCode"); + b.HasIndex("EducationalBackgroundCode"); + b.HasIndex("EnterpriseId"); + + b.HasIndex("PersonalIdentityCode"); b.HasIndex("ProvinceCode"); @@ -1265,7 +1456,6 @@ .HasColumnType("nvarchar(max)"); b.Property<string>("Code") - .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)"); @@ -1384,12 +1574,12 @@ b.Property<Guid?>("CreatedUserId") .HasColumnType("uniqueidentifier"); - b.Property<bool>("IsDeleted") - .HasColumnType("bit"); - - b.Property<string>("PersonalIdentityCode") + b.Property<string>("ExpectJobCode") .IsRequired() .HasColumnType("nvarchar(128)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); b.Property<int>("Sort") .HasColumnType("int"); @@ -1408,7 +1598,7 @@ b.HasKey("Id"); - b.HasIndex("PersonalIdentityCode"); + b.HasIndex("ExpectJobCode"); b.HasIndex("UserId"); @@ -1456,74 +1646,6 @@ b.HasIndex("UserId"); b.ToTable("UserPhoto"); - }); - - modelBuilder.Entity("FlexJobApi.Core.UserResume", 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>("EducationalBackgroundCode") - .HasColumnType("nvarchar(128)"); - - b.Property<int?>("FreeTime") - .HasColumnType("int"); - - b.Property<int?>("Height") - .HasColumnType("int"); - - b.Property<bool>("IsDeleted") - .HasColumnType("bit"); - - b.Property<int?>("JobSeekingStatus") - .HasColumnType("int"); - - b.Property<string>("PersonalIdentityCode") - .HasColumnType("nvarchar(128)"); - - 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?>("Weight") - .HasColumnType("int"); - - b.Property<string>("WorkExperience") - .HasColumnType("nvarchar(max)"); - - b.Property<string>("WorkSeniority") - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("EducationalBackgroundCode"); - - b.HasIndex("PersonalIdentityCode"); - - b.HasIndex("UserId"); - - b.ToTable("UserResume"); }); modelBuilder.Entity("FlexJobApi.Core.UserRole", b => @@ -1784,9 +1906,21 @@ .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() @@ -1796,7 +1930,11 @@ b.Navigation("City"); + b.Navigation("EducationalBackground"); + b.Navigation("Enterprise"); + + b.Navigation("PersonalIdentity"); b.Navigation("Province"); }); @@ -1864,9 +2002,9 @@ modelBuilder.Entity("FlexJobApi.Core.UserExpectJob", b => { - b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity") + b.HasOne("FlexJobApi.Core.DictionaryData", "ExpectJob") .WithMany() - .HasForeignKey("PersonalIdentityCode") + .HasForeignKey("ExpectJobCode") .HasPrincipalKey("Code") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); @@ -1877,7 +2015,7 @@ .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.Navigation("PersonalIdentity"); + b.Navigation("ExpectJob"); b.Navigation("User"); }); @@ -1889,33 +2027,6 @@ .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - - b.Navigation("User"); - }); - - modelBuilder.Entity("FlexJobApi.Core.UserResume", b => - { - b.HasOne("FlexJobApi.Core.DictionaryData", "EducationalBackground") - .WithMany() - .HasForeignKey("EducationalBackgroundCode") - .HasPrincipalKey("Code") - .OnDelete(DeleteBehavior.Restrict); - - b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity") - .WithMany() - .HasForeignKey("PersonalIdentityCode") - .HasPrincipalKey("Code") - .OnDelete(DeleteBehavior.Restrict); - - b.HasOne("FlexJobApi.Core.User", "User") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("EducationalBackground"); - - b.Navigation("PersonalIdentity"); b.Navigation("User"); }); diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.Designer.cs new file mode 100644 index 0000000..123d64c --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.Designer.cs @@ -0,0 +1,524 @@ +锘�// <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.LogDb +{ + [DbContext(typeof(LogDbContext))] + [Migration("20250809151036_UpdateSchedule")] + partial class UpdateSchedule + { + /// <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.ConsoleLog", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Access") + .HasColumnType("int"); + + b.Property<string>("ClientIpAddress") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + 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<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Level") + .HasColumnType("int"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("StackTrace") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Url") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ConsoleLog"); + }); + + modelBuilder.Entity("FlexJobApi.Core.DbAuditLog", 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<string>("NewValues") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("OldValues") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Operate") + .HasColumnType("int"); + + b.Property<Guid>("PrimaryKey") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TableName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("DbAuditLog"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Entities.Common.ResourceLog", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("ClientIpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Domain") + .HasColumnType("nvarchar(max)"); + + b.Property<long>("ElapsedMilliseconds") + .HasColumnType("bigint"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsSuccess") + .HasColumnType("bit"); + + b.Property<int>("Method") + .HasColumnType("int"); + + b.Property<string>("Path") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("RefererUrl") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Request") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("RequestHeaders") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Response") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ResponseHeaders") + .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("ResourceLog"); + }); + + modelBuilder.Entity("FlexJobApi.Core.ExceptionLog", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Code") + .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>("Message") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("StackTrace") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Type") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("ExceptionLog"); + }); + + modelBuilder.Entity("FlexJobApi.Core.QueueLog", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Access") + .HasColumnType("int"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Data") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<long>("ElapsedMilliseconds") + .HasColumnType("bigint"); + + b.Property<string>("EventId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<bool>("IsConsumOnce") + .HasColumnType("bit"); + + 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.HasKey("Id"); + + b.ToTable("QueueLog"); + }); + + 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.ScheduleJobTriggers", 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("ScheduleJobTriggers"); + }); + + modelBuilder.Entity("FlexJobApi.Core.SmsLog", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Access") + .HasColumnType("int"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTime?>("Expiry") + .HasColumnType("datetime2"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsUsed") + .HasColumnType("bit"); + + b.Property<string>("PhoneNumber") + .IsRequired() + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TemplateCode") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("TemplateParam") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("SmsLog"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.cs new file mode 100644 index 0000000..fec0fe6 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250809151036_UpdateSchedule.cs @@ -0,0 +1,93 @@ +锘縰sing System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace FlexJobApi.Database.Migrations.Migrations.LogDb +{ + /// <inheritdoc /> + public partial class UpdateSchedule : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "ScheduleJobDetail", + columns: table => new + { + Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), + JobId = table.Column<string>(type: "nvarchar(max)", nullable: true), + GroupName = table.Column<string>(type: "nvarchar(max)", nullable: true), + JobType = table.Column<string>(type: "nvarchar(max)", nullable: true), + AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true), + Description = table.Column<string>(type: "nvarchar(max)", nullable: true), + Concurrent = table.Column<bool>(type: "bit", nullable: false), + IncludeAnnotations = table.Column<bool>(type: "bit", nullable: false), + Properties = 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_ScheduleJobDetail", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ScheduleJobTriggers", + columns: table => new + { + Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), + TriggerId = table.Column<string>(type: "nvarchar(max)", nullable: true), + JobId = table.Column<string>(type: "nvarchar(max)", nullable: true), + TriggerType = table.Column<string>(type: "nvarchar(max)", nullable: true), + AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true), + Args = table.Column<string>(type: "nvarchar(max)", nullable: true), + Description = table.Column<string>(type: "nvarchar(max)", nullable: true), + Status = table.Column<long>(type: "bigint", nullable: false), + StartTime = table.Column<DateTime>(type: "datetime2", nullable: true), + EndTime = table.Column<DateTime>(type: "datetime2", nullable: true), + LastRunTime = table.Column<DateTime>(type: "datetime2", nullable: true), + NextRunTime = table.Column<DateTime>(type: "datetime2", nullable: true), + NumberOfRuns = table.Column<long>(type: "bigint", nullable: false), + MaxNumberOfRuns = table.Column<long>(type: "bigint", nullable: false), + NumberOfErrors = table.Column<long>(type: "bigint", nullable: false), + MaxNumberOfErrors = table.Column<long>(type: "bigint", nullable: false), + NumRetries = table.Column<long>(type: "bigint", nullable: false), + RetryTimeout = table.Column<int>(type: "int", nullable: false), + StartNow = table.Column<bool>(type: "bit", nullable: false), + RunOnStart = table.Column<bool>(type: "bit", nullable: false), + ResetOnlyOnce = table.Column<bool>(type: "bit", nullable: false), + Result = table.Column<string>(type: "nvarchar(max)", nullable: true), + ElapsedTime = table.Column<long>(type: "bigint", nullable: false), + 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_ScheduleJobTriggers", x => x.Id); + }); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ScheduleJobDetail"); + + migrationBuilder.DropTable( + name: "ScheduleJobTriggers"); + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.Designer.cs new file mode 100644 index 0000000..44e963e --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.Designer.cs @@ -0,0 +1,429 @@ +锘�// <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.LogDb +{ + [DbContext(typeof(LogDbContext))] + [Migration("20250810145005_Update0810")] + partial class Update0810 + { + /// <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.ConsoleLog", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Access") + .HasColumnType("int"); + + b.Property<string>("ClientIpAddress") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + 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<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Level") + .HasColumnType("int"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("StackTrace") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Url") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ConsoleLog"); + }); + + modelBuilder.Entity("FlexJobApi.Core.DbAuditLog", 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<string>("NewValues") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("OldValues") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Operate") + .HasColumnType("int"); + + b.Property<Guid>("PrimaryKey") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TableName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("DbAuditLog"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Entities.Common.ResourceLog", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("ClientIpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Domain") + .HasColumnType("nvarchar(max)"); + + b.Property<long>("ElapsedMilliseconds") + .HasColumnType("bigint"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsSuccess") + .HasColumnType("bit"); + + b.Property<int>("Method") + .HasColumnType("int"); + + b.Property<string>("Path") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("RefererUrl") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Request") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("RequestHeaders") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Response") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ResponseHeaders") + .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("ResourceLog"); + }); + + modelBuilder.Entity("FlexJobApi.Core.ExceptionLog", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Code") + .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>("Message") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("StackTrace") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Type") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("ExceptionLog"); + }); + + modelBuilder.Entity("FlexJobApi.Core.QueueLog", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Access") + .HasColumnType("int"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Data") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<long>("ElapsedMilliseconds") + .HasColumnType("bigint"); + + b.Property<string>("EventId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<bool>("IsConsumOnce") + .HasColumnType("bit"); + + 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.HasKey("Id"); + + b.ToTable("QueueLog"); + }); + + modelBuilder.Entity("FlexJobApi.Core.ScheduleJobTriggerTimeline", 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<long>("ElapsedTime") + .HasColumnType("bigint"); + + b.Property<string>("Exception") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("JobId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTime?>("LastRunTime") + .HasColumnType("datetime2"); + + b.Property<int>("Mode") + .HasColumnType("int"); + + b.Property<DateTime?>("NextRunTime") + .HasColumnType("datetime2"); + + b.Property<long>("NumberOfRuns") + .HasColumnType("bigint"); + + b.Property<string>("Result") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<long>("Status") + .HasColumnType("bigint"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TriggerId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("ScheduleJobTriggerTimeline"); + }); + + modelBuilder.Entity("FlexJobApi.Core.SmsLog", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Access") + .HasColumnType("int"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTime?>("Expiry") + .HasColumnType("datetime2"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsUsed") + .HasColumnType("bit"); + + b.Property<string>("PhoneNumber") + .IsRequired() + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TemplateCode") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("TemplateParam") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("SmsLog"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.cs new file mode 100644 index 0000000..75ee9f0 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250810145005_Update0810.cs @@ -0,0 +1,125 @@ +锘縰sing System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace FlexJobApi.Database.Migrations.Migrations.LogDb +{ + /// <inheritdoc /> + public partial class Update0810 : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ScheduleJobDetail"); + + migrationBuilder.DropTable( + name: "ScheduleJobTriggers"); + + migrationBuilder.CreateTable( + name: "ScheduleJobTriggerTimeline", + columns: table => new + { + Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), + JobId = table.Column<string>(type: "nvarchar(max)", nullable: true), + TriggerId = table.Column<string>(type: "nvarchar(max)", nullable: true), + NumberOfRuns = table.Column<long>(type: "bigint", nullable: false), + LastRunTime = table.Column<DateTime>(type: "datetime2", nullable: true), + NextRunTime = table.Column<DateTime>(type: "datetime2", nullable: true), + Status = table.Column<long>(type: "bigint", nullable: false), + Result = table.Column<string>(type: "nvarchar(max)", nullable: true), + ElapsedTime = table.Column<long>(type: "bigint", nullable: false), + Mode = table.Column<int>(type: "int", nullable: false), + Exception = 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_ScheduleJobTriggerTimeline", x => x.Id); + }); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ScheduleJobTriggerTimeline"); + + migrationBuilder.CreateTable( + name: "ScheduleJobDetail", + columns: table => new + { + Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), + AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true), + Concurrent = table.Column<bool>(type: "bit", nullable: false), + CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), + CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false), + CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), + Description = table.Column<string>(type: "nvarchar(max)", nullable: true), + GroupName = table.Column<string>(type: "nvarchar(max)", nullable: true), + IncludeAnnotations = table.Column<bool>(type: "bit", nullable: false), + IsDeleted = table.Column<bool>(type: "bit", nullable: false), + JobId = table.Column<string>(type: "nvarchar(max)", nullable: true), + JobType = table.Column<string>(type: "nvarchar(max)", nullable: true), + Properties = table.Column<string>(type: "nvarchar(max)", nullable: true), + Sort = table.Column<int>(type: "int", nullable: false), + TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true), + UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true), + UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ScheduleJobDetail", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ScheduleJobTriggers", + columns: table => new + { + Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), + Args = table.Column<string>(type: "nvarchar(max)", nullable: true), + AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: true), + CreatedEnterpriseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), + CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false), + CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), + Description = table.Column<string>(type: "nvarchar(max)", nullable: true), + ElapsedTime = table.Column<long>(type: "bigint", nullable: false), + EndTime = table.Column<DateTime>(type: "datetime2", nullable: true), + IsDeleted = table.Column<bool>(type: "bit", nullable: false), + JobId = table.Column<string>(type: "nvarchar(max)", nullable: true), + LastRunTime = table.Column<DateTime>(type: "datetime2", nullable: true), + MaxNumberOfErrors = table.Column<long>(type: "bigint", nullable: false), + MaxNumberOfRuns = table.Column<long>(type: "bigint", nullable: false), + NextRunTime = table.Column<DateTime>(type: "datetime2", nullable: true), + NumRetries = table.Column<long>(type: "bigint", nullable: false), + NumberOfErrors = table.Column<long>(type: "bigint", nullable: false), + NumberOfRuns = table.Column<long>(type: "bigint", nullable: false), + ResetOnlyOnce = table.Column<bool>(type: "bit", nullable: false), + Result = table.Column<string>(type: "nvarchar(max)", nullable: true), + RetryTimeout = table.Column<int>(type: "int", nullable: false), + RunOnStart = table.Column<bool>(type: "bit", nullable: false), + Sort = table.Column<int>(type: "int", nullable: false), + StartNow = table.Column<bool>(type: "bit", nullable: false), + StartTime = table.Column<DateTime>(type: "datetime2", nullable: true), + Status = table.Column<long>(type: "bigint", nullable: false), + TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true), + TriggerId = table.Column<string>(type: "nvarchar(max)", nullable: true), + TriggerType = table.Column<string>(type: "nvarchar(max)", nullable: true), + UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true), + UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ScheduleJobTriggers", x => x.Id); + }); + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs index 547acd2..10664ab 100644 --- a/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs +++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs @@ -299,6 +299,71 @@ b.ToTable("QueueLog"); }); + modelBuilder.Entity("FlexJobApi.Core.ScheduleJobTriggerTimeline", 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<long>("ElapsedTime") + .HasColumnType("bigint"); + + b.Property<string>("Exception") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("JobId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTime?>("LastRunTime") + .HasColumnType("datetime2"); + + b.Property<int>("Mode") + .HasColumnType("int"); + + b.Property<DateTime?>("NextRunTime") + .HasColumnType("datetime2"); + + b.Property<long>("NumberOfRuns") + .HasColumnType("bigint"); + + b.Property<string>("Result") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<long>("Status") + .HasColumnType("bigint"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TriggerId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("ScheduleJobTriggerTimeline"); + }); + modelBuilder.Entity("FlexJobApi.Core.SmsLog", b => { b.Property<Guid>("Id") diff --git a/FlexJobApi.Database.Migrations/REDEME.MD b/FlexJobApi.Database.Migrations/REDEME.MD index 0289096..6680c94 100644 --- a/FlexJobApi.Database.Migrations/REDEME.MD +++ b/FlexJobApi.Database.Migrations/REDEME.MD @@ -1,7 +1,7 @@ -------------------------------主数据库--------------------------------------- 新增迁移文件 -dotnet ef migrations add UpdateUser0808 -s "../FlexJobApi.Web.Entry" -c DefaultDbContext +dotnet ef migrations add Update0810 -s "../FlexJobApi.Web.Entry" -c DefaultDbContext 删除迁移文件 dotnet ef migrations remove -s "../FlexJobApi.Web.Entry" -c DefaultDbContext @@ -12,7 +12,7 @@ -------------------------------日志数据库--------------------------------------- 新增迁移文件 -dotnet ef migrations add UpdateCommon -s "../FlexJobApi.Web.Entry" -c LogDbContext +dotnet ef migrations add Update0810 -s "../FlexJobApi.Web.Entry" -c LogDbContext 删除迁移文件 dotnet ef migrations remove -s "../FlexJobApi.Web.Entry" -c LogDbContext diff --git a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml index 4ca909d..a0ca3ac 100644 --- a/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml +++ b/FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml @@ -4,128 +4,6 @@ <name>FlexJobApi.FlexJobServer.Application</name> </assembly> <members> - <member name="T:FlexJobApi.FlexJobServer.Application.DictionaryCategoryCommandHandler"> - <summary> - 瀛楀吀绫诲埆鍛戒护澶勭悊鍣� - </summary> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoryCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData})"> - <summary> - 瀛楀吀绫诲埆鍛戒护澶勭悊鍣� - </summary> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoryCommandHandler.Handle(FlexJobApi.Core.DeleteDictionaryCategoryCommand,System.Threading.CancellationToken)"> - <summary> - 鍒犻櫎鏁版嵁瀛楀吀绫诲埆 - </summary> - <param name="request"></param> - <param name="cancellationToken"></param> - <returns></returns> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoryCommandHandler.Handle(FlexJobApi.Core.SaveDictionaryCategoryCommand,System.Threading.CancellationToken)"> - <summary> - 淇濆瓨鏁版嵁瀛楀吀绫诲埆 - </summary> - <param name="request"></param> - <param name="cancellationToken"></param> - <returns></returns> - </member> - <member name="T:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler"> - <summary> - 鏁版嵁瀛楀吀鍛戒护澶勭悊鍣� - </summary> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory})"> - <summary> - 鏁版嵁瀛楀吀鍛戒护澶勭悊鍣� - </summary> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SaveDictionaryDataCommand,System.Threading.CancellationToken)"> - <summary> - 淇濆瓨鏁版嵁瀛楀吀 - </summary> - <param name="request"></param> - <param name="cancellationToken"></param> - <returns></returns> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SetDictionaryDataIsDisabledCommand,System.Threading.CancellationToken)"> - <summary> - 璁剧疆鏁版嵁瀛楀吀鏄惁绂佺敤 - </summary> - <param name="request"></param> - <param name="cancellationToken"></param> - <returns></returns> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SyncHumanResourcesAreaDictionaryDataCommand,System.Threading.CancellationToken)"> - <summary> - 鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁 - </summary> - <param name="request"></param> - <param name="cancellationToken"></param> - <returns></returns> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDataCommandHandler.LoopSyncHumanResourcesAreaDictionaryData(System.Guid,System.Collections.Generic.List{FlexJobApi.Core.DictionaryData},System.Collections.Generic.List{FlexJobApi.Core.BaseArea},System.Collections.Generic.List{FlexJobApi.Core.BaseArea},System.Int32)"> - <summary> - 閫掑綊鍚屾浜哄姏璧勬簮鍦板尯瀛楀吀鏁版嵁 - </summary> - <param name="categoryId"></param> - <param name="entities"></param> - <param name="all"></param> - <param name="areas"></param> - <param name="deep"></param> - </member> - <member name="T:FlexJobApi.FlexJobServer.Application.DictionaryCategoriesQueryHandler"> - <summary> - 鏁版嵁瀛楀吀绫诲埆鏌ヨ澶勭悊鍣� - </summary> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoriesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory})"> - <summary> - 鏁版嵁瀛楀吀绫诲埆鏌ヨ澶勭悊鍣� - </summary> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoriesQueryHandler.Handle(FlexJobApi.Core.GetDictionaryCategoriesQuery,System.Threading.CancellationToken)"> - <summary> - 鏌ヨ鏁版嵁瀛楀吀绫诲埆鍒嗛〉鍒楄〃鏁版嵁 - </summary> - <param name="request"></param> - <param name="cancellationToken"></param> - <returns></returns> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryCategoriesQueryHandler.Handle(FlexJobApi.Core.GetDictionaryCategorySelectQuery,System.Threading.CancellationToken)"> - <summary> - 鏌ヨ鏁版嵁瀛楀吀绫诲埆閫夋嫨鍣ㄦ暟鎹� - </summary> - <param name="request"></param> - <param name="cancellationToken"></param> - <returns></returns> - </member> - <member name="T:FlexJobApi.FlexJobServer.Application.DictionaryDatasQueryHandler"> - <summary> - 鏁版嵁瀛楀吀鏌ヨ澶勭悊鍣� - </summary> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDatasQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData})"> - <summary> - 鏁版嵁瀛楀吀鏌ヨ澶勭悊鍣� - </summary> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDatasQueryHandler.Handle(FlexJobApi.Core.GetDictionaryDatasQuery,System.Threading.CancellationToken)"> - <summary> - 鑾峰彇鏁版嵁瀛楀吀鍒嗛〉鍒楄〃鏁版嵁 - </summary> - <param name="request"></param> - <param name="cancellationToken"></param> - <returns></returns> - </member> - <member name="M:FlexJobApi.FlexJobServer.Application.DictionaryDatasQueryHandler.Handle(FlexJobApi.Core.GetDictionaryDataSelectQuery,System.Threading.CancellationToken)"> - <summary> - 鏌ヨ鏁版嵁瀛楀吀閫夋嫨鍣� - </summary> - <param name="request"></param> - <param name="cancellationToken"></param> - <returns></returns> - </member> <member name="T:FlexJobApi.FlexJobServer.Application.TaskInfoCommandHandler"> <summary> 浠诲姟鍛戒护澶勭悊鍣� diff --git a/FlexJobApi.FlexJobServer.Test/Program.cs b/FlexJobApi.FlexJobServer.Test/Program.cs deleted file mode 100644 index 611ed5a..0000000 --- a/FlexJobApi.FlexJobServer.Test/Program.cs +++ /dev/null @@ -1 +0,0 @@ -Serve.Run(RunOptions.Default.WithArgs(args)); \ No newline at end of file diff --git a/FlexJobApi.FlexJobServer.Test/Startup.cs b/FlexJobApi.FlexJobServer.Test/Startup.cs index 9d58144..6524f75 100644 --- a/FlexJobApi.FlexJobServer.Test/Startup.cs +++ b/FlexJobApi.FlexJobServer.Test/Startup.cs @@ -18,54 +18,12 @@ { public void ConfigureServices(IServiceCollection services, IConfiguration config) { - services.AddSingleton<IConsulClient, ConsulClient>(p => new ConsulClient(options => - { - var address = config["Consul:Address"] ?? "http://localhost:8500"; - options.Address = new Uri(address); - })); services.AddComponent<DistributedCacheServiceComponent>(); services.AddHttpRemote(); - services.AddSingleton<ResourceHttpUtils>(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IConfiguration config) { - var consulClient = app.ApplicationServices.GetRequiredService<IConsulClient>(); - var lifetime = app.ApplicationServices.GetRequiredService<IHostApplicationLifetime>(); - - // 鏈嶅姟閰嶇疆锛堜粠appsettings.json璇诲彇锛� - var serviceName = config["Consul:ServiceName"] ?? "UnknownService"; - var serviceHost = config["Consul:ServiceIP"] ?? "localhost"; - var servicePort = int.Parse(config["Consul:ServicePort"]); // 鎴栫洿鎺ョ敤鍚姩绔彛 - - // 鏈嶅姟鍞竴ID锛堥伩鍏嶅悓涓�鏈嶅姟澶氬疄渚嬪啿绐侊級 - var serviceId = $"{serviceName}-{serviceHost}-{servicePort}"; - - // 鏈嶅姟娉ㄥ唽淇℃伅 - var registration = new AgentServiceRegistration - { - ID = serviceId, - Name = serviceName, - Address = serviceHost, - Port = servicePort, - // 鍋ュ悍妫�鏌ラ厤缃� - Check = new AgentServiceCheck - { - HTTP = $"http://{serviceHost}:{servicePort}{config["Consul:ServiceHealthCheck"]}", - Interval = TimeSpan.FromSeconds(10), - Timeout = TimeSpan.FromSeconds(5), - DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(30) - } - }; - - // 娉ㄥ唽鏈嶅姟 - consulClient.Agent.ServiceRegister(registration).Wait(); - - // 搴旂敤鍋滄鏃舵敞閿�鏈嶅姟 - lifetime.ApplicationStopping.Register(() => - { - consulClient.Agent.ServiceDeregister(serviceId).Wait(); - }); } } } diff --git a/FlexJobApi.FlexJobServer.Test/Tasks/TaskUnitTest.cs b/FlexJobApi.FlexJobServer.Test/Tasks/TaskUnitTest.cs index 4d96e1e..bd93c3f 100644 --- a/FlexJobApi.FlexJobServer.Test/Tasks/TaskUnitTest.cs +++ b/FlexJobApi.FlexJobServer.Test/Tasks/TaskUnitTest.cs @@ -1,36 +1,39 @@ 锘縰sing FlexJobApi.Core; +using Microsoft.Extensions.DependencyInjection; using System.Threading.Tasks; namespace FlexJobApi.FlexJobServer.Test { public class TaskUnitTest { - private readonly ResourceHttpUtils http; + private readonly ResourceHttpUtils resourceHttpUtils; - public TaskUnitTest(ResourceHttpUtils http) + public TaskUnitTest(ResourceHttpUtils resourceHttpUtils) { - this.http = http; + this.resourceHttpUtils = resourceHttpUtils; } [Fact] public async Task Test1() { - var categories = await http.SendHttpAsync< + Console.WriteLine(); + var categories = await resourceHttpUtils.SendHttpAsync< GetDictionaryCategorySelectQuery, FriendlyResult<SelectOption<Guid, GetDictionaryCategorySelectQueryOption>>>( new GetDictionaryCategorySelectQuery()); Console.WriteLine(); - var result = await ResourceUtils.SendHttpAsync<SaveTaskInfoCommand, Guid>(new SaveTaskInfoCommand - { - Name = "娴嬭瘯浠诲姟", - BillingMethod = EnumBillingMethod.Month, - ServiceFee = 100, - SettlementCycle = EnumSettlementCycle.Month, - Benefits = new List<string> - { + //Console.WriteLine(); + //var result = await resourceHttpUtils.SendHttpAsync<SaveTaskInfoCommand, Guid>(new SaveTaskInfoCommand + //{ + // Name = "娴嬭瘯浠诲姟", + // BillingMethod = EnumBillingMethod.Month, + // ServiceFee = 100, + // SettlementCycle = EnumSettlementCycle.Month, + // Benefits = new List<string> + // { - } - }); + // } + //}); } } } diff --git a/FlexJobApi.FlexJobServer.Test/TestProgram.cs b/FlexJobApi.FlexJobServer.Test/TestProgram.cs new file mode 100644 index 0000000..93c1891 --- /dev/null +++ b/FlexJobApi.FlexJobServer.Test/TestProgram.cs @@ -0,0 +1,21 @@ +锘縰sing FlexJobApi.Core; +using Furion.Xunit; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Xunit.Abstractions; + +[assembly: TestFramework("FlexJobApi.FlexJobServer.Test.TestProgram", "FlexJobApi.FlexJobServer.Test")] +namespace FlexJobApi.FlexJobServer.Test +{ + public class TestProgram : TestStartup + { + public TestProgram(IMessageSink messageSink) : base(messageSink) + { + Serve.Run<Startup>(LegacyRunOptions.Default); + } + } +} diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.csproj b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.csproj index c51f897..4f446cf 100644 --- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.csproj +++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.csproj @@ -15,8 +15,4 @@ <ProjectReference Include="..\FlexJobApi.Core\FlexJobApi.Core.csproj" /> </ItemGroup> - <ItemGroup> - <Folder Include="UserResumes\Commands\" /> - </ItemGroup> - </Project> diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml index a96c92a..5ec45ad 100644 --- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml +++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml @@ -322,32 +322,6 @@ <param name="all"></param> <param name="roleMenuIds"></param> </member> - <member name="T:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler"> - <summary> - 鑾峰彇璧勬簮瀛楁 - </summary> - </member> - <member name="M:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource})"> - <summary> - 鑾峰彇璧勬簮瀛楁 - </summary> - </member> - <member name="M:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler.Handle(FlexJobApi.Core.GetResourceFieldsQuery,System.Threading.CancellationToken)"> - <inheritdoc/> - </member> - <member name="T:FlexJobApi.UserServer.Application.GetResourcesQueryHandler"> - <summary> - 鑾峰彇璧勬簮鍒楄〃 - </summary> - </member> - <member name="M:FlexJobApi.UserServer.Application.GetResourcesQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource})"> - <summary> - 鑾峰彇璧勬簮鍒楄〃 - </summary> - </member> - <member name="M:FlexJobApi.UserServer.Application.GetResourcesQueryHandler.Handle(FlexJobApi.Core.GetResourcesQuery,System.Threading.CancellationToken)"> - <inheritdoc/> - </member> <member name="T:FlexJobApi.UserServer.Application.DeleteRoleCommandHandler"> <summary> 鍒犻櫎瑙掕壊 @@ -443,16 +417,130 @@ <member name="M:FlexJobApi.UserServer.Application.GetRoleUserInfosQueryHandler.Handle(FlexJobApi.Core.GetRoleUserInfosQuery,System.Threading.CancellationToken)"> <inheritdoc/> </member> + <member name="T:FlexJobApi.UserServer.Application.UserResumeCommandHandler"> + <summary> + 鐢ㄦ埛绠�鍘嗗懡浠ゅ鐞嗗櫒 + </summary> + </member> + <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User})"> + <summary> + 鐢ㄦ埛绠�鍘嗗懡浠ゅ鐞嗗櫒 + </summary> + </member> + <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.SaveUserResumePersonalCommand,System.Threading.CancellationToken)"> + <summary> + 淇濆瓨鐢ㄦ埛绠�鍘�-涓汉淇℃伅 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.SaveUserResumeJobSeekingCommand,System.Threading.CancellationToken)"> + <summary> + 淇濆瓨鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.SaveUserResumeCredentialCommand,System.Threading.CancellationToken)"> + <summary> + 淇濆瓨鐢ㄦ埛绠�鍘�-璧勬牸璇佷功 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.DeleteUserResumeCredentialCommand,System.Threading.CancellationToken)"> + <summary> + 鍒犻櫎鐢ㄦ埛绠�鍘�-璧勬牸璇佷功 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.SaveUserResumeWorkExperienceCommand,System.Threading.CancellationToken)"> + <summary> + 淇濆瓨鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.SaveUserResumeDetailCommand,System.Threading.CancellationToken)"> + <summary> + 淇濆瓨鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> <member name="T:FlexJobApi.UserServer.Application.UserResumeQueryHandler"> <summary> 鐢ㄦ埛绠�鍘嗘煡璇㈠鐞嗗櫒 </summary> </member> - <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.UserResume})"> + <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User})"> <summary> 鐢ㄦ埛绠�鍘嗘煡璇㈠鐞嗗櫒 </summary> </member> + <member name="M:FlexJobApi.UserServer.Application.UserResumeQueryHandler.Handle(FlexJobApi.Core.GetUserResumeQuery,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.GetUserResumePersonalQuery,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.GetUserResumeJobSeekingQuery,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.GetUserResumeCredentialsQuery,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.GetUserResumeCredentialQuery,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.GetUserResumeWorkExperienceQuery,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.GetUserResumeDetailQuery,System.Threading.CancellationToken)"> + <summary> + 鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> <member name="T:FlexJobApi.UserServer.Application.UserInfos.Commands.UserInfoCommandHandler"> <summary> 鐢ㄦ埛淇℃伅鍛戒护澶勭悊鍣� diff --git a/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs new file mode 100644 index 0000000..4c65431 --- /dev/null +++ b/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs @@ -0,0 +1,117 @@ +锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using Mapster; +using MediatR; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.UserServer.Application +{ + /// <summary> + /// 鐢ㄦ埛绠�鍘嗗懡浠ゅ鐞嗗櫒 + /// </summary> + public class UserResumeCommandHandler( + IRepository<User> rep + ) : + IRequestHandler<SaveUserResumePersonalCommand, Guid>, + IRequestHandler<SaveUserResumeJobSeekingCommand, Guid>, + IRequestHandler<SaveUserResumeCredentialCommand, Guid>, + IRequestHandler<DeleteUserResumeCredentialCommand, int>, + IRequestHandler<SaveUserResumeWorkExperienceCommand, Guid>, + IRequestHandler<SaveUserResumeDetailCommand, Guid> + { + private readonly IRepository<User> rep = rep; + + /// <summary> + /// 淇濆瓨鐢ㄦ埛绠�鍘�-涓汉淇℃伅 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<Guid> Handle(SaveUserResumePersonalCommand request, CancellationToken cancellationToken) + { + return rep.GetPersonalQueryable(true) + .UpdateData(request, cancellationToken: cancellationToken); + } + + /// <summary> + /// 淇濆瓨鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<Guid> Handle(SaveUserResumeJobSeekingCommand request, CancellationToken cancellationToken) + { + return rep.GetPersonalQueryable(true) + .Include(it => it.UserExpectJobs) + .UpdateData( + request, + (entity) => + { + request.Adapt(entity); + entity.UserExpectJobs = request.UserExpectJobs.Select(it => new UserExpectJob + { + ExpectJobCode = it + }).ToList(); + }, + cancellationToken: cancellationToken); + } + + /// <summary> + /// 淇濆瓨鐢ㄦ埛绠�鍘�-璧勬牸璇佷功 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<Guid> Handle(SaveUserResumeCredentialCommand request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + return request.SaveData<UserCredential, SaveUserResumeCredentialCommand>( + q => rep.GetPersonalQueryable(true).SelectMany(it => it.UserCredentials), + cancellationToken: cancellationToken); + } + + /// <summary> + /// 鍒犻櫎鐢ㄦ埛绠�鍘�-璧勬牸璇佷功 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<int> Handle(DeleteUserResumeCredentialCommand request, CancellationToken cancellationToken) + { + return request.DeleteData<UserCredential>( + q => rep.GetPersonalQueryable(true).SelectMany(it => it.UserCredentials), + cancellationToken); + } + + /// <summary> + /// 淇濆瓨鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<Guid> Handle(SaveUserResumeWorkExperienceCommand request, CancellationToken cancellationToken) + { + return rep.GetPersonalQueryable(true) + .UpdateData(request, cancellationToken: cancellationToken); + } + + /// <summary> + /// 淇濆瓨鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<Guid> Handle(SaveUserResumeDetailCommand request, CancellationToken cancellationToken) + { + return rep.GetPersonalQueryable(true) + .Include(it => it.Photos) + .UpdateData(request, cancellationToken: cancellationToken); + } + } +} diff --git a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs index 4eaf42e..680d589 100644 --- a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs +++ b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs @@ -1,6 +1,9 @@ 锘縰sing FlexJobApi.Core; using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using Mapster; using MediatR; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -13,15 +16,116 @@ /// 鐢ㄦ埛绠�鍘嗘煡璇㈠鐞嗗櫒 /// </summary> public class UserResumeQueryHandler( - IRepository<UserResume> rep + IRepository<User> rep ) : - IRequestHandler<GetUserResumeQuery, GetUserResumeQueryResult> + IRequestHandler<GetUserResumeQuery, GetUserResumeQueryResult>, + IRequestHandler<GetUserResumePersonalQuery, GetUserResumePersonalQueryResult>, + IRequestHandler<GetUserResumeJobSeekingQuery, GetUserResumeJobSeekingQueryResult>, + IRequestHandler<GetUserResumeCredentialsQuery, List<GetUserResumeCredentialsQueryResultItem>>, + IRequestHandler<GetUserResumeCredentialQuery, GetUserResumeCredentialQueryResult>, + IRequestHandler<GetUserResumeWorkExperienceQuery, GetUserResumeWorkExperienceQueryResult>, + IRequestHandler<GetUserResumeDetailQuery, GetUserResumeDetailQueryResult> { - private readonly IRepository<UserResume> rep = rep; + private readonly IRepository<User> rep = rep; - public Task<GetUserResumeQueryResult> Handle(GetUserResumeQuery request, CancellationToken cancellationToken) + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetUserResumeQueryResult> Handle(GetUserResumeQuery request, CancellationToken cancellationToken) { - throw new NotImplementedException(); + var logier = JwtUtils.GetCurrentLogier(); + if (logier.Type == EnumUserType.Personal) + { + request.UserId = logier.Id; + } + if (request.UserId == null) throw Oops.Oh(EnumErrorCodeType.s400, "璇烽�夋嫨鐢ㄦ埛"); + var model = await request.UserId.Value + .GetDetail<User, GetUserResumeQueryResult>(cancellationToken); + model.TaskCount = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() + .Where(it => it.UserId == model.Id && it.HireStatus == EnumTaskUserHireStatus.Pass) + .CountAsync(); + return model; } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-涓汉淇℃伅 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<GetUserResumePersonalQueryResult> Handle(GetUserResumePersonalQuery request, CancellationToken cancellationToken) + { + return rep.GetPersonalQueryable(false) + .GetDetail<User, GetUserResumePersonalQueryResult>(cancellationToken); + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-姹傝亴鎰忓悜 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<GetUserResumeJobSeekingQueryResult> Handle(GetUserResumeJobSeekingQuery request, CancellationToken cancellationToken) + { + return rep.GetPersonalQueryable(false) + .GetDetail<User, GetUserResumeJobSeekingQueryResult>(cancellationToken); + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功鍒楄〃 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<GetUserResumeCredentialsQueryResultItem>> Handle(GetUserResumeCredentialsQuery request, CancellationToken cancellationToken) + { + return await rep.GetPersonalQueryable(false) + .SelectMany(it => it.UserCredentials) + .OrderBy(it => it.CreatedTime) + .ProjectToType<GetUserResumeCredentialsQueryResultItem>() + .ToListAsync(cancellationToken); + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-璧勬牸璇佷功 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<GetUserResumeCredentialQueryResult> Handle(GetUserResumeCredentialQuery request, CancellationToken cancellationToken) + { + return rep.GetPersonalQueryable(false) + .SelectMany(it => it.UserCredentials) + .Where(it => it.Id == request.Id) + .GetDetail<UserCredential, GetUserResumeCredentialQueryResult>(cancellationToken); + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<GetUserResumeWorkExperienceQueryResult> Handle(GetUserResumeWorkExperienceQuery request, CancellationToken cancellationToken) + { + return rep.GetPersonalQueryable(false) + .GetDetail<User, GetUserResumeWorkExperienceQueryResult>(cancellationToken); + } + + /// <summary> + /// 鏌ヨ鐢ㄦ埛绠�鍘�-璇︾粏淇℃伅 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public Task<GetUserResumeDetailQueryResult> Handle(GetUserResumeDetailQuery request, CancellationToken cancellationToken) + { + return rep.GetPersonalQueryable(false) + .GetDetail<User, GetUserResumeDetailQueryResult>(cancellationToken); + } + } } diff --git a/FlexJobApi.Web.Entry/FlexJobApi.Web.Entry.csproj b/FlexJobApi.Web.Entry/FlexJobApi.Web.Entry.csproj index d6cc33a..f86dd1d 100644 --- a/FlexJobApi.Web.Entry/FlexJobApi.Web.Entry.csproj +++ b/FlexJobApi.Web.Entry/FlexJobApi.Web.Entry.csproj @@ -22,6 +22,7 @@ <ItemGroup> + <ProjectReference Include="..\FlexJobApi.CommonServer.Application\FlexJobApi.CommonServer.Application.csproj" /> <ProjectReference Include="..\FlexJobApi.Database.Migrations\FlexJobApi.Database.Migrations.csproj" /> <ProjectReference Include="..\FlexJobApi.FlexJobServer.Application\FlexJobApi.FlexJobServer.Application.csproj" /> <ProjectReference Include="..\FlexJobApi.UserServer.Application\FlexJobApi.UserServer.Application.csproj" /> diff --git a/FlexJobApi.Core/FlexJobApiCoreStartup.cs b/FlexJobApi.Web.Entry/Startup.cs similarity index 84% rename from FlexJobApi.Core/FlexJobApiCoreStartup.cs rename to FlexJobApi.Web.Entry/Startup.cs index de3bf71..21d2a78 100644 --- a/FlexJobApi.Core/FlexJobApiCoreStartup.cs +++ b/FlexJobApi.Web.Entry/Startup.cs @@ -1,6 +1,8 @@ 锘縰sing Consul; +using FlexJobApi.Core; using Furion; using Furion.EventBus; +using Furion.Schedule; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -13,35 +15,18 @@ using System.Text; using System.Threading.Tasks; -namespace FlexJobApi.Core +namespace FlexJobApi.Web.Entry { [AppStartup(2)] - public class FlexJobApiCoreStartup : AppStartup + public class Startup : AppStartup { public void ConfigureServices(IServiceCollection services) { services.AddHealthChecks(); - services.AddConsoleFormatter(options => - { - options.WithTraceId = true; - }); - - services.AddFileLogging(options => - { - options.WithTraceId = true; - options.FileNameRule = fileName => - { - return string.Format(fileName, DateTime.Now); - }; - }); - - //services.AddDatabaseLogging<DatabaseLoggingWriter>(options => - //{ - // options.WithTraceId = true; - //}); - services.AddConfigurableOptions<AliyunOptions>(); + + services.AddComponent<LogServiceComponent>(); services.AddComponent<ConsulServiceComponent>(); @@ -64,6 +49,13 @@ services.AddCorsAccessor(); services.AddHostedService<BuildDynamicControllersHostedService>(); + + services.AddSchedule(options => + { + options.BuildSqlType = SqlTypes.SqlServer; + options.JobDetail.LogEnabled = true; + options.AddPersistence<DbJobPersistence>(); + }); services.AddSpecificationDocuments(options => { @@ -112,6 +104,9 @@ app.UseInject(string.Empty); + app.UseStaticFiles(); + app.UseScheduleUI(); + app.UseSpecificationDocuments(); app.UseEndpoints(endpoints => diff --git a/FlexJobApi.sln b/FlexJobApi.sln index 24a73e4..f2ca832 100644 --- a/FlexJobApi.sln +++ b/FlexJobApi.sln @@ -21,6 +21,10 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlexJobApi.FlexJobServer.Test", "FlexJobApi.FlexJobServer.Test\FlexJobApi.FlexJobServer.Test.csproj", "{1D9D054D-B5D4-4F5B-B1D1-0354CD0F322F}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FlexJobApi.CommonServer", "FlexJobApi.CommonServer", "{66290CF1-30A7-4F7F-8FF1-68030ECDBE6E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlexJobApi.CommonServer.Application", "FlexJobApi.CommonServer.Application\FlexJobApi.CommonServer.Application.csproj", "{EB492A13-0B50-4410-969A-CE98AA8E034C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -55,6 +59,10 @@ {1D9D054D-B5D4-4F5B-B1D1-0354CD0F322F}.Debug|Any CPU.Build.0 = Debug|Any CPU {1D9D054D-B5D4-4F5B-B1D1-0354CD0F322F}.Release|Any CPU.ActiveCfg = Release|Any CPU {1D9D054D-B5D4-4F5B-B1D1-0354CD0F322F}.Release|Any CPU.Build.0 = Release|Any CPU + {EB492A13-0B50-4410-969A-CE98AA8E034C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EB492A13-0B50-4410-969A-CE98AA8E034C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EB492A13-0B50-4410-969A-CE98AA8E034C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EB492A13-0B50-4410-969A-CE98AA8E034C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -63,6 +71,7 @@ {BAC3E134-8D84-4F6D-8C25-AD6FD8A95697} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {6D8B1CA5-5859-491D-8E16-027ED8E44BDE} = {39E37108-90DA-4908-B04C-B5A06591326D} {1D9D054D-B5D4-4F5B-B1D1-0354CD0F322F} = {39E37108-90DA-4908-B04C-B5A06591326D} + {EB492A13-0B50-4410-969A-CE98AA8E034C} = {66290CF1-30A7-4F7F-8FF1-68030ECDBE6E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {B2073C2C-0FD3-452B-8047-8134D68E12CE} -- Gitblit v1.9.1