From 8bd021a18a68459eaeb3536cf6add1640911c681 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 22 八月 2025 16:33:37 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetPersonalUserElectronSignQuery.cs   |    4 +-
 FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs     |    6 +-
 FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs           |   32 +++++++++++++++
 FlexJobApi.Core/Models/ElectronSignServer/ContractTemplates/CheckContractTemplateCommand.cs         |   21 ++++++++++
 FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs |    7 +++
 5 files changed, 64 insertions(+), 6 deletions(-)

diff --git a/FlexJobApi.Core/Models/ElectronSignServer/ContractTemplates/CheckContractTemplateCommand.cs b/FlexJobApi.Core/Models/ElectronSignServer/ContractTemplates/CheckContractTemplateCommand.cs
new file mode 100644
index 0000000..5025f3e
--- /dev/null
+++ b/FlexJobApi.Core/Models/ElectronSignServer/ContractTemplates/CheckContractTemplateCommand.cs
@@ -0,0 +1,21 @@
+锘縰sing MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鏍¢獙鍚堝悓妯℃槸鍚﹀彲鐢�
+    /// </summary>
+    [Resource([EnumResourceController.UserServerElectronSign])]
+    public class CheckContractTemplateCommand : IRequest<bool>
+    {
+        /// <summary>
+        /// 鍚堝悓妯℃澘Id
+        /// </summary>
+        public Guid Id { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeeElectronSignQuery.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetPersonalUserElectronSignQuery.cs
similarity index 92%
rename from FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeeElectronSignQuery.cs
rename to FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetPersonalUserElectronSignQuery.cs
index fc68a3f..cf3f847 100644
--- a/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetEnterpriseEmployeeElectronSignQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Queries/GetPersonalUserElectronSignQuery.cs
@@ -14,7 +14,7 @@
     /// 鏌ヨ涓汉鐢ㄦ埛绛剧害璇︽儏
     /// </summary>
     [Resource([EnumResourceController.UserServerEnterpriseEmployee])]
-    public class GetEnterpriseEmployeeElectronSignQuery : IRequest<GetEnterpriseEmployeeElectronSignQueryResult>
+    public class GetPersonalUserElectronSignQuery : IRequest<GetPersonalUserElectronSignQueryResult>
     {
         /// <summary>
         /// 鐏靛伐Id
@@ -30,7 +30,7 @@
     /// <summary>
     /// 鏌ヨ涓汉鐢ㄦ埛绛剧害璇︽儏-缁撴灉
     /// </summary>
-    public class GetEnterpriseEmployeeElectronSignQueryResult
+    public class GetPersonalUserElectronSignQueryResult
     {
         /// <summary>
         /// 鍚堝悓缂栧彿
diff --git a/FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs b/FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs
index 1545b63..945ba7b 100644
--- a/FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs
@@ -30,7 +30,8 @@
         ) :
         IRequestHandler<SaveContractTemplateCommand, Guid>,
         IRequestHandler<SaveContractTemplateValuesCommand, Guid>,
-        IRequestHandler<SetIsDisabledContractTemplateCommand, int>
+        IRequestHandler<SetIsDisabledContractTemplateCommand, int>,
+        IRequestHandler<CheckContractTemplateCommand, bool>
     {
         private readonly IMediator mediator = mediator;
         private readonly IRepository<ContractTemplate> rep = rep;
@@ -212,6 +213,35 @@
         }
 
         /// <summary>
+        /// 鏍¢獙鍚堝悓妯℃槸鍚﹀彲鐢�
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<bool> Handle(CheckContractTemplateCommand request, CancellationToken cancellationToken)
+        {
+            var model = await rep.AsQueryable().AsNoTracking()
+                .Where(it => it.Id == request.Id && !it.IsDisabled)
+                .Select(it => new
+                {
+                    it.Access,
+                    it.Status
+                })
+                .FirstOrDefaultAsync();
+            if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "鍚堝悓妯℃澘");
+            if (model.Status != EnumContractTemplateStatus.Completed) throw Oops.Oh(EnumErrorCodeType.s510, "鏈埗鐗�");
+            await mediator.Send(new CheckElectronSignAccessEnabledsCommand
+            {
+                Accesses = new List<EnumElectronSignAccess>
+                {
+                    model.Access!.Value
+                }
+            }, cancellationToken);
+            return true;
+
+        }
+
+        /// <summary>
         /// 鍚屾鐢靛瓙绛惧悎鍚屾ā鏉�
         /// </summary>
         /// <param name="entity"></param>
diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs
index 564a73d..5056c3a 100644
--- a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs
@@ -7,6 +7,7 @@
 using Furion.HttpRemote;
 using Mapster;
 using MediatR;
+using Microsoft.AspNetCore.Components.Forms;
 using Microsoft.EntityFrameworkCore;
 using MiniExcelLibs;
 using NetTopologySuite.Index.HPRtree;
@@ -25,6 +26,7 @@
     /// 鐏靛伐鍛戒护澶勭悊鍣�
     /// </summary>
     public class EnterpriseEmployeesCommandHandler(
+            IMediator mediator,
             IRepository<EnterpriseEmployee> rep,
             IRepository<User> repUser,
             IRepository<EnterpriseEmployeeContract> repEnterpriseEmployeeContract
@@ -33,6 +35,7 @@
         IRequestHandler<EditEnterpriseEmployeeCommand, Guid>,
         IRequestHandler<InviteEnterpriseEmployeeElectronSignCommand, Guid>
     {
+        private readonly IMediator mediator = mediator;
         private readonly IRepository<EnterpriseEmployee> rep = rep;
         private readonly IRepository<User> repUser = repUser;
         private readonly IRepository<EnterpriseEmployeeContract> repEnterpriseEmployeeContract = repEnterpriseEmployeeContract;
@@ -210,6 +213,10 @@
             if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, "宸茬绾�");
             if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Effect) throw Oops.Oh(EnumErrorCodeType.s400, "宸茬敓鏁�");
             if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s400, "宸查個璇�");
+            await mediator.Send(new CheckContractTemplateCommand
+            {
+                Id = request.Id
+            }, cancellationToken);
             entity.ContractTemplateId = request.Id;
             entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Wait;
             entity.UserSignContractTime = null;
diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs
index c50f501..a4598f3 100644
--- a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs
+++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Queries/EnterpriseEmployeeQueryHandler.cs
@@ -20,7 +20,7 @@
         IRequestHandler<GetEnterpriseEmployeesQuery, GetEnterpriseEmployeesQueryResult>,
         IRequestHandler<GetEnterpriseEmployeeQuery, GetEnterpriseEmployeeQueryResult>,
         IRequestHandler<GetEnterpriseEmployeeElectronSignsQuery, GetEnterpriseEmployeeElectronSignsQueryResult>,
-        IRequestHandler<GetEnterpriseEmployeeElectronSignQuery, GetEnterpriseEmployeeElectronSignQueryResult>
+        IRequestHandler<GetPersonalUserElectronSignQuery, GetPersonalUserElectronSignQueryResult>
     {
         private readonly IRepository<EnterpriseEmployee> rep = rep;
 
@@ -178,7 +178,7 @@
         /// <param name="request"></param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        public async Task<GetEnterpriseEmployeeElectronSignQueryResult> Handle(GetEnterpriseEmployeeElectronSignQuery request, CancellationToken cancellationToken)
+        public async Task<GetPersonalUserElectronSignQueryResult> Handle(GetPersonalUserElectronSignQuery request, CancellationToken cancellationToken)
         {
             var logier = JwtUtils.GetCurrentLogier();
             var q = rep.AsQueryable().AsNoTracking()
@@ -193,7 +193,7 @@
                 q = q.Where(it => it.ContractTemplate.Code == request.Code);
             }
 
-            var model = await q.GetDetail<EnterpriseEmployee, GetEnterpriseEmployeeElectronSignQueryResult>();
+            var model = await q.GetDetail<EnterpriseEmployee, GetPersonalUserElectronSignQueryResult>();
             return model;
         }
     }

--
Gitblit v1.9.1