erp-java/services/system-tool-service/sql/schema.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`);