From bc7c0f9d8590835a648491a1b2c9eb2bc51caa14 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期一, 01 九月 2025 11:28:43 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/InviteElectronSignCommand.cs | 9 + FlexJobApi.Core/FlexJobApi.Core.xml | 114 ++++++++++++++++++++++ FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/StopElectronSignCommand.cs | 9 + FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml | 13 ++ FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs | 114 ++++++++++++---------- 5 files changed, 202 insertions(+), 57 deletions(-) diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index 40f14e6..62f6154 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -1935,6 +1935,26 @@ 鑱旂郴鏃堕棿 </summary> </member> + <member name="T:FlexJobApi.Core.EnterpriseWallet"> + <summary> + 浼佷笟閽卞寘 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseWallet.EnterpriseId"> + <summary> + 浼佷笟Id + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseWallet.Enterprise"> + <summary> + 浼佷笟 + </summary> + </member> + <member name="P:FlexJobApi.Core.EnterpriseWallet.Access"> + <summary> + 閫氶亾 + </summary> + </member> <member name="T:FlexJobApi.Core.Menu"> <summary> 鑿滃崟 @@ -2977,6 +2997,11 @@ 浼佷笟淇℃伅 </summary> </member> + <member name="F:FlexJobApi.Core.EnumResourceController.UserServerEnterpriseWallet"> + <summary> + 浼佷笟閽卞寘 + </summary> + </member> <member name="F:FlexJobApi.Core.EnumResourceController.UserServerEnterpriseEmployee"> <summary> 鐏靛伐淇℃伅 @@ -3505,6 +3530,16 @@ <member name="F:FlexJobApi.Core.EnumEnterpriseRealMethod.Identity4"> <summary> 浼佷笟鍥涜绱� + </summary> + </member> + <member name="T:FlexJobApi.Core.EnumEnterpriseWalletAccess"> + <summary> + 浼佷笟閽卞寘閫氶亾 + </summary> + </member> + <member name="F:FlexJobApi.Core.EnumEnterpriseWalletAccess.Alipay"> + <summary> + 鏀粯瀹� </summary> </member> <member name="T:FlexJobApi.Core.EnumMenuType"> @@ -8509,7 +8544,7 @@ 閭�璇风伒宸ョ绾� </summary> </member> - <member name="P:FlexJobApi.Core.InviteElectronSignCommand.Id"> + <member name="P:FlexJobApi.Core.InviteElectronSignCommand.Ids"> <summary> 鐏靛伐Id </summary> @@ -8549,7 +8584,7 @@ 鐏靛伐瑙g害 </summary> </member> - <member name="P:FlexJobApi.Core.StopElectronSignCommand.Id"> + <member name="P:FlexJobApi.Core.StopElectronSignCommand.Ids"> <summary> 鐏靛伐Id </summary> @@ -8819,6 +8854,11 @@ <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.EnterpriseSignContractTime"> <summary> 浼佷笟绛剧害鏃堕棿 + </summary> + </member> + <member name="P:FlexJobApi.Core.GetEnterpriseEmployeesQueryResultItem.ContractUrl"> + <summary> + 鐢靛瓙鍚堝悓 </summary> </member> <member name="T:FlexJobApi.Core.GetPersonalUserElectronSignQuery"> @@ -9272,6 +9312,76 @@ 鏄惁宸查厤缃� </summary> </member> + <member name="T:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery"> + <summary> + 鏀粯瀹濈敤鎴锋巿鏉冨崗璁绾﹂�氱煡 + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.personal_product_code"> + <summary> + 鍗忚浜у搧鐮侊紝鍟嗘埛鍜屾敮浠樺疂绛剧害鏃剁‘瀹氾紝涓嶅悓涓氬姟鍦烘櫙瀵瑰簲涓嶅悓鐨勭绾︿骇鍝佺爜銆� + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.sign_scene"> + <summary> + 褰撳墠绛剧害鐨勫崗璁満鏅�� + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.status"> + <summary> + NORMAL 鍗忚褰撳墠鐘舵�� 1. TEMP锛氭殏瀛橈紝鍗忚鏈敓鏁堣繃锛� 2. NORMAL锛氭甯革紱 3. STOP锛氭殏鍋� + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.alipay_user_id"> + <summary> + 鐢ㄦ埛绛剧害鐨勬敮浠樺疂璐﹀彿瀵瑰簲鐨勬敮浠樺疂鍞竴鐢ㄦ埛鍙枫�� 浠�2088寮�澶寸殑16浣嶇函鏁板瓧缁勬垚銆� + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.agreement_no"> + <summary> + 鏀粯瀹濈郴缁熶腑鐢ㄤ互鍞竴鏍囪瘑鐢ㄦ埛绛剧害璁板綍鐨勭紪鍙枫�� + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.sign_time"> + <summary> + 鏀粯瀹濅唬鎵e崗璁殑瀹為檯绛剧害鏃堕棿锛屾牸寮忎负yyyy-MM-dd HH:mm:ss銆� + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.external_logon_id"> + <summary> + 鐢ㄦ埛鍦ㄥ晢鎴风綉绔欑殑鐧诲綍璐﹀彿锛屽鏋滃晢鎴锋帴鍙d腑鏈紶锛屽垯涓嶄細杩斿洖 + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.app_id"> + <summary> + 鏀粯瀹濆垎閰嶇粰寮�鍙戣�呯殑搴旂敤Id + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.auth_app_id"> + <summary> + 鏀粯瀹濆垎閰嶇粰鍟嗘埛鐨勫簲鐢↖d + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.external_agreement_no"> + <summary> + 浠f墸鍗忚涓爣绀虹敤鎴风殑鍞竴绛剧害鍙凤紙纭繚鍦ㄥ晢鎴风郴缁熶腑鍞竴锛夈�� + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.valid_time"> + <summary> + 鐢ㄦ埛浠f墸鍗忚鐨勫疄闄呯敓鏁堟椂闂达紝鏍煎紡涓簓yyy-MM-dd HH:mm:ss銆� + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.alipay_logon_id"> + <summary> + 杩斿洖鑴辨晱鐨勬敮浠樺疂璐﹀彿銆� + </summary> + </member> + <member name="P:FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery.notify_type"> + <summary> + 鐢ㄦ埛绛剧害鎴愬姛閫氱煡绫诲瀷 + </summary> + </member> <member name="T:FlexJobApi.Core.DeleteMenuCommand"> <summary> 鍒犻櫎鑿滃崟 diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/InviteElectronSignCommand.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/InviteElectronSignCommand.cs index 24cec29..f43f693 100644 --- a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/InviteElectronSignCommand.cs +++ b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/InviteElectronSignCommand.cs @@ -11,12 +11,17 @@ /// 閭�璇风伒宸ョ绾� /// </summary> [Resource([EnumResourceController.UserServerEnterpriseEmployee])] - public class InviteElectronSignCommand : IRequest<Guid> + public class InviteElectronSignCommand : IRequest<int> { + public InviteElectronSignCommand() + { + Ids = []; + } + /// <summary> /// 鐏靛伐Id /// </summary> - public Guid Id { get; set; } + public List<Guid> Ids { get; set; } /// <summary> /// 鍚堝悓妯℃澘Id diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/StopElectronSignCommand.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/StopElectronSignCommand.cs index 93f5a3c..25b260d 100644 --- a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/StopElectronSignCommand.cs +++ b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/StopElectronSignCommand.cs @@ -11,11 +11,16 @@ /// 鐏靛伐瑙g害 /// </summary> [Resource([EnumResourceController.UserServerEnterpriseEmployee])] - public class StopElectronSignCommand : IRequest<Guid> + public class StopElectronSignCommand : IRequest<int> { + public StopElectronSignCommand() + { + Ids = []; + } + /// <summary> /// 鐏靛伐Id /// </summary> - public Guid Id { get; set; } + public List<Guid> Ids { get; set; } } } diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs index 6fdbf87..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, "宸茬绾�"); + 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)}"; - entity.ContractUrl = null; - 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> @@ -386,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.Pass) 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()) { @@ -419,7 +431,7 @@ await repTaskInfoUser.UpdateAsync(taskUsers); } - return entity.Id; + return entities.Count; } } } diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml index 00800d5..1939991 100644 --- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml +++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml @@ -564,6 +564,19 @@ <param name="cancellationToken"></param> <returns></returns> </member> + <member name="T:FlexJobApi.UserServer.Application.AlipayUserAgreementPageSignNotifyQueryHandler"> + <summary> + 鏀粯瀹濈敤鎴锋巿鏉冨崗璁绾﹂�氱煡 + </summary> + </member> + <member name="M:FlexJobApi.UserServer.Application.AlipayUserAgreementPageSignNotifyQueryHandler.Handle(FlexJobApi.Core.AlipayUserAgreementPageSignNotifyQuery,System.Threading.CancellationToken)"> + <summary> + 鏀粯瀹濈敤鎴锋巿鏉冨崗璁绾﹂�氱煡 + </summary> + <param name="request"></param> + <param name="cancellationToken"></param> + <returns></returns> + </member> <member name="F:FlexJobApi.UserServer.Application.EnumUserErrorCodeType.u1000"> <summary> 璐﹀彿鎴栧瘑鐮佷笉瀛樺湪 -- Gitblit v1.9.1