From 0b7bcf0a7f3be4919721f9c32c2b68a529adea8c Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 21 八月 2025 16:26:48 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs |   40 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs
index 7f4d91c..ecf9bf0 100644
--- a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs
@@ -20,13 +20,15 @@
     /// </summary>
     public class SyncUserCommandHandler(
             IRepository<User> repUser,
-            IRepository<Enterprise> repEnterprise
+            IRepository<Enterprise> repEnterprise,
+            IRepository<Role> repRole
         ) :
         IRequestHandler<SyncEnterpriseUserCommand, Guid>,
         IRequestHandler<SyncOperationUserCommand, Guid>
     {
         private readonly IRepository<User> repUser = repUser;
         private readonly IRepository<Enterprise> repEnterprise = repEnterprise;
+        private readonly IRepository<Role> repRole = repRole;
 
         /// <summary>
         /// 鍚屾浼佷笟鐢ㄦ埛
@@ -37,6 +39,7 @@
         public async Task<Guid> Handle(SyncEnterpriseUserCommand request, CancellationToken cancellationToken)
         {
             var enterprise = await repEnterprise.AsQueryable()
+                .Include(it => it.EnterpriseAuth)
                 .Where(it => it.SocietyCreditCode == request.Enterprise.SocietyCreditCode)
                 .FirstOrDefaultAsync(cancellationToken);
             if (enterprise == null)
@@ -55,6 +58,11 @@
             }
             if (enterprise.EnterpriseAuth != null)
             {
+                enterprise.EnterpriseAuth.EnterpriseName = enterprise.EnterpriseName;
+                enterprise.EnterpriseAuth.SocietyCreditCode = enterprise.SocietyCreditCode;
+                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);
@@ -63,8 +71,10 @@
                 await repEnterprise.InsertAsync(enterprise);
             else
                 await repEnterprise.UpdateAsync(enterprise);
+
             var user = await repUser.AsQueryable()
-                    .Where(it => it.Type == EnumUserType.Enterprise && it.UserName == request.UserName)
+                    .Include(it => it.UserRoles)
+                    .Where(it => it.Type == EnumUserType.Enterprise && it.DataSource == request.DataSource && it.DataSourceId == request.DataSourceId)
                     .FirstOrDefaultAsync(cancellationToken);
             if (user == null)
             {
@@ -75,7 +85,19 @@
             {
                 throw Oops.Oh(EnumErrorCodeType.s405, "璐﹀彿");
             }
+            var checkUserNameExist = await repUser.AsQueryable().AsNoTracking()
+                .AnyAsync(it => it.Type == EnumUserType.Enterprise && it.UserName == request.UserName && it.Id != user.Id);
+            if (checkUserNameExist) throw Oops.Oh(EnumErrorCodeType.s405, "璐﹀彿");
+
             user.EnterpriseId = enterprise.Id;
+            user.Level = 100;
+            user.UserRoles = await repRole.AsQueryable().AsNoTracking()
+                .Where(it => it.UserType == user.Type && it.MinLevel == 100)
+                .Select(it => new UserRole
+                {
+                    RoleId = it.Id
+                })
+                .ToListAsync();
             request.Adapt(user);
             if (user.Id == Guid.Empty)
                 await repUser.InsertAsync(user);
@@ -93,8 +115,9 @@
         public async Task<Guid> Handle(SyncOperationUserCommand request, CancellationToken cancellationToken)
         {
             var user = await repUser.AsQueryable()
+                .Include(it => it.UserRoles)
                 .Include(it => it.UserManageIndustrialParks)
-                .Where(it => it.Type == EnumUserType.Operation && it.UserName == request.UserName)
+                .Where(it => it.Type == EnumUserType.Operation && it.DataSource == request.DataSource && it.DataSourceId == request.DataSourceId)
                 .FirstOrDefaultAsync(cancellationToken);
             if (user == null)
             {
@@ -102,11 +125,22 @@
                 user.Type = EnumUserType.Operation;
                 user.Status = EnumUserStatus.Normal;
             }
+            var checkUserNameExist = await repUser.AsQueryable().AsNoTracking()
+                .AnyAsync(it => it.Type == EnumUserType.Operation && it.UserName == request.UserName && it.Id != user.Id);
+            if (checkUserNameExist) throw Oops.Oh(EnumErrorCodeType.s405, "璐﹀彿");
             request.Adapt(user);
             user.UserManageIndustrialParks = request.IndustrialParkIds.Select(it => new UserManageIndustrialPark
             {
                 IndustrialParkId = it
             }).ToList();
+            user.Level = 100;
+            user.UserRoles = await repRole.AsQueryable().AsNoTracking()
+                .Where(it => it.UserType == user.Type && it.MinLevel == 100)
+                .Select(it => new UserRole
+                {
+                    RoleId = it.Id
+                })
+                .ToListAsync();
             if (user.Id == Guid.Empty)
                 await repUser.InsertAsync(user);
             else

--
Gitblit v1.9.1