99 lines
3.2 KiB
C#
99 lines
3.2 KiB
C#
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));
|
|
}
|