From 611af5472b33cbe81a1433ab29e26502a9aac795 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期一, 01 九月 2025 15:46:55 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs | 116 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 63 insertions(+), 53 deletions(-) diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs index 5926454..5ae1bbd 100644 --- a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs @@ -42,10 +42,10 @@ ) : IRequestHandler<ImportEnterpriseEmployeesCommand, ImportEnterpriseEmployeesCommandResult>, IRequestHandler<EditEnterpriseEmployeeCommand, Guid>, - IRequestHandler<InviteElectronSignCommand, Guid>, + IRequestHandler<InviteElectronSignCommand, int>, IRequestHandler<PersonalUserElectronSignCommand, PersonalUserElectronSignCommandResult>, IRequestHandler<EnterpriseUserElectronSignCommand, EnterpriseUserElectronSignCommandResult>, - IRequestHandler<StopElectronSignCommand, Guid> + IRequestHandler<StopElectronSignCommand, int> { private readonly IMediator mediator = mediator; private readonly IRepository<EnterpriseEmployee> rep = rep; @@ -220,43 +220,49 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - public async Task<Guid> Handle(InviteElectronSignCommand request, CancellationToken cancellationToken) + public async Task<int> Handle(InviteElectronSignCommand request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); - var entity = await rep.AsQueryable() - .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Id == request.Id) - .FirstOrDefaultAsync(); - if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐"); - if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s400, "宸查個璇�"); - if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, "宸茬绾�"); - if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Effect) throw Oops.Oh(EnumErrorCodeType.s400, "宸茬敓鏁�"); + await mediator.Send(new CheckContractTemplateCommand { Id = request.ContractTemplateId }, cancellationToken); - entity.ContractTemplateId = request.ContractTemplateId; - entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Wait; - entity.UserSignContractTime = null; - entity.EnterpriseSignContractStatus = null; - entity.EnterpriseSignContractTime = null; - entity.ContractCode = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}"; - var contract = new EnterpriseEmployeeContract + + var entities = await rep.AsQueryable() + .Where(it => it.EnterpriseId == logier.EnterpriseId && request.Ids.Contains(it.Id)) + .ToListAsync(); + foreach (var id in request.Ids) { - EnterpriseEmployeeId = entity.Id, - ContractTemplateId = entity.ContractTemplateId, - ContractCode = entity.ContractCode, - UserSignContractStatus = entity.UserSignContractStatus, - }; - await repEnterpriseEmployeeContract.InsertAsync(contract); - //await mediator.Send(new SaveEnterpriseCostCommand - //{ - // EnterpriseId = logier.EnterpriseId!.Value, - // ContractTemplateId = request.ContractTemplateId, - // EnterpriseEmployeeContractId = contract.Id, - // Type = EnumEnterpriseCostType.ElectronSign - //}); - await rep.UpdateAsync(entity); - return entity.Id; + var entity = entities.FirstOrDefault(it => it.Id == id); + if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐"); + if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s400, $"宸查個璇穥entity.Name}"); + if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, $"宸茬绾entity.Name}"); + entity.ContractTemplateId = request.ContractTemplateId; + entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Wait; + entity.UserSignContractTime = null; + entity.EnterpriseSignContractStatus = null; + entity.EnterpriseSignContractTime = null; + entity.ContractCode = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}"; + entity.ContractUrl = null; + var contract = new EnterpriseEmployeeContract + { + EnterpriseEmployeeId = entity.Id, + ContractTemplateId = entity.ContractTemplateId, + ContractCode = entity.ContractCode, + UserSignContractStatus = entity.UserSignContractStatus, + }; + await repEnterpriseEmployeeContract.InsertAsync(contract); + //await mediator.Send(new SaveEnterpriseCostCommand + //{ + // EnterpriseId = logier.EnterpriseId!.Value, + // ContractTemplateId = request.ContractTemplateId, + // EnterpriseEmployeeContractId = contract.Id, + // Type = EnumEnterpriseCostType.ElectronSign + //}); + await rep.UpdateAsync(entity); + } + return entities.Count; } /// <summary> @@ -275,7 +281,6 @@ if (entity == null) throw Oops.Oh(EnumErrorCodeType.s510, "鏈姤鍚嶈浼佷笟"); if (entity.UserSignContractStatus == null) throw Oops.Oh(EnumErrorCodeType.s510, "浼佷笟鏈彂璧风绾�"); if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s510, "宸茬绾�"); - if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Effect) throw Oops.Oh(EnumErrorCodeType.s510, "宸茬敓鏁�"); if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Refuse) throw Oops.Oh(EnumErrorCodeType.s510, "宸叉嫆绛�"); if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Stop) throw Oops.Oh(EnumErrorCodeType.s510, "宸茬粓姝�"); var contract = await repEnterpriseEmployeeContract.AsQueryable() @@ -346,7 +351,6 @@ if (entity == null) throw Oops.Oh(EnumErrorCodeType.s510, "鐏靛伐涓嶅瓨鍦�"); if (entity.UserSignContractStatus == null) throw Oops.Oh(EnumErrorCodeType.s510, "鏈個璇风绾�"); if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "璇峰厛绛夊緟鐏靛伐绛剧害瀹屾垚"); - if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Effect) throw Oops.Oh(EnumErrorCodeType.s510, "宸茬敓鏁�"); if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Refuse) throw Oops.Oh(EnumErrorCodeType.s510, "宸叉嫆绛�"); if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Stop) throw Oops.Oh(EnumErrorCodeType.s510, "宸茬粓姝�"); var contract = await repEnterpriseEmployeeContract.AsQueryable() @@ -388,29 +392,35 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - public async Task<Guid> Handle(StopElectronSignCommand request, CancellationToken cancellationToken) + public async Task<int> Handle(StopElectronSignCommand request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); - var entity = await rep.AsQueryable() - .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Id == request.Id) - .FirstOrDefaultAsync(); - if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐"); - if (entity.UserSignContractStatus != EnumTaskUserSignContractStatus.Effect) throw Oops.Oh(EnumErrorCodeType.s400, "鏈敓鏁�"); - entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Stop; - entity.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Stop; - await rep.UpdateAsync(entity); + var entities = await rep.AsQueryable() + .Include(it => it.Contracts) + .Where(it => it.EnterpriseId == logier.EnterpriseId && request.Ids.Contains(it.Id)) + .ToListAsync(); + foreach (var id in request.Ids) + { + var entity = entities.FirstOrDefault(it => it.Id == id); + if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐"); + if (entity.UserSignContractStatus != EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, $"鏈绾entity.Name}"); + entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Stop; + entity.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Stop; + await rep.UpdateAsync(entity); - var contract = await repEnterpriseEmployeeContract.AsQueryable() - .OrderByDescending(it => it.CreatedTime) - .Where(it => it.EnterpriseEmployeeId == entity.Id) - .FirstOrDefaultAsync(); - if (contract == null) throw Oops.Oh(EnumErrorCodeType.s404, "鍚堝悓"); - contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Stop; - contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Stop; - await repEnterpriseEmployeeContract.UpdateAsync(contract); + var contract = entity.Contracts + .OrderByDescending(it => it.CreatedTime) + .FirstOrDefault(); + if (contract == null) throw Oops.Oh(EnumErrorCodeType.s404, $"涓巤entity.Name}鐨勫悎鍚�"); + contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Stop; + contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Stop; + await repEnterpriseEmployeeContract.UpdateAsync(contract); + } var taskUsers = await repTaskInfoUser.AsQueryable() - .Where(it => it.EnterpriseEmployeeId == entity.Id && it.HireStatus == EnumTaskUserHireStatus.Pass) + .Where(it => + it.HireStatus == EnumTaskUserHireStatus.Pass + && request.Ids.Contains(it.EnterpriseEmployeeId)) .ToListAsync(); if (taskUsers.IsNotNull()) { @@ -421,7 +431,7 @@ await repTaskInfoUser.UpdateAsync(taskUsers); } - return entity.Id; + return entities.Count; } } } -- Gitblit v1.9.1