Files
xinghe-codegen/doc/sql.md
2026-01-20 15:33:13 +08:00

9.5 KiB
Raw Blame History

/* ---------------------------------------------------- */
/* Generated by Enterprise Architect Version 10.10      */
/* Created On : 20-1月-2026 15:13:42                     */
/* DBMS       : PostgreSQL                               */
/* ---------------------------------------------------- */

/* Drop Sequences for Autonumber Columns */
DROP SEQUENCE IF EXISTS cg_template_id_seq;

/* Drop Tables */
DROP TABLE IF EXISTS cg_fun_item CASCADE;
DROP TABLE IF EXISTS cg_fun_module CASCADE;
DROP TABLE IF EXISTS cg_fun_operation CASCADE;
DROP TABLE IF EXISTS cg_menu CASCADE;
DROP TABLE IF EXISTS cg_role CASCADE;
DROP TABLE IF EXISTS cg_role_fun CASCADE;
DROP TABLE IF EXISTS cg_template CASCADE;

/* Create Tables */
CREATE TABLE cg_fun_item (
    id bigint NOT NULL,                      -- id
    module_id bigint NOT NULL,               -- 模块ID
    item_id bigint NOT NULL,                 -- 功能ID
    item_name varchar(50) NOT NULL,          -- 功能名称
    item_code varchar(64) NOT NULL,          -- 功能编码
    is_tenant boolean NOT NULL DEFAULT true, -- 是否租户
    describe varchar(250) NULL,              -- 说明
    sort_order smallint NOT NULL DEFAULT 0   -- 排序
);

CREATE TABLE cg_fun_module (
    id bigint NOT NULL,                      -- id
    module_code varchar(16) NOT NULL,        -- 模块编码
    module_name varchar(8) NOT NULL,         -- 模块名称
    package_name varchar(250) NOT NULL,      -- 包名称
    api_package_name varchar(250) NOT NULL, -- 参数包名
    sort_order smallint NOT NULL DEFAULT 0,  -- 排序
    describe varchar(250) NULL               -- 描述
);

CREATE TABLE cg_fun_operation (
    id bigint NOT NULL,                           -- id
    module_id bigint NOT NULL,                    -- 模块ID
    item_id bigint NOT NULL,                      -- 功能ID(表主键ID)
    is_green_light boolean NOT NULL DEFAULT false, -- 直接放行
    operation_id bigint NOT NULL,                 -- 操作ID
    operation_code varchar(32) NULL,              -- 操作编码
    fun_name varchar(16) NOT NULL,                -- 操作名称
    fun_type smallint NOT NULL,                   -- 操作类型 > >查 > >改 > >删 > >增
    request_type smallint NOT NULL,               -- 请求类型
    is_req_params boolean NOT NULL DEFAULT true,  -- 是否需要请求参数
    is_res_params boolean NOT NULL DEFAULT true,  -- 是否需要响应参数
    is_page boolean NOT NULL DEFAULT true,        -- 是否分页
    path_params varchar(16) NULL,                 -- 路径参数与请求参数true互斥
    usable_config json NOT NULL DEFAULT '[]',     -- 可配置数据类型json[]
    field_config json NOT NULL DEFAULT '[]',      -- 可配置字段
    sort_order smallint NOT NULL DEFAULT 0,       -- 排序
    describe varchar(250) NULL                    -- 说明说明
);

CREATE TABLE cg_menu (
    id bigint NOT NULL,                     -- 主键ID
    client_type smallint NOT NULL,          -- 客户端类型0 PC端1 小程序端2 H5端
    menu_name varchar(32) NOT NULL,         -- 菜单名称
    parent_id bigint NOT NULL DEFAULT 0,   -- 父菜单ID
    fun_id bigint NULL,                     -- 操作ID/来自操作表
    menu_type smallint NOT NULL DEFAULT 0, -- 0菜单1按钮
    path varchar(64) NULL,                  -- 路由路径
    icon varchar(64) NULL,                  -- 菜单图标
    is_tenant boolean NOT NULL DEFAULT true, -- 是否租户
    is_hide boolean NOT NULL DEFAULT false, -- 是否隐藏
    sort_order smallint NOT NULL DEFAULT 0  -- 排序
);

CREATE TABLE cg_role (
    id bigint NOT NULL,       -- 主键ID
    role_name varchar(32) NOT NULL, -- 角色名称
    role_type smallint NOT NULL    -- 角色类型 0平台 1套餐
);

CREATE TABLE cg_role_fun (
    id bigint NOT NULL,                   -- 主键ID
    role_id bigint NOT NULL,              -- 角色ID
    fun_id bigint NOT NULL,               -- 操作ID
    data_scope smallint NOT NULL DEFAULT 0, -- 数据权限默认:0无
    assign_data_scope json NOT NULL DEFAULT '[]', -- 指定的数据权限范围
    exclude_field json NOT NULL DEFAULT '[]', -- 排除的字段
    client_type smallserial NOT NULL      -- 客户端类型0 PC端1 小程序端2 H5端
);

CREATE TABLE cg_template (
    id bigint NOT NULL DEFAULT NEXTVAL(('"cg_template_id_seq"'::text)::regclass), -- 主键ID
    is_use boolean NOT NULL DEFAULT false,  -- 是否使用
    template_name varchar(32) NOT NULL,      -- 模板名称
    template_type smallint NOT NULL,         -- 模板类型
    content text NOT NULL                    -- 正文
);

/* Create Primary Keys, Indexes, Uniques, Checks */
ALTER TABLE cg_fun_item ADD CONSTRAINT "PK_cg_fun_item" PRIMARY KEY (id);
ALTER TABLE cg_fun_item ADD CONSTRAINT u_module_item_code UNIQUE (module_id, item_id, item_code);
ALTER TABLE cg_fun_item ADD CONSTRAINT u_module_item_id UNIQUE (module_id, item_id);

ALTER TABLE cg_fun_module ADD CONSTRAINT "PK_cg_fun_module" PRIMARY KEY (id);

ALTER TABLE cg_fun_operation ADD CONSTRAINT "PK_cg_fun_operation" PRIMARY KEY (id);
ALTER TABLE cg_fun_operation ADD CONSTRAINT u_module_item_opration UNIQUE (module_id, item_id, operation_code);
ALTER TABLE cg_fun_operation ADD CONSTRAINT u_module_item_operation_id UNIQUE (module_id, item_id, operation_id);

ALTER TABLE cg_menu ADD CONSTRAINT "PK_cg_menu" PRIMARY KEY (id);

ALTER TABLE cg_role ADD CONSTRAINT "PK_cg_role" PRIMARY KEY (id);

ALTER TABLE cg_role_fun ADD CONSTRAINT "PK_cg_role_fun" PRIMARY KEY (id);

ALTER TABLE cg_template ADD CONSTRAINT "PK_cg_template" PRIMARY KEY (id);

/* Create Table Comments, Sequences for Autonumber Columns */
COMMENT ON TABLE cg_fun_item IS '功能项配置';
COMMENT ON COLUMN cg_fun_item.id IS 'id';
COMMENT ON COLUMN cg_fun_item.module_id IS '模块ID';
COMMENT ON COLUMN cg_fun_item.item_id IS '功能ID';
COMMENT ON COLUMN cg_fun_item.item_name IS '功能名称';
COMMENT ON COLUMN cg_fun_item.item_code IS '功能编码';
COMMENT ON COLUMN cg_fun_item.is_tenant IS '是否租户';
COMMENT ON COLUMN cg_fun_item.describe IS '说明';
COMMENT ON COLUMN cg_fun_item.sort_order IS '排序';

COMMENT ON TABLE cg_fun_module IS '模块配置';
COMMENT ON COLUMN cg_fun_module.id IS 'id';
COMMENT ON COLUMN cg_fun_module.module_code IS '模块编码';
COMMENT ON COLUMN cg_fun_module.module_name IS '模块名称';
COMMENT ON COLUMN cg_fun_module.package_name IS '包名称';
COMMENT ON COLUMN cg_fun_module.api_package_name IS '参数包名';
COMMENT ON COLUMN cg_fun_module.sort_order IS '排序';
COMMENT ON COLUMN cg_fun_module.describe IS '描述';

COMMENT ON TABLE cg_fun_operation IS '操作配置';
COMMENT ON COLUMN cg_fun_operation.id IS 'id';
COMMENT ON COLUMN cg_fun_operation.module_id IS '模块ID';
COMMENT ON COLUMN cg_fun_operation.item_id IS '功能ID(表主键ID)';
COMMENT ON COLUMN cg_fun_operation.is_green_light IS '直接放行';
COMMENT ON COLUMN cg_fun_operation.operation_id IS '操作ID';
COMMENT ON COLUMN cg_fun_operation.operation_code IS '操作编码';
COMMENT ON COLUMN cg_fun_operation.fun_name IS '操作名称';
COMMENT ON COLUMN cg_fun_operation.fun_type IS '操作类型 > >查 > >改 > >删 > >增';
COMMENT ON COLUMN cg_fun_operation.request_type IS '请求类型';
COMMENT ON COLUMN cg_fun_operation.is_req_params IS '是否需要请求参数';
COMMENT ON COLUMN cg_fun_operation.is_res_params IS '是否需要响应参数';
COMMENT ON COLUMN cg_fun_operation.is_page IS '是否分页';
COMMENT ON COLUMN cg_fun_operation.path_params IS '路径参数与请求参数true互斥';
COMMENT ON COLUMN cg_fun_operation.usable_config IS '可配置数据类型json[]';
COMMENT ON COLUMN cg_fun_operation.field_config IS '可配置字段';
COMMENT ON COLUMN cg_fun_operation.sort_order IS '排序';
COMMENT ON COLUMN cg_fun_operation.describe IS '说明说明';

COMMENT ON TABLE cg_menu IS '菜单';
COMMENT ON COLUMN cg_menu.id IS '主键ID';
COMMENT ON COLUMN cg_menu.client_type IS '客户端类型0 PC端1 小程序端2 H5端';
COMMENT ON COLUMN cg_menu.menu_name IS '菜单名称';
COMMENT ON COLUMN cg_menu.parent_id IS '父菜单ID';
COMMENT ON COLUMN cg_menu.fun_id IS '操作ID/来自操作表';
COMMENT ON COLUMN cg_menu.menu_type IS '0菜单1按钮';
COMMENT ON COLUMN cg_menu.path IS '路由路径';
COMMENT ON COLUMN cg_menu.icon IS '菜单图标';
COMMENT ON COLUMN cg_menu.is_tenant IS '是否租户';
COMMENT ON COLUMN cg_menu.is_hide IS '是否隐藏';
COMMENT ON COLUMN cg_menu.sort_order IS '排序';

COMMENT ON TABLE cg_role IS '角色表';
COMMENT ON COLUMN cg_role.id IS '主键ID';
COMMENT ON COLUMN cg_role.role_name IS '角色名称';
COMMENT ON COLUMN cg_role.role_type IS '角色类型 0平台 1套餐';

COMMENT ON TABLE cg_role_fun IS '角色权限表';
COMMENT ON COLUMN cg_role_fun.id IS '主键ID';
COMMENT ON COLUMN cg_role_fun.role_id IS '角色ID';
COMMENT ON COLUMN cg_role_fun.fun_id IS '操作ID';
COMMENT ON COLUMN cg_role_fun.data_scope IS '数据权限默认:0无';
COMMENT ON COLUMN cg_role_fun.assign_data_scope IS '指定的数据权限范围';
COMMENT ON COLUMN cg_role_fun.exclude_field IS '排除的字段';
COMMENT ON COLUMN cg_role_fun.client_type IS '客户端类型0 PC端1 小程序端2 H5端';

COMMENT ON TABLE cg_template IS '模板表';
COMMENT ON COLUMN cg_template.id IS '主键ID';
COMMENT ON COLUMN cg_template.is_use IS '是否使用';
COMMENT ON COLUMN cg_template.template_name IS '模板名称';
COMMENT ON COLUMN cg_template.template_type IS '模板类型';
COMMENT ON COLUMN cg_template.content IS '正文';

CREATE SEQUENCE cg_template_id_seq INCREMENT 1 START 1;