1、新建UserDto.cs
public class UserDto : BaseDto
{
private string userName;
/// <summary>
/// 用户名
/// </summary>
public string UserName
{
get { return userName; }
set { userName = value;OnPropertyChanged(); }
}
private string account;
/// <summary>
/// 账户
/// </summary>
public string Account
{
get { return account; }
set { account = value; OnPropertyChanged(); }
}
private string password;
/// <summary>
/// 密码
/// </summary>
public string Password
{
get { return password; }
set { password = value; OnPropertyChanged(); }
}
}
2、新增ILoginService接口
public interface ILoginService
{
Task<ApiResponse> LoginAsync(string Account, string Password);
Task<ApiResponse> RegisterAsync(UserDto userDto);
}
3、实现LoginService接口
public class LoginService : ILoginService
{
private readonly IUnitOfWork unitOfWork;
private readonly IMapper mapper;
public LoginService(IUnitOfWork unitOfWork, IMapper mapper)
{
this.unitOfWork = unitOfWork;
this.mapper = mapper;
}
/// <summary>
/// 登录
/// </summary>
/// <param name="Account"></param>
/// <param name="Password"></param>
/// <returns></returns>
public async Task<ApiResponse> LoginAsync(string Account, string Password)
{
try
{
var repository = unitOfWork.GetRepository<User>();
var model = await repository.GetFirstOrDefaultAsync(predicate: t => t.Account.Equals(Account) && t.PassWord.Equals(Password));
if(model == null)
{
return new ApiResponse(false, "用户名或密码错误!");
}
else
{
return new ApiResponse(true, model);
}
}
catch (Exception ex)
{
return new ApiResponse(false, ex.Message);
}
}
/// <summary>
/// 注册
/// </summary>
/// <param name="userDto"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<ApiResponse> RegisterAsync(UserDto userDto)
{
try
{
var user = mapper.Map<User>(userDto);
var repository = unitOfWork.GetRepository<User>();
var userModel = await repository.GetFirstOrDefaultAsync(predicate: t => t.Account.Equals(user.Account));
if(userModel != null)
{
return new ApiResponse(false, $"当前账号{user.Account}已存在,请重新注册!");
}
else
{
user.CreateDate = DateTime.Now;
await repository.InsertAsync(user);
if(await unitOfWork.SaveChangesAsync() > 0)
{
return new ApiResponse(true, user);
}
else
{
return new ApiResponse(false, "注册失败!");
}
}
}
catch (Exception ex)
{
return new ApiResponse(false, ex.Message);
}
}
}
4、新增登录控制器LoginController
/// <summary>
/// 登录
/// </summary>
public class LoginController : BaseApiController
{
private readonly ILoginService loginService;
public LoginController(ILoginService loginService)
{
this.loginService = loginService;
}
[HttpGet]
public async Task<ApiResponse> Login(string Account, string PassWord)
{
return await loginService.LoginAsync(Account, PassWord);
}
[HttpPost]
public async Task<ApiResponse> Register([FromBody] UserDto userDto)
{
return await loginService.RegisterAsync(userDto);
}
}
5、添加AutoMapper映射关系
CreateMap<User, UserDto>().ReverseMap();
6、在program.cs里面添加服务
builder.Services.AddTransient<ILoginService, LoginService>();
7、F5运行项目