first commit
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using F9WebAiTest.Domain.Events.SYS.RBAC;
|
||||
|
||||
namespace F9WebAiTest.Domain.Entities.SYS.RBAC;
|
||||
|
||||
/// <summary>用户:可以拥有多个角色。</summary>
|
||||
[Table(Name = "sys_rbac_users")]
|
||||
public class User : AggregateRoot
|
||||
{
|
||||
[Column(Name = "department_id")]
|
||||
public long DepartmentId { get; private set; }
|
||||
|
||||
[Column(Name = "user_name")]
|
||||
public string UserName { get; private set; }
|
||||
|
||||
[Column(Name = "phone_number")]
|
||||
public string PhoneNumber { get; private set; }
|
||||
|
||||
[Column(Name = "login_name")]
|
||||
public string LoginName { get; private set; }
|
||||
|
||||
[Column(Name = "password_hash")]
|
||||
public string PasswordHash { get; private set; }
|
||||
|
||||
[Column(Name = "is_active")]
|
||||
public bool IsActive { get; private set; }
|
||||
|
||||
[Column(Name = "sort_order")]
|
||||
public int SortOrder { get; private set; }
|
||||
|
||||
[Column(Name = "lastlogin_at")]
|
||||
public DateTime? LastLoginAt { get; private set; }
|
||||
|
||||
[Column(Name = "nickname")]
|
||||
public string Nickname { get; private set; } = "";
|
||||
|
||||
[Column(Name = "avatar")]
|
||||
public string Avatar { get; private set; } = "";
|
||||
|
||||
[Column(Name = "email")]
|
||||
public string Email { get; private set; } = "";
|
||||
|
||||
[Column(Name = "gender")]
|
||||
public string Gender { get; private set; } = "男";
|
||||
|
||||
public User() { }
|
||||
|
||||
public User(long id, string userName, string phoneNumber, string loginName, long departmentId, int sortOrder)
|
||||
{
|
||||
Id = id;
|
||||
UserName = userName;
|
||||
PhoneNumber = phoneNumber;
|
||||
LoginName = loginName;
|
||||
DepartmentId = departmentId;
|
||||
IsActive = true;
|
||||
SortOrder = sortOrder;
|
||||
}
|
||||
|
||||
public void Update(string userName, string phoneNumber, string loginName, long departmentId, int sortOrder)
|
||||
{
|
||||
UserName = userName;
|
||||
PhoneNumber = phoneNumber;
|
||||
LoginName = loginName;
|
||||
DepartmentId = departmentId;
|
||||
IsActive = true;
|
||||
SortOrder = sortOrder;
|
||||
}
|
||||
|
||||
public void Activate() => IsActive = true;
|
||||
public void Deactivate() => IsActive = false;
|
||||
|
||||
/// <summary>获取默认密码明文</summary>
|
||||
public string GetDefaultPasswordText() => "123456";
|
||||
|
||||
/// <summary>设置密码(哈希后的密文)</summary>
|
||||
public void SetPassword(string password) => PasswordHash = password;
|
||||
|
||||
/// <summary>更新个人资料(昵称/头像/邮箱/手机号/性别)</summary>
|
||||
public void UpdateProfile(string nickname, string avatar, string email, string phoneNumber, string gender)
|
||||
{
|
||||
Nickname = nickname ?? Nickname;
|
||||
Avatar = avatar ?? Avatar;
|
||||
Email = email ?? Email;
|
||||
PhoneNumber = phoneNumber ?? PhoneNumber;
|
||||
Gender = gender ?? Gender;
|
||||
}
|
||||
|
||||
/// <summary>登录成功,记录登录时间并发布登录事件</summary>
|
||||
public void LoginSuccess(string deviceId, string account, bool success, long userId, string userName)
|
||||
{
|
||||
LastLoginAt = DateTime.Now;
|
||||
AddDomainEvent(new UserLoginDomainEvent(deviceId, account, success, userId, userName));
|
||||
}
|
||||
|
||||
public void AddRole(long roleId) => AddDomainEvent(new UserRole_ChangedDomainEvent(Id));
|
||||
|
||||
public void RemoveRole(long roleId) => AddDomainEvent(new UserRole_ChangedDomainEvent(Id));
|
||||
}
|
||||
Reference in New Issue
Block a user