From e94d90fd7d2ec6fcb41fb6aa6fc28e3f9d39ba95 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 19 八月 2025 10:50:16 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs | 10 FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs | 3 FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs | 3 FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs | 4 FlexJobApi.Web.Entry/appsettings.json | 1 FlexJobApi.Core/FlexJobApi.Core.xml | 360 +++++ FlexJobApi.Database.Migrations/Migrations/LogDb/20250819015802_UpdateResource0819.cs | 28 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs | 5 FlexJobApi.Database.Migrations/REDEME.MD | 4 FlexJobApi.Core/Enums/Common/EnumResourceController.cs | 5 FlexJobApi.CommonServer.Application/LogRecords/Queries/GetTraceIdLogQueryHandler.cs | 81 + FlexJobApi.Core/settings.json | 2 FlexJobApi.Core/Models/CommonServer/LogRecords/Commands/ResendResourceCommand.cs | 21 FlexJobApi.Database.Migrations/Migrations/20250819025001_UpdateTaskInfo0819.Designer.cs | 2613 ++++++++++++++++++++++++++++++++++++ FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetDbAuditLogsQuery.cs | 91 + FlexJobApi.Core/Entities/CommonServer/LogRecords/ResourceLog.cs | 5 FlexJobApi.Core/Enums/Common/EnumResourceService.cs | 6 FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetTraceIdLogQuery.cs | 49 FlexJobApi.Database.Migrations/Migrations/LogDb/20250819015802_UpdateResource0819.Designer.cs | 432 ++++++ FlexJobApi.Core/Utils/ResourceUtils/ResourceActionFilter.cs | 83 FlexJobApi.Core/Models/FlexJobServer/Tasks/Repositories/TaskInfoRepository.cs | 2 FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs | 15 FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml | 36 FlexJobApi.CommonServer.Application/LogRecords/Commands/ResendResourceCommandHandler.cs | 62 FlexJobApi.Database.Migrations/Migrations/20250819025001_UpdateTaskInfo0819.cs | 39 FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetExceptionLogsQuery.cs | 85 + FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs | 1 FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetResourceLogsQuery.cs | 169 ++ FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs | 6 29 files changed, 4,176 insertions(+), 45 deletions(-) diff --git a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml index 7c8c5b4..e6d7fc4 100644 --- a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml +++ b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml @@ -167,6 +167,42 @@ <param name="cancellationToken"></param> <returns></returns> </member> + <member name="T:FlexJobApi.CommonServer.Application.ResendResourceCommandHandler"> + <summary> + 閲嶆柊鍙戦�佽祫婧� + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.ResendResourceCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Entities.Common.ResourceLog,FlexJobApi.Core.LogDbContextLocator},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource},FlexJobApi.Core.ResourceHttpUtils)"> + <summary> + 閲嶆柊鍙戦�佽祫婧� + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.ResendResourceCommandHandler.Handle(FlexJobApi.Core.ResendResourceCommand,System.Threading.CancellationToken)"> + <summary> + 閲嶆柊鍙戦�佽祫婧� + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> + <member name="T:FlexJobApi.CommonServer.Application.GetTraceIdLogQueryHandler"> + <summary> + 璺熻釜Id鏃ュ織鏌ヨ + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.GetTraceIdLogQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Entities.Common.ResourceLog,FlexJobApi.Core.LogDbContextLocator},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.ExceptionLog,FlexJobApi.Core.LogDbContextLocator},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DbAuditLog,FlexJobApi.Core.LogDbContextLocator},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User})"> + <summary> + 璺熻釜Id鏃ュ織鏌ヨ + </summary> + </member> + <member name="M:FlexJobApi.CommonServer.Application.GetTraceIdLogQueryHandler.Handle(FlexJobApi.Core.GetTraceIdLogQuery,System.Threading.CancellationToken)"> + <summary> + 璺熻釜Id鏃ュ織鏌ヨ + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> <member name="T:FlexJobApi.CommonServer.Application.OcrCommandHandler"> <summary> 鏂囧瓧璇嗗埆钀ヤ笟鎵х収 diff --git a/FlexJobApi.CommonServer.Application/LogRecords/Commands/ResendResourceCommandHandler.cs b/FlexJobApi.CommonServer.Application/LogRecords/Commands/ResendResourceCommandHandler.cs new file mode 100644 index 0000000..17662b7 --- /dev/null +++ b/FlexJobApi.CommonServer.Application/LogRecords/Commands/ResendResourceCommandHandler.cs @@ -0,0 +1,62 @@ +锘縰sing FlexJobApi.Core; +using FlexJobApi.Core.Entities.Common; +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using MediatR; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.CommonServer.Application +{ + /// <summary> + /// 閲嶆柊鍙戦�佽祫婧� + /// </summary> + public class ResendResourceCommandHandler( + IRepository<ResourceLog, LogDbContextLocator> repResourceLog, + IRepository<Resource> repResource, + ResourceHttpUtils resourceHttpUtils + ) : + IRequestHandler<ResendResourceCommand, string> + { + private readonly IRepository<ResourceLog, LogDbContextLocator> repResourceLog = repResourceLog; + private readonly IRepository<Resource> repResource = repResource; + private readonly ResourceHttpUtils resourceHttpUtils = resourceHttpUtils; + + /// <summary> + /// 閲嶆柊鍙戦�佽祫婧� + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<string> Handle(ResendResourceCommand request, CancellationToken cancellationToken) + { + var log = await repResourceLog.AsQueryable().AsNoTracking() + .Where(it => it.Id == request.Id) + .Select(it => new + { + it.Method, + it.Path, + it.Request, + it.CreatedUserId + }) + .FirstOrDefaultAsync(); + if (log == null) throw Oops.Oh(EnumErrorCodeType.s404, "鏃ュ織"); + var resource = await repResource.AsQueryable().AsNoTracking() + .Where(it => it.Method == log.Method && it.Route == log.Path) + .FirstOrDefaultAsync(); + var paramters = log.Request + .JsonTo(new + { + request = new object() + }) + .request + .ToJson(); + var result = await resourceHttpUtils.SendHttpAsync(resource, paramters); + return result; + } + } +} diff --git a/FlexJobApi.CommonServer.Application/LogRecords/Queries/GetTraceIdLogQueryHandler.cs b/FlexJobApi.CommonServer.Application/LogRecords/Queries/GetTraceIdLogQueryHandler.cs new file mode 100644 index 0000000..3c629e7 --- /dev/null +++ b/FlexJobApi.CommonServer.Application/LogRecords/Queries/GetTraceIdLogQueryHandler.cs @@ -0,0 +1,81 @@ +锘縰sing FlexJobApi.Core; +using FlexJobApi.Core.Entities.Common; +using Furion.DatabaseAccessor; +using Furion.LinqBuilder; +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.CommonServer.Application +{ + /// <summary> + /// 璺熻釜Id鏃ュ織鏌ヨ + /// </summary> + public class GetTraceIdLogQueryHandler( + IRepository<ResourceLog, LogDbContextLocator> repResourceLog, + IRepository<ExceptionLog, LogDbContextLocator> repExceptionLog, + IRepository<DbAuditLog, LogDbContextLocator> repDbAuditLog, + IRepository<User> repUser + ) : + IRequestHandler<GetTraceIdLogQuery, GetTraceIdLogQueryResult> + { + private readonly IRepository<ResourceLog, LogDbContextLocator> repResourceLog = repResourceLog; + private readonly IRepository<ExceptionLog, LogDbContextLocator> repExceptionLog = repExceptionLog; + private readonly IRepository<DbAuditLog, LogDbContextLocator> repDbAuditLog = repDbAuditLog; + private readonly IRepository<User> repUser = repUser; + + /// <summary> + /// 璺熻釜Id鏃ュ織鏌ヨ + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<GetTraceIdLogQueryResult> Handle(GetTraceIdLogQuery request, CancellationToken cancellationToken) + { + var result = new GetTraceIdLogQueryResult(); + result.ResourceLogs = await repResourceLog.AsQueryable().AsNoTracking() + .Where(it => it.TraceId == request.TraceId) + .ProjectToType<GetResourceLogsQueryResultItem>() + .ToListAsync(); + result.ExceptionLogs = await repExceptionLog.AsQueryable().AsNoTracking() + .Where(it => it.TraceId == request.TraceId) + .ProjectToType<GetExceptionLogsQueryResultItem>() + .ToListAsync(); + result.DbAuditLogs = await repDbAuditLog.AsQueryable().AsNoTracking() + .Where(it => it.TraceId == request.TraceId) + .ProjectToType<GetDbAuditLogsQueryResultItem>() + .ToListAsync(); + var userIds = result.ResourceLogs.DistinctSelect(it => it.CreatedUserId.HasValue, it => it.CreatedUserId) + .Union(result.ExceptionLogs.DistinctSelect(it => it.CreatedUserId.HasValue, it => it.CreatedUserId)) + .Union(result.DbAuditLogs.DistinctSelect(it => it.CreatedUserId.HasValue, it => it.CreatedUserId)); + if (userIds.IsNullOrEmpty()) + { + var users = await repUser.AsQueryable().AsNoTracking() + .Where(it => userIds.Contains(it.Id)) + .ProjectToType<GetResourceLogsQueryResultItemCreatedUser>() + .ToListAsync(); + foreach (var log in result.ResourceLogs) + { + if (log.CreatedUserId.HasValue) + log.CreatedUser = users.FirstOrDefault(it => it.Id == log.CreatedUserId); + } + foreach (var log in result.ExceptionLogs) + { + if (log.CreatedUserId.HasValue) + log.CreatedUser = users.FirstOrDefault(it => it.Id == log.CreatedUserId); + } + foreach (var log in result.DbAuditLogs) + { + if (log.CreatedUserId.HasValue) + log.CreatedUser = users.FirstOrDefault(it => it.Id == log.CreatedUserId); + } + } + return result; + } + } +} diff --git a/FlexJobApi.Core/Entities/CommonServer/LogRecords/ResourceLog.cs b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ResourceLog.cs index 84cfcb8..9ce554c 100644 --- a/FlexJobApi.Core/Entities/CommonServer/LogRecords/ResourceLog.cs +++ b/FlexJobApi.Core/Entities/CommonServer/LogRecords/ResourceLog.cs @@ -63,6 +63,11 @@ public string RefererUrl { get; set; } /// <summary> + /// 鎺у埗鍙版棩蹇� + /// </summary> + public string ConsoleLogs { get; set; } + + /// <summary> /// 鑰楁椂姣鏁� /// </summary> public long ElapsedMilliseconds { get; set; } diff --git a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs index a0f8722..3828d9c 100644 --- a/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs +++ b/FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskInfo.cs @@ -172,11 +172,21 @@ public EnumTaskSettlementStatus? SettlementStatus { get; set; } /// <summary> + /// 缁撶畻鏃堕棿 + /// </summary> + public DateTime? SettlementTime { get; set; } + + /// <summary> /// 鎺ㄨ崘鐘舵�� /// </summary> public EnumTaskRecommendStatus RecommendStatus { get; set; } /// <summary> + /// 鎺ㄨ崘鏃堕棿 + /// </summary> + public DateTime? RecommendTime { get; set; } + + /// <summary> /// 鐢ㄦ埛 /// </summary> public List<TaskInfoUser> TaskInfoUsers { get; set; } diff --git a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs index 1f0180c..f9f5abf 100644 --- a/FlexJobApi.Core/Enums/Common/EnumResourceController.cs +++ b/FlexJobApi.Core/Enums/Common/EnumResourceController.cs @@ -42,6 +42,11 @@ /// </summary> [ResourceController(Service = EnumResourceService.CommonServer)] OcrUtils, + /// <summary> + /// 鏃ュ織璁板綍 + /// </summary> + [ResourceController(Service = EnumResourceService.CommonServer)] + LogRecords, /// <summary> /// 鐢ㄦ埛璁よ瘉 diff --git a/FlexJobApi.Core/Enums/Common/EnumResourceService.cs b/FlexJobApi.Core/Enums/Common/EnumResourceService.cs index bd0c5c8..0d2d4ef 100644 --- a/FlexJobApi.Core/Enums/Common/EnumResourceService.cs +++ b/FlexJobApi.Core/Enums/Common/EnumResourceService.cs @@ -15,17 +15,17 @@ /// <summary> /// 鐏垫椿鐢ㄥ伐鏈嶅姟 /// </summary> - [ResourceService(ApplicationName = "FlexJobApi.FlexJobServer.Application", RouteArea = "flexjob", ServiceName = "Local_FlexJobApi")] + [ResourceService(ApplicationName = "FlexJobApi.FlexJobServer.Application", RouteArea = "flexjob", ServiceName = "FlexJobServices")] FlexJobServer, /// <summary> /// 閫氱敤鏈嶅姟 /// </summary> - [ResourceService(ApplicationName = "FlexJobApi.CommonServer.Application", RouteArea = "common", ServiceName = "Local_FlexJobApi")] + [ResourceService(ApplicationName = "FlexJobApi.CommonServer.Application", RouteArea = "common", ServiceName = "FlexJobServices")] CommonServer, /// <summary> /// 鐢ㄦ埛鏈嶅姟 /// </summary> - [ResourceService(ApplicationName = "FlexJobApi.UserServer.Application", RouteArea = "user", ServiceName = "Local_FlexJobApi")] + [ResourceService(ApplicationName = "FlexJobApi.UserServer.Application", RouteArea = "user", ServiceName = "FlexJobServices")] UserServer } } diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index 8273ed1..0059aff 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -354,6 +354,11 @@ 鏉ユ簮鍦板潃 </summary> </member> + <member name="P:FlexJobApi.Core.Entities.Common.ResourceLog.ConsoleLogs"> + <summary> + 鎺у埗鍙版棩蹇� + </summary> + </member> <member name="P:FlexJobApi.Core.Entities.Common.ResourceLog.ElapsedMilliseconds"> <summary> 鑰楁椂姣鏁� @@ -869,9 +874,19 @@ 缁撶畻鐘舵�� </summary> </member> + <member name="P:FlexJobApi.Core.TaskInfo.SettlementTime"> + <summary> + 缁撶畻鏃堕棿 + </summary> + </member> <member name="P:FlexJobApi.Core.TaskInfo.RecommendStatus"> <summary> 鎺ㄨ崘鐘舵�� + </summary> + </member> + <member name="P:FlexJobApi.Core.TaskInfo.RecommendTime"> + <summary> + 鎺ㄨ崘鏃堕棿 </summary> </member> <member name="P:FlexJobApi.Core.TaskInfo.TaskInfoUsers"> @@ -2532,6 +2547,11 @@ 鏂囧瓧璇嗗埆 </summary> </member> + <member name="F:FlexJobApi.Core.EnumResourceController.LogRecords"> + <summary> + 鏃ュ織璁板綍 + </summary> + </member> <member name="F:FlexJobApi.Core.EnumResourceController.Auth"> <summary> 鐢ㄦ埛璁よ瘉 @@ -3841,6 +3861,341 @@ <member name="P:FlexJobApi.Core.GetFileUrlQuery.Url"> <summary> 鍦板潃 + </summary> + </member> + <member name="T:FlexJobApi.Core.ResendResourceCommand"> + <summary> + 閲嶆柊鍙戦�佽祫婧� + </summary> + </member> + <member name="P:FlexJobApi.Core.ResendResourceCommand.Id"> + <summary> + 璧勬簮鏃ュ織Id + </summary> + </member> + <member name="T:FlexJobApi.Core.GetDbAuditLogsQuery"> + <summary> + 鏌ヨ鏁版嵁搴撳璁℃棩蹇楀垎椤靛垪琛� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQuery.TraceId"> + <summary> + 璺熻釜Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQuery.Keywords"> + <summary> + 鍏抽敭瀛� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQuery.CreatedTimeBegin"> + <summary> + 鍒涘缓鏃堕棿-璧峰 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQuery.CreatedTimeEnd"> + <summary> + 鍒涘缓鏃堕棿-鎴 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetDbAuditLogsQueryResult"> + <summary> + 鏌ヨ鏁版嵁搴撳璁℃棩蹇楀垎椤靛垪琛�-缁撴灉 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetDbAuditLogsQueryResultItem"> + <summary> + 鏌ヨ鏁版嵁搴撳璁℃棩蹇楀垎椤靛垪琛�-缁撴灉-椤� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQueryResultItem.TableName"> + <summary> + 琛ㄥ悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQueryResultItem.PrimaryKey"> + <summary> + 涓婚敭 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQueryResultItem.Operate"> + <summary> + 鎿嶄綔 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQueryResultItem.OldValues"> + <summary> + 鏃у�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQueryResultItem.NewValues"> + <summary> + 鏂板�� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQueryResultItem.CreatedUserId"> + <summary> + 鎿嶄綔浜篒d + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQueryResultItem.CreatedUser"> + <summary> + 鎿嶄綔浜� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetDbAuditLogsQueryResultItem.CreatedTime"> + <summary> + 鍒涘缓鏃堕棿 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetExceptionLogsQuery"> + <summary> + 寮傚父鏃ュ織鍒嗛〉鍒楄〃鏌ヨ + </summary> + </member> + <member name="P:FlexJobApi.Core.GetExceptionLogsQuery.TraceId"> + <summary> + 璺熻釜Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetExceptionLogsQuery.Keywords"> + <summary> + 鍏抽敭瀛� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetExceptionLogsQuery.CreatedTimeBegin"> + <summary> + 鍒涘缓鏃堕棿-璧峰 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetExceptionLogsQuery.CreatedTimeEnd"> + <summary> + 鍒涘缓鏃堕棿-鎴 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetExceptionLogsQueryResult"> + <summary> + 寮傚父鏃ュ織鍒嗛〉鍒楄〃鏌ヨ-缁撴灉 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetExceptionLogsQueryResultItem"> + <summary> + 寮傚父鏃ュ織鍒嗛〉鍒楄〃鏌ヨ-缁撴灉-椤� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetExceptionLogsQueryResultItem.Type"> + <summary> + 绫诲瀷 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetExceptionLogsQueryResultItem.Code"> + <summary> + 浠g爜 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetExceptionLogsQueryResultItem.Message"> + <summary> + 娑堟伅 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetExceptionLogsQueryResultItem.StackTrace"> + <summary> + 鍫嗘爤璺熻釜 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetExceptionLogsQueryResultItem.CreatedUserId"> + <summary> + 鎿嶄綔浜篒d + </summary> + </member> + <member name="P:FlexJobApi.Core.GetExceptionLogsQueryResultItem.CreatedUser"> + <summary> + 鎿嶄綔浜� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetExceptionLogsQueryResultItem.CreatedTime"> + <summary> + 鍒涘缓鏃堕棿 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetResourceLogsQuery"> + <summary> + 璧勬簮鏃ュ織鍒嗛〉鍒楄〃鏌ヨ + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQuery.TraceId"> + <summary> + 璺熻釜Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQuery.Keywords"> + <summary> + 鍏抽敭瀛� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQuery.CreatedTimeBegin"> + <summary> + 鍒涘缓鏃堕棿-璧峰 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQuery.CreatedTimeEnd"> + <summary> + 鍒涘缓鏃堕棿-鎴 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetResourceLogsQueryResult"> + <summary> + 璧勬簮鏃ュ織鍒嗛〉鍒楄〃鏌ヨ-缁撴灉 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetResourceLogsQueryResultItem"> + <summary> + 璧勬簮鏃ュ織鍒嗛〉鍒楄〃鏌ヨ-缁撴灉-椤� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.Id"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.Method"> + <summary> + 璇锋眰鏂瑰紡 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.Domain"> + <summary> + 鍩熷悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.Path"> + <summary> + 鍦板潃 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.RequestHeaders"> + <summary> + 璇锋眰澶� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.Request"> + <summary> + 璇锋眰鍙傛暟 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.ResponseHeaders"> + <summary> + 璇锋眰澶� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.Response"> + <summary> + 鍝嶅簲缁撴灉 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.IsSuccess"> + <summary> + 鏄惁鎴愬姛 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.ClientIpAddress"> + <summary> + 瀹㈡埛绔疘P鍦板潃 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.RefererUrl"> + <summary> + 鏉ユ簮鍦板潃 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.ConsoleLogs"> + <summary> + 鎺у埗鍙版棩蹇� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.ElapsedMilliseconds"> + <summary> + 鑰楁椂姣鏁� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.CreatedUserId"> + <summary> + 鎿嶄綔浜篒d + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.CreatedUser"> + <summary> + 鎿嶄綔浜� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItem.CreatedTime"> + <summary> + 鍒涘缓鏃堕棿 + </summary> + </member> + <member name="T:FlexJobApi.Core.GetResourceLogsQueryResultItemCreatedUser"> + <summary> + 璧勬簮鏃ュ織鍒嗛〉鍒楄〃鏌ヨ-缁撴灉-椤�-鎿嶄綔浜� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItemCreatedUser.Id"> + <summary> + Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItemCreatedUser.Type"> + <summary> + 鐢ㄦ埛绫诲瀷 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItemCreatedUser.Name"> + <summary> + 濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItemCreatedUser.UserName"> + <summary> + 鐢ㄦ埛鍚� + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItemCreatedUser.EnterpriseId"> + <summary> + 浼佷笟Id + </summary> + </member> + <member name="P:FlexJobApi.Core.GetResourceLogsQueryResultItemCreatedUser.EnterpriseEnterpriseName"> + <summary> + 浼佷笟鍏ㄧО + </summary> + </member> + <member name="T:FlexJobApi.Core.GetTraceIdLogQuery"> + <summary> + 璺熻釜Id鏃ュ織鏌ヨ + </summary> + </member> + <member name="P:FlexJobApi.Core.GetTraceIdLogQuery.TraceId"> + <summary> + 璺熻釜Id + </summary> + </member> + <member name="T:FlexJobApi.Core.GetTraceIdLogQueryResult"> + <summary> + 璺熻釜Id鏃ュ織鏌ヨ + </summary> + </member> + <member name="P:FlexJobApi.Core.GetTraceIdLogQueryResult.ResourceLogs"> + <summary> + 璧勬簮鏃ュ織 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetTraceIdLogQueryResult.ExceptionLogs"> + <summary> + 寮傚父鏃ュ織 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetTraceIdLogQueryResult.DbAuditLogs"> + <summary> + 鏁版嵁搴撳璁℃棩蹇� </summary> </member> <member name="T:FlexJobApi.Core.GetLicenseOcrCommand"> @@ -5491,6 +5846,11 @@ 鎺ㄨ崘鐘舵�� </summary> </member> + <member name="P:FlexJobApi.Core.GetTaskInfosQueryResultItem.RecommendTime"> + <summary> + 鎺ㄨ崘鏃堕棿 + </summary> + </member> <member name="P:FlexJobApi.Core.GetTaskInfosQueryResultItem.HireStatus"> <summary> 褰曠敤鐘舵�� diff --git a/FlexJobApi.Core/Models/CommonServer/LogRecords/Commands/ResendResourceCommand.cs b/FlexJobApi.Core/Models/CommonServer/LogRecords/Commands/ResendResourceCommand.cs new file mode 100644 index 0000000..4ae2ae2 --- /dev/null +++ b/FlexJobApi.Core/Models/CommonServer/LogRecords/Commands/ResendResourceCommand.cs @@ -0,0 +1,21 @@ +锘縰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.LogRecords])] + public class ResendResourceCommand : IRequest<string> + { + /// <summary> + /// 璧勬簮鏃ュ織Id + /// </summary> + public Guid Id { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetDbAuditLogsQuery.cs b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetDbAuditLogsQuery.cs new file mode 100644 index 0000000..2efe265 --- /dev/null +++ b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetDbAuditLogsQuery.cs @@ -0,0 +1,91 @@ +锘縰sing System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鏌ヨ鏁版嵁搴撳璁℃棩蹇楀垎椤靛垪琛� + /// </summary> + [Resource([EnumResourceController.LogRecords])] + public class GetDbAuditLogsQuery : PagedListQuery<GetDbAuditLogsQueryResult, GetDbAuditLogsQueryResultItem> + { + /// <summary> + /// 璺熻釜Id + /// </summary> + public string TraceId { get; set; } + + /// <summary> + /// 鍏抽敭瀛� + /// </summary> + public string Keywords { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿-璧峰 + /// </summary> + public DateTime? CreatedTimeBegin { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿-鎴 + /// </summary> + public DateTime? CreatedTimeEnd { get; set; } + } + + + /// <summary> + /// 鏌ヨ鏁版嵁搴撳璁℃棩蹇楀垎椤靛垪琛�-缁撴灉 + /// </summary> + public class GetDbAuditLogsQueryResult : PagedListQueryResult<GetDbAuditLogsQueryResultItem> + { + + } + + /// <summary> + /// 鏌ヨ鏁版嵁搴撳璁℃棩蹇楀垎椤靛垪琛�-缁撴灉-椤� + /// </summary> + public class GetDbAuditLogsQueryResultItem + { + /// <summary> + /// 琛ㄥ悕 + /// </summary> + public string TableName { get; set; } + + /// <summary> + /// 涓婚敭 + /// </summary> + public Guid PrimaryKey { get; set; } + + /// <summary> + /// 鎿嶄綔 + /// </summary> + public EnumDbAuditOperate Operate { get; set; } + + /// <summary> + /// 鏃у�� + /// </summary> + public string OldValues { get; set; } + + /// <summary> + /// 鏂板�� + /// </summary> + public string NewValues { get; set; } + + /// <summary> + /// 鎿嶄綔浜篒d + /// </summary> + public Guid? CreatedUserId { get; set; } + + /// <summary> + /// 鎿嶄綔浜� + /// </summary> + public GetResourceLogsQueryResultItemCreatedUser CreatedUser { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public DateTimeOffset CreatedTime { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetExceptionLogsQuery.cs b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetExceptionLogsQuery.cs new file mode 100644 index 0000000..9c78884 --- /dev/null +++ b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetExceptionLogsQuery.cs @@ -0,0 +1,85 @@ +锘縰sing System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 寮傚父鏃ュ織鍒嗛〉鍒楄〃鏌ヨ + /// </summary> + [Resource([EnumResourceController.LogRecords])] + public class GetExceptionLogsQuery : PagedListQuery<GetExceptionLogsQueryResult, GetExceptionLogsQueryResultItem> + { + /// <summary> + /// 璺熻釜Id + /// </summary> + public string TraceId { get; set; } + + /// <summary> + /// 鍏抽敭瀛� + /// </summary> + public string Keywords { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿-璧峰 + /// </summary> + public DateTime? CreatedTimeBegin { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿-鎴 + /// </summary> + public DateTime? CreatedTimeEnd { get; set; } + } + + /// <summary> + /// 寮傚父鏃ュ織鍒嗛〉鍒楄〃鏌ヨ-缁撴灉 + /// </summary> + public class GetExceptionLogsQueryResult : PagedListQueryResult<GetExceptionLogsQueryResultItem> + { + + } + + /// <summary> + /// 寮傚父鏃ュ織鍒嗛〉鍒楄〃鏌ヨ-缁撴灉-椤� + /// </summary> + public class GetExceptionLogsQueryResultItem + { + /// <summary> + /// 绫诲瀷 + /// </summary> + public string Type { get; set; } + + /// <summary> + /// 浠g爜 + /// </summary> + public string Code { get; set; } + + /// <summary> + /// 娑堟伅 + /// </summary> + public string Message { get; set; } + + /// <summary> + /// 鍫嗘爤璺熻釜 + /// </summary> + public string StackTrace { get; set; } + + /// <summary> + /// 鎿嶄綔浜篒d + /// </summary> + public Guid? CreatedUserId { get; set; } + + /// <summary> + /// 鎿嶄綔浜� + /// </summary> + public GetResourceLogsQueryResultItemCreatedUser CreatedUser { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public DateTimeOffset CreatedTime { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetResourceLogsQuery.cs b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetResourceLogsQuery.cs new file mode 100644 index 0000000..c3486b1 --- /dev/null +++ b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetResourceLogsQuery.cs @@ -0,0 +1,169 @@ +锘縰sing Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 璧勬簮鏃ュ織鍒嗛〉鍒楄〃鏌ヨ + /// </summary> + [Resource([EnumResourceController.LogRecords])] + public class GetResourceLogsQuery : PagedListQuery<GetResourceLogsQueryResult, GetResourceLogsQueryResultItem> + { + /// <summary> + /// 璺熻釜Id + /// </summary> + public string TraceId { get; set; } + + /// <summary> + /// 鍏抽敭瀛� + /// </summary> + public string Keywords { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿-璧峰 + /// </summary> + public DateTime? CreatedTimeBegin { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿-鎴 + /// </summary> + public DateTime? CreatedTimeEnd { get; set; } + } + + /// <summary> + /// 璧勬簮鏃ュ織鍒嗛〉鍒楄〃鏌ヨ-缁撴灉 + /// </summary> + public class GetResourceLogsQueryResult : PagedListQueryResult<GetResourceLogsQueryResultItem> + { + + } + + /// <summary> + /// 璧勬簮鏃ュ織鍒嗛〉鍒楄〃鏌ヨ-缁撴灉-椤� + /// </summary> + public class GetResourceLogsQueryResultItem + { + /// <summary> + /// Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 璇锋眰鏂瑰紡 + /// </summary> + public EnumResourceMethod Method { get; set; } + + /// <summary> + /// 鍩熷悕 + /// </summary> + public string Domain { get; set; } + + /// <summary> + /// 鍦板潃 + /// </summary> + public string Path { get; set; } + + /// <summary> + /// 璇锋眰澶� + /// </summary> + public string RequestHeaders { get; set; } + + /// <summary> + /// 璇锋眰鍙傛暟 + /// </summary> + public string Request { get; set; } + + /// <summary> + /// 璇锋眰澶� + /// </summary> + public string ResponseHeaders { get; set; } + + /// <summary> + /// 鍝嶅簲缁撴灉 + /// </summary> + public string Response { get; set; } + + /// <summary> + /// 鏄惁鎴愬姛 + /// </summary> + public bool IsSuccess { get; set; } + + /// <summary> + /// 瀹㈡埛绔疘P鍦板潃 + /// </summary> + public string ClientIpAddress { get; set; } + + /// <summary> + /// 鏉ユ簮鍦板潃 + /// </summary> + public string RefererUrl { get; set; } + + /// <summary> + /// 鎺у埗鍙版棩蹇� + /// </summary> + public string ConsoleLogs { get; set; } + + /// <summary> + /// 鑰楁椂姣鏁� + /// </summary> + public long ElapsedMilliseconds { get; set; } + + /// <summary> + /// 鎿嶄綔浜篒d + /// </summary> + public Guid? CreatedUserId { get; set; } + + /// <summary> + /// 鎿嶄綔浜� + /// </summary> + public GetResourceLogsQueryResultItemCreatedUser CreatedUser { get; set; } + + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + public DateTimeOffset CreatedTime { get; set; } + } + + /// <summary> + /// 璧勬簮鏃ュ織鍒嗛〉鍒楄〃鏌ヨ-缁撴灉-椤�-鎿嶄綔浜� + /// </summary> + public class GetResourceLogsQueryResultItemCreatedUser + { + /// <summary> + /// Id + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 鐢ㄦ埛绫诲瀷 + /// </summary> + public EnumUserType Type { get; set; } + + /// <summary> + /// 濮撳悕 + /// </summary> + public string Name { get; set; } + + /// <summary> + /// 鐢ㄦ埛鍚� + /// </summary> + public string UserName { get; set; } + + /// <summary> + /// 浼佷笟Id + /// </summary> + public Guid? EnterpriseId { get; set; } + + /// <summary> + /// 浼佷笟鍏ㄧО + /// </summary> + [JsonProperty("enterpriseName")] + public string EnterpriseEnterpriseName { get; set; } + + } +} diff --git a/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetTraceIdLogQuery.cs b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetTraceIdLogQuery.cs new file mode 100644 index 0000000..2abe100 --- /dev/null +++ b/FlexJobApi.Core/Models/CommonServer/LogRecords/Queries/GetTraceIdLogQuery.cs @@ -0,0 +1,49 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 璺熻釜Id鏃ュ織鏌ヨ + /// </summary> + [Resource([EnumResourceController.LogRecords])] + public class GetTraceIdLogQuery : IRequest<GetTraceIdLogQueryResult> + { + /// <summary> + /// 璺熻釜Id + /// </summary> + public string TraceId { get; set; } + } + + /// <summary> + /// 璺熻釜Id鏃ュ織鏌ヨ + /// </summary> + public class GetTraceIdLogQueryResult + { + public GetTraceIdLogQueryResult() + { + ResourceLogs = []; + ExceptionLogs = []; + DbAuditLogs = []; + } + + /// <summary> + /// 璧勬簮鏃ュ織 + /// </summary> + public List<GetResourceLogsQueryResultItem> ResourceLogs { get; set; } + + /// <summary> + /// 寮傚父鏃ュ織 + /// </summary> + public List<GetExceptionLogsQueryResultItem> ExceptionLogs { get; set; } + + /// <summary> + /// 鏁版嵁搴撳璁℃棩蹇� + /// </summary> + public List<GetDbAuditLogsQueryResultItem> DbAuditLogs { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs index 46d3d25..08c245b 100644 --- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs +++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfosQuery.cs @@ -247,6 +247,11 @@ public EnumTaskRecommendStatus RecommendStatus { get; set; } /// <summary> + /// 鎺ㄨ崘鏃堕棿 + /// </summary> + public DateTime? RecommendTime { get; set; } + + /// <summary> /// 褰曠敤鐘舵�� /// </summary> public EnumTaskUserHireStatus? HireStatus { get; set; } diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Repositories/TaskInfoRepository.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Repositories/TaskInfoRepository.cs index 09d3cc2..40c8925 100644 --- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Repositories/TaskInfoRepository.cs +++ b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Repositories/TaskInfoRepository.cs @@ -29,7 +29,7 @@ { q = q.AsNoTracking(); } - q = q.OrderBy(it => it.BeginTime); + q = q.OrderByDescending(it => it.CreatedTime); if (logier != null && logier.Type == EnumUserType.Enterprise) { q = q.Where(it => it.EnterpriseId == logier.EnterpriseId); diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceActionFilter.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceActionFilter.cs index 1393015..ef89def 100644 --- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceActionFilter.cs +++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceActionFilter.cs @@ -11,6 +11,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.IO; using System.Linq; using System.Security.Claims; using System.Text; @@ -22,44 +23,60 @@ { public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { - var resourceLog = new ResourceLog(); - resourceLog.CreatedTime = DateTimeOffset.Now; - var stopwatch = Stopwatch.StartNew(); - var serviceScopeFactory = App.GetService<IServiceScopeFactory>(); - var serviceScope = serviceScopeFactory.CreateScope(); - var rep = serviceScope.ServiceProvider.GetRequiredService<IRepository<ResourceLog, LogDbContextLocator>>(); - var logier = JwtUtils.GetCurrentLogier(); + StringWriter consoleWriter = new(); + TextWriter originalConsoleOut = Console.Out; - resourceLog.Id = IDGen.NextID(); - resourceLog.TraceId = App.GetTraceId(); - resourceLog.Method = EnumUtils.GetEnum<EnumResourceMethod>(context.HttpContext.Request.Method); - resourceLog.Domain = $"{context.HttpContext.Request.Scheme}://{context.HttpContext.Request.Host}"; - resourceLog.Path = context.HttpContext.Request.Path; - resourceLog.ClientIpAddress = context.HttpContext.GetRemoteIpAddressToIPv4(); - resourceLog.CreatedUserId = logier?.Id; - resourceLog.CreatedEnterpriseId = logier?.EnterpriseId; - resourceLog.Request = context.ActionArguments?.ToJson(); - resourceLog.RequestHeaders = context.HttpContext.Request.Headers.ToJson(); - - await rep.InsertNowAsync(resourceLog); - - //============== 杩欓噷鏄墽琛屾柟娉曚箣鍚庤幏鍙栨暟鎹� ==================== - var actionContext = await next(); - - resourceLog.UpdatedTime = DateTimeOffset.Now; - if (actionContext.Result is JsonResult jsonResult) + try { - resourceLog.Response = jsonResult.Value.ToJson(); + Console.SetOut(consoleWriter); + + var serviceScopeFactory = App.GetService<IServiceScopeFactory>(); + var serviceScope = serviceScopeFactory.CreateScope(); + var rep = serviceScope.ServiceProvider.GetRequiredService<IRepository<ResourceLog, LogDbContextLocator>>(); + var logier = JwtUtils.GetCurrentLogier(); + + var resourceLog = new ResourceLog(); + resourceLog.CreatedTime = DateTimeOffset.Now; + resourceLog.Id = IDGen.NextID(); + resourceLog.TraceId = App.GetTraceId(); + resourceLog.Method = EnumUtils.GetEnum<EnumResourceMethod>(context.HttpContext.Request.Method); + resourceLog.Domain = $"{context.HttpContext.Request.Scheme}://{context.HttpContext.Request.Host}"; + resourceLog.Path = context.HttpContext.Request.Path; + resourceLog.ClientIpAddress = context.HttpContext.GetRemoteIpAddressToIPv4(); + resourceLog.CreatedUserId = logier?.Id; + resourceLog.CreatedEnterpriseId = logier?.EnterpriseId; + resourceLog.Request = context.ActionArguments?.ToJson(); + resourceLog.RequestHeaders = context.HttpContext.Request.Headers.ToJson(); + + Console.SetOut(originalConsoleOut); + await rep.InsertNowAsync(resourceLog); + Console.SetOut(consoleWriter); + + //============== 杩欓噷鏄墽琛屾柟娉曚箣鍚庤幏鍙栨暟鎹� ==================== + var actionContext = await next(); + Console.SetOut(originalConsoleOut); + + resourceLog.UpdatedTime = DateTimeOffset.Now; + if (actionContext.Result is JsonResult jsonResult) + { + resourceLog.Response = jsonResult.Value.ToJson(); + } + resourceLog.ResponseHeaders = context.HttpContext.Response.Headers.ToJson(); + resourceLog.IsSuccess = actionContext.Exception == null; + resourceLog.ConsoleLogs = consoleWriter.ToString(); + + stopwatch.Stop(); + resourceLog.ElapsedMilliseconds = stopwatch.ElapsedMilliseconds; + + await rep.UpdateNowAsync(resourceLog); } - resourceLog.ResponseHeaders = context.HttpContext.Response.Headers.ToJson(); - resourceLog.IsSuccess = actionContext.Exception == null; - - stopwatch.Stop(); - resourceLog.ElapsedMilliseconds = stopwatch.ElapsedMilliseconds; - - await rep.UpdateNowAsync(resourceLog); + finally + { + Console.SetOut(originalConsoleOut); // 鎭㈠ Console 鍘熷杈撳嚭娴� + consoleWriter.Dispose(); // 閲婃斁娴佽祫婧� + } } } } diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs index dd0b166..6de17f0 100644 --- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs +++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceHttpUtils.cs @@ -84,6 +84,9 @@ /// <returns></returns> public async Task<string> GetHealthyServiceDomain(string serviceName) { + var env = App.GetConfig<string>("Environment"); + serviceName = $"{env}_{serviceName}"; + var queryResult = await consulClient.Health.Service(serviceName, null, true); if (queryResult.StatusCode != System.Net.HttpStatusCode.OK) throw Oops.Oh(EnumErrorCodeType.s404, $"寰湇鍔serviceName}"); diff --git a/FlexJobApi.Core/settings.json b/FlexJobApi.Core/settings.json index 6b673c3..b708b4f 100644 --- a/FlexJobApi.Core/settings.json +++ b/FlexJobApi.Core/settings.json @@ -37,7 +37,7 @@ "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning", - "Microsoft.EntityFrameworkCore": "Information" + "Microsoft.EntityFrameworkCore": "Warning" }, "File": { "FileName": "Logs/logs{0:yyyy}{0:MM}{0:dd}.txt", diff --git a/FlexJobApi.Database.Migrations/Migrations/20250819025001_UpdateTaskInfo0819.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250819025001_UpdateTaskInfo0819.Designer.cs new file mode 100644 index 0000000..bd42590 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250819025001_UpdateTaskInfo0819.Designer.cs @@ -0,0 +1,2613 @@ +锘�// <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("20250819025001_UpdateTaskInfo0819")] + partial class UpdateTaskInfo0819 + { + /// <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>("Address") + .HasColumnType("nvarchar(max)"); + + 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>("EnterpriseType") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("EstablishmentDate") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("IndustrialParkId") + .HasColumnType("uniqueidentifier"); + + 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<string>("RegisteredCapital") + .HasColumnType("nvarchar(max)"); + + b.Property<decimal?>("SignCost") + .HasColumnType("decimal(18,2)"); + + b.Property<int?>("SmsAccess") + .HasColumnType("int"); + + b.Property<decimal>("SmsCost") + .HasColumnType("decimal(18,2)"); + + b.Property<string>("SocietyCreditCode") + .IsRequired() + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CityCode"); + + b.HasIndex("IndustryTypeCode"); + + b.HasIndex("ProvinceCode"); + + b.ToTable("Enterprise"); + }); + + modelBuilder.Entity("FlexJobApi.Core.EnterpriseAuth", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BankCard") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("BankCardImg") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("EnterpriseName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<int?>("EnterpriseRealMethod") + .HasColumnType("int"); + + b.Property<string>("Identity") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<string>("IdentityBackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityImg") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("LegalIdentity") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<string>("LegalPerson") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("LicenseImage") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Name") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<int?>("PersonalRealMethod") + .HasColumnType("int"); + + b.Property<string>("PhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<bool?>("Proxy") + .HasColumnType("bit"); + + b.Property<string>("ProxyPowerAttorneyUrl") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("SocietyCreditCode") + .IsRequired() + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("EnterpriseAuth"); + }); + + modelBuilder.Entity("FlexJobApi.Core.EnterpriseEmployee", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("Age") + .HasColumnType("int"); + + b.Property<DateTime?>("Birthday") + .HasColumnType("datetime2"); + + b.Property<string>("ContactPhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<string>("ContractUrl") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("EnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("EnterpriseSignContractStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("EnterpriseSignContractTime") + .HasColumnType("datetime2"); + + b.Property<int?>("Gender") + .HasColumnType("int"); + + b.Property<string>("Identity") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityBackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityImg") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("Name") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("UserSignContractStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("UserSignContractTime") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("UserId"); + + b.ToTable("EnterpriseEmployee"); + }); + + modelBuilder.Entity("FlexJobApi.Core.EnterpriseUserCollect", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<DateTime?>("CollectedTime") + .HasColumnType("datetime2"); + + b.Property<DateTime?>("ContactedTime") + .HasColumnType("datetime2"); + + 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>("IsCollected") + .HasColumnType("bit"); + + b.Property<bool>("IsContacted") + .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.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("UserId"); + + b.ToTable("EnterpriseUserCollect"); + }); + + 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>("FileUpload") + .HasColumnType("bit"); + + 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<DateTime?>("CheckReceiveTime") + .HasColumnType("datetime2"); + + 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<DateTime?>("LastCheckReceiveTime") + .HasColumnType("datetime2"); + + b.Property<DateTime?>("LastSubmitTime") + .HasColumnType("datetime2"); + + 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<DateTime?>("RecommendTime") + .HasColumnType("datetime2"); + + 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<DateTime?>("SettlementTime") + .HasColumnType("datetime2"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<int>("Status") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CityCode"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("ProvinceCode"); + + b.ToTable("TaskInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BenefitCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("TaskInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("BenefitCode"); + + b.HasIndex("TaskInfoId"); + + b.ToTable("TaskInfoBenefit"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("TaskInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TypeCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("TaskInfoId"); + + b.HasIndex("TypeCode"); + + b.ToTable("TaskInfoCredentialLimit"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("ArrangeStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("ArrangeTime") + .HasColumnType("datetime2"); + + b.Property<int?>("CheckReceiveStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("CheckReceiveTime") + .HasColumnType("datetime2"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("EnterpriseEmployeeId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("HireStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("HireTime") + .HasColumnType("datetime2"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<DateTime?>("LastCheckReceiveTime") + .HasColumnType("datetime2"); + + b.Property<DateTime?>("LastSubmitTime") + .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.HasKey("Id"); + + b.HasIndex("EnterpriseEmployeeId"); + + b.HasIndex("TaskInfoId"); + + b.ToTable("TaskInfoUser"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmit", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int>("CheckReceiveStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("CheckReceiveTime") + .HasColumnType("datetime2"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTime>("Date") + .HasColumnType("datetime2"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("TaskInfoUserId") + .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("TaskInfoUserId"); + + b.ToTable("TaskInfoUserSubmit"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmitFile", 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>("File") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("SubmitId") + .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("SubmitId"); + + b.ToTable("TaskInfoUserSubmitFile"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskUserCollect", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("TaskInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("TaskInfoId"); + + b.HasIndex("UserId"); + + b.ToTable("TaskUserCollect"); + }); + + modelBuilder.Entity("FlexJobApi.Core.User", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("Age") + .HasColumnType("int"); + + b.Property<string>("Avatar") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTime?>("Birthday") + .HasColumnType("datetime2"); + + b.Property<string>("CityCode") + .HasColumnType("nvarchar(128)"); + + b.Property<string>("ContactPhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("DataSource") + .HasColumnType("int"); + + b.Property<Guid?>("DataSourceId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("EducationalBackgroundCode") + .HasColumnType("nvarchar(128)"); + + b.Property<Guid?>("EnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("FreeTime") + .HasColumnType("int"); + + b.Property<int?>("Gender") + .HasColumnType("int"); + + b.Property<int?>("Height") + .HasColumnType("int"); + + b.Property<string>("Identity") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsCheckPhoneNumber") + .HasColumnType("bit"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsReal") + .HasColumnType("bit"); + + b.Property<int?>("JobSeekingStatus") + .HasColumnType("int"); + + b.Property<int>("Level") + .HasColumnType("int"); + + b.Property<string>("Name") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("Password") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("PersonalIdentityCode") + .HasColumnType("nvarchar(128)"); + + b.Property<string>("PhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<string>("ProvinceCode") + .HasColumnType("nvarchar(128)"); + + b.Property<int?>("RealAccess") + .HasColumnType("int"); + + b.Property<int?>("RealMethod") + .HasColumnType("int"); + + b.Property<DateTime?>("RealTime") + .HasColumnType("datetime2"); + + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<int>("Status") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Type") + .HasColumnType("int"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("UserName") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<int?>("Weight") + .HasColumnType("int"); + + b.Property<string>("WorkExperience") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("WorkSeniority") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("WxmpOpenId") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.HasKey("Id"); + + b.HasIndex("CityCode"); + + b.HasIndex("EducationalBackgroundCode"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("PersonalIdentityCode"); + + b.HasIndex("ProvinceCode"); + + b.ToTable("User"); + + b.HasData( + new + { + Id = new Guid("11111111-1111-1111-1111-111111111111"), + CreatedTime = new DateTimeOffset(new DateTime(2000, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)), + IsCheckPhoneNumber = false, + IsDeleted = false, + IsReal = false, + Level = 999, + Name = "绠$悊鍛�", + Password = "iEYggKrMhQ3ASUGLobra1w==:fn/DsMJUbD9FGpvBvR3moMpMPptdxzZlourPVhU479I=", + Sort = 0, + Status = 10, + Type = 100, + UserName = "system" + }); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserAuth", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BankCard") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("BankCardImg") + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Identity") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityBackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityImg") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("Name") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("PhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("UserAuth"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserBankCard", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Bank") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("Code") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("PhoneNumber") + .IsRequired() + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserBankCard"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserCredential", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Code") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTime?>("EndDate") + .HasColumnType("datetime2"); + + b.Property<string>("Img") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsForever") + .HasColumnType("bit"); + + b.Property<string>("IssueUnit") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<DateTime?>("StartDate") + .HasColumnType("datetime2"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TypeCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("TypeCode"); + + b.HasIndex("UserId"); + + b.ToTable("UserCredential"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserDepartment", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("DepartmentId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("DepartmentId"); + + b.HasIndex("UserId"); + + b.ToTable("UserDepartment"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserExpectJob", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid?>("CreatedEnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("ExpectJobCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("ExpectJobCode"); + + b.HasIndex("UserId"); + + b.ToTable("UserExpectJob"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserManageIndustrialPark", 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>("IndustrialParkId") + .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("UserId"); + + b.ToTable("UserManageIndustrialPark"); + }); + + 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.EnterpriseEmployee", b => + { + b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") + .WithMany() + .HasForeignKey("EnterpriseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany("EnterpriseEmployees") + .HasForeignKey("UserId"); + + b.Navigation("Enterprise"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("FlexJobApi.Core.EnterpriseUserCollect", b => + { + b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") + .WithMany() + .HasForeignKey("EnterpriseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany("EnterpriseUserCollects") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Enterprise"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Menu", b => + { + b.HasOne("FlexJobApi.Core.Menu", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b => + { + b.HasOne("FlexJobApi.Core.Menu", "Menu") + .WithMany() + .HasForeignKey("MenuId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.Role", "Role") + .WithMany("RoleMenus") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Menu"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("FlexJobApi.Core.RoleResource", b => + { + b.HasOne("FlexJobApi.Core.Resource", "Resource") + .WithMany() + .HasForeignKey("ResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.Role", "Role") + .WithMany("RoleResources") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resource"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "City") + .WithMany() + .HasForeignKey("CityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") + .WithMany() + .HasForeignKey("EnterpriseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.DictionaryData", "Province") + .WithMany() + .HasForeignKey("ProvinceCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("City"); + + b.Navigation("Enterprise"); + + b.Navigation("Province"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "Benefit") + .WithMany() + .HasForeignKey("BenefitCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") + .WithMany("Benefits") + .HasForeignKey("TaskInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Benefit"); + + b.Navigation("TaskInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b => + { + b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") + .WithMany("CredentialLimits") + .HasForeignKey("TaskInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.DictionaryData", "Type") + .WithMany() + .HasForeignKey("TypeCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("TaskInfo"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b => + { + b.HasOne("FlexJobApi.Core.EnterpriseEmployee", "EnterpriseEmployee") + .WithMany("TaskInfoUsers") + .HasForeignKey("EnterpriseEmployeeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") + .WithMany("TaskInfoUsers") + .HasForeignKey("TaskInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EnterpriseEmployee"); + + b.Navigation("TaskInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmit", b => + { + b.HasOne("FlexJobApi.Core.TaskInfoUser", "TaskInfoUser") + .WithMany("Submits") + .HasForeignKey("TaskInfoUserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TaskInfoUser"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmitFile", b => + { + b.HasOne("FlexJobApi.Core.TaskInfoUserSubmit", "Submit") + .WithMany("Files") + .HasForeignKey("SubmitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Submit"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskUserCollect", b => + { + b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") + .WithMany("TaskUserCollects") + .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.UserManageIndustrialPark", b => + { + b.HasOne("FlexJobApi.Core.User", "User") + .WithMany("UserManageIndustrialParks") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + 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.EnterpriseEmployee", b => + { + b.Navigation("TaskInfoUsers"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Menu", b => + { + b.Navigation("Children"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Role", b => + { + b.Navigation("RoleMenus"); + + b.Navigation("RoleResources"); + + b.Navigation("UserRoles"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b => + { + b.Navigation("Benefits"); + + b.Navigation("CredentialLimits"); + + b.Navigation("TaskInfoUsers"); + + b.Navigation("TaskUserCollects"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b => + { + b.Navigation("Submits"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUserSubmit", b => + { + b.Navigation("Files"); + }); + + modelBuilder.Entity("FlexJobApi.Core.User", b => + { + b.Navigation("BankCards"); + + b.Navigation("EnterpriseEmployees"); + + b.Navigation("EnterpriseUserCollects"); + + b.Navigation("Photos"); + + b.Navigation("UserAuth"); + + b.Navigation("UserCredentials"); + + b.Navigation("UserDepartments"); + + b.Navigation("UserExpectJobs"); + + b.Navigation("UserManageIndustrialParks"); + + b.Navigation("UserRoles"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/20250819025001_UpdateTaskInfo0819.cs b/FlexJobApi.Database.Migrations/Migrations/20250819025001_UpdateTaskInfo0819.cs new file mode 100644 index 0000000..6ce44f0 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250819025001_UpdateTaskInfo0819.cs @@ -0,0 +1,39 @@ +锘縰sing System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace FlexJobApi.Database.Migrations.Migrations +{ + /// <inheritdoc /> + public partial class UpdateTaskInfo0819 : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn<DateTime>( + name: "RecommendTime", + table: "TaskInfo", + type: "datetime2", + nullable: true); + + migrationBuilder.AddColumn<DateTime>( + name: "SettlementTime", + table: "TaskInfo", + type: "datetime2", + nullable: true); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "RecommendTime", + table: "TaskInfo"); + + migrationBuilder.DropColumn( + name: "SettlementTime", + table: "TaskInfo"); + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs index 722f1c0..984d87c 100644 --- a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs +++ b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs @@ -1163,6 +1163,9 @@ b.Property<int>("RecommendStatus") .HasColumnType("int"); + b.Property<DateTime?>("RecommendTime") + .HasColumnType("datetime2"); + b.Property<int>("ReleaseStatus") .HasColumnType("int"); @@ -1175,6 +1178,9 @@ b.Property<int?>("SettlementStatus") .HasColumnType("int"); + b.Property<DateTime?>("SettlementTime") + .HasColumnType("datetime2"); + b.Property<int>("Sort") .HasColumnType("int"); diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/20250819015802_UpdateResource0819.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250819015802_UpdateResource0819.Designer.cs new file mode 100644 index 0000000..a89efbd --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250819015802_UpdateResource0819.Designer.cs @@ -0,0 +1,432 @@ +锘�// <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("20250819015802_UpdateResource0819")] + partial class UpdateResource0819 + { + /// <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<string>("ConsoleLogs") + .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/20250819015802_UpdateResource0819.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250819015802_UpdateResource0819.cs new file mode 100644 index 0000000..93771fe --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/20250819015802_UpdateResource0819.cs @@ -0,0 +1,28 @@ +锘縰sing Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace FlexJobApi.Database.Migrations.Migrations.LogDb +{ + /// <inheritdoc /> + public partial class UpdateResource0819 : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn<string>( + name: "ConsoleLogs", + table: "ResourceLog", + type: "nvarchar(max)", + nullable: true); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ConsoleLogs", + table: "ResourceLog"); + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs index 10664ab..86893d7 100644 --- a/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs +++ b/FlexJobApi.Database.Migrations/Migrations/LogDb/LogDbContextModelSnapshot.cs @@ -138,6 +138,9 @@ b.Property<string>("ClientIpAddress") .HasColumnType("nvarchar(max)"); + b.Property<string>("ConsoleLogs") + .HasColumnType("nvarchar(max)"); + b.Property<Guid?>("CreatedEnterpriseId") .HasColumnType("uniqueidentifier"); diff --git a/FlexJobApi.Database.Migrations/REDEME.MD b/FlexJobApi.Database.Migrations/REDEME.MD index 1166bdb..609c8ef 100644 --- a/FlexJobApi.Database.Migrations/REDEME.MD +++ b/FlexJobApi.Database.Migrations/REDEME.MD @@ -1,7 +1,7 @@ -------------------------------主数据库--------------------------------------- 新增迁移文件 -dotnet ef migrations add UpdateUser0818 -s "../FlexJobApi.Web.Entry" -c DefaultDbContext +dotnet ef migrations add UpdateTaskInfo0819 -s "../FlexJobApi.Web.Entry" -c DefaultDbContext 删除迁移文件 dotnet ef migrations remove -s "../FlexJobApi.Web.Entry" -c DefaultDbContext @@ -12,7 +12,7 @@ -------------------------------日志数据库--------------------------------------- 新增迁移文件 -dotnet ef migrations add UpdateResource0813 -s "../FlexJobApi.Web.Entry" -c LogDbContext +dotnet ef migrations add UpdateResource0819 -s "../FlexJobApi.Web.Entry" -c LogDbContext 删除迁移文件 dotnet ef migrations remove -s "../FlexJobApi.Web.Entry" -c LogDbContext diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs index c0372c9..d9ca25b 100644 --- a/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs @@ -102,13 +102,20 @@ public async Task<int> Handle(SetTaskInfoRecommendStatusCommand request, CancellationToken cancellationToken) { var entities = await TaskInfoRepository.GetQueryable(rep, false) - .Where(it => request.Ids.Contains(it.Id)) + .Where(it => request.Ids.Contains(it.Id) && it.RecommendStatus != request.RecommendStatus) .ToListAsync(); - foreach (var entity in entities) + if (entities.IsNotNull()) { - entity.RecommendStatus = request.RecommendStatus; + foreach (var entity in entities) + { + entity.RecommendStatus = request.RecommendStatus; + if (entity.RecommendStatus == EnumTaskRecommendStatus.Yes) + { + entity.RecommendTime = DateTime.Now; + } + } + await rep.UpdateAsync(entities); } - await rep.UpdateAsync(entities); return entities.Count; } diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs index a4feadd..78c77de 100644 --- a/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs +++ b/FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs @@ -210,13 +210,15 @@ CheckReceiveStatus = t.CheckReceiveStatus, CreatedTime = t.CreatedTime, RecommendStatus = t.RecommendStatus, + RecommendTime = t.RecommendTime, SettlementStatus = t.SettlementStatus, HireStatus = logier != null && logier.Type == EnumUserType.Personal ? t.TaskInfoUsers .Where(tu => tu.EnterpriseEmployee.UserId == logier.Id) .Select(tu => tu.HireStatus as EnumTaskUserHireStatus?) .FirstOrDefault() - : null + : null, + }; var result = await request.PageModel.GetPagedListAsync<GetTaskInfosQueryResult, GetTaskInfosQueryResultItem>(s, cancellationToken); result.ObjectData = count; diff --git a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs index ae5c073..3c04b55 100644 --- a/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs +++ b/FlexJobApi.UserServer.Application/UserResumes/Queries/UserResumeQueryHandler.cs @@ -51,6 +51,7 @@ /// <returns></returns> public async Task<GetUserResumesQueryResult> Handle(GetUserResumesQuery request, CancellationToken cancellationToken) { + Console.WriteLine(111); var logier = JwtUtils.GetCurrentLogier(); var q = rep.AsQueryable().AsNoTracking() .Where(it => it.Type == EnumUserType.Personal); diff --git a/FlexJobApi.Web.Entry/appsettings.json b/FlexJobApi.Web.Entry/appsettings.json index c233743..824ad88 100644 --- a/FlexJobApi.Web.Entry/appsettings.json +++ b/FlexJobApi.Web.Entry/appsettings.json @@ -1,5 +1,6 @@ { "$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json", + "Environment": "Local", "ConnectionStrings": { "FlexJobApi": "Server=120.26.58.240; Database=Dev_FlexJobApi; User=bole;Password=Bole1472589;Encrypt=false;", "FlexJobApiLog": "Server=120.26.58.240; Database=Dev_FlexJobApiLog; User=bole;Password=Bole1472589;Encrypt=false;", -- Gitblit v1.9.1