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