package com.reyun.saas.mob.user.domain;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

import javax.persistence.*;
import java.util.Date;
import java.util.List;

@Data
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

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

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

    /**
     * 真实姓名
     */
    @Column(name = "actual_name")
    private String actualName;

    /**
     * 性别 0：男 1：女
     */
    private Integer sex;

    /**
     * 手机号码
     */
    private String phone;

    /**
     * 公司
     */
    private String company;
    /**
     * QQ
     */
    private String qq;
    /**
     * 微信
     */
    private String wechat;

    /**
     * 用户角色 例如 : 主账号  管理员 等
     */
    @Column(name = "role_category")
    private Integer roleCategory;

    /**
     * 所属主账号的id
     */
    @Column(name = "root_parent")
    private Long rootParent;

    /**
     * 上级用户
     */
    @Column(name = "leader_parent")
    private Long leaderParent;


    /**
     * 账号状态：0-禁用，1-启用，2-待审核，3-过期，4-流量用尽
     */
    private Integer status;

    /**
     * 头像  头像存在前端  这里只保存头像的编号
     */
    @Column(name = "head_portrait")
    private String headPortrait;

    /**
     * 创建时间
     */
    @Column(name = "create_time")
    private Date createTime;
    /**
     * 创建人
     */
    @Column(name = "create_user")
    private Long createUser;
    /**
     * 修改时间
     */
    @Column(name = "modify_time")
    private Date modifyTime;
    /**
     * 修改人
     */
    @Column(name = "modify_user")
    private Long modifyUser;

    /**
     * 随机密码过期时间  默认为-1  邮箱发送密码后改为对应的到期时间 用户在个人中心修改密码后改为-1
     */
    @JsonIgnore
    @Column(name = "random_pwd_past_time")
    private String randomPwdPastTime;

    /**
     * 是否可以创建app
     */
    @Column(name = "is_create_app")
    private Boolean  isCreateApp;

    /**
     * 是否分配过权限
     */
    @Column(name = "auth_config")
    private Boolean authConfig;

    /**
     * 用户备注信息
     */
    private String remark;

    /**
     * 用户来源
     */
    @Column(name = "user_source")
    private String userSource;

    /**
     * 删除标志
     */
    @Column(name = "del_flag")
    private Boolean delFlag;

    /**
     * app权限权限
     */
    @Transient
    private List<AppAuth> appAuths;

    public Long getRealRootParent() {
        return rootParent==0?id:rootParent;
    }
}
