优化
This commit is contained in:
@@ -2,6 +2,39 @@ CREATE DATABASE IF NOT EXISTS baiyue_finance
|
||||
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
|
||||
USE baiyue_finance;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fin_fee_source (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
source_system VARCHAR(32) NOT NULL DEFAULT 'FIRSTLEG',
|
||||
source_fee_id BIGINT UNSIGNED NOT NULL,
|
||||
source_fee_version INT UNSIGNED NOT NULL,
|
||||
customer_id BIGINT UNSIGNED NOT NULL,
|
||||
order_id BIGINT UNSIGNED NULL,
|
||||
inbound_id BIGINT UNSIGNED NULL,
|
||||
fee_item_name VARCHAR(200) NOT NULL,
|
||||
amount DECIMAL(20,6) NOT NULL,
|
||||
currency_code CHAR(3) NOT NULL DEFAULT 'CNY',
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'AVAILABLE',
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_fin_fee_source (source_system, source_fee_id, source_fee_version),
|
||||
KEY idx_fin_fee_source_customer (customer_id, status),
|
||||
CONSTRAINT chk_fin_fee_source_currency CHECK (currency_code = 'CNY'),
|
||||
CONSTRAINT chk_fin_fee_source_amount CHECK (amount >= 0)
|
||||
) ENGINE=InnoDB COMMENT='Firstleg费用来源快照池;账单人工选择并固化明细';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fin_inbox_event (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
event_id VARCHAR(128) NOT NULL,
|
||||
source_system VARCHAR(32) NOT NULL,
|
||||
event_type VARCHAR(64) NOT NULL,
|
||||
payload JSON NOT NULL,
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'RECEIVED',
|
||||
received_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
processed_at DATETIME(3) NULL,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_fin_inbox_event (source_system, event_id)
|
||||
) ENGINE=InnoDB COMMENT='Firstleg费用事件幂等接收记录';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fin_subject (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
subject_code VARCHAR(64) NOT NULL,
|
||||
@@ -136,7 +169,7 @@ CREATE TABLE IF NOT EXISTS fin_cost (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
tenant_id BIGINT UNSIGNED NOT NULL,
|
||||
cost_no VARCHAR(64) NOT NULL,
|
||||
cost_type VARCHAR(24) NOT NULL COMMENT 'TICKET/CONTAINER',
|
||||
cost_type VARCHAR(24) NOT NULL COMMENT 'SINGLE_ORDER/CONTAINER_SHARED',
|
||||
order_id BIGINT UNSIGNED NULL,
|
||||
inbound_id BIGINT UNSIGNED NULL,
|
||||
container_id BIGINT UNSIGNED NULL,
|
||||
@@ -167,8 +200,8 @@ CREATE TABLE IF NOT EXISTS fin_cost (
|
||||
CONSTRAINT chk_fin_cost_currency CHECK (currency_code = 'CNY'),
|
||||
CONSTRAINT chk_fin_cost_amount CHECK (cost_amount > 0),
|
||||
CONSTRAINT chk_fin_cost_target CHECK (
|
||||
(cost_type = 'TICKET' AND order_id IS NOT NULL AND container_id IS NULL)
|
||||
OR (cost_type = 'CONTAINER' AND container_id IS NOT NULL)
|
||||
(cost_type = 'SINGLE_ORDER' AND order_id IS NOT NULL AND container_id IS NULL)
|
||||
OR (cost_type = 'CONTAINER_SHARED' AND container_id IS NOT NULL)
|
||||
)
|
||||
) ENGINE=InnoDB COMMENT='人工成本;单票直接归属,整柜按体积分摊';
|
||||
|
||||
@@ -191,6 +224,21 @@ CREATE TABLE IF NOT EXISTS fin_cost_allocation (
|
||||
CONSTRAINT chk_fin_cost_allocation_amount CHECK (allocated_amount >= 0)
|
||||
) ENGINE=InnoDB COMMENT='整柜成本按有效体积分摊的可审计结果';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fin_bill_revision (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
tenant_id BIGINT UNSIGNED NOT NULL,
|
||||
bill_id BIGINT UNSIGNED NOT NULL,
|
||||
version INT UNSIGNED NOT NULL,
|
||||
reason VARCHAR(500) NULL,
|
||||
bill_snapshot JSON NOT NULL,
|
||||
line_snapshot JSON NOT NULL,
|
||||
created_by BIGINT UNSIGNED NOT NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_fin_bill_revision (bill_id, version),
|
||||
KEY idx_fin_bill_revision_tenant (tenant_id, bill_id)
|
||||
) ENGINE=InnoDB COMMENT='出账后调整前的不可变账单及明细版本快照';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fin_idempotency_record (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
tenant_id BIGINT UNSIGNED NOT NULL,
|
||||
|
||||
Reference in New Issue
Block a user