-- rename prc_bill -> prc_order_bill, prc_bill_fee -> prc_income_bill_fee, add prc_pay_bill_fee SET NAMES utf8mb4; SET @db := DATABASE(); SET @fk := ( SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_bill_fee' AND CONSTRAINT_TYPE = 'FOREIGN KEY' LIMIT 1 ); SET @sql := IF(@fk IS NOT NULL, CONCAT('ALTER TABLE prc_bill_fee DROP FOREIGN KEY `', @fk, '`'), 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @has_old := ( SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_bill' ); SET @has_new := ( SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_order_bill' ); SET @sql := IF(@has_old > 0 AND @has_new = 0, 'RENAME TABLE prc_bill TO prc_order_bill', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @has_old_fee := ( SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_bill_fee' ); SET @has_new_fee := ( SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_income_bill_fee' ); SET @sql := IF(@has_old_fee > 0 AND @has_new_fee = 0, 'RENAME TABLE prc_bill_fee TO prc_income_bill_fee', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @fk2 := ( SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_income_bill_fee' AND CONSTRAINT_TYPE = 'FOREIGN KEY' LIMIT 1 ); SET @sql := IF(@fk2 IS NULL, 'ALTER TABLE prc_income_bill_fee ADD CONSTRAINT fk_income_bill_fee_order FOREIGN KEY (bill_id) REFERENCES prc_order_bill (bill_id) ON DELETE CASCADE', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; ALTER TABLE prc_order_bill COMMENT = '订单信息主表'; ALTER TABLE prc_income_bill_fee COMMENT = '应收费用明细'; CREATE TABLE IF NOT EXISTS prc_pay_bill_fee ( fee_id VARCHAR(36) NOT NULL COMMENT '费用明细ID', bill_id VARCHAR(36) NOT NULL COMMENT '计费ID', fee_type VARCHAR(30) NOT NULL COMMENT '费用类型(字典bms_fee_type)', fee_name VARCHAR(100) DEFAULT NULL COMMENT '费用名称', sc_id BIGINT(20) NOT NULL DEFAULT 0 COMMENT '附加费配置ID', amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '金额', currency VARCHAR(10) NOT NULL DEFAULT 'CNY' COMMENT '币种', round_mode VARCHAR(20) DEFAULT 'HALF_UP' COMMENT '取值方式', remark VARCHAR(500) DEFAULT NULL COMMENT '备注', create_time DATETIME DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (fee_id), UNIQUE KEY uk_pay_bill_fee_item (bill_id, fee_type, sc_id), INDEX idx_pay_bill_fee_type (fee_type), CONSTRAINT fk_pay_bill_fee_order FOREIGN KEY (bill_id) REFERENCES prc_order_bill (bill_id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付费用明细';