sunpengfei
2025-09-02 582011fe0778b89312a3a9f886a24d687530aad4
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;
@@ -143,10 +144,12 @@
               || entity.Values.Any(ov =>
                       request.Values.Count(nv =>
                           ov.Id == nv.Id
                           && ov.Name == nv.Name
                           && ov.Type == nv.Type
                           && ov.Recorder == nv.Recorder
                           && ov.UserType == nv.UserType
                           && ov.Label == nv.Label
                           && ov.BindProperty == nv.BindProperty
                           && ov.Required == nv.Required) != 1))
            {
                entity.Values = request.Values.Select(it =>
@@ -210,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>