指定机构查询用户时包含拥有扩展机构的用户

This commit is contained in:
IMaster 2025-04-24 09:14:19 +08:00
parent 4338c38ea6
commit 076985c76f

View File

@ -57,15 +57,18 @@ public class SysUserService : IDynamicApiController, ITransient
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("获取用户分页列表")] [DisplayName("获取用户分页列表")]
public virtual async Task<SqlSugarPagedList<UserOutput>> Page(PageUserInput input) public virtual async Task<SqlSugarPagedList<UserOutput>> Page(PageUserInput input)
{ {
// 获取用户拥有的机构集合 // 获取用户拥有的机构集合
var userOrgIdList = await _sysOrgService.GetUserOrgIdList(); var userOrgIdList = await _sysOrgService.GetUserOrgIdList();
List<long> orgList = null; List<long> orgList = null;
List<long> extOrgUserIdList = null;
if (input.OrgId > 0) // 指定机构查询时 if (input.OrgId > 0) // 指定机构查询时
{ {
orgList = await _sysOrgService.GetChildIdListWithSelfById(input.OrgId); orgList = await _sysOrgService.GetChildIdListWithSelfById(input.OrgId);
var extOrgList = await _sysUserExtOrgService.GetUserExtOrgListForOrg(input.OrgId);
extOrgUserIdList = extOrgList.Select(u => u.UserId).ToList();
orgList = _userManager.SuperAdmin ? orgList : orgList.Where(u => userOrgIdList.Contains(u)).ToList(); orgList = _userManager.SuperAdmin ? orgList : orgList.Where(u => userOrgIdList.Contains(u)).ToList();
} }
else // 各管理员只能看到自己机构下的用户列表 else // 各管理员只能看到自己机构下的用户列表
@ -77,7 +80,7 @@ public class SysUserService : IDynamicApiController, ITransient
.LeftJoin<SysOrg>((u, a) => u.OrgId == a.Id) .LeftJoin<SysOrg>((u, a) => u.OrgId == a.Id)
.LeftJoin<SysPos>((u, a, b) => u.PosId == b.Id) .LeftJoin<SysPos>((u, a, b) => u.PosId == b.Id)
.Where(u => u.AccountType != AccountTypeEnum.SuperAdmin) .Where(u => u.AccountType != AccountTypeEnum.SuperAdmin)
.WhereIF(orgList != null, u => orgList.Contains(u.OrgId)) .WhereIF(orgList != null || extOrgUserList != null, u => orgList.Contains(u.OrgId) || extOrgUserList.Contains(u.Id))
.WhereIF(!string.IsNullOrWhiteSpace(input.Account), u => u.Account.Contains(input.Account)) .WhereIF(!string.IsNullOrWhiteSpace(input.Account), u => u.Account.Contains(input.Account))
.WhereIF(!string.IsNullOrWhiteSpace(input.RealName), u => u.RealName.Contains(input.RealName)) .WhereIF(!string.IsNullOrWhiteSpace(input.RealName), u => u.RealName.Contains(input.RealName))
.WhereIF(!string.IsNullOrWhiteSpace(input.PosName), (u, a, b) => b.Name.Contains(input.PosName)) .WhereIF(!string.IsNullOrWhiteSpace(input.PosName), (u, a, b) => b.Name.Contains(input.PosName))
@ -100,7 +103,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// <returns></returns> /// <returns></returns>
[UnitOfWork] [UnitOfWork]
[ApiDescriptionSettings(Name = "Add"), HttpPost] [ApiDescriptionSettings(Name = "Add"), HttpPost]
[DisplayName("增加用户")] [DisplayName("增加用户")]
public virtual async Task<long> AddUser(AddUserInput input) public virtual async Task<long> AddUser(AddUserInput input)
{ {
var query = _sysUserRep.AsQueryable().ClearFilter(); var query = _sysUserRep.AsQueryable().ClearFilter();
@ -133,7 +136,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// <returns></returns> /// <returns></returns>
[UnitOfWork] [UnitOfWork]
[ApiDescriptionSettings(Name = "Update"), HttpPost] [ApiDescriptionSettings(Name = "Update"), HttpPost]
[DisplayName("更新用户")] [DisplayName("更新用户")]
public virtual async Task UpdateUser(UpdateUserInput input) public virtual async Task UpdateUser(UpdateUserInput input)
{ {
var query = _sysUserRep.AsQueryable().ClearFilter().Where(u => u.Id != input.Id); var query = _sysUserRep.AsQueryable().ClearFilter().Where(u => u.Id != input.Id);
@ -183,7 +186,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// <returns></returns> /// <returns></returns>
[UnitOfWork] [UnitOfWork]
[ApiDescriptionSettings(Name = "Delete"), HttpPost] [ApiDescriptionSettings(Name = "Delete"), HttpPost]
[DisplayName("删除用户")] [DisplayName("删除用户")]
public virtual async Task DeleteUser(DeleteUserInput input) public virtual async Task DeleteUser(DeleteUserInput input)
{ {
var user = await _sysUserRep.GetByIdAsync(input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009); var user = await _sysUserRep.GetByIdAsync(input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
@ -224,7 +227,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// 查看用户基本信息 🔖 /// 查看用户基本信息 🔖
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[DisplayName("查看用户基本信息")] [DisplayName("查看用户基本信息")]
public virtual async Task<SysUser> GetBaseInfo() public virtual async Task<SysUser> GetBaseInfo()
{ {
return await _sysUserRep.GetByIdAsync(_userManager.UserId); return await _sysUserRep.GetByIdAsync(_userManager.UserId);
@ -235,7 +238,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[ApiDescriptionSettings(Name = "UpdateBaseInfo"), HttpPost] [ApiDescriptionSettings(Name = "UpdateBaseInfo"), HttpPost]
[DisplayName("更新用户基本信息")] [DisplayName("更新用户基本信息")]
public virtual async Task<int> UpdateBaseInfo(SysUser user) public virtual async Task<int> UpdateBaseInfo(SysUser user)
{ {
return await _sysUserRep.AsUpdateable(user) return await _sysUserRep.AsUpdateable(user)
@ -248,7 +251,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[UnitOfWork] [UnitOfWork]
[DisplayName("设置用户状态")] [DisplayName("设置用户状态")]
public virtual async Task<int> SetStatus(UserInput input) public virtual async Task<int> SetStatus(UserInput input)
{ {
if (_userManager.UserId == input.Id) if (_userManager.UserId == input.Id)
@ -281,7 +284,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[UnitOfWork] [UnitOfWork]
[DisplayName("授权用户角色")] [DisplayName("授权用户角色")]
public async Task GrantRole(UserRoleInput input) public async Task GrantRole(UserRoleInput input)
{ {
var user = await _sysUserRep.GetByIdAsync(input.UserId) ?? throw Oops.Oh(ErrorCodeEnum.D0009); var user = await _sysUserRep.GetByIdAsync(input.UserId) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
@ -304,7 +307,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("修改用户密码")] [DisplayName("修改用户密码")]
public virtual async Task<int> ChangePwd(ChangePwdInput input) public virtual async Task<int> ChangePwd(ChangePwdInput input)
{ {
// 国密SM2解密前端密码传输SM2加密后的 // 国密SM2解密前端密码传输SM2加密后的
@ -369,12 +372,12 @@ public class SysUserService : IDynamicApiController, ITransient
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("重置用户密码")] [DisplayName("重置用户密码")]
public virtual async Task<string> ResetPwd(ResetPwdUserInput input) public virtual async Task<string> ResetPwd(ResetPwdUserInput input)
{ {
var user = await _sysUserRep.GetByIdAsync(input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009); var user = await _sysUserRep.GetByIdAsync(input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
var password = await _sysConfigService.GetConfigValueByCode<string>(ConfigConst.SysPassword); var password = await _sysConfigService.GetConfigValueByCode<string>(ConfigConst.SysPassword);
if (!string.IsNullOrEmpty(input.NewPassword)) if (!string.IsNullOrEmpty(input.NewPassword))
password = input.NewPassword; password = input.NewPassword;
user.Password = CryptogramUtil.Encrypt(password); user.Password = CryptogramUtil.Encrypt(password);
user.LastChangePasswordTime = null; user.LastChangePasswordTime = null;
@ -397,7 +400,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// 验证密码有效期 🔖 /// 验证密码有效期 🔖
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[DisplayName("验证密码有效期")] [DisplayName("验证密码有效期")]
public async Task<bool> VerifyPwdExpirationTime() public async Task<bool> VerifyPwdExpirationTime()
{ {
var sysConfig = await _sysConfigService.GetConfig(ConfigConst.SysPasswordExpirationTime); var sysConfig = await _sysConfigService.GetConfig(ConfigConst.SysPasswordExpirationTime);
@ -417,7 +420,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("解除登录锁定")] [DisplayName("解除登录锁定")]
public virtual async Task UnlockLogin(UnlockLoginInput input) public virtual async Task UnlockLogin(UnlockLoginInput input)
{ {
var user = await _sysUserRep.GetByIdAsync(input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009); var user = await _sysUserRep.GetByIdAsync(input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
@ -435,7 +438,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// </summary> /// </summary>
/// <param name="userId"></param> /// <param name="userId"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("获取用户拥有角色集合")] [DisplayName("获取用户拥有角色集合")]
public async Task<GrantRoleOutput> GetOwnRoleList(long userId) public async Task<GrantRoleOutput> GetOwnRoleList(long userId)
{ {
// 获取当前用户已分配角色 // 获取当前用户已分配角色
@ -454,7 +457,7 @@ public class SysUserService : IDynamicApiController, ITransient
/// </summary> /// </summary>
/// <param name="userId"></param> /// <param name="userId"></param>
/// <returns></returns> /// <returns></returns>
[DisplayName("获取用户扩展机构集合")] [DisplayName("获取用户扩展机构集合")]
public async Task<List<SysUserExtOrg>> GetOwnExtOrgList(long userId) public async Task<List<SysUserExtOrg>> GetOwnExtOrgList(long userId)
{ {
return await _sysUserExtOrgService.GetUserExtOrgList(userId); return await _sysUserExtOrgService.GetUserExtOrgList(userId);