sunpengfei
2025-08-22 f7441ac8e0ef8778c4271d4ffec890a7e39bd3ab
FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs
@@ -9,6 +9,7 @@
using Furion.FriendlyException;
using Mapster;
using MediatR;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using System;
@@ -24,15 +25,19 @@
    /// 同步用户命令处理器
    /// </summary>
    public class SyncUserCommandHandler(
            IMediator mediator,
            IRepository<User> repUser,
            IRepository<Enterprise> repEnterprise,
            IRepository<ElectronSignSetting> repElectronSignSetting,
            IRepository<Role> repRole
        ) :
        IRequestHandler<SyncEnterpriseUserCommand, Guid>,
        IRequestHandler<SyncOperationUserCommand, Guid>
    {
        private readonly IMediator mediator = mediator;
        private readonly IRepository<User> repUser = repUser;
        private readonly IRepository<Enterprise> repEnterprise = repEnterprise;
        private readonly IRepository<ElectronSignSetting> repElectronSignSetting = repElectronSignSetting;
        private readonly IRepository<Role> repRole = repRole;
        /// <summary>
@@ -45,11 +50,26 @@
        {
            var enterprise = await repEnterprise.AsQueryable()
                .Include(it => it.EnterpriseAuth)
                .Include(it => it.ElectronSignSettings)
                .Where(it => it.SocietyCreditCode == request.Enterprise.SocietyCreditCode)
                .FirstOrDefaultAsync(cancellationToken);
            if (enterprise == null)
            {
                enterprise = new Enterprise();
                if (request.Enterprise.ElectronSignAccesses.IsNotNull())
                {
                    request.Enterprise.ElectronSignAccesses = await repElectronSignSetting.AsQueryable().AsNoTracking()
                        .Where(it => request.Enterprise.ElectronSignAccesses.Contains(it.Access) && !it.IsDisabled)
                        .Select(it => it.Access)
                        .ToListAsync();
                }
                enterprise.ElectronSignSettings = request.Enterprise.ElectronSignAccesses
                    .Select(it => new EnterpriseElectronSignSetting
                    {
                        ElectronSignAccess = it
                    })
                    .ToList();
            }
            request.Enterprise.Adapt(enterprise);
            enterprise.LicenseImage = GetOssUrl(enterprise.LicenseImage, request.Enterprise.LicenseImage);