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; string password = dto.Password; string nickname = dto.NickName; //用户是否存在 bool isExist = await _context.Users.AnyAsync(x => x.Username == username); if (isExist) throw new BaseException(CodeDefine.USER_ALREADY_EXISTS); User user = new User { Username = username, Password = password, NickName = nickname, OnlineStatusEnum = UserOnlineStatus.Offline, StatusEnum = UserStatus.Normal, Created = DateTime.Now }; _context.Users.Add(user); await _context.SaveChangesAsync(); return _mapper.Map(user); } } }