using AutoMapper; using IM_API.Dtos; using IM_API.Exceptions; using IM_API.Interface.Services; using IM_API.Models; using IM_API.Tools; using Microsoft.EntityFrameworkCore; namespace IM_API.Services { public class AuthService : IAuthService { private readonly ImContext _context; private readonly ILogger _logger; private readonly IMapper _mapper; public AuthService(ImContext context, ILogger logger, IMapper mapper) { _context = context; _logger = logger; _mapper = mapper; } public async Task LoginAsync(LoginRequestDto dto) { string username = dto.Username; string password = dto.Password; var user = await _context.Users.FirstOrDefaultAsync(x => x.Username == username && x.Password == password); if(user is null) { throw new BaseException(CodeDefine.PASSWORD_ERROR); } return user; } public async Task RegisterAsync(RegisterRequestDto dto) { string username = dto.Username; //用户是否存在 bool isExist = await _context.Users.AnyAsync(x => x.Username == username); if (isExist) throw new BaseException(CodeDefine.USER_ALREADY_EXISTS); User user = _mapper.Map(dto); _context.Users.Add(user); await _context.SaveChangesAsync(); return _mapper.Map(user); } } }