ql_apimanager_backend/Apimanager_backend/Services/AdminService.cs
2024-11-20 17:54:09 +08:00

119 lines
3.9 KiB
C#

using Apimanager_backend.Data;
using Apimanager_backend.Dtos;
using Apimanager_backend.Exceptions;
using Apimanager_backend.Models;
using AutoMapper;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel;
namespace Apimanager_backend.Services
{
public class AdminService : IAdminService
{
private readonly ApiContext context;
private readonly IMapper mapper;
private readonly ILogger<IAdminService> logger;
public AdminService(ApiContext context, IMapper mapper, ILogger<IAdminService> logger)
{
this.context = context;
this.mapper = mapper;
this.logger = logger;
}
#region
public async Task BanUserAsync(int userId)
{
var user = await context.Users.FirstOrDefaultAsync(x => x.Id == userId);
if (user == null)
{
throw new BaseException(2004,"用户不存在");
}
user.IsBan = true;
context.Users.Update(user);
await context.SaveChangesAsync();
}
#endregion
#region
public async Task<UserInfoDto> CreateUserAsync(CreateUserDto dto)
{
//添加用户
var user = mapper.Map<User>(dto);
context.Users.Add(user);
await context.SaveChangesAsync();
//添加默认角色
UserRole userRole = new UserRole
{
UserId = user.Id,
Role = "User"
};
context.UserRoles.Add(userRole);
await context.SaveChangesAsync();
return mapper.Map<UserInfoDto>(user);
}
#endregion
#region
public async Task DeleteUserAsync(int userId)
{
var user = await context.Users.FirstOrDefaultAsync(x => x.Id == userId);
if (user == null)
{
throw new BaseException(2004, "用户不存在");
}
user.IsDelete = true;
context.Users.Update(user);
await context.SaveChangesAsync();
}
#endregion
#region
public async Task<List<UserInfoDto>> GetUsersAsync(int page, int pageSize, bool desc)
{
var query = context.Users.Include(x => x.Roles).Where(x => true)
.OrderBy(x => x.Id);
//倒序
if (desc)
{
query = query.OrderByDescending(x => x.Id);
}
//分页
var users = await query.Skip((page - 1) * pageSize)
.Take(pageSize).ToListAsync();
return mapper.Map<List<UserInfoDto>>(users);
}
#endregion
#region
public async Task UnbanUserAsync(int userId)
{
var user = await context.Users.FirstOrDefaultAsync(x => x.Id == userId);
if (user == null)
{
throw new BaseException(2004, "用户不存在");
}
user.IsBan = false;
context.Users.Update(user);
await context.SaveChangesAsync();
}
#endregion
#region
public async Task<UserInfoDto> UpdateUserAsync(int userId,AdminUpdateUserDto dto)
{
var user = await context.Users.FirstOrDefaultAsync(x => x.Id == userId);
if(user == null)
{
throw new BaseException(2004,"用户不存在");
}
user.PassHash = dto.Password ?? user.PassHash;
user.Balance = dto.Balance ?? user.Balance;
context.Users.Update(user);
await context.SaveChangesAsync();
return mapper.Map<UserInfoDto>(user);
}
#endregion
#region
public async Task<int> UserCountAsync()
{
return await context.Users.CountAsync();
}
#endregion
}
}