|  | @@ -41,7 +41,7 @@ public class UserService : BaseService, IUserService, IDynamicApi
 | 
											
												
													
														|  |      private ITenantRepository _tenantRepository => LazyGetRequiredService<ITenantRepository>();
 |  |      private ITenantRepository _tenantRepository => LazyGetRequiredService<ITenantRepository>();
 | 
											
												
													
														|  |      private IApiRepository _apiRepository => LazyGetRequiredService<IApiRepository>();
 |  |      private IApiRepository _apiRepository => LazyGetRequiredService<IApiRepository>();
 | 
											
												
													
														|  |      private IStaffRepository _staffRepository => LazyGetRequiredService<IStaffRepository>();
 |  |      private IStaffRepository _staffRepository => LazyGetRequiredService<IStaffRepository>();
 | 
											
												
													
														|  | -    private IRepositoryBase<StaffOrgEntity> _staffOrgRepository => LazyGetRequiredService<IRepositoryBase<StaffOrgEntity>>();
 |  | 
 | 
											
												
													
														|  | 
 |  | +    private IRepositoryBase<UserOrgEntity> _userOrgRepository => LazyGetRequiredService<IRepositoryBase<UserOrgEntity>>();
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      public UserService()
 |  |      public UserService()
 | 
											
												
													
														|  |      {
 |  |      {
 | 
											
										
											
												
													
														|  | @@ -57,7 +57,7 @@ public class UserService : BaseService, IUserService, IDynamicApi
 | 
											
												
													
														|  |          var output = await _userRepository.Select
 |  |          var output = await _userRepository.Select
 | 
											
												
													
														|  |          .WhereDynamic(id)
 |  |          .WhereDynamic(id)
 | 
											
												
													
														|  |          .IncludeMany(a => a.Roles.Select(b => new RoleEntity { Id = b.Id, Name = b.Name }))
 |  |          .IncludeMany(a => a.Roles.Select(b => new RoleEntity { Id = b.Id, Name = b.Name }))
 | 
											
												
													
														|  | -        .IncludeMany(a => a.Staff.Orgs.Select(b => new OrgEntity { Id = b.Id, Name = b.Name }))
 |  | 
 | 
											
												
													
														|  | 
 |  | +        .IncludeMany(a => a.Orgs.Select(b => new OrgEntity { Id = b.Id, Name = b.Name }))
 | 
											
												
													
														|  |          .ToOneAsync(a=>new
 |  |          .ToOneAsync(a=>new
 | 
											
												
													
														|  |          {
 |  |          {
 | 
											
												
													
														|  |              a.Id,
 |  |              a.Id,
 | 
											
										
											
												
													
														|  | @@ -67,11 +67,15 @@ public class UserService : BaseService, IUserService, IDynamicApi
 | 
											
												
													
														|  |              a.Mobile,
 |  |              a.Mobile,
 | 
											
												
													
														|  |              a.Email,
 |  |              a.Email,
 | 
											
												
													
														|  |              a.Roles,
 |  |              a.Roles,
 | 
											
												
													
														|  | 
 |  | +            a.Orgs,
 | 
											
												
													
														|  | 
 |  | +            a.MainOrgId,
 | 
											
												
													
														|  |              Staff = new
 |  |              Staff = new
 | 
											
												
													
														|  |              {
 |  |              {
 | 
											
												
													
														|  | -                a.Staff.Version,
 |  | 
 | 
											
												
													
														|  | -                a.Staff.Orgs,
 |  | 
 | 
											
												
													
														|  | -                a.Staff.MainOrgId
 |  | 
 | 
											
												
													
														|  | 
 |  | +                a.Staff.JobNumber,
 | 
											
												
													
														|  | 
 |  | +                a.Staff.Sex,
 | 
											
												
													
														|  | 
 |  | +                a.Staff.Position,
 | 
											
												
													
														|  | 
 |  | +                a.Staff.Introduce,
 | 
											
												
													
														|  | 
 |  | +                a.Staff.Version
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |          });
 |  |          });
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -88,7 +92,7 @@ public class UserService : BaseService, IUserService, IDynamicApi
 | 
											
												
													
														|  |      {
 |  |      {
 | 
											
												
													
														|  |          var orgId = input.Filter;
 |  |          var orgId = input.Filter;
 | 
											
												
													
														|  |          var list = await _userRepository.Select
 |  |          var list = await _userRepository.Select
 | 
											
												
													
														|  | -        .WhereIf(orgId.HasValue && orgId > 0, a => _staffOrgRepository.Where(b => b.StaffId == a.Id && b.OrgId == orgId).Any())
 |  | 
 | 
											
												
													
														|  | 
 |  | +        .WhereIf(orgId.HasValue && orgId > 0, a => _userOrgRepository.Where(b => b.UserId == a.Id && b.OrgId == orgId).Any())
 | 
											
												
													
														|  |          .WhereDynamicFilter(input.DynamicFilter)
 |  |          .WhereDynamicFilter(input.DynamicFilter)
 | 
											
												
													
														|  |          .Count(out var total)
 |  |          .Count(out var total)
 | 
											
												
													
														|  |          .OrderByDescending(true, a => a.Id)
 |  |          .OrderByDescending(true, a => a.Id)
 | 
											
										
											
												
													
														|  | @@ -205,27 +209,29 @@ public class UserService : BaseService, IUserService, IDynamicApi
 | 
											
												
													
														|  |              return ResultOutput.NotOk("新增用户失败");
 |  |              return ResultOutput.NotOk("新增用户失败");
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +        var userId = user.Id;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |          //用户角色
 |  |          //用户角色
 | 
											
												
													
														|  |          if (input.RoleIds != null && input.RoleIds.Any())
 |  |          if (input.RoleIds != null && input.RoleIds.Any())
 | 
											
												
													
														|  |          {
 |  |          {
 | 
											
												
													
														|  | -            var roles = input.RoleIds.Select(roleId => new UserRoleEntity { UserId = user.Id, RoleId = roleId }).ToList();
 |  | 
 | 
											
												
													
														|  | 
 |  | +            var roles = input.RoleIds.Select(roleId => new UserRoleEntity { UserId = userId, RoleId = roleId }).ToList();
 | 
											
												
													
														|  |              await _userRoleRepository.InsertAsync(roles);
 |  |              await _userRoleRepository.InsertAsync(roles);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          // 员工信息
 |  |          // 员工信息
 | 
											
												
													
														|  |          var staff = Mapper.Map<StaffEntity>(input.Staff);
 |  |          var staff = Mapper.Map<StaffEntity>(input.Staff);
 | 
											
												
													
														|  | -        staff.Id = user.Id;
 |  | 
 | 
											
												
													
														|  | 
 |  | +        staff.Id = userId;
 | 
											
												
													
														|  |          await _staffRepository.InsertAsync(staff);
 |  |          await _staffRepository.InsertAsync(staff);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          //所属部门
 |  |          //所属部门
 | 
											
												
													
														|  | -        if (input.Staff.OrgIds != null && input.Staff.OrgIds.Any())
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if (input.OrgIds != null && input.OrgIds.Any())
 | 
											
												
													
														|  |          {
 |  |          {
 | 
											
												
													
														|  | -            var orgs = input.Staff.OrgIds.Select(orgId => new StaffOrgEntity
 |  | 
 | 
											
												
													
														|  | 
 |  | +            var orgs = input.OrgIds.Select(orgId => new UserOrgEntity
 | 
											
												
													
														|  |              {
 |  |              {
 | 
											
												
													
														|  | -                StaffId = staff.Id,
 |  | 
 | 
											
												
													
														|  | 
 |  | +                UserId = userId,
 | 
											
												
													
														|  |                  OrgId = orgId
 |  |                  OrgId = orgId
 | 
											
												
													
														|  |              }).ToList();
 |  |              }).ToList();
 | 
											
												
													
														|  | -            await _staffOrgRepository.InsertAsync(orgs);
 |  | 
 | 
											
												
													
														|  | 
 |  | +            await _userOrgRepository.InsertAsync(orgs);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          return ResultOutput.Ok();
 |  |          return ResultOutput.Ok();
 | 
											
										
											
												
													
														|  | @@ -263,34 +269,36 @@ public class UserService : BaseService, IUserService, IDynamicApi
 | 
											
												
													
														|  |          Mapper.Map(input, user);
 |  |          Mapper.Map(input, user);
 | 
											
												
													
														|  |          await _userRepository.UpdateAsync(user);
 |  |          await _userRepository.UpdateAsync(user);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +        var userId = user.Id;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |          // 用户角色
 |  |          // 用户角色
 | 
											
												
													
														|  | -        await _userRoleRepository.DeleteAsync(a => a.UserId == user.Id);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        await _userRoleRepository.DeleteAsync(a => a.UserId == userId);
 | 
											
												
													
														|  |          if (input.RoleIds != null && input.RoleIds.Any())
 |  |          if (input.RoleIds != null && input.RoleIds.Any())
 | 
											
												
													
														|  |          {
 |  |          {
 | 
											
												
													
														|  | -            var roles = input.RoleIds.Select(roleId => new UserRoleEntity { UserId = user.Id, RoleId = roleId }).ToList();
 |  | 
 | 
											
												
													
														|  | 
 |  | +            var roles = input.RoleIds.Select(roleId => new UserRoleEntity { UserId = userId, RoleId = roleId }).ToList();
 | 
											
												
													
														|  |              await _userRoleRepository.InsertAsync(roles);
 |  |              await _userRoleRepository.InsertAsync(roles);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          // 员工信息
 |  |          // 员工信息
 | 
											
												
													
														|  | -        var staff = await _staffRepository.GetAsync(user.Id);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        var staff = await _staffRepository.GetAsync(userId);
 | 
											
												
													
														|  |          if(staff == null)
 |  |          if(staff == null)
 | 
											
												
													
														|  |          {
 |  |          {
 | 
											
												
													
														|  |              staff = new StaffEntity();
 |  |              staff = new StaffEntity();
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          Mapper.Map(input.Staff, staff);
 |  |          Mapper.Map(input.Staff, staff);
 | 
											
												
													
														|  | -        staff.Id = user.Id;
 |  | 
 | 
											
												
													
														|  | 
 |  | +        staff.Id = userId;
 | 
											
												
													
														|  |          await _staffRepository.InsertOrUpdateAsync(staff);
 |  |          await _staffRepository.InsertOrUpdateAsync(staff);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          //所属部门
 |  |          //所属部门
 | 
											
												
													
														|  | -        await _staffOrgRepository.DeleteAsync(a => a.StaffId == staff.Id);
 |  | 
 | 
											
												
													
														|  | -        if (input.Staff.OrgIds != null && input.Staff.OrgIds.Any())
 |  | 
 | 
											
												
													
														|  | 
 |  | +        await _userOrgRepository.DeleteAsync(a => a.UserId == userId);
 | 
											
												
													
														|  | 
 |  | +        if (input.OrgIds != null && input.OrgIds.Any())
 | 
											
												
													
														|  |          {
 |  |          {
 | 
											
												
													
														|  | -            var orgs = input.Staff.OrgIds.Select(orgId => new StaffOrgEntity
 |  | 
 | 
											
												
													
														|  | 
 |  | +            var orgs = input.OrgIds.Select(orgId => new UserOrgEntity
 | 
											
												
													
														|  |              {
 |  |              {
 | 
											
												
													
														|  | -                StaffId = staff.Id,
 |  | 
 | 
											
												
													
														|  | 
 |  | +                UserId = userId,
 | 
											
												
													
														|  |                  OrgId = orgId
 |  |                  OrgId = orgId
 | 
											
												
													
														|  |              }).ToList();
 |  |              }).ToList();
 | 
											
												
													
														|  | -            await _staffOrgRepository.InsertAsync(orgs);
 |  | 
 | 
											
												
													
														|  | 
 |  | +            await _userOrgRepository.InsertAsync(orgs);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          return ResultOutput.Ok();
 |  |          return ResultOutput.Ok();
 | 
											
										
											
												
													
														|  | @@ -348,12 +356,12 @@ public class UserService : BaseService, IUserService, IDynamicApi
 | 
											
												
													
														|  |      [Transaction]
 |  |      [Transaction]
 | 
											
												
													
														|  |      public virtual async Task<IResultOutput> DeleteAsync(long id)
 |  |      public virtual async Task<IResultOutput> DeleteAsync(long id)
 | 
											
												
													
														|  |      {
 |  |      {
 | 
											
												
													
														|  | -        //删除员工所属部门
 |  | 
 | 
											
												
													
														|  | -        await _staffOrgRepository.DeleteAsync(a => a.StaffId == id);
 |  | 
 | 
											
												
													
														|  |          //删除员工
 |  |          //删除员工
 | 
											
												
													
														|  |          await _staffRepository.DeleteAsync(a => a.Id == id);
 |  |          await _staffRepository.DeleteAsync(a => a.Id == id);
 | 
											
												
													
														|  |          //删除用户角色
 |  |          //删除用户角色
 | 
											
												
													
														|  |          await _userRoleRepository.DeleteAsync(a => a.UserId == id);
 |  |          await _userRoleRepository.DeleteAsync(a => a.UserId == id);
 | 
											
												
													
														|  | 
 |  | +        //删除员工所属部门
 | 
											
												
													
														|  | 
 |  | +        await _userOrgRepository.DeleteAsync(a => a.UserId == id);
 | 
											
												
													
														|  |          //删除用户
 |  |          //删除用户
 | 
											
												
													
														|  |          await _userRepository.DeleteAsync(a => a.Id == id);
 |  |          await _userRepository.DeleteAsync(a => a.Id == id);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -368,12 +376,12 @@ public class UserService : BaseService, IUserService, IDynamicApi
 | 
											
												
													
														|  |      [Transaction]
 |  |      [Transaction]
 | 
											
												
													
														|  |      public virtual async Task<IResultOutput> BatchDeleteAsync(long[] ids)
 |  |      public virtual async Task<IResultOutput> BatchDeleteAsync(long[] ids)
 | 
											
												
													
														|  |      {
 |  |      {
 | 
											
												
													
														|  | -        //删除员工所属部门
 |  | 
 | 
											
												
													
														|  | -        await _staffOrgRepository.DeleteAsync(a => ids.Contains(a.StaffId));
 |  | 
 | 
											
												
													
														|  |          //删除员工
 |  |          //删除员工
 | 
											
												
													
														|  |          await _staffRepository.DeleteAsync(a => ids.Contains(a.Id));
 |  |          await _staffRepository.DeleteAsync(a => ids.Contains(a.Id));
 | 
											
												
													
														|  |          //删除用户角色
 |  |          //删除用户角色
 | 
											
												
													
														|  |          await _userRoleRepository.DeleteAsync(a => ids.Contains(a.UserId));
 |  |          await _userRoleRepository.DeleteAsync(a => ids.Contains(a.UserId));
 | 
											
												
													
														|  | 
 |  | +        //删除员工所属部门
 | 
											
												
													
														|  | 
 |  | +        await _userOrgRepository.DeleteAsync(a => ids.Contains(a.UserId));
 | 
											
												
													
														|  |          //删除用户
 |  |          //删除用户
 | 
											
												
													
														|  |          await _userRepository.DeleteAsync(a => ids.Contains(a.Id));
 |  |          await _userRepository.DeleteAsync(a => ids.Contains(a.Id));
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -388,9 +396,9 @@ public class UserService : BaseService, IUserService, IDynamicApi
 | 
											
												
													
														|  |      [Transaction]
 |  |      [Transaction]
 | 
											
												
													
														|  |      public virtual async Task<IResultOutput> SoftDeleteAsync(long id)
 |  |      public virtual async Task<IResultOutput> SoftDeleteAsync(long id)
 | 
											
												
													
														|  |      {
 |  |      {
 | 
											
												
													
														|  | -        await _staffOrgRepository.DeleteAsync(a => a.StaffId == id);
 |  | 
 | 
											
												
													
														|  |          await _staffRepository.SoftDeleteAsync(a => a.Id == id);
 |  |          await _staffRepository.SoftDeleteAsync(a => a.Id == id);
 | 
											
												
													
														|  |          await _userRoleRepository.DeleteAsync(a => a.UserId == id);
 |  |          await _userRoleRepository.DeleteAsync(a => a.UserId == id);
 | 
											
												
													
														|  | 
 |  | +        await _userOrgRepository.DeleteAsync(a => a.UserId == id);
 | 
											
												
													
														|  |          await _userRepository.SoftDeleteAsync(id);
 |  |          await _userRepository.SoftDeleteAsync(id);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          return ResultOutput.Ok();
 |  |          return ResultOutput.Ok();
 | 
											
										
											
												
													
														|  | @@ -404,9 +412,9 @@ public class UserService : BaseService, IUserService, IDynamicApi
 | 
											
												
													
														|  |      [Transaction]
 |  |      [Transaction]
 | 
											
												
													
														|  |      public virtual async Task<IResultOutput> BatchSoftDeleteAsync(long[] ids)
 |  |      public virtual async Task<IResultOutput> BatchSoftDeleteAsync(long[] ids)
 | 
											
												
													
														|  |      {
 |  |      {
 | 
											
												
													
														|  | -        await _staffOrgRepository.DeleteAsync(a => ids.Contains(a.StaffId));
 |  | 
 | 
											
												
													
														|  |          await _staffRepository.SoftDeleteAsync(a => ids.Contains(a.Id));
 |  |          await _staffRepository.SoftDeleteAsync(a => ids.Contains(a.Id));
 | 
											
												
													
														|  |          await _userRoleRepository.DeleteAsync(a => ids.Contains(a.UserId));
 |  |          await _userRoleRepository.DeleteAsync(a => ids.Contains(a.UserId));
 | 
											
												
													
														|  | 
 |  | +        await _userOrgRepository.DeleteAsync(a => ids.Contains(a.UserId));
 | 
											
												
													
														|  |          await _userRepository.SoftDeleteAsync(ids);
 |  |          await _userRepository.SoftDeleteAsync(ids);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          return ResultOutput.Ok();
 |  |          return ResultOutput.Ok();
 |