silentbalanceyh/vertx-zero

View on GitHub
vertx-pin/zero-rbac/src/main/resources/plugin/sql/rbac/S_PATH.sql

Summary

Maintainability
Test Coverage
-- liquibase formatted sql

-- changeset Lang:ox-path-1
-- 权限定义规则专用表,资源路径表:S_PATH
/**
 * 主控资源路径描述信息,描述信息中定义了搜索路径的方式
 * 资源路径搜索方式的基本定义,和界面有关
 * 类型,该表属于业务对接接口,它包含了一个完整的资源描述信息
 * 1)目前支持的四种核心描述类型:
 * -- 1.1)菜单管理,针对 /api/menus 的单独管理
 * -- 1.2)表单管理,先分类 -> 选择表单 -> 针对单个表单的特殊管理 /ui/control
 *    -- 表单内部 type = FORM 的配置读取过程,限定字段的读写
 * -- 1.3)列管理,主要针对 full-columns 部分的过滤
 * -- 1.4)操作管理,针对静态资源和动态资源的 op 过滤
 * 2)每个路径下包含多个 packet 实例,最终结构:
 * -- path1 -> packet1 -> resource1
 * --       -> packet2 -> resource2
 * 3)视图属性设置(管理视图)
 * 行操作的直接选择(菜单管理)
 * 分类数据源(先分类),再查找 packet 然后执行保存过滤
 *
 **/
DROP TABLE IF EXISTS S_PATH;
CREATE TABLE IF NOT EXISTS S_PATH
(
    `KEY`           VARCHAR(36) COMMENT '「key」- 规则主键',

    `NAME`          VARCHAR(255) COMMENT '「name」- 规则名称',
    `CODE`          VARCHAR(255) COMMENT '「code」- 系统界面标识',
    `PHASE`         VARCHAR(64) COMMENT '「phase」- UI读取数据的操作周期',
    `MAPPING`       TEXT COMMENT '「mapping」- 从 dm -> ui 转换',

    /*
     * 1. 非区域模式:1 DM - 1 UI,父代码为空           核心组件:HSUiNorm   dmCode = NULL
     * 2. 区域模式下:1 DM - n UI,此时父代码不为空      核心组件:HSUiArea   dmCode = 父代码
     *    区域模式下组件内部实现第二次读取,如流程管理,区域会触发
     *    -- 视图管理
     *    -- 操作管理
     *    此时的管理会执行降维操作
     */
    `PARENT_ID`     VARCHAR(36) COMMENT '「parentId」- 区域模式下的父ID,系统内部读取',

    /*
     * 核心流程
     * 定义部分:
     * 1)直接按照 code 读取 S_PATH
     * 2)根据是否分组设置记录基础信息
     * 2.1) 如果不分组,uiCondition 是静态
     * 2.2) 如果分组,先计算 dm 部分的内容
     * ----- 选中的 dm 和 dmMapping 计算出 uiCondition
     * 3)触发 uiCondition,然后底层根据配置数据计算数据源
     * 4)根据最终拿到的数据源 和 uiConfig 计算最终界面
     * 消费部分:
     * 1)直接根据角色和 S_PACKET 中的维度提取 resource 的资源 ID 集合
     * 2)读取这种角色的 S_VIEW 中的核心配置信息
     */
    `RUN_COMPONENT` VARCHAR(255) COMMENT '「runComponent」- HValve执行组件,组件内置处理 dm / ui 两部分内容',
    `RUN_TYPE`      VARCHAR(5) COMMENT '「runType」- 视图管理类型(查询用)',

    /*
     * 分组类型主要牵涉四种
     * ScDim
     * - NONE:      无维度,平行定义
     * - FLAT:      列表型(只分区域)
     * - TREE:      树型
     * - FOREST:    森林型(列表 + 树)
     */
    `DM_TYPE`       VARCHAR(128) COMMENT '「dmType」- 分组类型',
    `DM_COMPONENT`  VARCHAR(255) COMMENT '「dmComponent」- 必须绑定组专用Dao组件',
    `DM_CONDITION`  TEXT COMMENT '「dmCondition」- 分组条件',
    `DM_CONFIG`     TEXT COMMENT '「dmConfig」- 组配置信息,配置呈现部分',

    /*
     * 描述了目标界面的条件信息
     * - NONE:        默认值,无数据源
     * - WEB:         静态的,类似 items,直接在 config 节点中定义
     * - DAO:         动态的,使用静态的 DAO 去读取数据源信息
     * - ATOM:        动态的Dao,使用类似 /api/ox/ 下的底层逻辑实现
     * - DEFINE:      自定义,可使用组件模式(此时才开启uiComponent的使用)
     **/
    `UI_TYPE`       VARCHAR(255) COMMENT '「uiType」- 目标数据源类型',
    `UI_CONFIG`     TEXT COMMENT '「uiConfig」- 界面配置',
    `UI_CONDITION`  TEXT COMMENT '「uiCondition」- 查询模板',
    `UI_COMPONENT`  VARCHAR(255) COMMENT '「uiComponent」- 特殊组件',
    `UI_SURFACE`    TEXT COMMENT '「uiSurface」- 界面呈现模式,已经被降维之后(列表、树、其他等相关配置)',
    `UI_SORT`       INT COMMENT '「sort」- 该板块的排序(前端)',

    `SIGMA`         VARCHAR(32) COMMENT '「sigma」- 统一标识',
    `LANGUAGE`      VARCHAR(10) COMMENT '「language」- 使用的语言',
    `ACTIVE`        BIT COMMENT '「active」- 是否启用',
    `METADATA`      TEXT COMMENT '「metadata」- 附加配置数据',

    -- Auditor字段
    `CREATED_AT`    DATETIME COMMENT '「createdAt」- 创建时间',
    `CREATED_BY`    VARCHAR(36) COMMENT '「createdBy」- 创建人',
    `UPDATED_AT`    DATETIME COMMENT '「updatedAt」- 更新时间',
    `UPDATED_BY`    VARCHAR(36) COMMENT '「updatedBy」- 更新人',
    PRIMARY KEY (`KEY`) USING BTREE
);
-- changeset Lang:ox-path-2
-- Unique Key:独立唯一主键
ALTER TABLE S_PATH
    ADD UNIQUE (`CODE`, `SIGMA`) USING BTREE;
-- 场景:权限管理
ALTER TABLE S_PATH
    ADD INDEX IDX_S_PATH_RUN_TYPE_SIGMA (`RUN_TYPE`, `SIGMA`) USING BTREE;