zhengyiming
2025-08-22 e9960b323c486a3d34275824fd9bd6259d1b5c20
FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs
@@ -9,6 +9,7 @@
using Furion.FriendlyException;
using Mapster;
using MediatR;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
@@ -23,6 +24,7 @@
    /// 合同模板命令处理器
    /// </summary>
    public class ContractTemplateCommandHandler(
            IMediator mediator,
            IRepository<ContractTemplate> rep,
            WxmpUtils wxmpUtils
        ) :
@@ -30,6 +32,7 @@
        IRequestHandler<SaveContractTemplateValuesCommand, Guid>,
        IRequestHandler<SetIsDisabledContractTemplateCommand, int>
    {
        private readonly IMediator mediator = mediator;
        private readonly IRepository<ContractTemplate> rep = rep;
        private readonly WxmpUtils wxmpUtils = wxmpUtils;
@@ -53,6 +56,17 @@
                var existCode = await rep.AsQueryable().AsNoTracking()
                    .AnyAsync(it => it.Code == request.Code && !it.IsDisabled && it.Id != request.Id);
                if (existCode) throw Oops.Oh(EnumErrorCodeType.s405, "业务编码");
            }
            if (request.Access.HasValue)
            {
                await mediator.Send(new CheckElectronSignAccessEnabledsCommand
                {
                    Accesses = new List<EnumElectronSignAccess>
                {
                    request.Access.Value
                }
                }, cancellationToken);
            }
            var entity = await request.SaveData<ContractTemplate, SaveContractTemplateCommand>(
@@ -103,14 +117,28 @@
        public async Task<Guid> Handle(SaveContractTemplateValuesCommand request, CancellationToken cancellationToken)
        {
            var logier = JwtUtils.GetCurrentLogier();
            var entity = await request.SaveData<ContractTemplate, SaveContractTemplateValuesCommand>(
                 q => q
            var entity = await rep.AsQueryable()
                    .Include(it => it.Values)
                    .Where(it => !it.IsDisabled),
                 null,
                 entity =>
                .Where(it => it.Id == request.Id && !it.IsDisabled)
                .FirstOrDefaultAsync();
            if (entity == null)
                 {
                throw Oops.Oh(EnumErrorCodeType.s404, "合同模板");
            }
            if (entity.Access.HasValue)
            {
                await mediator.Send(new CheckElectronSignAccessEnabledsCommand
                {
                    Accesses = new List<EnumElectronSignAccess>
                    {
                        entity.Access.Value
                    }
                }, cancellationToken);
            }
                     request.Adapt(entity);
                     if (entity.Values.Count != request.Values.Count
                        || entity.Values.Any(ov =>
                                request.Values.Count(nv =>
@@ -139,8 +167,6 @@
                         entity.Status = EnumContractTemplateStatus.Completed;
                         entity.CompletedTime = DateTime.Now;
                     }
                 },
                 cancellationToken);
            await SyncElectronSignContractTemplate(entity);