69 lines
3.1 KiB
SQL
69 lines
3.1 KiB
SQL
-- 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='应付费用明细';
|