2026-04-14 16:27:47 +08:00
|
|
|
-- 学校租户表
|
|
|
|
|
CREATE TABLE IF NOT EXISTS upms.tb_sys_tenant (
|
|
|
|
|
tenant_id VARCHAR(64) PRIMARY KEY,
|
|
|
|
|
parent_tenant_id VARCHAR(64),
|
|
|
|
|
tenant_name VARCHAR(128) NOT NULL,
|
|
|
|
|
tenant_type VARCHAR(32) NOT NULL,
|
2026-04-14 18:14:41 +08:00
|
|
|
adcode VARCHAR(12) NOT NULL,
|
2026-04-14 16:27:47 +08:00
|
|
|
tenant_path VARCHAR(255) NOT NULL,
|
|
|
|
|
status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE',
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
);
|
2026-04-14 18:14:41 +08:00
|
|
|
COMMENT ON TABLE upms.tb_sys_tenant IS '学校租户表';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_tenant.tenant_id IS '租户ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_tenant.parent_tenant_id IS '父租户ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_tenant.tenant_name IS '租户名称';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_tenant.tenant_type IS '租户类型';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_tenant.adcode IS '行政区划编码';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_tenant.tenant_path IS '租户路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_tenant.status IS '租户状态';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_tenant.created_at IS '创建时间';
|
2026-04-14 16:27:47 +08:00
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS upms.tb_sys_dept (
|
|
|
|
|
dept_id VARCHAR(64) PRIMARY KEY,
|
|
|
|
|
parent_dept_id VARCHAR(64),
|
|
|
|
|
tenant_id VARCHAR(64) NOT NULL,
|
|
|
|
|
dept_name VARCHAR(128) NOT NULL,
|
|
|
|
|
dept_type VARCHAR(32) NOT NULL,
|
2026-04-14 18:14:41 +08:00
|
|
|
adcode VARCHAR(12) NOT NULL,
|
2026-04-14 16:27:47 +08:00
|
|
|
tenant_path VARCHAR(255) NOT NULL,
|
|
|
|
|
dept_path VARCHAR(255) NOT NULL,
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
);
|
2026-04-14 18:14:41 +08:00
|
|
|
COMMENT ON TABLE upms.tb_sys_dept IS '组织部门表';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_dept.dept_id IS '部门ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_dept.parent_dept_id IS '父部门ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_dept.tenant_id IS '租户ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_dept.dept_name IS '部门名称';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_dept.dept_type IS '部门类型';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_dept.adcode IS '行政区划编码';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_dept.tenant_path IS '租户路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_dept.dept_path IS '部门路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_dept.created_at IS '创建时间';
|
2026-04-14 16:27:47 +08:00
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS upms.tb_sys_user (
|
|
|
|
|
user_id VARCHAR(64) PRIMARY KEY,
|
|
|
|
|
username VARCHAR(64) UNIQUE NOT NULL,
|
|
|
|
|
display_name VARCHAR(128) NOT NULL,
|
|
|
|
|
password_hash VARCHAR(255) NOT NULL,
|
2026-04-14 18:14:41 +08:00
|
|
|
adcode VARCHAR(12) NOT NULL,
|
2026-04-14 16:27:47 +08:00
|
|
|
tenant_id VARCHAR(64) NOT NULL,
|
|
|
|
|
tenant_path VARCHAR(255) NOT NULL,
|
|
|
|
|
dept_id VARCHAR(64) NOT NULL,
|
|
|
|
|
dept_path VARCHAR(255) NOT NULL,
|
|
|
|
|
status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE',
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
);
|
2026-04-14 18:14:41 +08:00
|
|
|
COMMENT ON TABLE upms.tb_sys_user IS '系统用户表';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_user.user_id IS '用户ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_user.username IS '用户名';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_user.display_name IS '显示名称';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_user.password_hash IS '密码哈希';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_user.adcode IS '行政区划编码';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_user.tenant_id IS '租户ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_user.tenant_path IS '租户路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_user.dept_id IS '部门ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_user.dept_path IS '部门路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_user.status IS '用户状态';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_user.created_at IS '创建时间';
|
2026-04-14 16:27:47 +08:00
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS upms.tb_sys_role (
|
|
|
|
|
role_id VARCHAR(64) PRIMARY KEY,
|
|
|
|
|
role_code VARCHAR(64) UNIQUE NOT NULL,
|
|
|
|
|
role_name VARCHAR(128) NOT NULL,
|
2026-04-14 18:14:41 +08:00
|
|
|
adcode VARCHAR(12) NOT NULL,
|
2026-04-14 16:27:47 +08:00
|
|
|
tenant_id VARCHAR(64) NOT NULL,
|
|
|
|
|
tenant_path VARCHAR(255) NOT NULL,
|
|
|
|
|
dept_id VARCHAR(64),
|
|
|
|
|
dept_path VARCHAR(255),
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
);
|
2026-04-14 18:14:41 +08:00
|
|
|
COMMENT ON TABLE upms.tb_sys_role IS '角色表';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_role.role_id IS '角色ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_role.role_code IS '角色编码';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_role.role_name IS '角色名称';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_role.adcode IS '行政区划编码';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_role.tenant_id IS '租户ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_role.tenant_path IS '租户路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_role.dept_id IS '部门ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_role.dept_path IS '部门路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_role.created_at IS '创建时间';
|
2026-04-14 16:27:47 +08:00
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS upms.tb_sys_permission (
|
|
|
|
|
permission_id VARCHAR(64) PRIMARY KEY,
|
|
|
|
|
permission_code VARCHAR(128) UNIQUE NOT NULL,
|
|
|
|
|
permission_name VARCHAR(128) NOT NULL,
|
2026-04-14 18:14:41 +08:00
|
|
|
adcode VARCHAR(12) NOT NULL,
|
2026-04-14 16:27:47 +08:00
|
|
|
tenant_id VARCHAR(64) NOT NULL,
|
|
|
|
|
tenant_path VARCHAR(255) NOT NULL,
|
|
|
|
|
dept_id VARCHAR(64),
|
|
|
|
|
dept_path VARCHAR(255),
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
);
|
2026-04-14 18:14:41 +08:00
|
|
|
COMMENT ON TABLE upms.tb_sys_permission IS '权限表';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_permission.permission_id IS '权限ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_permission.permission_code IS '权限编码';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_permission.permission_name IS '权限名称';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_permission.adcode IS '行政区划编码';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_permission.tenant_id IS '租户ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_permission.tenant_path IS '租户路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_permission.dept_id IS '部门ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_permission.dept_path IS '部门路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_permission.created_at IS '创建时间';
|
2026-04-14 16:27:47 +08:00
|
|
|
|
2026-04-14 18:14:41 +08:00
|
|
|
CREATE TABLE IF NOT EXISTS upms.tb_sys_menu (
|
2026-04-14 16:27:47 +08:00
|
|
|
route_id VARCHAR(64) PRIMARY KEY,
|
|
|
|
|
parent_route_id VARCHAR(64),
|
|
|
|
|
route_path VARCHAR(255) NOT NULL,
|
|
|
|
|
route_name VARCHAR(128) NOT NULL,
|
|
|
|
|
component_key VARCHAR(128) NOT NULL,
|
|
|
|
|
layout_type VARCHAR(32) NOT NULL,
|
|
|
|
|
title VARCHAR(128) NOT NULL,
|
|
|
|
|
icon VARCHAR(64),
|
|
|
|
|
permission_code VARCHAR(128),
|
|
|
|
|
hidden BOOLEAN NOT NULL DEFAULT FALSE,
|
2026-04-14 18:14:41 +08:00
|
|
|
adcode VARCHAR(12) NOT NULL,
|
2026-04-14 16:27:47 +08:00
|
|
|
tenant_id VARCHAR(64) NOT NULL,
|
|
|
|
|
tenant_path VARCHAR(255) NOT NULL,
|
|
|
|
|
dept_id VARCHAR(64),
|
|
|
|
|
dept_path VARCHAR(255),
|
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
);
|
2026-04-14 18:14:41 +08:00
|
|
|
COMMENT ON TABLE upms.tb_sys_menu IS '菜单表';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.route_id IS '路由ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.parent_route_id IS '父路由ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.route_path IS '路由路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.route_name IS '路由名称';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.component_key IS '组件标识';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.layout_type IS '布局类型';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.title IS '菜单标题';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.icon IS '图标';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.permission_code IS '权限编码';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.hidden IS '是否隐藏';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.adcode IS '行政区划编码';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.tenant_id IS '租户ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.tenant_path IS '租户路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.dept_id IS '部门ID';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.dept_path IS '部门路径';
|
|
|
|
|
COMMENT ON COLUMN upms.tb_sys_menu.created_at IS '创建时间';
|
2026-04-14 16:27:47 +08:00
|
|
|
|
2026-04-14 18:14:41 +08:00
|
|
|
CREATE INDEX IF NOT EXISTS idx_sys_tenant_adcode ON upms.tb_sys_tenant(adcode);
|
2026-04-14 16:27:47 +08:00
|
|
|
CREATE INDEX IF NOT EXISTS idx_dept_tenant ON upms.tb_sys_dept(tenant_id, dept_path);
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_user_tenant ON upms.tb_sys_user(tenant_id, dept_id);
|
2026-04-14 18:14:41 +08:00
|
|
|
CREATE INDEX IF NOT EXISTS idx_route_tenant ON upms.tb_sys_menu(tenant_id, route_path);
|