-- ---------------------------- -- BMS 下单计费试算落库 -- charset: utf8mb4 -- prc_quote:相同试算参数唯一,命中则直接返回 -- prc_quote_fee:运费/挂号费各一行,附加费按具体名称各一行 -- ---------------------------- SET NAMES utf8mb4; CREATE TABLE IF NOT EXISTS prc_quote ( quote_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '试算ID', quote_key CHAR(32) NOT NULL COMMENT '试算指纹 MD5(客户|产品|国家|重量|计费日期)', customer_id BIGINT(20) NOT NULL COMMENT '客户ID', product_code VARCHAR(20) NOT NULL COMMENT '产品代码', product_name VARCHAR(100) DEFAULT NULL COMMENT '产品名称', country_code CHAR(2) DEFAULT NULL COMMENT '国家二字码', country_name VARCHAR(50) DEFAULT NULL COMMENT '国家名称', weight DECIMAL(10,3) NOT NULL COMMENT '计费重量KG', biz_date DATE NOT NULL COMMENT '计费日期', tms_id BIGINT(20) DEFAULT NULL COMMENT '多租户系统ID', match_source VARCHAR(30) DEFAULT NULL COMMENT '命中来源 PACKAGE_FIXED/套餐固定价 PACKAGE_DISCOUNT/套餐折扣 PRODUCT_DEFAULT/产品默认价', match_message VARCHAR(200) DEFAULT NULL COMMENT '命中说明', price_set_id BIGINT(20) DEFAULT NULL COMMENT '价格套餐ID', price_set_code VARCHAR(20) DEFAULT NULL COMMENT '套餐编码', price_set_name VARCHAR(50) DEFAULT NULL COMMENT '套餐名称', set_type VARCHAR(10) DEFAULT NULL COMMENT '计价类型 FIXED=固定价 DISCOUNT=折扣', bind_priority INT(11) DEFAULT NULL COMMENT '客户套餐优先级', customer_priceset_id BIGINT(20) DEFAULT NULL COMMENT '客户套餐绑定ID', product_country_id BIGINT(20) DEFAULT NULL COMMENT '关联 bms_product_country.detail_id', weight_min DECIMAL(10,4) DEFAULT NULL COMMENT '重量段下限', weight_max DECIMAL(10,4) DEFAULT NULL COMMENT '重量段上限', weight_label VARCHAR(50) DEFAULT NULL COMMENT '重量段展示', effective_date DATE DEFAULT NULL COMMENT '产品明细生效日', charge_weight DECIMAL(10,3) DEFAULT NULL COMMENT '计费重量', freight_rate DECIMAL(10,4) DEFAULT NULL COMMENT '运费单价', base_freight_rate DECIMAL(10,4) DEFAULT NULL COMMENT '折扣前单价', discount_percent DECIMAL(5,2) DEFAULT NULL COMMENT '折扣百分数', registration_fee DECIMAL(10,2) DEFAULT NULL COMMENT '挂号费', freight_amount DECIMAL(10,2) DEFAULT NULL COMMENT '运费金额', surcharge_amount DECIMAL(10,2) DEFAULT NULL COMMENT '附加费合计', payable_total DECIMAL(10,2) DEFAULT NULL COMMENT '应付总额', currency VARCHAR(10) NOT NULL DEFAULT 'RMB' COMMENT '币种', round_mode VARCHAR(20) NOT NULL DEFAULT 'HALF_UP' COMMENT '取值方式(字典bms_round_mode)', created_by VARCHAR(64) DEFAULT '' COMMENT '创建人', create_time DATETIME DEFAULT NULL COMMENT '创建时间', updated_by VARCHAR(64) DEFAULT '' COMMENT '更新人', update_time DATETIME DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (quote_id), UNIQUE KEY uk_quote_key (quote_key), INDEX idx_quote_customer (customer_id, biz_date), INDEX idx_quote_product (product_code, country_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='计费试算主表'; CREATE TABLE IF NOT EXISTS prc_quote_fee ( fee_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '费用明细ID', quote_id BIGINT(20) 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,运费/挂号费为0', amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '金额', currency VARCHAR(10) NOT NULL DEFAULT 'RMB' COMMENT '币种', round_mode VARCHAR(20) DEFAULT 'HALF_UP' COMMENT '取值方式(字典bms_round_mode)', remark VARCHAR(500) DEFAULT NULL COMMENT '备注', create_time DATETIME DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (fee_id), UNIQUE KEY uk_quote_fee_item (quote_id, fee_type, sc_id), INDEX idx_quote_fee_type (fee_type), CONSTRAINT fk_quote_fee_quote FOREIGN KEY (quote_id) REFERENCES prc_quote (quote_id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='计费试算费用明细-附加费按具体名称一行';