121 lines
5.6 KiB
SQL
121 lines
5.6 KiB
SQL
-- System Tool Service Database Schema
|
|
-- Run this script to create required tables
|
|
|
|
-- System Configs Table
|
|
CREATE TABLE IF NOT EXISTS `system_configs` (
|
|
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
`tenant_id` INT NOT NULL DEFAULT 1,
|
|
`config_group` VARCHAR(64) NOT NULL COMMENT 'Config group name',
|
|
`config_key` VARCHAR(128) NOT NULL COMMENT 'Config key',
|
|
`config_value` TEXT COMMENT 'Config value',
|
|
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
UNIQUE KEY `uk_tenant_group_key` (`tenant_id`, `config_group`, `config_key`),
|
|
INDEX `idx_tenant_group` (`tenant_id`, `config_group`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='System configuration table';
|
|
|
|
-- Operation Logs Table
|
|
CREATE TABLE IF NOT EXISTS `operation_logs` (
|
|
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
`tenant_id` INT NOT NULL DEFAULT 1,
|
|
`user_id` INT COMMENT 'User ID',
|
|
`user_name` VARCHAR(64) COMMENT 'User name',
|
|
`module` VARCHAR(64) COMMENT 'Module name',
|
|
`action` VARCHAR(64) COMMENT 'Action name',
|
|
`method` VARCHAR(10) COMMENT 'HTTP method',
|
|
`path` VARCHAR(255) COMMENT 'Request path',
|
|
`ip` VARCHAR(45) COMMENT 'Client IP',
|
|
`user_agent` VARCHAR(512) COMMENT 'User agent',
|
|
`request_params` TEXT COMMENT 'Request parameters',
|
|
`response_code` INT COMMENT 'HTTP response code',
|
|
`execution_time` INT COMMENT 'Execution time in ms',
|
|
`remark` VARCHAR(512) COMMENT 'Remark',
|
|
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX `idx_user_id` (`user_id`),
|
|
INDEX `idx_module` (`module`),
|
|
INDEX `idx_created_at` (`created_at`),
|
|
INDEX `idx_user_module_action` (`user_id`, `module`, `action`),
|
|
INDEX `idx_tenant_created` (`tenant_id`, `created_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Operation logs table';
|
|
|
|
-- Audit Logs Table
|
|
CREATE TABLE IF NOT EXISTS `audit_logs` (
|
|
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
`tenant_id` INT NOT NULL DEFAULT 1,
|
|
`user_id` INT COMMENT 'User ID',
|
|
`user_name` VARCHAR(64) COMMENT 'User name',
|
|
`module` VARCHAR(64) COMMENT 'Module name',
|
|
`action` VARCHAR(64) COMMENT 'Action name',
|
|
`target_type` VARCHAR(64) COMMENT 'Target entity type',
|
|
`target_id` BIGINT COMMENT 'Target entity ID',
|
|
`old_value` TEXT COMMENT 'Old value (JSON)',
|
|
`new_value` TEXT COMMENT 'New value (JSON)',
|
|
`ip` VARCHAR(45) COMMENT 'Client IP',
|
|
`user_agent` VARCHAR(512) COMMENT 'User agent',
|
|
`result` VARCHAR(32) COMMENT 'Operation result',
|
|
`error_message` VARCHAR(512) COMMENT 'Error message if failed',
|
|
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX `idx_module_action` (`module`, `action`),
|
|
INDEX `idx_user_id` (`user_id`),
|
|
INDEX `idx_target` (`target_type`, `target_id`),
|
|
INDEX `idx_created_at` (`created_at`),
|
|
INDEX `idx_tenant_created` (`tenant_id`, `created_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Audit logs table';
|
|
|
|
-- Pull Records Table (for data cleanup)
|
|
CREATE TABLE IF NOT EXISTS `pull_records` (
|
|
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
`tenant_id` INT NOT NULL DEFAULT 1,
|
|
`platform` VARCHAR(32) COMMENT 'Platform name (pdd/jd/dy)',
|
|
`pull_type` VARCHAR(32) COMMENT 'Pull type (order/product/waybill)',
|
|
`status` VARCHAR(32) COMMENT 'Status (pending/success/failed)',
|
|
`start_time` DATETIME COMMENT 'Pull start time',
|
|
`end_time` DATETIME COMMENT 'Pull end time',
|
|
`total_count` INT DEFAULT 0 COMMENT 'Total pulled count',
|
|
`success_count` INT DEFAULT 0 COMMENT 'Success count',
|
|
`fail_count` INT DEFAULT 0 COMMENT 'Failed count',
|
|
`error_message` VARCHAR(1024) COMMENT 'Error message if failed',
|
|
`request_params` TEXT COMMENT 'Request parameters',
|
|
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX `idx_platform` (`platform`),
|
|
INDEX `idx_created_at` (`created_at`),
|
|
INDEX `idx_tenant_status` (`tenant_id`, `status`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Pull records table for tracking sync operations';
|
|
|
|
-- Insert default system configs
|
|
INSERT INTO `system_configs` (`tenant_id`, `config_group`, `config_key`, `config_value`) VALUES
|
|
(1, 'basic', 'site_name', 'ERP SaaS 系统'),
|
|
(1, 'basic', 'site_url', 'https://erp.example.com'),
|
|
(1, 'basic', 'site_logo', '/logo.png'),
|
|
(1, 'basic', 'copyright', '© 2024 ERP SaaS'),
|
|
(1, 'order', 'auto_approve', 'false'),
|
|
(1, 'order', 'approve_timeout_minutes', '30'),
|
|
(1, 'order', 'auto_reject_timeout_minutes', '60'),
|
|
(1, 'order', 'enable_stock_freeze', 'true'),
|
|
(1, 'order', 'enable_audit_log', 'true'),
|
|
(1, 'stock', 'enable_warning', 'true'),
|
|
(1, 'stock', 'default_warning_threshold', '10'),
|
|
(1, 'stock', 'enable_negative_stock', 'false'),
|
|
(1, 'stock', 'auto_adjust_warning', 'false'),
|
|
(1, 'express', 'default_express', 'SF'),
|
|
(1, 'express', 'enable_electronic_waybill', 'true'),
|
|
(1, 'express', 'waybill_cache_hours', '24'),
|
|
(1, 'notify', 'enable_dingtalk', 'false'),
|
|
(1, 'notify', 'dingtalk_webhook', ''),
|
|
(1, 'notify', 'enable_sms', 'false'),
|
|
(1, 'notify', 'sms_provider', 'aliyun'),
|
|
(1, 'notify', 'notify_audit_timeout', 'true'),
|
|
(1, 'notify', 'notify_stock_warning', 'true'),
|
|
(1, 'security', 'enable_mfa', 'true'),
|
|
(1, 'security', 'session_timeout_minutes', '120'),
|
|
(1, 'security', 'max_login_attempts', '5'),
|
|
(1, 'security', 'password_min_length', '8'),
|
|
(1, 'security', 'enable_captcha', 'true'),
|
|
(1, 'storage', 'driver', 'local'),
|
|
(1, 'storage', 'local_path', '/storage/uploads'),
|
|
(1, 'storage', 'cos_bucket', ''),
|
|
(1, 'storage', 'cos_region', 'ap-guangzhou'),
|
|
(1, 'storage', 'cos_secret_id', ''),
|
|
(1, 'storage', 'cos_secret_key', '')
|
|
ON DUPLICATE KEY UPDATE `config_value` = VALUES(`config_value`);
|