| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- -- =============================================
- -- 智慧水务管理系统 - PostgreSQL DDL
- -- 版本: V1
- -- 描述: 核心业务表建表脚本
- -- =============================================
-
- -- ==================== 系统管理 ====================
-
- -- 部门表
- CREATE TABLE IF NOT EXISTS sys_dept (
- id BIGSERIAL PRIMARY KEY,
- parent_id BIGINT,
- dept_name VARCHAR(100) NOT NULL,
- dept_type VARCHAR(20) NOT NULL DEFAULT 'water_company', -- water_bureau/water_company/ops
- sort_order INT DEFAULT 0,
- leader VARCHAR(50),
- phone VARCHAR(20),
- status SMALLINT DEFAULT 1,
- deleted SMALLINT DEFAULT 0,
- created_at TIMESTAMP DEFAULT NOW(),
- updated_at TIMESTAMP DEFAULT NOW()
- );
- COMMENT ON TABLE sys_dept IS '部门表';
- COMMENT ON COLUMN sys_dept.dept_type IS '部门类型: water_bureau(水利局)/water_company(水务公司)/ops(运维单位)';
-
- -- 用户表
- CREATE TABLE IF NOT EXISTS sys_user (
- id BIGSERIAL PRIMARY KEY,
- dept_id BIGINT REFERENCES sys_dept(id),
- username VARCHAR(50) UNIQUE NOT NULL,
- password VARCHAR(255) NOT NULL,
- real_name VARCHAR(50),
- nickname VARCHAR(50),
- phone VARCHAR(20),
- email VARCHAR(100),
- avatar VARCHAR(500),
- gender SMALLINT DEFAULT 0, -- 0:未知 1:男 2:女
- role_type VARCHAR(30) DEFAULT 'operator', -- admin/leader/manager/operator/tech
- status SMALLINT DEFAULT 1, -- 0:停用 1:启用
- login_ip VARCHAR(50),
- login_at TIMESTAMP,
- deleted SMALLINT DEFAULT 0,
- created_at TIMESTAMP DEFAULT NOW(),
- updated_at TIMESTAMP DEFAULT NOW()
- );
- COMMENT ON TABLE sys_user IS '用户表';
- COMMENT ON COLUMN sys_user.role_type IS '角色类型: admin/leader/manager/operator/tech';
-
- -- 角色表
- CREATE TABLE IF NOT EXISTS sys_role (
- id BIGSERIAL PRIMARY KEY,
- role_name VARCHAR(50) UNIQUE NOT NULL,
- role_key VARCHAR(50) UNIQUE NOT NULL,
- role_sort INT DEFAULT 0,
- data_scope VARCHAR(20) DEFAULT 'SELF', -- ALL/DEPT/CUSTOM/SELF
- status SMALLINT DEFAULT 1,
- remark VARCHAR(500),
- deleted SMALLINT DEFAULT 0,
- created_at TIMESTAMP DEFAULT NOW(),
- updated_at TIMESTAMP DEFAULT NOW()
- );
- COMMENT ON TABLE sys_role IS '角色表';
- COMMENT ON COLUMN sys_role.role_key IS '角色标识: admin/supervisor/biz_manager/field_ops/tech_maintain';
- COMMENT ON COLUMN sys_role.data_scope IS '数据权限范围: ALL/DEPT/CUSTOM/SELF';
-
- -- 菜单表
- CREATE TABLE IF NOT EXISTS sys_menu (
- id BIGSERIAL PRIMARY KEY,
- parent_id BIGINT DEFAULT 0,
- menu_name VARCHAR(50) NOT NULL,
- menu_type CHAR(1) DEFAULT 'M', -- M:目录 C:菜单 F:按钮
- path VARCHAR(200),
- component VARCHAR(255),
- perms VARCHAR(100),
- icon VARCHAR(100),
- sort_order INT DEFAULT 0,
- visible SMALLINT DEFAULT 1,
- status SMALLINT DEFAULT 1,
- deleted SMALLINT DEFAULT 0,
- created_at TIMESTAMP DEFAULT NOW(),
- updated_at TIMESTAMP DEFAULT NOW()
- );
- COMMENT ON TABLE sys_menu IS '菜单表';
-
- -- 角色-菜单关联
- CREATE TABLE IF NOT EXISTS sys_role_menu (
- role_id BIGINT NOT NULL REFERENCES sys_role(id),
- menu_id BIGINT NOT NULL REFERENCES sys_menu(id),
- PRIMARY KEY (role_id, menu_id)
- );
- COMMENT ON TABLE sys_role_menu IS '角色菜单关联表';
-
- -- 用户-角色关联
- CREATE TABLE IF NOT EXISTS sys_user_role (
- user_id BIGINT NOT NULL REFERENCES sys_user(id),
- role_id BIGINT NOT NULL REFERENCES sys_role(id),
- PRIMARY KEY (user_id, role_id)
- );
- COMMENT ON TABLE sys_user_role IS '用户角色关联表';
-
- -- 操作日志表
- CREATE TABLE IF NOT EXISTS sys_oper_log (
- id BIGSERIAL PRIMARY KEY,
- user_id BIGINT,
- username VARCHAR(50),
- module VARCHAR(50),
- operation VARCHAR(50),
- method VARCHAR(200),
- request_method VARCHAR(10),
- request_url VARCHAR(500),
- request_params TEXT,
- response_result TEXT,
- ip VARCHAR(50),
- location VARCHAR(100),
- duration BIGINT,
- status SMALLINT DEFAULT 1,
- error_msg TEXT,
- created_at TIMESTAMP DEFAULT NOW()
- );
- COMMENT ON TABLE sys_oper_log IS '操作日志表';
-
- -- 登录日志表
- CREATE TABLE IF NOT EXISTS sys_login_log (
- id BIGSERIAL PRIMARY KEY,
- username VARCHAR(50),
- ip VARCHAR(50),
- location VARCHAR(100),
- browser VARCHAR(100),
- os VARCHAR(100),
- status SMALLINT DEFAULT 1, -- 0:失败 1:成功
- msg VARCHAR(500),
- login_at TIMESTAMP DEFAULT NOW()
- );
- COMMENT ON TABLE sys_login_log IS '登录日志表';
-
- -- ==================== 数据字典 ====================
-
- CREATE TABLE IF NOT EXISTS sys_dict_type (
- id BIGSERIAL PRIMARY KEY,
- dict_name VARCHAR(100) NOT NULL,
- dict_key VARCHAR(100) UNIQUE NOT NULL,
- status SMALLINT DEFAULT 1,
- remark VARCHAR(500),
- created_at TIMESTAMP DEFAULT NOW(),
- updated_at TIMESTAMP DEFAULT NOW()
- );
- COMMENT ON TABLE sys_dict_type IS '字典类型表';
-
- CREATE TABLE IF NOT EXISTS sys_dict_data (
- id BIGSERIAL PRIMARY KEY,
- dict_type_id BIGINT REFERENCES sys_dict_type(id),
- dict_label VARCHAR(100) NOT NULL,
- dict_value VARCHAR(100) NOT NULL,
- css_class VARCHAR(100),
- list_class VARCHAR(100),
- sort_order INT DEFAULT 0,
- status SMALLINT DEFAULT 1,
- remark VARCHAR(500),
- created_at TIMESTAMP DEFAULT NOW(),
- updated_at TIMESTAMP DEFAULT NOW()
- );
- COMMENT ON TABLE sys_dict_data IS '字典数据表';
-
- -- ==================== 通知方案 ====================
-
- CREATE TABLE IF NOT EXISTS sys_notify_scheme (
- id BIGSERIAL PRIMARY KEY,
- scheme_name VARCHAR(100) NOT NULL,
- channels VARCHAR(200), -- sms,app_push,websocket,wechat (逗号分隔)
- template_id VARCHAR(50),
- status SMALLINT DEFAULT 1,
- created_at TIMESTAMP DEFAULT NOW()
- );
- COMMENT ON TABLE sys_notify_scheme IS '通知方案表';
-
- CREATE TABLE IF NOT EXISTS sys_notify_record (
- id BIGSERIAL PRIMARY KEY,
- scheme_id BIGINT REFERENCES sys_notify_scheme(id),
- target_user_id BIGINT,
- target_phone VARCHAR(20),
- channel VARCHAR(20),
- title VARCHAR(200),
- content TEXT,
- status VARCHAR(20) DEFAULT 'pending', -- pending/sent/failed/read
- sent_at TIMESTAMP,
- read_at TIMESTAMP,
- error_msg VARCHAR(500),
- created_at TIMESTAMP DEFAULT NOW()
- );
- COMMENT ON TABLE sys_notify_record IS '通知记录表';
-
- -- ==================== 文件管理 ====================
-
- CREATE TABLE IF NOT EXISTS sys_file (
- id BIGSERIAL PRIMARY KEY,
- file_name VARCHAR(200) NOT NULL,
- original_name VARCHAR(200),
- file_path VARCHAR(500) NOT NULL,
- file_size BIGINT,
- mime_type VARCHAR(100),
- file_ext VARCHAR(20),
- storage_type VARCHAR(20) DEFAULT 'minio',
- bucket VARCHAR(100) DEFAULT 'water-management',
- module VARCHAR(50),
- biz_id BIGINT,
- upload_by BIGINT,
- deleted SMALLINT DEFAULT 0,
- created_at TIMESTAMP DEFAULT NOW()
- );
- COMMENT ON TABLE sys_file IS '文件管理表';
|