package com.yami.shop.sys.constant;

/**
 * 该枚举类用于定义菜单类型相关的常量，在系统中用于区分不同种类的菜单，比如目录类型的菜单、常规的菜单选项以及具体的操作按钮等不同类型的菜单元素，方便在权限管理、菜单展示等相关业务逻辑中进行统一的类型判断和处理。
 *
 * @author lanhai
 */
public enum MenuType {
    /**
     * 目录类型的菜单，通常用于对一组相关的菜单或功能进行归类划分，类似文件夹的作用，是菜单结构中的较上层分类，一般不直接对应具体的操作功能，其值为0。
     */
    CATALOG(0),
    /**
     * 常规的菜单选项，对应具体的功能页面或者功能入口，用户可以点击进入相应的功能模块进行操作，其值为1。
     */
    MENU(1),
    /**
     * 具体的操作按钮，往往是在某个功能页面内执行具体的某个操作，例如保存、删除等按钮，是最细粒度的菜单形式，其值为2。
     */
    BUTTON(2);

    // 用于存储每个枚举常量对应的整数值，该值可用于在代码逻辑中进行比较、判断等操作，以区分不同的菜单类型。
    private int value;

    // 枚举类的构造方法，用于初始化每个枚举常量对应的整数值，保证每个枚举常量都有对应的唯一值与之关联。
    MenuType(int value) {
        this.value = value;
    }

    // 获取当前枚举常量所对应的整数值的方法，外部代码可以通过调用此方法获取具体菜单类型对应的数值，便于在业务逻辑中基于数值进行判断等操作。
    public int getValue() {
        return value;
    }
}