38 lines
1.5 KiB
PL/PgSQL
38 lines
1.5 KiB
PL/PgSQL
-- 用户与组织管理表(系统管理模块补足)
|
||
-- 对应方案:系统管理模块 — 用户管理、组织管理
|
||
|
||
BEGIN;
|
||
|
||
-- 组织/机构表
|
||
CREATE TABLE IF NOT EXISTS organization (
|
||
id VARCHAR(64) PRIMARY KEY,
|
||
name VARCHAR(256) NOT NULL,
|
||
org_node VARCHAR(32), -- MA 码机构节点(如 6101)
|
||
province VARCHAR(64), -- 所属省份
|
||
type VARCHAR(32) NOT NULL, -- regulator/reviewer/cp/operator
|
||
status VARCHAR(16) NOT NULL DEFAULT 'active',
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
);
|
||
CREATE INDEX IF NOT EXISTS idx_org_type ON organization(type);
|
||
CREATE INDEX IF NOT EXISTS idx_org_node ON organization(org_node);
|
||
|
||
-- 用户表
|
||
CREATE TABLE IF NOT EXISTS system_user (
|
||
id VARCHAR(64) PRIMARY KEY,
|
||
username VARCHAR(128) NOT NULL UNIQUE,
|
||
full_name VARCHAR(128),
|
||
org_id VARCHAR(64) REFERENCES organization(id),
|
||
role VARCHAR(32) NOT NULL, -- regulator/reviewer/cp/operator
|
||
api_key VARCHAR(128) NOT NULL UNIQUE,
|
||
api_secret VARCHAR(256) NOT NULL,
|
||
status VARCHAR(16) NOT NULL DEFAULT 'active',
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
);
|
||
CREATE INDEX IF NOT EXISTS idx_user_org ON system_user(org_id);
|
||
CREATE INDEX IF NOT EXISTS idx_user_role ON system_user(role);
|
||
CREATE INDEX IF NOT EXISTS idx_user_status ON system_user(status);
|
||
|
||
COMMIT;
|