调整项目
This commit is contained in:
parent
fc8fcc7de2
commit
df7c7e0717
@ -14,7 +14,7 @@ public class CreateUserDto
|
||||
[Required]
|
||||
public string RealName { get; set; } = string.Empty;
|
||||
|
||||
public string? Phone { get; set; }
|
||||
public string? PhoneNumber { get; set; }
|
||||
|
||||
public long? TenantId { get; set; }
|
||||
|
||||
|
||||
@ -10,5 +10,5 @@ public class RoleDto
|
||||
public bool IsSystem { get; set; }
|
||||
public List<string>? Permissions { get; set; }
|
||||
public int UserCount { get; set; }
|
||||
public DateTime CreatedAt { get; set; }
|
||||
public DateTimeOffset CreatedAt { get; set; }
|
||||
}
|
||||
|
||||
@ -11,7 +11,7 @@ public class UpdateUserDto
|
||||
[Required]
|
||||
public string RealName { get; set; } = string.Empty;
|
||||
|
||||
public string? Phone { get; set; }
|
||||
public string? PhoneNumber { get; set; }
|
||||
|
||||
public bool EmailConfirmed { get; set; }
|
||||
|
||||
|
||||
@ -6,11 +6,11 @@ public class UserDto
|
||||
public string? UserName { get; set; }
|
||||
public string? Email { get; set; }
|
||||
public string? RealName { get; set; }
|
||||
public string? Phone { get; set; }
|
||||
public string TenantCode { get; set; } = "";
|
||||
public string TenantName { get; set; } = "";
|
||||
public string? PhoneNumber { get; set; }
|
||||
public string? TenantCode { get; set; } = "";
|
||||
public string? TenantName { get; set; } = "";
|
||||
public List<string> Roles { get; set; } = new();
|
||||
public bool EmailConfirmed { get; set; }
|
||||
public bool IsActive { get; set; }
|
||||
public DateTime CreatedAt { get; set; }
|
||||
public DateTimeOffset CreatedAt { get; set; }
|
||||
}
|
||||
|
||||
@ -120,14 +120,14 @@ public class RoleService : IRoleService
|
||||
foreach (var user in users)
|
||||
{
|
||||
var roles = await _userManager.GetRolesAsync(user);
|
||||
var tenant = user.TenantInfo.TenantId > 0 ? await _tenantManager.FindByIdAsync(user.TenantInfo.TenantId) : null;
|
||||
var tenant = user.TenantInfo?.TenantId > 0 ? await _tenantManager.FindByIdAsync(user.TenantInfo.TenantId) : null;
|
||||
userDtos.Add(new UserDto
|
||||
{
|
||||
Id = user.Id,
|
||||
UserName = user.UserName,
|
||||
Email = user.Email,
|
||||
RealName = user.RealName,
|
||||
TenantCode = user.TenantInfo.TenantId.ToString(),
|
||||
TenantCode = user.TenantInfo?.TenantCode,
|
||||
TenantName = tenant?.Name ?? "",
|
||||
Roles = roles.ToList(),
|
||||
EmailConfirmed = user.EmailConfirmed,
|
||||
|
||||
@ -93,7 +93,7 @@ public class TenantService(
|
||||
}
|
||||
|
||||
var users = await context.Users
|
||||
.Where(u => u.TenantInfo.TenantId == tenantId)
|
||||
.Where(u => u.TenantInfo!.TenantId == tenantId)
|
||||
.ToListAsync();
|
||||
|
||||
var userDtos = new List<UserDto>();
|
||||
|
||||
@ -11,7 +11,9 @@ namespace Fengling.Console.Services;
|
||||
|
||||
public interface IUserService
|
||||
{
|
||||
Task<(IEnumerable<UserDto> Items, int TotalCount)> GetUsersAsync(int page, int pageSize, string? userName = null, string? email = null, string? tenantId = null);
|
||||
Task<(IEnumerable<UserDto> Items, int TotalCount)> GetUsersAsync(int page, int pageSize, string? userName = null,
|
||||
string? email = null, string? tenantCode = null);
|
||||
|
||||
Task<UserDto?> GetUserAsync(long id);
|
||||
Task<UserDto> CreateUserAsync(CreateUserDto dto);
|
||||
Task<UserDto> UpdateUserAsync(long id, UpdateUserDto dto);
|
||||
@ -27,7 +29,9 @@ public class UserService(
|
||||
IHttpContextAccessor httpContextAccessor)
|
||||
: IUserService
|
||||
{
|
||||
public async Task<(IEnumerable<UserDto> Items, int TotalCount)> GetUsersAsync(int page, int pageSize, string? userName = null, string? email = null, string? tenantId = null)
|
||||
public async Task<(IEnumerable<UserDto> Items, int TotalCount)> GetUsersAsync(int page, int pageSize,
|
||||
string? userName = null, string? email = null,
|
||||
string? tenantCode = null)
|
||||
{
|
||||
var query = context.Users.AsQueryable();
|
||||
|
||||
@ -41,9 +45,11 @@ public class UserService(
|
||||
query = query.Where(u => u.Email != null && u.Email.Contains(email));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(tenantId))
|
||||
if (!string.IsNullOrEmpty(tenantCode))
|
||||
{
|
||||
query = query.Where(u => u.TenantInfo.TenantId.ToString().Contains(tenantId));
|
||||
query = query.Where(u => u.TenantInfo != null &&
|
||||
u.TenantInfo.TenantCode != null &&
|
||||
u.TenantInfo.TenantCode.Contains(tenantCode));
|
||||
}
|
||||
|
||||
var totalCount = await query.CountAsync();
|
||||
@ -57,15 +63,17 @@ public class UserService(
|
||||
foreach (var user in users)
|
||||
{
|
||||
var roles = await userManager.GetRolesAsync(user);
|
||||
var tenant = user.TenantInfo.TenantId > 0 ? await tenantManager.FindByIdAsync(user.TenantInfo.TenantId) : null;
|
||||
var tenant = user.TenantInfo?.TenantId > 0
|
||||
? await tenantManager.FindByIdAsync(user.TenantInfo.TenantId)
|
||||
: null;
|
||||
userDtos.Add(new UserDto
|
||||
{
|
||||
Id = user.Id,
|
||||
UserName = user.UserName,
|
||||
Email = user.Email,
|
||||
RealName = user.RealName,
|
||||
Phone = user.Phone,
|
||||
TenantCode = user.TenantInfo.TenantId.ToString(),
|
||||
PhoneNumber = user.PhoneNumber,
|
||||
TenantCode = user.TenantInfo?.TenantCode,
|
||||
TenantName = tenant?.Name ?? "",
|
||||
Roles = roles.ToList(),
|
||||
EmailConfirmed = user.EmailConfirmed,
|
||||
@ -83,15 +91,15 @@ public class UserService(
|
||||
if (user == null) return null;
|
||||
|
||||
var roles = await userManager.GetRolesAsync(user);
|
||||
var tenant = user.TenantInfo.TenantId > 0 ? await tenantManager.FindByIdAsync(user.TenantInfo.TenantId) : null;
|
||||
var tenant = user.TenantInfo?.TenantId > 0 ? await tenantManager.FindByIdAsync(user.TenantInfo.TenantId) : null;
|
||||
return new UserDto
|
||||
{
|
||||
Id = user.Id,
|
||||
UserName = user.UserName,
|
||||
Email = user.Email,
|
||||
RealName = user.RealName,
|
||||
Phone = user.Phone,
|
||||
TenantCode = user.TenantInfo.TenantId.ToString(),
|
||||
PhoneNumber = user.PhoneNumber,
|
||||
TenantCode = user.TenantInfo?.TenantCode,
|
||||
TenantName = tenant?.Name ?? "",
|
||||
Roles = roles.ToList(),
|
||||
EmailConfirmed = user.EmailConfirmed,
|
||||
@ -122,7 +130,7 @@ public class UserService(
|
||||
UserName = dto.UserName,
|
||||
Email = dto.Email,
|
||||
RealName = dto.RealName,
|
||||
Phone = dto.Phone,
|
||||
PhoneNumber = dto.PhoneNumber,
|
||||
TenantInfo = tenantInfo,
|
||||
EmailConfirmed = dto.EmailConfirmed,
|
||||
CreatedTime = DateTime.UtcNow
|
||||
@ -134,7 +142,7 @@ public class UserService(
|
||||
throw new InvalidOperationException(string.Join(", ", result.Errors.Select(e => e.Description)));
|
||||
}
|
||||
|
||||
if (dto.RoleIds != null && dto.RoleIds.Any())
|
||||
if (dto.RoleIds.Count != 0)
|
||||
{
|
||||
foreach (var roleId in dto.RoleIds)
|
||||
{
|
||||
@ -152,7 +160,8 @@ public class UserService(
|
||||
await userManager.SetLockoutEndDateAsync(user, DateTimeOffset.MaxValue);
|
||||
}
|
||||
|
||||
await CreateAuditLog("user", "create", "User", user.Id, user.UserName, null, System.Text.Json.JsonSerializer.Serialize(dto));
|
||||
await CreateAuditLog("user", "create", "User", user.Id, user.UserName, null,
|
||||
System.Text.Json.JsonSerializer.Serialize(dto));
|
||||
|
||||
var roles = await userManager.GetRolesAsync(user);
|
||||
return new UserDto
|
||||
@ -161,7 +170,7 @@ public class UserService(
|
||||
UserName = user.UserName,
|
||||
Email = user.Email,
|
||||
RealName = user.RealName,
|
||||
Phone = user.Phone,
|
||||
PhoneNumber = user.PhoneNumber,
|
||||
TenantCode = user.TenantInfo.TenantId.ToString(),
|
||||
TenantName = tenant?.Name ?? "",
|
||||
Roles = roles.ToList(),
|
||||
@ -183,7 +192,7 @@ public class UserService(
|
||||
|
||||
user.Email = dto.Email;
|
||||
user.RealName = dto.RealName;
|
||||
user.Phone = dto.Phone;
|
||||
user.PhoneNumber = dto.PhoneNumber;
|
||||
user.EmailConfirmed = dto.EmailConfirmed;
|
||||
user.UpdatedTime = DateTime.UtcNow;
|
||||
|
||||
@ -200,9 +209,10 @@ public class UserService(
|
||||
await userManager.SetLockoutEndDateAsync(user, DateTimeOffset.MaxValue);
|
||||
}
|
||||
|
||||
var tenant = user.TenantInfo.TenantId > 0 ? await tenantManager.FindByIdAsync(user.TenantInfo.TenantId) : null;
|
||||
var tenant = user.TenantInfo?.TenantId > 0 ? await tenantManager.FindByIdAsync(user.TenantInfo.TenantId) : null;
|
||||
|
||||
await CreateAuditLog("user", "update", "User", user.Id, user.UserName, oldValue, System.Text.Json.JsonSerializer.Serialize(user));
|
||||
await CreateAuditLog("user", "update", "User", user.Id, user.UserName, oldValue,
|
||||
System.Text.Json.JsonSerializer.Serialize(user));
|
||||
|
||||
var roles = await userManager.GetRolesAsync(user);
|
||||
return new UserDto
|
||||
@ -211,8 +221,8 @@ public class UserService(
|
||||
UserName = user.UserName,
|
||||
Email = user.Email,
|
||||
RealName = user.RealName,
|
||||
Phone = user.Phone,
|
||||
TenantCode = user.TenantInfo.TenantId.ToString(),
|
||||
PhoneNumber = user.PhoneNumber,
|
||||
TenantCode = user.TenantInfo?.TenantCode,
|
||||
TenantName = tenant?.Name ?? "",
|
||||
Roles = roles.ToList(),
|
||||
EmailConfirmed = user.EmailConfirmed,
|
||||
@ -256,10 +266,12 @@ public class UserService(
|
||||
await CreateAuditLog("user", "delete", "User", user.Id, user.UserName, oldValue);
|
||||
}
|
||||
|
||||
private async Task CreateAuditLog(string operation, string action, string targetType, long? targetId, string? targetName, string? oldValue = null, string? newValue = null)
|
||||
private async Task CreateAuditLog(string operation, string action, string targetType, long? targetId,
|
||||
string? targetName, string? oldValue = null, string? newValue = null)
|
||||
{
|
||||
var httpContext = httpContextAccessor.HttpContext;
|
||||
var userName = httpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier) ?? httpContext?.User?.Identity?.Name ?? "system";
|
||||
var userName = httpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier) ??
|
||||
httpContext?.User?.Identity?.Name ?? "system";
|
||||
var tenantIdClaim = httpContext?.User?.FindFirstValue("TenantId");
|
||||
|
||||
var log = new AuditLog
|
||||
|
||||
Loading…
Reference in New Issue
Block a user