From a2efd6c3bdbea77ef13205f4102cae774a233041 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 05 九月 2025 13:06:02 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs |   48 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 39 insertions(+), 9 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs
index 06e9887..1f4906a 100644
--- a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs
+++ b/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,33 @@
         {
             var enterprise = await repEnterprise.AsQueryable()
                 .Include(it => it.EnterpriseAuth)
+                .Include(it => it.ElectronSignSettings)
                 .Where(it => it.SocietyCreditCode == request.Enterprise.SocietyCreditCode)
                 .FirstOrDefaultAsync(cancellationToken);
+
+            var add = false;
             if (enterprise == null)
             {
+                add = true;
                 enterprise = new Enterprise();
+                enterprise.Id = IDGen.NextID();
+                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();
+            }
+            if (request.Enterprise.EnterpriseAuth == null)
+            {
+                request.Enterprise.EnterpriseAuth = new SyncEnterpriseUserCommandEnterpriseAuth();
             }
             request.Enterprise.Adapt(enterprise);
             enterprise.LicenseImage = GetOssUrl(enterprise.LicenseImage, request.Enterprise.LicenseImage);
@@ -75,21 +102,19 @@
             enterprise.EnterpriseAuth.LicenseImage = enterprise.LicenseImage;
             enterprise.EnterpriseAuth.LegalPerson = enterprise.LegalPerson;
             enterprise.EnterpriseAuth.LegalIdentity = enterprise.LegalIdentity;
-            enterprise.EnterpriseAuth.IdentityImg = GetOssUrl(enterprise.EnterpriseAuth.IdentityImg, request.Enterprise.EnterpriseAuth.IdentityImg);
-            enterprise.EnterpriseAuth.IdentityBackImg = GetOssUrl(enterprise.EnterpriseAuth.IdentityBackImg, request.Enterprise.EnterpriseAuth.IdentityBackImg);
-            enterprise.EnterpriseAuth.BankCardImg = GetOssUrl(enterprise.EnterpriseAuth.BankCardImg, request.Enterprise.EnterpriseAuth.BankCardImg);
-
-            if (enterprise.Id == Guid.Empty)
-                await repEnterprise.InsertAsync(enterprise);
-            else
-                await repEnterprise.UpdateAsync(enterprise);
+            if (request.Enterprise.EnterpriseAuth != null)
+            {
+                enterprise.EnterpriseAuth.IdentityImg = GetOssUrl(enterprise.EnterpriseAuth.IdentityImg, request.Enterprise.EnterpriseAuth.IdentityImg);
+                enterprise.EnterpriseAuth.IdentityBackImg = GetOssUrl(enterprise.EnterpriseAuth.IdentityBackImg, request.Enterprise.EnterpriseAuth.IdentityBackImg);
+                enterprise.EnterpriseAuth.BankCardImg = GetOssUrl(enterprise.EnterpriseAuth.BankCardImg, request.Enterprise.EnterpriseAuth.BankCardImg);
+            }
 
             if (enterprise.EnterpriseAuth.ElectronSignEnterpriseId == null)
             {
                 var resultRegOrUpdateUser = await new RegOrUpdateUserInput
                 {
                     OutUserId = enterprise.Id.ToString(),
-                    UserType = EnumElectronSignUserType.Personal,
+                    UserType = EnumElectronSignUserType.Company,
                     EnterpriseName = enterprise.EnterpriseName,
                     SocietyCreditCode = enterprise.SocietyCreditCode,
                     Name = enterprise.EnterpriseAuth.Name ?? enterprise.Contacts,
@@ -137,6 +162,11 @@
                 enterprise.EnterpriseAuth.CertAccount = resultReal.Result.CertAccount;
             }
 
+            if (add)
+                await repEnterprise.InsertNowAsync(enterprise);
+            else
+                await repEnterprise.UpdateNowAsync(enterprise);
+
             var user = await repUser.AsQueryable()
                     .Include(it => it.UserRoles)
                     .Where(it => it.Type == EnumUserType.Enterprise && it.DataSource == request.DataSource && it.DataSourceId == request.DataSourceId)

--
Gitblit v1.9.1