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

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