yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
@@ -25,6 +25,8 @@
    ErrorCode MENU_EXISTS_CHILDREN = new ErrorCode(1_002_001_004, "存在子菜单,无法删除");
    ErrorCode MENU_PARENT_NOT_DIR_OR_MENU = new ErrorCode(1_002_001_005, "父菜单的类型必须是目录或者菜单");
    ErrorCode MENU_COMPONENT_NAME_DUPLICATE = new ErrorCode(1_002_001_006, "已经存在该组件名的菜单");
    ErrorCode MENU_TYPE_NOT_EXISTS = new ErrorCode(1_002_001_007, "菜单类型不能为空");
    ErrorCode MENU_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_001_008, "导入菜单数据不能为空!");
    // ========== 角色模块 1-002-002-000 ==========
    ErrorCode ROLE_NOT_EXISTS = new ErrorCode(1_002_002_000, "角色不存在");
@@ -33,6 +35,7 @@
    ErrorCode ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1_002_002_003, "不能操作类型为系统内置的角色");
    ErrorCode ROLE_IS_DISABLE = new ErrorCode(1_002_002_004, "名字为【{}】的角色已被禁用");
    ErrorCode ROLE_ADMIN_CODE_ERROR = new ErrorCode(1_002_002_005, "标识【{}】不能使用");
    ErrorCode ROLE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_002_006, "导入角色数据不能为空!");
    // ========== 用户模块 1-002-003-000 ==========
    ErrorCode USER_USERNAME_EXISTS = new ErrorCode(1_002_003_000, "用户账号已经存在");
@@ -44,6 +47,8 @@
    ErrorCode USER_IS_DISABLE = new ErrorCode(1_002_003_006, "名字为【{}】的用户已被禁用");
    ErrorCode USER_COUNT_MAX = new ErrorCode(1_002_003_008, "创建用户失败,原因:超过租户最大租户配额({})!");
    ErrorCode USER_IMPORT_INIT_PASSWORD = new ErrorCode(1_002_003_009, "初始密码不能为空");
    ErrorCode USER_IMPORT_FILE_EMPTY = new ErrorCode(1_002_003_010, "请选择要导入的 Excel 文件");
    ErrorCode USER_IMPORT_FILE_INVALID = new ErrorCode(1_002_003_011, "Excel 文件格式不正确,请下载最新模板重新填写");
    ErrorCode USER_MOBILE_NOT_EXISTS = new ErrorCode(1_002_003_010, "该手机号尚未注册");
    ErrorCode USER_REGISTER_DISABLED = new ErrorCode(1_002_003_011, "注册功能已关闭");
@@ -70,14 +75,19 @@
    ErrorCode DICT_TYPE_NAME_DUPLICATE = new ErrorCode(1_002_006_003, "已经存在该名字的字典类型");
    ErrorCode DICT_TYPE_TYPE_DUPLICATE = new ErrorCode(1_002_006_004, "已经存在该类型的字典类型");
    ErrorCode DICT_TYPE_HAS_CHILDREN = new ErrorCode(1_002_006_005, "无法删除,该字典类型还有字典数据");
    ErrorCode DICT_TYPE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_006_006, "导入字典类型数据不能为空!");
    // ========== 字典数据 1-002-007-000 ==========
    ErrorCode DICT_DATA_NOT_EXISTS = new ErrorCode(1_002_007_001, "当前字典数据不存在");
    ErrorCode DICT_DATA_NOT_ENABLE = new ErrorCode(1_002_007_002, "字典数据({})不处于开启状态,不允许选择");
    ErrorCode DICT_DATA_VALUE_DUPLICATE = new ErrorCode(1_002_007_003, "已经存在该值的字典数据");
    ErrorCode DICT_DATA_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_007_004, "导入字典数据不能为空!");
    // ========== 通知公告 1-002-008-000 ==========
    ErrorCode NOTICE_NOT_FOUND = new ErrorCode(1_002_008_001, "当前通知公告不存在");
    ErrorCode NOTICE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_008_002, "导入通知公告数据不能为空!");
    ErrorCode NOTICE_TITLE_DUPLICATE = new ErrorCode(1_002_008_003, "已经存在标题为【{}】的通知公告");
    ErrorCode NOTICE_TYPE_NOT_EXISTS = new ErrorCode(1_002_008_004, "公告类型不能为空");
    // ========== 短信渠道 1-002-011-000 ==========
    ErrorCode SMS_CHANNEL_NOT_EXISTS = new ErrorCode(1_002_011_000, "短信渠道不存在");