package cn.nianxx.thhotel.platform.identity.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;

/**
 * 平台用户实体。保存本系统登录账号，不保存明文密码。
 */
@TableName("platform_user")
public class PlatformUserEntity {

    /** 用户内部 ID。 */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /** 登录用户名，全局唯一。 */
    private String username;
    /** 密码单向哈希，禁止输出到日志、响应或审计。 */
    private String passwordHash;
    /** 用户展示名称。 */
    private String displayName;
    /** 用户邮箱，第一版可为空。 */
    private String email;
    /** 用户手机号，第一版可为空。 */
    private String phone;
    /** 用户状态：ACTIVE、DISABLED。 */
    private String userStatus;
    /** 是否超级管理员，超级管理员默认可访问全部启用酒店。 */
    private Boolean superAdmin;
    /** 最近密码变更 UTC 时间。 */
    private LocalDateTime passwordChangedAt;
    /** 最近登录 UTC 时间。 */
    private LocalDateTime lastLoginAt;
    /** 记录创建 UTC 时间。 */
    private LocalDateTime createdAt;
    /** 记录更新 UTC 时间。 */
    private LocalDateTime updatedAt;

    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getUsername() { return username; }
    public void setUsername(String username) { this.username = username; }
    public String getPasswordHash() { return passwordHash; }
    public void setPasswordHash(String passwordHash) { this.passwordHash = passwordHash; }
    public String getDisplayName() { return displayName; }
    public void setDisplayName(String displayName) { this.displayName = displayName; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
    public String getPhone() { return phone; }
    public void setPhone(String phone) { this.phone = phone; }
    public String getUserStatus() { return userStatus; }
    public void setUserStatus(String userStatus) { this.userStatus = userStatus; }
    public Boolean getSuperAdmin() { return superAdmin; }
    public void setSuperAdmin(Boolean superAdmin) { this.superAdmin = superAdmin; }
    public LocalDateTime getPasswordChangedAt() { return passwordChangedAt; }
    public void setPasswordChangedAt(LocalDateTime passwordChangedAt) { this.passwordChangedAt = passwordChangedAt; }
    public LocalDateTime getLastLoginAt() { return lastLoginAt; }
    public void setLastLoginAt(LocalDateTime lastLoginAt) { this.lastLoginAt = lastLoginAt; }
    public LocalDateTime getCreatedAt() { return createdAt; }
    public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; }
    public LocalDateTime getUpdatedAt() { return updatedAt; }
    public void setUpdatedAt(LocalDateTime updatedAt) { this.updatedAt = updatedAt; }
}
