package com.keyware.shandan.bianmu.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 目录权限范围
 * @author GuoXin
 */
@Getter
@AllArgsConstructor
public enum DirectoryPermisScope {
    /**
     * 归属者和所有上级可见
     * 归属者为部门：当前部门所有用户和上级部门所有用户可见
     * 归属者为个人：
     * 1、归属者为普通用户：自己和部门管理员以及所有上级部门内的所有用户可见
     * 2、归属者为部门管理员：所有该部门管理员（如有2个或2个以上个部门管理员，虽然为同级，但依旧可见）以及所有上级部门内的所有用户可见
     */
    OWNER_AND_ALL_PARENTS("OWNER_AND_ALL_PARENTS", "归属者和所有上级"),

    /**
     * 归属者和直属上级可见
     * 归属者为部门：当前部门所有人和直属上级部门所有人可见
     * 归属者为个人：
     * 1、归属者为普通用户：自己和部门管理员可见
     * 2、归属者为部门管理员：所有该部门管理员（如有2个或2个以上个部门管理员，虽然为同级，但依旧可见）和上级部门所有人可见
     */
    OWNER_AND_PARENT("OWNER_AND_PARENT", "归属者和直属上级"),

    /**
     * 仅归属者可见
     * 归属者为部门：仅当前部门所有人可见
     * 归属者为个人：
     * 1、归属者为普通用户：自己可见
     * 2、归属者为部门管理员：自己可见
     */
    ONLY_OWNER("ONLY_OWNER", "仅归属者"),

    /**
     * 归属者和所有下级可见
     * 归属者为部门：当前部门所有用户和所有下级部门的所有用户可见
     * 归属者为个人：
     * 1、归属者为普通用户：自己可见
     * 2、归属者为部门管理员：自己部门所有用户（如有2个或2个以上个部门管理员，虽然为同级，但依旧可见）和所有下级部门的所有用户可见
     */
    OWNER_AND_ALL_CHILDREN("OWNER_AND_ALL_CHILDREN", "归属者和所有下级"),

    /**
     * 归属者和直属下级可见
     * 归属者为部门：当前部门所有人和直属下级部门的所有用户可见
     * 归属者为个人：
     * 1、归属者为普通用户：自己可见
     * 2、归属者为部门管理员：自己部门所有用户（如有2个或2个以上个部门管理员，虽然为同级，但依旧可见）可见
     */
    OWNER_AND_CHILDREN("OWNER_AND_CHILDREN", "归属者和直属下级"),

    /**
     * 所有人都可见
     */
    EVERYONE("EVERYONE", "所有人");

    @EnumValue
    private final String value;
    private final String remark;
}
