package org.dromara.system.api.model;

import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
 * 用户信息
 *
 * @author ruoyi
 */
@Data
@NoArgsConstructor
public class LoginUser implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 租户ID
     */
    private String tenantId;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 部门名
     */
    private String deptName;

    /**
     * 用户唯一标识
     */
    private String token;

    /**
     * 用户类型
     */
    private String userType;

    /**
     * 登录时间
     */
    private Long loginTime;

    /**
     * 过期时间
     */
    private Long expireTime;

    /**
     * 登录IP地址
     */
    private String ipaddr;

    /**
     * 登录地点
     */
    private String loginLocation;

    /**
     * 浏览器类型
     */
    private String browser;

    /**
     * 操作系统
     */
    private String os;

    /**
     * 菜单权限
     */
    private Set<String> menuPermission;

    /**
     * 角色权限
     */
    private Set<String> rolePermission;

    /**
     * 用户名
     */
    private String username;

    /**
     * 用户昵称
     */
    private String nickname;

    /**
     * 密码
     */
    private String password;

    /**
     * 角色对象
     */
    private List<RoleDTO> roles;


    /**
     * 数据权限 当前角色ID(作废)
     */
    private Long roleId;

    /**
     * 当前角色id
     */
    private Long curRoleId;

    /**
     * 当前角色名称
     */
    private String curRoleName;

    /**
     * 登录验证方式（1：短信 2：微信）
     */
    private Integer loginType;

    /**
     * 绑定微信open_id
     */
    private String bindOpenId;

    /**
     * 是否阅读平台使用协议(0:否 1:是)
     */
    private Integer isReadProt;

    /**
     * 是否重置密码(0:否 1:是)
     */
    private Integer isResetPass;

    /**
     * 主体id(结算中心id或运营商id或渠道商id或商户id)
     */
    private Long busId;

    /**
     * @Param
     * @Return
     * @Author sunzexing
     * @Date 2024-04-20 14:38
     * 说明：角色id(5：平台 6：服务商 7：运营商 8：代理商 9：商户)
     **/
    private Integer busRole;

    /**
     * 主体编码(结算中心id或运营商id或渠道商id或商户id)
     */
    private String busNo;


    /**
     * 选择的服务商id
     */
    private Long sydId;

    /**
     * 权限范围（1:角色  2:个人）
     */
    private Integer roleDataRange;

    /**
     * 客户端
     */
    private String clientKey;

    /**
     * 设备类型
     */
    private String deviceType;

    /**
     * 手机号
     */
    private String phonenumber;

    private String ids;

    /**
     * 获取登录id
     */
    public String getLoginId() {
        if (userType == null) {
            throw new IllegalArgumentException("用户类型不能为空");
        }
        if (userId == null) {
            throw new IllegalArgumentException("用户ID不能为空");
        }
        return userType + ":" + userId;
    }

}
