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 logger; public AdminService(ApiContext context, IMapper mapper, ILogger 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 CreateUserAsync(CreateUserDto dto) { //添加用户 var user = mapper.Map(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(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> GetUsersAsync(int page, int pageSize, bool desc) { var query = context.Users.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>(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 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.Balance = dto.Balance; context.Users.Update(user); await context.SaveChangesAsync(); return mapper.Map(user); } #endregion } }