| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- -- ========================================================
- -- MySQL 建表脚本(带注释)
- -- 适用于 MySQL 5.7+
- -- ========================================================
- -- ----------------------------
- -- 1. 系统用户表
- -- ----------------------------
- CREATE TABLE IF NOT EXISTS sys_user (
- id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
- username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
- password VARCHAR(100) NOT NULL COMMENT '密码(加密存储)',
- real_name VARCHAR(50) COMMENT '真实姓名',
- phone VARCHAR(20) COMMENT '手机号',
- email VARCHAR(100) COMMENT '邮箱',
- dept_id BIGINT DEFAULT NULL COMMENT '所属部门ID,NULL表示无部门',
- employee_type VARCHAR(20) DEFAULT 'common_user' COMMENT '员工类型:super_admin/flow_manager/dept_manager/common_user',
- status TINYINT DEFAULT 0 COMMENT '状态:0-正常,1-禁用',
- wecom_user_id VARCHAR(100) COMMENT '企业微信用户ID',
- wecom_remind_enabled TINYINT DEFAULT 1 COMMENT '是否开启企微提醒:0-否 1-是',
- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- UNIQUE KEY uk_user_phone (phone)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户表';
- -- ----------------------------
- -- 2. 系统角色表
- -- ----------------------------
- CREATE TABLE IF NOT EXISTS sys_role (
- id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '角色ID',
- role_code VARCHAR(50) NOT NULL UNIQUE COMMENT '角色编码',
- role_name VARCHAR(50) NOT NULL COMMENT '角色名称',
- role_scope VARCHAR(20) DEFAULT 'tenant' COMMENT '角色范围:platform-平台级 tenant-租户级',
- parent_id BIGINT DEFAULT 0 COMMENT '父角色ID,0表示顶级角色',
- dept_id BIGINT DEFAULT 0 COMMENT '所属部门ID',
- username VARCHAR(50) COMMENT '角色账号登录名',
- phone VARCHAR(20) COMMENT '手机号',
- password VARCHAR(100) COMMENT '角色账号密码(加密存储)',
- status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
- wecom_user_id VARCHAR(100) COMMENT '企业微信用户ID',
- wecom_remind_enabled TINYINT DEFAULT 1 COMMENT '是否开启企微提醒:0-否 1-是',
- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- UNIQUE KEY uk_role_phone (phone)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统角色表';
- -- ----------------------------
- -- 3. 用户角色关联表
- -- ----------------------------
- CREATE TABLE IF NOT EXISTS sys_user_role (
- id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '关联ID',
- user_id BIGINT NOT NULL COMMENT '用户ID',
- role_id BIGINT NOT NULL COMMENT '角色ID',
- UNIQUE KEY uk_user_role (user_id, role_id) COMMENT '用户角色唯一索引'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
- -- ----------------------------
- -- 4. 部门表
- -- ----------------------------
- CREATE TABLE IF NOT EXISTS sys_dept (
- id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '部门ID',
- dept_name VARCHAR(50) NOT NULL COMMENT '部门名称',
- dept_code VARCHAR(50) COMMENT '部门编码',
- parent_id BIGINT DEFAULT 0 COMMENT '父部门ID,0表示顶级部门',
- leader_id BIGINT COMMENT '部门负责人ID',
- sort_order INT DEFAULT 0 COMMENT '排序号',
- status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';
- -- ----------------------------
- -- 5. 流程定义表
- -- ----------------------------
- CREATE TABLE IF NOT EXISTS bpm_process_definition (
- id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '流程定义ID',
- process_code VARCHAR(50) NOT NULL COMMENT '流程编码',
- process_name VARCHAR(100) NOT NULL COMMENT '流程名称',
- category VARCHAR(50) COMMENT '流程分类',
- form_id BIGINT COMMENT '关联表单ID',
- form_schema TEXT COMMENT '流程表单字段定义 JSON',
- model_json TEXT NOT NULL COMMENT '流程模型JSON',
- version INT DEFAULT 1 COMMENT '版本号',
- status TINYINT DEFAULT 0 COMMENT '状态:0-设计中 1-启用中 2-历史',
- description VARCHAR(500) COMMENT '流程描述',
- create_by BIGINT COMMENT '创建人ID',
- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- update_by BIGINT COMMENT '更新人ID',
- update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
- UNIQUE KEY uk_process_code_version (process_code, version, deleted) COMMENT '流程编码+版本+删除标记唯一索引'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程定义表';
- -- ----------------------------
- -- 6. 流程实例表
- -- ----------------------------
- CREATE TABLE IF NOT EXISTS bpm_process_instance (
- id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '流程实例ID',
- instance_no VARCHAR(50) NOT NULL UNIQUE COMMENT '实例编号(业务单号)',
- process_definition_id BIGINT NOT NULL COMMENT '流程定义ID',
- version INT NOT NULL COMMENT '流程版本号',
- title VARCHAR(200) COMMENT '实例标题',
- applicant_id BIGINT NOT NULL COMMENT '申请人ID',
- applicant_dept_id BIGINT COMMENT '申请人部门ID',
- form_data TEXT COMMENT '表单数据JSON',
- attachment_urls TEXT COMMENT '附件URL列表JSON',
- current_node_id VARCHAR(50) COMMENT '当前节点ID',
- status TINYINT DEFAULT 0 COMMENT '实例状态:0待接收 1待处理 2已通过 3已拒绝 4已回退 5整体完成 6已撤回 7已终止',
- result VARCHAR(20) COMMENT '审批结果:PASS/REJECT/RETURN/TRANSFER',
- start_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '流程启动时间',
- end_time TIMESTAMP NULL COMMENT '流程结束时间',
- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
- KEY idx_instance_definition_id (process_definition_id),
- KEY idx_instance_applicant (applicant_id),
- KEY idx_instance_status (status),
- KEY idx_instance_current_node (current_node_id),
- KEY idx_instance_status_end_definition (status, end_time, process_definition_id)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程实例表';
- -- ----------------------------
- -- 7. 审批任务表
- -- ----------------------------
- CREATE TABLE IF NOT EXISTS bpm_approval_task (
- id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '任务ID',
- instance_id BIGINT NOT NULL COMMENT '流程实例ID',
- node_id VARCHAR(50) NOT NULL COMMENT '节点ID(流程模型中的节点标识)',
- node_name VARCHAR(100) COMMENT '节点名称',
- node_type VARCHAR(20) COMMENT '节点类型:start/approval/cc/condition/end',
- assignee_id BIGINT COMMENT '任务处理人ID',
- assignee_type VARCHAR(20) COMMENT '处理人类型:USER-指定用户 ROLE-角色 SELF-发起人 LEADER-部门主管',
- task_status TINYINT DEFAULT 0 COMMENT '任务状态:0待处理 1已处理 2已转办 3已跳过 4已回退',
- sub_node_id VARCHAR(50) COMMENT '子节点ID(父审批节点下的子节点标识)',
- approval_result VARCHAR(20) COMMENT '审批结果:PASS/REJECT/RETURN/TRANSFER',
- version INT DEFAULT 0 COMMENT '乐观锁版本号',
- approval_comment TEXT COMMENT '审批意见',
- attachment_urls TEXT COMMENT '附件URL列表(JSON数组)',
- timeout_time TIMESTAMP NULL COMMENT '超时时间',
- timeout_action VARCHAR(20) COMMENT '超时动作:pass-自动通过,reject-自动驳回,remind-提醒等',
- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间(任务生成时间)',
- handle_time TIMESTAMP NULL COMMENT '处理时间',
- deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
- KEY idx_task_instance_id (instance_id),
- KEY idx_task_assignee_type_status (assignee_id, assignee_type, task_status),
- KEY idx_task_node (node_id),
- KEY idx_task_status_node_create (task_status, node_type, create_time),
- KEY idx_task_status_timeout (task_status, timeout_time)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审批任务表';
- -- ----------------------------
- -- 8. 审批记录表
- -- ----------------------------
- CREATE TABLE IF NOT EXISTS bpm_approval_record (
- id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '记录ID',
- task_id BIGINT NOT NULL COMMENT '关联审批任务ID',
- instance_id BIGINT NOT NULL COMMENT '关联流程实例ID',
- node_id VARCHAR(50) NOT NULL COMMENT '节点ID',
- node_name VARCHAR(100) COMMENT '节点名称',
- operator_id BIGINT NOT NULL COMMENT '操作人ID',
- operator_name VARCHAR(50) COMMENT '操作人姓名',
- action_type VARCHAR(20) NOT NULL COMMENT '动作类型:APPROVE/REJECT/RETURN/TRANSFER/ADD_SIGN',
- action_result VARCHAR(20) COMMENT '动作结果:PASS/REJECT/RETURN/TRANSFER',
- comment TEXT COMMENT '审批意见',
- attachment_urls TEXT COMMENT '附件URL列表(JSON数组)',
- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
- deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
- KEY idx_record_instance_id (instance_id),
- KEY idx_record_task_id (task_id),
- KEY idx_record_operator (operator_id)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审批记录表(操作日志/历史记录)';
- -- ----------------------------
- -- 9. 流程附件表
- -- ----------------------------
- CREATE TABLE IF NOT EXISTS bpm_attachment (
- id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '附件ID',
- instance_id BIGINT NOT NULL COMMENT '流程实例ID',
- task_id BIGINT COMMENT '关联任务ID',
- record_id BIGINT COMMENT '关联审批记录ID',
- node_id VARCHAR(50) COMMENT '节点ID',
- node_name VARCHAR(100) COMMENT '节点名称',
- file_name VARCHAR(500) NOT NULL COMMENT '原始文件名',
- file_url VARCHAR(500) NOT NULL COMMENT '文件访问URL',
- file_size BIGINT COMMENT '文件大小(字节)',
- uploader_id BIGINT COMMENT '上传人ID',
- uploader_name VARCHAR(50) COMMENT '上传人姓名',
- uploader_type VARCHAR(20) COMMENT '上传人类型:SYSTEM/ROLE',
- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
- deleted TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除',
- KEY idx_attachment_instance_id (instance_id),
- KEY idx_attachment_task_id (task_id),
- KEY idx_attachment_record_id (record_id)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程附件表';
- -- 兼容已存在的 MySQL 数据库:补充审批任务子节点字段
- SET @sql = (
- SELECT IF(COUNT(*) = 0,
- 'ALTER TABLE bpm_approval_task ADD COLUMN sub_node_id VARCHAR(50) COMMENT ''子节点ID(父审批节点下的子节点标识)''',
- 'SELECT 1'
- )
- FROM INFORMATION_SCHEMA.COLUMNS
- WHERE TABLE_NAME = 'bpm_approval_task'
- AND COLUMN_NAME = 'sub_node_id'
- AND TABLE_SCHEMA = DATABASE()
- );
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- -- 兼容已存在的 MySQL 数据库:补充角色企业微信字段
- SET @sql = (
- SELECT IF(COUNT(*) = 0,
- 'ALTER TABLE sys_role ADD COLUMN wecom_user_id VARCHAR(100) COMMENT ''企业微信用户ID''',
- 'SELECT 1'
- )
- FROM INFORMATION_SCHEMA.COLUMNS
- WHERE TABLE_NAME = 'sys_role'
- AND COLUMN_NAME = 'wecom_user_id'
- AND TABLE_SCHEMA = DATABASE()
- );
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- SET @sql = (
- SELECT IF(COUNT(*) = 0,
- 'ALTER TABLE sys_role ADD COLUMN wecom_remind_enabled TINYINT DEFAULT 1 COMMENT ''是否开启企微提醒:0-否 1-是''',
- 'SELECT 1'
- )
- FROM INFORMATION_SCHEMA.COLUMNS
- WHERE TABLE_NAME = 'sys_role'
- AND COLUMN_NAME = 'wecom_remind_enabled'
- AND TABLE_SCHEMA = DATABASE()
- );
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- -- ----------------------------
- -- 9. 通知配置表
- -- ----------------------------
- CREATE TABLE IF NOT EXISTS sys_notification_config (
- id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '配置ID',
- config_key VARCHAR(100) NOT NULL UNIQUE COMMENT '配置键',
- config_value VARCHAR(500) COMMENT '配置值',
- config_type VARCHAR(50) COMMENT '配置类型:WECOM/EMAIL/SMS',
- description VARCHAR(200) COMMENT '配置说明',
- status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知配置表';
|