/**
 * BladeX Commercial License Agreement
 * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
 * <p>
 * Use of this software is governed by the Commercial License Agreement
 * obtained after purchasing a license from BladeX.
 * <p>
 * 1. This software is for development use only under a valid license
 * from BladeX.
 * <p>
 * 2. Redistribution of this software's source code to any third party
 * without a commercial license is strictly prohibited.
 * <p>
 * 3. Licensees may copyright their own code but cannot use segments
 * from this software for such purposes. Copyright of this software
 * remains with BladeX.
 * <p>
 * Using this software signifies agreement to this License, and the software
 * must not be used for illegal purposes.
 * <p>
 * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
 * not liable for any claims arising from secondary or illegal development.
 * <p>
 * Author: Chill Zhuang (bladejava@qq.com)
 */
package org.springblade.system.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import org.springblade.core.tool.jackson.Sensitive;
import org.springblade.core.tool.sensitive.SensitiveType;
import org.springblade.system.pojo.context.IPhone;

import java.io.Serial;
import java.util.Date;
import java.util.List;

/**
 * 实体类
 *
 * @author Chill
 */
@Data
@TableName("blade_user")
@EqualsAndHashCode(callSuper = true)
public class User extends TenantEntity implements IPhone {

	@Serial
	private static final long serialVersionUID = 1L;

	/**
	 * 用户编号
	 */
	private String code;
	/**
	 * 用户平台
	 */
	private Integer userType;
	/**
	 * 账号
	 */
	private String account;
	/**
	 * 密码
	 */
	private String password;
	/**
	 * 昵称
	 */
	private String name;
	/**
	 * 真名
	 */
	private String realName;
	/**
	 * 头像
	 */
	private String avatar;
	/**
	 * 邮箱
	 */
	@Sensitive(type = SensitiveType.EMAIL)
	private String email;
	/**
	 * 手机
	 */
	@Sensitive(type = SensitiveType.MOBILE)
	private String phone;
	/**
	 * 生日
	 */
	private Date birthday;
	/**
	 * 性别
	 */
	private Integer sex;
	/**
	 * 角色id
	 */
	private String roleId;
	/**
	 * 部门id
	 */
	private String deptId;
	/**
	 * 岗位id
	 */
	private String postId;
	/**
	 * 主管id
	 */
	private String leaderId;
	/**
	 * 是否主管
	 */
	private Integer isLeader;


	/**
	 * 部门编码
	 */
	private String deptCodes;
	/**
	 * 同步时间
	 */
	private Date syncTime;
	/**
	 *  是否是oa的账号
	 */
	private Integer isOa;
	/**
	 *  是否推送mk
	 */
	private Integer isPushMk;
	/**
	 * 备注
	 */
	private String remark;
	/**
	 * OA 人员 ID（由用户部门关联表聚合查询返回）
	 */
	@TableField(exist = false)
	private String oaPersonId;
	/** 人员类别：1-内部员工，2-承运商 */
	private Integer personCategory;
	/** 数据权限范围：1-仅所属组织，2-全部组织，3-自定义 */
	private Integer dataScopeRange;
	/** 数据层级范围：1-包含下级，2-仅本级 */
	private Integer dataLevelRange;
	/** 是否包含新增客商 */
	private Integer includeNewCustomer;
	@TableField(exist = false)
	private List<Long> dataScopeDeptIds;
	@TableField(exist = false)
	private List<Long> customerIds;


}
