登录注册
1. 服务层接口
public interface ILoginService
{
Task<ApiResponse> LoginAsync(string Account, string Password);
Task<ApiResponse> Register(UserDto user);
}
2.用户实体类
public class UserDto : BaseDto
{
private string username;
public string UserName
{
get { return username; }
set { username = value; OnPropertyChanged(); }
}
private string? account;
public string Account
{
get { return account; }
set { account = value; OnPropertyChanged(); }
}
private string? passWord;
public string PassWord
{
get { return passWord; }
set { passWord = value; OnPropertyChanged(); }
}
}
3.服务器
public class LoginService : ILoginService
{
private readonly IUnitOfWork work;
private readonly IMapper mapper;
public LoginService(IUnitOfWork work, IMapper mapper)
{
this.work = work;
this.mapper = mapper;
}
public async Task<ApiResponse> LoginAsync(string Account, string Password)
{
try
{ //SingleOrDefaultAsync只取一条数据,如果无数据则返回null,若rownum大于1则报异常。
//FirstOrDefaultAsync取一条数据,如果无数据则返回null,若rownum大于1则返回第一行数据。
var model =await work.GetRepository<User>().GetFirstOrDefaultAsync(predicate:
x => (x.Account.Equals(Account)) &&
(x.PassWord.Equals(Password)));
if (model == null) { return new ApiResponse("账号或密码错误请重试!"); }
return new ApiResponse(true, model);
}
catch (Exception ex)
{
return new ApiResponse(false, "登录失败!");
}
}
public async Task<ApiResponse> Register(UserDto user)
{
try
{
var model = mapper.Map<User>(user);
var repository = work.GetRepository<User>();
var userModel = await repository.GetFirstOrDefaultAsync(predicate: x => x.Account.Equals(model.Account));
if (userModel != null)
{
return new ApiResponse($"当前账号:{model.Account}已存在,请重新注册!");
}
model.CreateDate = DateTime.Now;
await repository.InsertAsync(model);
if (await work.SaveChangesAsync() > 0)
return new ApiResponse(true, model);
return new ApiResponse("注册失败,请稍后重试!");
}
catch (Exception ex)
{
return new ApiResponse("注册账号失败!");
}
}
}
4.控制器
//账户控制器
[ApiController]
[Route("api/[controller]/[action]")]
public class LoginController : ControllerBase
{
private readonly ILoginService service;
public LoginController(ILoginService service)
{
this.service = service;
}
[HttpGet]
public async Task<ApiResponse> Login(string account, string passWord) => await service.LoginAsync(account, passWord);
[HttpPost]
public async Task<ApiResponse> Register([FromBody] UserDto model) => await service.Register(model);
}
5. 注册
- 在AutoMapperProFlie中添加配置
- 在program中添加注册