119 lines
3.9 KiB
C#
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.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
|
|
}
|
|
}
|