FlexJobApi.Application/FlexJobApi.Application.xml
@@ -145,6 +145,22 @@ <returns></returns> <exception cref="T:System.NotImplementedException"></exception> </member> <member name="M:FlexJobApi.Application.TaskInfoCommandHandler.Handle(FlexJobApi.Core.SetTaskInfoReleaseStatusCommand,System.Threading.CancellationToken)"> <summary> 设置任务发布状态 </summary> <param name="request"></param> <param name="cancellationToken"></param> <returns></returns> </member> <member name="M:FlexJobApi.Application.TaskInfoCommandHandler.Handle(FlexJobApi.Core.SetTaskInfoRecommendStatusCommand,System.Threading.CancellationToken)"> <summary> 设置任务是否推荐 </summary> <param name="request"></param> <param name="cancellationToken"></param> <returns></returns> </member> <member name="T:FlexJobApi.Application.TaskInfoQueryHandler"> <summary> 任务查询处理器 FlexJobApi.Application/Tasks/Commands/TaskInfoCommandHandler.cs
@@ -17,8 +17,10 @@ /// </summary> public class TaskInfoCommandHandler( IRepository<TaskInfo> rep ) : IRequestHandler<SaveTaskInfoCommand, Guid> ) : IRequestHandler<SaveTaskInfoCommand, Guid>, IRequestHandler<SetTaskInfoReleaseStatusCommand, int>, IRequestHandler<SetTaskInfoRecommendStatusCommand, int> { private readonly IRepository<TaskInfo> rep = rep; @@ -34,7 +36,8 @@ { var logier = JwtUtils.GetCurrentLogier(); return await request.SaveData<TaskInfo, SaveTaskInfoCommand>( q => { q => { q = TaskInfoRepository.GetQueryable(rep) .Include(it => it.Benefits) .Include(it => it.CredentialLimits); @@ -65,6 +68,44 @@ cancellationToken); } /// <summary> /// 设置任务发布状态 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task<int> Handle(SetTaskInfoReleaseStatusCommand request, CancellationToken cancellationToken) { var entities = await TaskInfoRepository.GetQueryable(rep) .Where(it => request.Ids.Contains(it.Id)) .ToListAsync(); foreach (var entity in entities) { entity.ReleaseStatus = request.ReleaseStatus; } await rep.UpdateAsync(entities); return entities.Count; } /// <summary> /// 设置任务是否推荐 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task<int> Handle(SetTaskInfoRecommendStatusCommand request, CancellationToken cancellationToken) { var entities = await TaskInfoRepository.GetQueryable(rep) .Where(it => request.Ids.Contains(it.Id)) .ToListAsync(); foreach (var entity in entities) { entity.RecommendStatus = request.RecommendStatus; } await rep.UpdateAsync(entities); return entities.Count; } private async Task BuildCode(TaskInfo entity) { entity.Code = $"{DateTime.Now:yyyyMMddHHmm}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}"; FlexJobApi.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -30,12 +30,20 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public Task<GetTaskInfoQueryResult> Handle(GetTaskInfoQuery request, CancellationToken cancellationToken) public async Task<GetTaskInfoQueryResult> Handle(GetTaskInfoQuery request, CancellationToken cancellationToken) { return TaskInfoRepository.GetQueryable(rep) var model = await TaskInfoRepository.GetQueryable(rep) .Where(it => it.Id == request.Id) .ProjectToType<GetTaskInfoQueryResult>() .FirstOrDefaultAsync(cancellationToken); model.EnterpriseName = await rep.Change<Enterprise>().AsQueryable().AsNoTracking() .Where(it => it.EnterpriseAuthId == model.EnterpriseId) .Select(it => it.EnterpriseAuth.EnterpriseName) .FirstOrDefaultAsync(); model.TaskCount = await rep.AsQueryable().AsNoTracking() .Where(it => it.EnterpriseId == model.EnterpriseId && it.ReleaseStatus == EnumTaskReleaseStatus.Stopped) .CountAsync(); return model; } /// <summary> @@ -46,12 +54,61 @@ /// <returns></returns> public Task<PagedListQueryResult<GetTaskInfosQueryResultItem>> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken) { return request.PageModel.GetPagedListAsync<TaskInfo, GetTaskInfosQueryResultItem>( q => var q = TaskInfoRepository.GetQueryable(rep); if (request.Keywords.IsNotNull()) { q = TaskInfoRepository.GetQueryable(rep); return q; }); q = q.Where(it => it.Name.Contains(request.Keywords)); } if (request.Time.HasValue) { q = q.Where(it => it.BeginTime <= request.Time && request.Time <= it.EndTime); } if (request.CityCode.IsNotNull()) { q = q.Where(it => it.CityCode == request.CityCode); } if (request.SettlementCycle.HasValue) { q = q.Where(it => it.SettlementCycle == request.SettlementCycle); } if (request.BenefitCodes.IsNotNull()) { q = q.Where(it => it.Benefits.Any(b => request.BenefitCodes.Contains(b.BenefitCode))); } if (request.GenderLimit.HasValue) { q = q.Where(it => it.GenderLimit == request.GenderLimit); } if (request.Status.HasValue) { q = q.Where(it => it.Status == request.Status); } if (request.ReleaseStatus.HasValue) { q = q.Where(it => it.ReleaseStatus == request.ReleaseStatus); } if (request.RecommendStatus.HasValue) { q = q.Where(it => it.RecommendStatus == request.RecommendStatus); } var s = from t in q join tu in rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() on t.Id equals tu.TaskInfoId into tug select new GetTaskInfosQueryResultItem { Id = t.Id, Name = t.Name, Code = t.Code, BillingMethod = t.BillingMethod, ServiceFee = t.ServiceFee, SettlementCycle = t.SettlementCycle, GenderLimit = t.GenderLimit, UserCount = tug.Count(), Status = t.Status, BeginTime = t.BeginTime, EndTime = t.EndTime, ReleaseStatus = t.ReleaseStatus }; return request.PageModel.GetPagedListAsync(s, cancellationToken); } } } FlexJobApi.Core/Entities/Tasks/TaskInfo.cs
@@ -108,6 +108,16 @@ public string Address { get; set; } /// <summary> /// 经度 /// </summary> public decimal? Longitude { get; set; } /// <summary> /// 纬度 /// </summary> public decimal? Latitude { get; set; } /// <summary> /// 任务开始时间 /// </summary> public DateTime BeginTime { get; set; } @@ -127,6 +137,21 @@ /// </summary> public EnumTaskReleaseStatus ReleaseStatus { get; set; } /// <summary> /// 验收状态 /// </summary> public EnumTaskCheckReceiveStatus? CheckReceiveStatus { get; set; } /// <summary> /// 结算状态 /// </summary> public EnumTaskSettlementStatus? SettlementStatus { get; set; } /// <summary> /// 推荐状态 /// </summary> public EnumTaskRecommendStatus RecommendStatus { get; set; } public void Configure(EntityTypeBuilder<TaskInfo> entityBuilder, DbContext dbContext, Type dbContextLocator) { entityBuilder FlexJobApi.Core/Enums/Tasks/EnumTaskCheckReceiveStatus.cs
New file @@ -0,0 +1,23 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 任务结算状态 /// </summary> public enum EnumTaskCheckReceiveStatus { /// <summary> /// 待验收 /// </summary> Wait = 10, /// <summary> /// 已验收 /// </summary> Completed = 30 } } FlexJobApi.Core/Enums/Tasks/EnumTaskRecommendStatus.cs
New file @@ -0,0 +1,23 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 任务推荐状态 /// </summary> public enum EnumTaskRecommendStatus { /// <summary> /// 未推荐 /// </summary> No = 10, /// <summary> /// 已推荐 /// </summary> Yes = 20 } } FlexJobApi.Core/Enums/Tasks/EnumTaskSettlementStatus.cs
New file @@ -0,0 +1,23 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 任务结算状态 /// </summary> public enum EnumTaskSettlementStatus { /// <summary> /// 待结算 /// </summary> Wait = 10, /// <summary> /// 已结算 /// </summary> Completed = 30, } } FlexJobApi.Core/Enums/Tasks/EnumTaskUserSettlementStatus.cs
New file @@ -0,0 +1,31 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 任务用户结算状态 /// </summary> public enum EnumTaskUserSettlementStatus { /// <summary> /// 待结算 /// </summary> Wait = 10, /// <summary> /// 结算中 /// </summary> InProcess = 20, /// <summary> /// 已结算 /// </summary> Completed = 30, /// <summary> /// 结算失败 /// </summary> Fail = 40 } } FlexJobApi.Core/Enums/Tasks/EnumTaskUserSubmitCheckReceiveStatus.cs
New file @@ -0,0 +1,31 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 任务验收状态 /// </summary> public enum EnumTaskUserSubmitCheckReceiveStatus { /// <summary> /// 待提交 /// </summary> Submit = 10, /// <summary> /// 待验收 /// </summary> Wait = 20, /// <summary> /// 验收通过 /// </summary> Success = 30, /// <summary> /// 验收未通过 /// </summary> Fail = 40 } } FlexJobApi.Core/FlexJobApi.Core.xml
@@ -644,6 +644,21 @@ 发布状态 </summary> </member> <member name="P:FlexJobApi.Core.TaskInfo.CheckReceiveStatus"> <summary> 验收状态 </summary> </member> <member name="P:FlexJobApi.Core.TaskInfo.SettlementStatus"> <summary> 结算状态 </summary> </member> <member name="P:FlexJobApi.Core.TaskInfo.RecommendStatus"> <summary> 推荐状态 </summary> </member> <member name="T:FlexJobApi.Core.TaskInfoBenefit"> <summary> 任务福利 @@ -1949,6 +1964,36 @@ 日结 </summary> </member> <member name="T:FlexJobApi.Core.EnumTaskCheckReceiveStatus"> <summary> 任务结算状态 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskCheckReceiveStatus.Wait"> <summary> 待验收 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskCheckReceiveStatus.Completed"> <summary> 已验收 </summary> </member> <member name="T:FlexJobApi.Core.EnumTaskRecommendStatus"> <summary> 任务推荐状态 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskRecommendStatus.No"> <summary> 未推荐 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskRecommendStatus.Yes"> <summary> 已推荐 </summary> </member> <member name="T:FlexJobApi.Core.EnumTaskReleaseStatus"> <summary> 任务发布状态 @@ -1962,6 +2007,21 @@ <member name="F:FlexJobApi.Core.EnumTaskReleaseStatus.Stopped"> <summary> 已停止 </summary> </member> <member name="T:FlexJobApi.Core.EnumTaskSettlementStatus"> <summary> 任务结算状态 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskSettlementStatus.Wait"> <summary> 待结算 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskSettlementStatus.Completed"> <summary> 已结算 </summary> </member> <member name="T:FlexJobApi.Core.EnumTaskStatus"> @@ -1999,6 +2059,31 @@ 已谢绝 </summary> </member> <member name="T:FlexJobApi.Core.EnumTaskUserSettlementStatus"> <summary> 任务用户结算状态 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskUserSettlementStatus.Wait"> <summary> 待结算 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskUserSettlementStatus.InProcess"> <summary> 结算中 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskUserSettlementStatus.Completed"> <summary> 已结算 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskUserSettlementStatus.Fail"> <summary> 结算失败 </summary> </member> <member name="T:FlexJobApi.Core.EnumTaskUserSignContractStatus"> <summary> 任务用户签约状态 @@ -2017,6 +2102,31 @@ <member name="F:FlexJobApi.Core.EnumTaskUserSignContractStatus.Refuse"> <summary> 已拒签 </summary> </member> <member name="T:FlexJobApi.Core.EnumTaskUserSubmitCheckReceiveStatus"> <summary> 任务验收状态 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskUserSubmitCheckReceiveStatus.Submit"> <summary> 待提交 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskUserSubmitCheckReceiveStatus.Wait"> <summary> 待验收 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskUserSubmitCheckReceiveStatus.Success"> <summary> 验收通过 </summary> </member> <member name="F:FlexJobApi.Core.EnumTaskUserSubmitCheckReceiveStatus.Fail"> <summary> 验收未通过 </summary> </member> <member name="T:FlexJobApi.Core.EnumClientType"> @@ -2765,6 +2875,36 @@ 任务结束时间 </summary> </member> <member name="T:FlexJobApi.Core.SetTaskInfoRecommendStatusCommand"> <summary> 设置任务是否推荐 </summary> </member> <member name="P:FlexJobApi.Core.SetTaskInfoRecommendStatusCommand.Ids"> <summary> Id </summary> </member> <member name="P:FlexJobApi.Core.SetTaskInfoRecommendStatusCommand.RecommendStatus"> <summary> 推荐状态 </summary> </member> <member name="T:FlexJobApi.Core.SetTaskInfoReleaseStatusCommand"> <summary> 设置任务发布状态 </summary> </member> <member name="P:FlexJobApi.Core.SetTaskInfoReleaseStatusCommand.Ids"> <summary> Id </summary> </member> <member name="P:FlexJobApi.Core.SetTaskInfoReleaseStatusCommand.ReleaseStatus"> <summary> 发布状态 </summary> </member> <member name="T:FlexJobApi.Core.GetTaskInfoQuery"> <summary> 查询任务详情 @@ -2895,9 +3035,19 @@ 发布状态 </summary> </member> <member name="P:FlexJobApi.Core.GetTaskInfosQuery.RecommendStatus"> <summary> 推荐状态 </summary> </member> <member name="T:FlexJobApi.Core.GetTaskInfosQueryResultItem"> <summary> 查询任务分页列表-结果-项 </summary> </member> <member name="P:FlexJobApi.Core.GetTaskInfosQueryResultItem.Id"> <summary> Id </summary> </member> <member name="P:FlexJobApi.Core.GetTaskInfosQueryResultItem.Name"> @@ -2955,6 +3105,21 @@ 发布状态 </summary> </member> <member name="P:FlexJobApi.Core.GetTaskInfosQueryResultItem.CheckReceiveStatus"> <summary> 验收状态 </summary> </member> <member name="P:FlexJobApi.Core.GetTaskInfosQueryResultItem.SettlementStatus"> <summary> 结算状态 </summary> </member> <member name="P:FlexJobApi.Core.GetTaskInfosQueryResultItem.RecommendStatus"> <summary> 推荐状态 </summary> </member> <member name="T:FlexJobApi.Core.TaskInfoRepository"> <summary> 任务仓库 @@ -2965,7 +3130,6 @@ 获取任务查询 </summary> <param name="rep"></param> <param name="query"></param> <param name="logier"></param> <returns></returns> </member> FlexJobApi.Core/Models/Main/Tasks/Commands/SaveTaskInfoCommand.cs
@@ -93,6 +93,16 @@ public string Address { get; set; } /// <summary> /// 经度 /// </summary> public decimal? Longitude { get; set; } /// <summary> /// 纬度 /// </summary> public decimal? Latitude { get; set; } /// <summary> /// 任务开始时间 /// </summary> [Required] FlexJobApi.Core/Models/Main/Tasks/Commands/SetTaskInfoRecommendStatusCommand.cs
New file @@ -0,0 +1,31 @@ using MediatR; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 设置任务是否推荐 /// </summary> [Resource([EnumResourceController.Task])] public class SetTaskInfoRecommendStatusCommand : IRequest<int> { public SetTaskInfoRecommendStatusCommand() { Ids = []; } /// <summary> /// Id /// </summary> public List<Guid> Ids { get; set; } /// <summary> /// 推荐状态 /// </summary> public EnumTaskRecommendStatus RecommendStatus { get; set; } } } FlexJobApi.Core/Models/Main/Tasks/Commands/SetTaskInfoReleaseStatusCommand.cs
New file @@ -0,0 +1,31 @@ using MediatR; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 设置任务发布状态 /// </summary> [Resource([EnumResourceController.Task])] public class SetTaskInfoReleaseStatusCommand : IRequest<int> { public SetTaskInfoReleaseStatusCommand() { Ids = []; } /// <summary> /// Id /// </summary> public List<Guid> Ids { get; set; } /// <summary> /// 发布状态 /// </summary> public EnumTaskReleaseStatus ReleaseStatus { get; set; } } } FlexJobApi.Core/Models/Main/Tasks/Queries/GetTaskInfoQuery.cs
@@ -23,7 +23,7 @@ } /// <summary> /// 查询任务详情-结果 /// 查询任务详情-结果-企业 /// </summary> public class GetTaskInfoQueryResult { @@ -37,6 +37,21 @@ /// Id /// </summary> public Guid Id { get; set; } /// <summary> /// 企业Id /// </summary> public Guid EnterpriseId { get; set; } /// <summary> /// 企业全称 /// </summary> public string EnterpriseName { get; set; } /// <summary> /// 在招岗位数量 /// </summary> public int TaskCount { get; set; } /// <summary> /// 任务名称 @@ -122,5 +137,10 @@ /// 创建时间 /// </summary> public DateTimeOffset CreatedTime { get; set; } /// <summary> /// 是否已收藏 /// </summary> public bool IsCollected { get; set; } } } FlexJobApi.Core/Models/Main/Tasks/Queries/GetTaskInfosQuery.cs
@@ -13,6 +13,11 @@ [Resource([EnumResourceController.Task])] public class GetTaskInfosQuery : PagedListQuery<PagedListQueryResult<GetTaskInfosQueryResultItem>, GetTaskInfosQueryResultItem> { public GetTaskInfosQuery() { BenefitCodes = []; } /// <summary> /// 关键字(任务名称) /// </summary> @@ -24,6 +29,26 @@ public DateTime? Time { get; set; } /// <summary> /// 任务地点所属城市编号 /// </summary> public string CityCode { get; set; } /// <summary> /// 结算方式 /// </summary> public EnumSettlementCycle? SettlementCycle { get; set; } /// <summary> /// 员工福利 /// </summary> public List<string> BenefitCodes { get; set; } /// <summary> /// 性别要求 /// </summary> public EnumUserGender? GenderLimit { get; set; } /// <summary> /// 任务状态 /// </summary> public EnumTaskStatus? Status { get; set; } @@ -32,6 +57,11 @@ /// 发布状态 /// </summary> public EnumTaskReleaseStatus? ReleaseStatus { get; set; } /// <summary> /// 推荐状态 /// </summary> public EnumTaskRecommendStatus? RecommendStatus { get; set; } } /// <summary> @@ -39,6 +69,11 @@ /// </summary> public class GetTaskInfosQueryResultItem { /// <summary> /// Id /// </summary> public Guid Id { get; set; } /// <summary> /// 任务名称 /// </summary> @@ -95,5 +130,24 @@ /// </summary> public EnumTaskReleaseStatus ReleaseStatus { get; set; } /// <summary> /// 验收状态 /// </summary> public EnumTaskCheckReceiveStatus CheckReceiveStatus { get; set; } /// <summary> /// 结算状态 /// </summary> public EnumTaskSettlementStatus SettlementStatus { get; set; } /// <summary> /// 推荐状态 /// </summary> public EnumTaskRecommendStatus RecommendStatus { get; set; } /// <summary> /// 创建时间 /// </summary> public DateTimeOffset CreatedTime { get; set; } } } FlexJobApi.Core/Models/Main/Tasks/Repositories/TaskInfoRepository.cs
@@ -18,7 +18,6 @@ /// 获取任务查询 /// </summary> /// <param name="rep"></param> /// <param name="query"></param> /// <param name="logier"></param> /// <returns></returns> public static IQueryable<TaskInfo> GetQueryable(this IRepository<TaskInfo> rep, CurrentLogier logier = null)