package com.zcxk.task.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zcxk.model.ProgramItem;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * uims_user
 * @author: WYY
 * @date 2020-10-22 17:35
 */
@Data
@NoArgsConstructor
public class UserEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 主键 */
    @ApiModelProperty(value = "主键")
    @TableId(type=IdType.AUTO)
    private Long id;

    /** 租户标识 */
    @ApiModelProperty(value = "租户标识")
    private String tenantId;

    /** 用户名 */
    @ApiModelProperty(value = "用户名")
    private String username;

    /** 手机号 */
    @ApiModelProperty(value = "手机号")
    private String phone;

    /** 公司 */
    @ApiModelProperty(value = "公司")
    private Long companyOrgId;

    /** 公司名称 */
    @ApiModelProperty(value = "公司名称")
    @TableField(exist = false)
    private String companyOrgName;

    /** 部门 */
    @ApiModelProperty(value = "部门")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Long deptOrgId;

    /** 部门名称 */
    @ApiModelProperty(value = "部门名称")
    @TableField(exist = false)
    private String deptOrgName;


    /** 头像 */
    @ApiModelProperty(value = "头像")
    private String photo;

    /** 用户类型 */
    @ApiModelProperty(value = "用户类型(0 超管 1 普通用户)")
    private String userType;

    /** 用户标签 */
    @ApiModelProperty(value = "用户标签")
    @TableField(exist = false)
    private List<Long> userTags;

    /** 启用状态 */
    @ApiModelProperty(value = "启用状态")
    private String enableState;

    /** 邮箱 */
    @ApiModelProperty(value = "邮箱")
    private String email;

    /** 数据删除标记 */
    @ApiModelProperty(value = "数据删除标记")
    @TableLogic
    private Integer status;
    /** 创建者 */
    @ApiModelProperty(value = "创建者")
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
    @NotNull(message = "参数值不能为空")
    @ApiModelProperty(value = "创建时间")
    private Date dateCreate;
    /** 更新者 */
    @ApiModelProperty(value = "更新者")
    private String updateBy;

    /** dateUpdate */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
    @NotNull(message = "参数值不能为空")
    @ApiModelProperty(value = "更新时间")
    private Date dateUpdate;

    /** 备注 */
    @ApiModelProperty(value = "备注")
    private String remark;

    /** 用户角色 */
    @ApiModelProperty(value = "用户角色")
    @TableField(exist = false)
    private Long roleId;

    /** 用户角色 */
    @ApiModelProperty(value = "用户角色名称")
    @TableField(exist = false)
    private String roleName;
    /** 用户角色 */
    @ApiModelProperty(value = "用户组")
    @TableField(exist = false)
    private Long userGroupId;

    @ApiModelProperty(value ="权限",hidden = true)
    @TableField(exist = false)
    private List<ProgramItem> programItems;

    @ApiModelProperty(value="用户权限类型")
    @TableField(exist = false)
    private Integer permissonType;
}
