package org.xyzh.common.core.domain;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.xyzh.common.dto.user.TbSysUser;
import org.xyzh.common.dto.user.TbSysUserInfo;
import org.xyzh.common.dto.role.TbSysRole;
import org.xyzh.common.dto.permission.TbSysPermission;
import org.xyzh.common.dto.dept.TbSysDeptRole;
import org.xyzh.common.dto.menu.TbSysMenu;
import org.xyzh.common.vo.DeptRoleVO;
/**
 * @description    LoginDomain.java文件描述 登录域对象
 * @filename    LoginDomain.java
 * @author    yslg
 * @copyright xyzh
 * @since 2025-09-28
 */
public class LoginDomain implements Serializable {
    
    private static final long serialVersionUID = 1L;

    /**
     * @description    用户信息
     * @author    yslg
     * @since 2025-09-28
     */
    private TbSysUser user;

    /**
     * @description    用户详细信息
     * @author    yslg
     * @since 2025-09-28
     */
    private TbSysUserInfo userInfo;

    /**
     * @description    用户角色列表
     * @author    yslg
     * @since 2025-09-28
     */
    private List<DeptRoleVO> roles;

    /**
     * @description    用户权限列表
     * @author    yslg
     * @since 2025-09-28
     */
    private List<TbSysPermission> permissions;

    /**
     * @description    用户菜单列表
     * @author    yslg
     * @since 2025-09-28
     */
    private List<TbSysMenu> menus;

    /**
     * @description    JWT令牌
     * @author    yslg
     * @since 2025-09-28
     */
    private String token;

    /**
     * @description    令牌过期时间
     * @author    yslg
     * @since 2025-09-28
     */
    private Date tokenExpireTime;

    /**
     * @description    登录时间
     * @author    yslg
     * @since 2025-09-28
     */
    private Date loginTime;

    /**
     * @description    登录IP地址
     * @author    yslg
     * @since 2025-09-28
     */
    private String ipAddress;

    /**
     * @description    登录类型 (email/username/phone/wechat)
     * @author    yslg
     * @since 2025-09-28
     */
    private String loginType;

    /**
     * @description    获取用户
     * @author    yslg
     * @since 2025-09-28
     */
    public TbSysUser getUser() {
        return user;
    }

    /**
     * @description    设置用户
     * @author    yslg
     * @since 2025-09-28
     */
    public void setUser(TbSysUser user) {
        this.user = user;
    }

    /**
     * @description    获取用户详细信息
     * @author    yslg
     * @since 2025-09-28
     */
    public TbSysUserInfo getUserInfo() {
        return userInfo;
    }

    /**
     * @description    设置用户详细信息
     * @author    yslg
     * @since 2025-09-28
     */
    public void setUserInfo(TbSysUserInfo userInfo) {
        this.userInfo = userInfo;
    }

    /**
     * @description    获取用户角色列表
     * @author    yslg
     * @since 2025-09-28
     */
    public List<DeptRoleVO> getRoles() {
        return roles;
    }

    /**
     * @description    设置用户角色列表
     * @author    yslg
     * @since 2025-09-28
     */
    public void setRoles(List<DeptRoleVO> roles) {
        this.roles = roles;
    }

    /**
     * @description    获取用户权限列表
     * @author    yslg
     * @since 2025-09-28
     */
    public List<TbSysPermission> getPermissions() {
        return permissions;
    }

    /**
     * @description    设置用户权限列表
     * @author    yslg
     * @since 2025-09-28
     */
    public void setPermissions(List<TbSysPermission> permissions) {
        this.permissions = permissions;
    }

    /**
     * @description    获取用户菜单列表
     * @author    yslg
     * @since 2025-09-28
     */
    public List<TbSysMenu> getMenus() {
        return menus;
    }
    
    /**
     * @description    设置用户菜单列表
     * @author    yslg
     * @since 2025-09-28
     */
    public void setMenus(List<TbSysMenu> menus) {
        this.menus = menus;
    }

    /**
     * @description    获取JWT令牌
     * @author    yslg
     * @since 2025-09-28
     */
    public String getToken() {
        return token;
    }

    /**
     * @description    设置JWT令牌
     * @author    yslg
     * @since 2025-09-28
     */
    public void setToken(String token) {
        this.token = token;
    }

    /**
     * @description    获取令牌过期时间
     * @author    yslg
     * @since 2025-09-28
     */
    public Date getTokenExpireTime() {
        return tokenExpireTime;
    }

    /**
     * @description    设置令牌过期时间
     * @author    yslg
     * @since 2025-09-28
     */
    public void setTokenExpireTime(Date tokenExpireTime) {
        this.tokenExpireTime = tokenExpireTime;
    }

    /**
     * @description    获取登录时间
     * @author    yslg
     * @since 2025-09-28
     */
    public Date getLoginTime() {
        return loginTime;
    }

    /**
     * @description    设置登录时间
     * @author    yslg
     * @since 2025-09-28
     */
    public void setLoginTime(Date loginTime) {
        this.loginTime = loginTime;
    }

    /**
     * @description    获取登录IP地址
     * @author    yslg
     * @since 2025-09-28
     */
    public String getIpAddress() {
        return ipAddress;
    }

    /**
     * @description    设置登录IP地址
     * @author    yslg
     * @since 2025-09-28
     */
    public void setIpAddress(String ipAddress) {
        this.ipAddress = ipAddress;
    }

    /**
     * @description    获取登录类型
     * @author    yslg
     * @since 2025-09-28
     */
    public String getLoginType() {
        return loginType;
    }

    /**
     * @description    设置登录类型
     * @author    yslg
     * @since 2025-09-28
     */
    public void setLoginType(String loginType) {
        this.loginType = loginType;
    }
}
