sunpengfei
2025-08-07 7620ece055c34a13c868d846f4f34cd0a0fb3c4d
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,12 +36,13 @@
        {
            var logier = JwtUtils.GetCurrentLogier();
            return await request.SaveData<TaskInfo, SaveTaskInfoCommand>(
                 q => TaskInfoRepository.GetQueryable(
                    rep,
                    q => q
                         .Include(it => it.Benefits)
                         .Include(it => it.CredentialLimits),
                    logier),
                 q =>
                 {
                     q = TaskInfoRepository.GetQueryable(rep)
                          .Include(it => it.Benefits)
                          .Include(it => it.CredentialLimits);
                     return q;
                 },
                 null,
                 (entity) =>
                 {
@@ -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)}";