85 lines
2.6 KiB
C#
85 lines
2.6 KiB
C#
using Azure.Core;
|
|
using LFlow.Base.Interfaces;
|
|
using LFlow.Base.Utils;
|
|
using LFlow.Cache.Interface;
|
|
using LFlow.UserManagement.Model;
|
|
using LFlow.UserManagement.Util;
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
namespace LFlow.UserManagement.Service
|
|
{
|
|
/// <summary>
|
|
/// 在线管理服务
|
|
/// </summary>
|
|
public class UserManagementService(IRepo<UserModel, string> repo, ISelfCache cacher) : IUserManagementService
|
|
{
|
|
public UserDto? Login(UserDto user)
|
|
{
|
|
var userPwd = PasswordHelper.HashPassword(user.UserPassword);
|
|
|
|
var userModel = repo.WhereSearchId(new UserModel
|
|
{
|
|
UserName = user!.UserName!,
|
|
UserPassword = userPwd
|
|
});
|
|
|
|
if (userModel == null || !userModel.Any())
|
|
{
|
|
return null;
|
|
}
|
|
var firstUserId = userModel.FirstOrDefault();
|
|
if (firstUserId == null)
|
|
{
|
|
return null;
|
|
}
|
|
var loginedUser = repo.Get(firstUserId);
|
|
loginedUser.UserPassword = "";
|
|
var token = Guid.NewGuid().ToString();
|
|
// loginedUser.Token = token;
|
|
cacher.SetAsync(token, loginedUser, TimeSpan.FromHours(2));
|
|
var result = loginedUser.MapTo<UserDto>();
|
|
if(result != null){
|
|
result.Token = token;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public Task<UserDto>? LoginAsync(UserDto user)
|
|
{
|
|
return Task.FromResult(this.Login(user));
|
|
}
|
|
|
|
public UserDto? Register(UserDto user)
|
|
{
|
|
if (user.UserEmail == null || user.UserName == null || user.UserPassword == null)
|
|
{
|
|
throw new Exception("用户名、密码、邮箱不能为空");
|
|
}
|
|
var userPwd = PasswordHelper.HashPassword(user.UserPassword);
|
|
var ids = repo.WhereSearchId(new UserModel
|
|
{
|
|
UserName = user.UserName
|
|
});
|
|
if (ids != null && ids.Count > 0)
|
|
{
|
|
throw new Exception("用户名已存在");
|
|
}
|
|
var userModel = new UserModel
|
|
{
|
|
ID = Guid.NewGuid().ToString(),
|
|
UserName = user.UserName,
|
|
UserEmail = user.UserEmail,
|
|
UserPassword = userPwd
|
|
};
|
|
var savedUser = repo.SaveOrUpdate(userModel, false).MapTo<UserDto>();
|
|
savedUser.UserPassword = "";
|
|
return savedUser;
|
|
}
|
|
|
|
public Task<UserDto> RegisterAsync(UserDto user)
|
|
{
|
|
return Task.FromResult(this.Register(user));
|
|
}
|
|
}
|
|
}
|