From ad63bd48b1619e7c3779eefdf1d6a32a222169da Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 09 九月 2025 09:33:19 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Models/CommonServer/CodeUrls/Queries/GetCodeUrlQuery.cs | 39 ++++++++++++ FlexJobApi.Core/Entities/CommonServer/CodeUrl.cs | 25 ++++++++ FlexJobApi.CommonServer.Application/CodeUrls/Commands/CodeUrlCommandHandler.cs | 9 +-- FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs | 36 ++++++++++- FlexJobApi.Core/Enums/Common/EnumCodeUrlScene.cs | 4 + FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/PersonalUserElectronSignCommand.cs | 11 ++- FlexJobApi.Core/Models/CommonServer/CodeUrls/Commands/SaveCodeUrlCommand.cs | 25 ++++++++ FlexJobApi.CommonServer.Application/CodeUrls/Queries/CodeUrlQueryHandler.cs | 8 +- 8 files changed, 139 insertions(+), 18 deletions(-) diff --git a/FlexJobApi.CommonServer.Application/CodeUrls/Commands/CodeUrlCommandHandler.cs b/FlexJobApi.CommonServer.Application/CodeUrls/Commands/CodeUrlCommandHandler.cs index a3c2a4a..1bd9daa 100644 --- a/FlexJobApi.CommonServer.Application/CodeUrls/Commands/CodeUrlCommandHandler.cs +++ b/FlexJobApi.CommonServer.Application/CodeUrls/Commands/CodeUrlCommandHandler.cs @@ -1,5 +1,6 @@ 锘縰sing FlexJobApi.Core; using Furion.DatabaseAccessor; +using Mapster; using MediatR; using System; using System.Collections.Generic; @@ -28,12 +29,8 @@ /// <returns></returns> public async Task<string> Handle(SaveCodeUrlCommand request, CancellationToken cancellationToken) { - var entity = new CodeUrl - { - Scene = request.Scene, - Url = request.Url, - ExpiredTime = request.ExpiredTime - }; + var entity = new CodeUrl(); + request.Adapt(entity); await SetCode(entity); await rep.InsertAsync(entity); return entity.Code; diff --git a/FlexJobApi.CommonServer.Application/CodeUrls/Queries/CodeUrlQueryHandler.cs b/FlexJobApi.CommonServer.Application/CodeUrls/Queries/CodeUrlQueryHandler.cs index 5848b3d..c4ac9f6 100644 --- a/FlexJobApi.CommonServer.Application/CodeUrls/Queries/CodeUrlQueryHandler.cs +++ b/FlexJobApi.CommonServer.Application/CodeUrls/Queries/CodeUrlQueryHandler.cs @@ -1,5 +1,6 @@ 锘縰sing FlexJobApi.Core; using Furion.DatabaseAccessor; +using Mapster; using MediatR; using Microsoft.EntityFrameworkCore; using System; @@ -17,7 +18,7 @@ public class CodeUrlQueryHandler( IRepository<CodeUrl> rep ) : - IRequestHandler<GetCodeUrlQuery, string?> + IRequestHandler<GetCodeUrlQuery, GetCodeUrlQueryResult> { private readonly IRepository<CodeUrl> rep = rep; @@ -27,7 +28,7 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - public async Task<string?> Handle(GetCodeUrlQuery request, CancellationToken cancellationToken) + public async Task<GetCodeUrlQueryResult> Handle(GetCodeUrlQuery request, CancellationToken cancellationToken) { var now = DateTime.Now; return await rep.AsQueryable().AsNoTracking() @@ -36,8 +37,7 @@ && it.Code == request.Code && (it.ExpiredTime == null || it.ExpiredTime > now)) - .Select(it => it.Url) - .FirstOrDefaultAsync(); + .GetDetail<CodeUrl, GetCodeUrlQueryResult>(); } } } diff --git a/FlexJobApi.Core/Entities/CommonServer/CodeUrl.cs b/FlexJobApi.Core/Entities/CommonServer/CodeUrl.cs index c744c13..628b90c 100644 --- a/FlexJobApi.Core/Entities/CommonServer/CodeUrl.cs +++ b/FlexJobApi.Core/Entities/CommonServer/CodeUrl.cs @@ -28,6 +28,31 @@ public string Url { get; set; } /// <summary> + /// 鍙傛暟1 + /// </summary> + public string ParamValue1 { get; set; } + + /// <summary> + /// 鍙傛暟2 + /// </summary> + public string ParamValue2 { get; set; } + + /// <summary> + /// 鍙傛暟3 + /// </summary> + public string ParamValue3 { get; set; } + + /// <summary> + /// 鍙傛暟4 + /// </summary> + public string ParamValue4 { get; set; } + + /// <summary> + /// 鍙傛暟5 + /// </summary> + public string ParamValue5 { get; set; } + + /// <summary> /// 杩囨湡鏃堕棿 /// </summary> public DateTime? ExpiredTime { get; set; } diff --git a/FlexJobApi.Core/Enums/Common/EnumCodeUrlScene.cs b/FlexJobApi.Core/Enums/Common/EnumCodeUrlScene.cs index ddbae08..1a85d0c 100644 --- a/FlexJobApi.Core/Enums/Common/EnumCodeUrlScene.cs +++ b/FlexJobApi.Core/Enums/Common/EnumCodeUrlScene.cs @@ -12,6 +12,10 @@ public enum EnumCodeUrlScene { /// <summary> + /// 閭�璇风绾� + /// </summary> + InviteElectronSign = 1, + /// <summary> /// 绛剧害鍦板潃 /// </summary> ElectronSignUrl = 10, diff --git a/FlexJobApi.Core/Models/CommonServer/CodeUrls/Commands/SaveCodeUrlCommand.cs b/FlexJobApi.Core/Models/CommonServer/CodeUrls/Commands/SaveCodeUrlCommand.cs index 9f495d9..2fd20d1 100644 --- a/FlexJobApi.Core/Models/CommonServer/CodeUrls/Commands/SaveCodeUrlCommand.cs +++ b/FlexJobApi.Core/Models/CommonServer/CodeUrls/Commands/SaveCodeUrlCommand.cs @@ -24,6 +24,31 @@ public string Url { get; set; } /// <summary> + /// 鍙傛暟1 + /// </summary> + public string ParamValue1 { get; set; } + + /// <summary> + /// 鍙傛暟2 + /// </summary> + public string ParamValue2 { get; set; } + + /// <summary> + /// 鍙傛暟3 + /// </summary> + public string ParamValue3 { get; set; } + + /// <summary> + /// 鍙傛暟4 + /// </summary> + public string ParamValue4 { get; set; } + + /// <summary> + /// 鍙傛暟5 + /// </summary> + public string ParamValue5 { get; set; } + + /// <summary> /// 杩囨湡鏃堕棿 /// </summary> public DateTime? ExpiredTime { get; set; } diff --git a/FlexJobApi.Core/Models/CommonServer/CodeUrls/Queries/GetCodeUrlQuery.cs b/FlexJobApi.Core/Models/CommonServer/CodeUrls/Queries/GetCodeUrlQuery.cs index 5f89c23..8e31317 100644 --- a/FlexJobApi.Core/Models/CommonServer/CodeUrls/Queries/GetCodeUrlQuery.cs +++ b/FlexJobApi.Core/Models/CommonServer/CodeUrls/Queries/GetCodeUrlQuery.cs @@ -11,7 +11,7 @@ /// 鏌ヨ缂栧彿鍦板潃 /// </summary> [Resource([EnumResourceController.CommonServerCodeUrls])] - public class GetCodeUrlQuery : IRequest<string?> + public class GetCodeUrlQuery : IRequest<GetCodeUrlQueryResult> { /// <summary> /// 鍦烘櫙 @@ -23,4 +23,41 @@ /// </summary> public string Code { get; set; } } + + /// <summary> + /// 鏌ヨ缂栧彿鍦板潃 + /// </summary> + public class GetCodeUrlQueryResult + { + /// <summary> + /// 鍦板潃 + /// </summary> + public string Url { get; set; } + + /// <summary> + /// 鍙傛暟1 + /// </summary> + public string ParamValue1 { get; set; } + + /// <summary> + /// 鍙傛暟2 + /// </summary> + public string ParamValue2 { get; set; } + + /// <summary> + /// 鍙傛暟3 + /// </summary> + public string ParamValue3 { get; set; } + + /// <summary> + /// 鍙傛暟4 + /// </summary> + public string ParamValue4 { get; set; } + + /// <summary> + /// 鍙傛暟5 + /// </summary> + public string ParamValue5 { get; set; } + + } } diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/PersonalUserElectronSignCommand.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/PersonalUserElectronSignCommand.cs index 96a3ae8..fadf30f 100644 --- a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/PersonalUserElectronSignCommand.cs +++ b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/PersonalUserElectronSignCommand.cs @@ -10,13 +10,18 @@ /// <summary> /// 涓汉鐢ㄦ埛绛剧害 /// </summary> - [Resource([EnumResourceController.UserServerEnterpriseEmployee])] + [Resource([EnumResourceController.UserServerEnterpriseEmployee], AllowAnonymous = true)] public class PersonalUserElectronSignCommand : IRequest<PersonalUserElectronSignCommandResult> { /// <summary> - /// 鐏靛伐Id + /// 鐏靛伐Id锛堜簩閫変竴锛� /// </summary> - public Guid Id { get; set; } + public Guid? Id { get; set; } + + /// <summary> + /// 閭�绾︾煭淇$紪鍙凤紙浜岄�変竴锛� + /// </summary> + public string SmsCode { get; set; } } diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs index eb73bde..35da498 100644 --- a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs @@ -291,6 +291,13 @@ .ToListAsync(); foreach (var entity in entities) { + var codeUrl = new SaveCodeUrlCommand + { + Scene = EnumCodeUrlScene.InviteElectronSign, + ParamValue1 = entity.Id.ToString(), + ExpiredTime = DateTime.Now.AddMonths(1) + }; + var code = await mediator.Send(codeUrl); await smsUtils.Send(new SendSmsModel { PhoneNumber = entity.ContactPhoneNumber, @@ -299,7 +306,7 @@ new { name = entity.Enterprise.EnterpriseName, - code = entity.ContractTemplate.Code + code = code }); } return entities.Count; @@ -314,10 +321,31 @@ public async Task<PersonalUserElectronSignCommandResult> Handle(PersonalUserElectronSignCommand request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); + Guid userId; + if (logier != null) + { + userId = logier.Id; + } + if (request.Id == null) + { + if (request.SmsCode.IsNotNull()) + { + var codeUrl = await mediator.Send(new GetCodeUrlQuery + { + Code = request.SmsCode, + Scene = EnumCodeUrlScene.InviteElectronSign + }); + request.Id = codeUrl.ParamValue1.ToGuid()!; + } + else + { + throw Oops.Oh(EnumErrorCodeType.s400, "璇峰~鍐欑伒宸d鎴栫煭淇$紪鍙�"); + } + } var entity = await rep.AsQueryable() .Include(it => it.Enterprise) .Include(it => it.ContractTemplate).ThenInclude(it => it.Values) - .Where(it => it.UserId == logier.Id && it.Id == request.Id) + .Where(it => it.Id == request.Id) .FirstOrDefaultAsync(); if (entity == null) throw Oops.Oh(EnumErrorCodeType.s510, "鏈姤鍚嶈浼佷笟"); if (entity.UserSignContractStatus == null) throw Oops.Oh(EnumErrorCodeType.s510, "浼佷笟鏈彂璧风绾�"); @@ -331,7 +359,7 @@ if (contract == null) throw Oops.Oh(EnumErrorCodeType.s404, "鍚堝悓"); var user = await repUser.AsQueryable().AsNoTracking() .Include(it => it.UserAuth) - .Where(it => it.Id == logier.Id) + .Where(it => it.Id == entity.UserId) .FirstOrDefaultAsync(); if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐢ㄦ埛"); if (entity.ContractTemplate.Access == EnumElectronSignAccess.BestSign && !user.IsReal) throw Oops.Oh(EnumErrorCodeType.s510, "璇峰厛瀹炲悕"); @@ -340,7 +368,7 @@ OutContractId = contract.Id.ToString(), TemplateId = entity.ContractTemplate.ElectronSignContractTemplateId!.Value, Title = entity.ContractTemplate.Name, - OutUserId = logier.Id.ToString(), + OutUserId = entity.UserId.ToString(), Values = entity.ContractTemplate.Values .Where(it => it.UserType == EnumUserType.Personal) .Select(it => -- Gitblit v1.9.1