|
@@ -20,7 +20,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
private readonly SysOnlineUserService _sysOnlineUserService;
|
|
private readonly SysOnlineUserService _sysOnlineUserService;
|
|
|
private readonly SysCacheService _sysCacheService;
|
|
private readonly SysCacheService _sysCacheService;
|
|
|
private readonly SysUserLdapService _sysUserLdapService;
|
|
private readonly SysUserLdapService _sysUserLdapService;
|
|
|
- private SqlSugarRepository<SysUser> sysUserRep = null;
|
|
|
|
|
|
|
+ private readonly SqlSugarRepository<SysUser> _sysUserRep;
|
|
|
|
|
|
|
|
public SysUserService(UserManager userManager,
|
|
public SysUserService(UserManager userManager,
|
|
|
SysOrgService sysOrgService,
|
|
SysOrgService sysOrgService,
|
|
@@ -29,7 +29,8 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
SysConfigService sysConfigService,
|
|
SysConfigService sysConfigService,
|
|
|
SysOnlineUserService sysOnlineUserService,
|
|
SysOnlineUserService sysOnlineUserService,
|
|
|
SysCacheService sysCacheService,
|
|
SysCacheService sysCacheService,
|
|
|
- SysUserLdapService sysUserLdapService)
|
|
|
|
|
|
|
+ SysUserLdapService sysUserLdapService,
|
|
|
|
|
+ SqlSugarRepository<SysUser> sysUserRep)
|
|
|
{
|
|
{
|
|
|
_userManager = userManager;
|
|
_userManager = userManager;
|
|
|
_sysOrgService = sysOrgService;
|
|
_sysOrgService = sysOrgService;
|
|
@@ -39,15 +40,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
_sysOnlineUserService = sysOnlineUserService;
|
|
_sysOnlineUserService = sysOnlineUserService;
|
|
|
_sysCacheService = sysCacheService;
|
|
_sysCacheService = sysCacheService;
|
|
|
_sysUserLdapService = sysUserLdapService;
|
|
_sysUserLdapService = sysUserLdapService;
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- public SqlSugarRepository<SysUser> SysUserRep
|
|
|
|
|
- {
|
|
|
|
|
- get
|
|
|
|
|
- {
|
|
|
|
|
- sysUserRep ??= App.GetRequiredService<SqlSugarRepository<SysUser>>();
|
|
|
|
|
- return sysUserRep;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ _sysUserRep = sysUserRep;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -71,7 +64,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
orgList = _userManager.SuperAdmin ? null : userOrgIdList;
|
|
orgList = _userManager.SuperAdmin ? null : userOrgIdList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return await SysUserRep.AsQueryable()
|
|
|
|
|
|
|
+ return await _sysUserRep.AsQueryable()
|
|
|
.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)
|
|
@@ -100,14 +93,14 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
[DisplayName("增加用户")]
|
|
[DisplayName("增加用户")]
|
|
|
public virtual async Task<long> AddUser(AddUserInput input)
|
|
public virtual async Task<long> AddUser(AddUserInput input)
|
|
|
{
|
|
{
|
|
|
- var isExist = await SysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.Account);
|
|
|
|
|
|
|
+ var isExist = await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.Account);
|
|
|
if (isExist) throw Oops.Oh(ErrorCodeEnum.D1003);
|
|
if (isExist) throw Oops.Oh(ErrorCodeEnum.D1003);
|
|
|
|
|
|
|
|
var password = await _sysConfigService.GetConfigValue<string>(CommonConst.SysPassword);
|
|
var password = await _sysConfigService.GetConfigValue<string>(CommonConst.SysPassword);
|
|
|
|
|
|
|
|
var user = input.Adapt<SysUser>();
|
|
var user = input.Adapt<SysUser>();
|
|
|
user.Password = CryptogramUtil.Encrypt(password);
|
|
user.Password = CryptogramUtil.Encrypt(password);
|
|
|
- var newUser = await SysUserRep.AsInsertable(user).ExecuteReturnEntityAsync();
|
|
|
|
|
|
|
+ var newUser = await _sysUserRep.AsInsertable(user).ExecuteReturnEntityAsync();
|
|
|
|
|
|
|
|
input.Id = newUser.Id;
|
|
input.Id = newUser.Id;
|
|
|
await UpdateRoleAndExtOrg(input);
|
|
await UpdateRoleAndExtOrg(input);
|
|
@@ -129,19 +122,19 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
[DisplayName("更新用户")]
|
|
[DisplayName("更新用户")]
|
|
|
public virtual async Task UpdateUser(UpdateUserInput input)
|
|
public virtual async Task UpdateUser(UpdateUserInput input)
|
|
|
{
|
|
{
|
|
|
- if (await SysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.Account && u.Id != input.Id))
|
|
|
|
|
|
|
+ if (await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.Account && u.Id != input.Id))
|
|
|
throw Oops.Oh(ErrorCodeEnum.D1003);
|
|
throw Oops.Oh(ErrorCodeEnum.D1003);
|
|
|
|
|
|
|
|
- await SysUserRep.AsUpdateable(input.Adapt<SysUser>()).IgnoreColumns(true)
|
|
|
|
|
|
|
+ await _sysUserRep.AsUpdateable(input.Adapt<SysUser>()).IgnoreColumns(true)
|
|
|
.IgnoreColumns(u => new { u.Password, u.Status }).ExecuteCommandAsync();
|
|
.IgnoreColumns(u => new { u.Password, u.Status }).ExecuteCommandAsync();
|
|
|
|
|
|
|
|
await UpdateRoleAndExtOrg(input);
|
|
await UpdateRoleAndExtOrg(input);
|
|
|
|
|
|
|
|
// 删除用户机构缓存
|
|
// 删除用户机构缓存
|
|
|
- SqlSugarFilter.DeleteUserOrgCache(input.Id, SysUserRep.Context.CurrentConnectionConfig.ConfigId.ToString());
|
|
|
|
|
|
|
+ SqlSugarFilter.DeleteUserOrgCache(input.Id, _sysUserRep.Context.CurrentConnectionConfig.ConfigId.ToString());
|
|
|
|
|
|
|
|
// 若账号的角色和组织架构发生变化,则强制下线账号进行权限更新
|
|
// 若账号的角色和组织架构发生变化,则强制下线账号进行权限更新
|
|
|
- var user = await SysUserRep.AsQueryable().ClearFilter().FirstAsync(u => u.Id == input.Id);
|
|
|
|
|
|
|
+ var user = await _sysUserRep.AsQueryable().ClearFilter().FirstAsync(u => u.Id == input.Id);
|
|
|
var roleIds = await GetOwnRoleList(input.Id);
|
|
var roleIds = await GetOwnRoleList(input.Id);
|
|
|
if (input.OrgId != user.OrgId || !input.RoleIdList.OrderBy(u => u).SequenceEqual(roleIds.OrderBy(u => u)))
|
|
if (input.OrgId != user.OrgId || !input.RoleIdList.OrderBy(u => u).SequenceEqual(roleIds.OrderBy(u => u)))
|
|
|
await _sysOnlineUserService.ForceOffline(input.Id);
|
|
await _sysOnlineUserService.ForceOffline(input.Id);
|
|
@@ -171,7 +164,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
[DisplayName("删除用户")]
|
|
[DisplayName("删除用户")]
|
|
|
public virtual async Task DeleteUser(DeleteUserInput input)
|
|
public virtual async Task DeleteUser(DeleteUserInput input)
|
|
|
{
|
|
{
|
|
|
- var user = await SysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
|
|
|
|
+ var user = await _sysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
if (user.AccountType == AccountTypeEnum.SuperAdmin)
|
|
if (user.AccountType == AccountTypeEnum.SuperAdmin)
|
|
|
throw Oops.Oh(ErrorCodeEnum.D1014);
|
|
throw Oops.Oh(ErrorCodeEnum.D1014);
|
|
|
if (user.Id == _userManager.UserId)
|
|
if (user.Id == _userManager.UserId)
|
|
@@ -180,7 +173,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
// 强制下线
|
|
// 强制下线
|
|
|
await _sysOnlineUserService.ForceOffline(user.Id);
|
|
await _sysOnlineUserService.ForceOffline(user.Id);
|
|
|
|
|
|
|
|
- await SysUserRep.DeleteAsync(user);
|
|
|
|
|
|
|
+ await _sysUserRep.DeleteAsync(user);
|
|
|
|
|
|
|
|
// 删除用户角色
|
|
// 删除用户角色
|
|
|
await _sysUserRoleService.DeleteUserRoleByUserId(input.Id);
|
|
await _sysUserRoleService.DeleteUserRoleByUserId(input.Id);
|
|
@@ -199,7 +192,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
[DisplayName("查看用户基本信息")]
|
|
[DisplayName("查看用户基本信息")]
|
|
|
public virtual async Task<SysUser> GetBaseInfo()
|
|
public virtual async Task<SysUser> GetBaseInfo()
|
|
|
{
|
|
{
|
|
|
- return await SysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId);
|
|
|
|
|
|
|
+ return await _sysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -210,7 +203,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
[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)
|
|
|
.IgnoreColumns(u => new { u.CreateTime, u.Account, u.Password, u.AccountType, u.OrgId, u.PosId }).ExecuteCommandAsync();
|
|
.IgnoreColumns(u => new { u.CreateTime, u.Account, u.Password, u.AccountType, u.OrgId, u.PosId }).ExecuteCommandAsync();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -225,7 +218,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
if (_userManager.UserId == input.Id)
|
|
if (_userManager.UserId == input.Id)
|
|
|
throw Oops.Oh(ErrorCodeEnum.D1026);
|
|
throw Oops.Oh(ErrorCodeEnum.D1026);
|
|
|
|
|
|
|
|
- var user = await SysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
|
|
|
|
+ var user = await _sysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
if (user.AccountType == AccountTypeEnum.SuperAdmin)
|
|
if (user.AccountType == AccountTypeEnum.SuperAdmin)
|
|
|
throw Oops.Oh(ErrorCodeEnum.D1015);
|
|
throw Oops.Oh(ErrorCodeEnum.D1015);
|
|
|
|
|
|
|
@@ -247,7 +240,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
user.Status = input.Status;
|
|
user.Status = input.Status;
|
|
|
- return await SysUserRep.AsUpdateable(user).UpdateColumns(u => new { u.Status }).ExecuteCommandAsync();
|
|
|
|
|
|
|
+ return await _sysUserRep.AsUpdateable(user).UpdateColumns(u => new { u.Status }).ExecuteCommandAsync();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -278,7 +271,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
input.PasswordOld = CryptogramUtil.SM2Decrypt(input.PasswordOld);
|
|
input.PasswordOld = CryptogramUtil.SM2Decrypt(input.PasswordOld);
|
|
|
input.PasswordNew = CryptogramUtil.SM2Decrypt(input.PasswordNew);
|
|
input.PasswordNew = CryptogramUtil.SM2Decrypt(input.PasswordNew);
|
|
|
|
|
|
|
|
- var user = await SysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
|
|
|
|
+ var user = await _sysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
if (CryptogramUtil.CryptoType == CryptogramEnum.MD5.ToString())
|
|
if (CryptogramUtil.CryptoType == CryptogramEnum.MD5.ToString())
|
|
|
{
|
|
{
|
|
|
if (user.Password != MD5Encryption.Encrypt(input.PasswordOld))
|
|
if (user.Password != MD5Encryption.Encrypt(input.PasswordOld))
|
|
@@ -305,7 +298,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
user.Password = CryptogramUtil.Encrypt(input.PasswordNew);
|
|
user.Password = CryptogramUtil.Encrypt(input.PasswordNew);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return await SysUserRep.AsUpdateable(user).UpdateColumns(u => u.Password).ExecuteCommandAsync();
|
|
|
|
|
|
|
+ return await _sysUserRep.AsUpdateable(user).UpdateColumns(u => u.Password).ExecuteCommandAsync();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -316,10 +309,10 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
[DisplayName("重置用户密码")]
|
|
[DisplayName("重置用户密码")]
|
|
|
public virtual async Task<string> ResetPwd(ResetPwdUserInput input)
|
|
public virtual async Task<string> ResetPwd(ResetPwdUserInput input)
|
|
|
{
|
|
{
|
|
|
- var user = await SysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
|
|
|
|
+ var user = await _sysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
var password = await _sysConfigService.GetConfigValue<string>(CommonConst.SysPassword);
|
|
var password = await _sysConfigService.GetConfigValue<string>(CommonConst.SysPassword);
|
|
|
user.Password = CryptogramUtil.Encrypt(password);
|
|
user.Password = CryptogramUtil.Encrypt(password);
|
|
|
- await SysUserRep.AsUpdateable(user).UpdateColumns(u => u.Password).ExecuteCommandAsync();
|
|
|
|
|
|
|
+ await _sysUserRep.AsUpdateable(user).UpdateColumns(u => u.Password).ExecuteCommandAsync();
|
|
|
|
|
|
|
|
// 清空密码错误次数
|
|
// 清空密码错误次数
|
|
|
var keyErrorPasswordCount = $"{CacheConst.KeyErrorPasswordCount}{user.Account}";
|
|
var keyErrorPasswordCount = $"{CacheConst.KeyErrorPasswordCount}{user.Account}";
|
|
@@ -336,7 +329,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
|
|
[DisplayName("解除登录锁定")]
|
|
[DisplayName("解除登录锁定")]
|
|
|
public virtual async Task UnlockLogin(UnlockLoginInput input)
|
|
public virtual async Task UnlockLogin(UnlockLoginInput input)
|
|
|
{
|
|
{
|
|
|
- var user = await SysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
|
|
|
|
+ var user = await _sysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
|
|
|
|
|
|
|
|
// 清空密码错误次数
|
|
// 清空密码错误次数
|
|
|
var keyErrorPasswordCount = $"{CacheConst.KeyErrorPasswordCount}{user.Account}";
|
|
var keyErrorPasswordCount = $"{CacheConst.KeyErrorPasswordCount}{user.Account}";
|