From e94d90fd7d2ec6fcb41fb6aa6fc28e3f9d39ba95 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期二, 19 八月 2025 10:50:16 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs
index 02ea6c3..62f87f6 100644
--- a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs
@@ -65,9 +65,10 @@
                 await repEnterprise.InsertAsync(enterprise);
             else
                 await repEnterprise.UpdateAsync(enterprise);
+
             var user = await repUser.AsQueryable()
                     .Include(it => it.UserRoles)
-                    .Where(it => it.Type == EnumUserType.Enterprise && it.UserName == request.UserName)
+                    .Where(it => it.Type == EnumUserType.Enterprise && it.DataSource == request.DataSource && it.DataSourceId == request.DataSourceId)
                     .FirstOrDefaultAsync(cancellationToken);
             if (user == null)
             {
@@ -78,10 +79,14 @@
             {
                 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 <= user.Level)
+                .Where(it => it.UserType == user.Type && it.MinLevel == 100)
                 .Select(it => new UserRole
                 {
                     RoleId = it.Id
@@ -106,7 +111,7 @@
             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)
             {
@@ -114,6 +119,9 @@
                 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
             {
@@ -121,7 +129,7 @@
             }).ToList();
             user.Level = 100;
             user.UserRoles = await repRole.AsQueryable().AsNoTracking()
-                .Where(it => it.UserType == user.Type && it.MinLevel <= user.Level)
+                .Where(it => it.UserType == user.Type && it.MinLevel == 100)
                 .Select(it => new UserRole
                 {
                     RoleId = it.Id

--
Gitblit v1.9.1