package org.springblade.thirdparty.mk.pojo.dto;

import lombok.Data;

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

/**
 *  mk 推送人员参数
 * @author bfhuange
 * @date 2024/9/24
 */
@Data
public class MKPushPersonDTO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    //=================必填项开始================
    /**
     * 唯一标识 必填，不能保证唯一的情况下，建议id前面拼接上组织类型。 例：org:1111，dept:22222,person:333333,group:555555,post:6666666 进阶情况，组织来源多个不同系统，还可以拼接上来源系统唯一id
     */
    private String fdId;
    /**
     * 是否有效,该属性决定该组织架构是否删除 必填
     */
    private Boolean fdIsAvailable;
    /**
     * 组织类型为用户时,登录名,有此信息且必填
     */
    private String fdLoginName;
    /**
     * 名称 必填
     */
    private String fdName;
    /**
     * 来源系统标识:例如：EKP
     */
    private String fdSourceSystem;
    //=================必填项结束================

    /**
     *  辅部门,可以多个，只有用户才传此值，不能和主部门重复：例：[{"fdId":"222222222","fdName":"A部门"},{"fdId":"333333333","fdName":"B部门"}]
     */
    private List<MKAuxiliaryDeptDTO> fdAuxiliaryDept;
    /**
     * 映射MK的fdId,用来和Mk数据进行绑定
     */
    private String fdElementId;
    /**
     * 手机号
     */
    private String fdMobileNo;
    /**
     * 编号
     */
    private String fdNo;
    /**
     * 所在部门-主部门，只能一个，有值情况：当type为org,dept,post,person时，为空表示在根节点
     */
    private String fdParent;
    /**
     * 排序号
     */
    private Integer fdOrder;
    /**
     * 密码,Md5加密后的信息，可以为空
     */
    private String fdPassword;
    /**
     * 性别，M表示男性，F表示女性，UN-未知
     */
    private String fdSex;
    /**
     * 指定同步到mk的哪个节点下，有parent则以parent为准，没有则以mkParent为准。只能选择机构和部门，同步对象如果是机构，则mkParent也只能是机构，机构不能挂部门下
     */
    private String mkParent;
    /**
     * 置空属性:字段传空过来，不想Mk这边也更新为空？可以指定这个属性。包含的字段如果为空则会被置为空，不包含的如果为空则不会更新。例如：["fdName","fdNo","fdEmail"]
     */
    private List<String> nullValueProps;

    //=======================一般不用的字段开始=========================
    /**
     * 群组分类id，有值情况：当type为group时
     */
    private String fdCategoryName;
    /**
     * 扩展属性，未定义的字段并且需要同步的可以传到此json对象中，同步前需要去后台管理增加对应key值的扩展字段。例：{"birthDate":"1900‐01‐01","education":"本科","isSocialRecruitment":"true"}
     */
    private Object fdCustomProps;
    /**
     * 默认语言
     */
    private String fdDefaultLang;
    /**
     * 说明
     */
    private String fdDesc;
    /**
     * 邮件地址
     */
    private String fdEmail;
    /**
     * 外部组织显示位置:默认情况是内部组织都在行政组织树，外部组织都在生态组织树。组织架构开启一体化后，外部组织既可以出现在行政树下面也可以出现在生态组织树下。但行政里面的外部组织必须要有顶级机构。是否显示在生态组织目录：true/null-显示在生态组织目录，false-显示在行政组织
     */
    private Boolean fdEosShowType;
    /**
     * 外部组织分类code：MK有外部组织分类，需要提前在管理端建好
     */
    private String fdExternalCode;
    /**
     * 是否外部组织：默认不填表示内部组织，true表示外部组织，外部组织需要externalCode
     */
    private Boolean fdIsExternal;
    /**
     * 关键字
     */
    private String fdKeyword;
    /**
     * 多语言字段：例：{"fdNameUs":"Tom","fdNameCn":"张三"}
     */
    private Object fdLangProps;
    /**
     * 职级名称
     */
    private String fdLevelName;
    /**
     * 职级oriId
     */
    private String fdLevelOriId;
    /**
     * 主岗，只有一个
     */
    private String fdMainPost;
    /**
     * 昵称
     */
    private String fdNickName;
    /**
     * 辅岗，可以多个，例：["cbda73","bac67843"..]
     */
    private List<String> fdPosts;
    /**
     * 短号
     */
    private String fdShortNo;
    /**
     * 职务名称
     */
    private String fdStaffingLevelName;
    /**
     * 职务oriId
     */
    private String fdStaffingLevelOriId;
    /**
     * 多维分类编号，当fdOrgType为org(机构),dept(部门) 时生效，表示当前组织/部门是该多维分类下的顶层组织。注：后续不允许变更。
     */
    private String fdVirtualizeNo;
    /**
     * 可见性：fdVisibleType:1-仅自己 2-所在组织同级及下级 3-指定组织/人员：例： {"fdVisibleType":1,"visibleOrgList":[{"fdId":"1feiglp6sw132weiw37cucsm1kqoe29hu4w0","fdName":"刘芬"}]}
     */
    private Object fdVisible;
    /**
     * 办公电话
     */
    private String fdWorkPhone;
}
