修改测试

This commit is contained in:
wuweihua
2026-09-10 14:23:58 +08:00
parent 05c8d3f90d
commit 6d718320e6
24 changed files with 475 additions and 210 deletions
@@ -0,0 +1,10 @@
-- prc_customer_price_set add customer_code
SET NAMES utf8mb4;
ALTER TABLE prc_customer_price_set
ADD COLUMN customer_code varchar(50) DEFAULT NULL COMMENT '客户代码' AFTER customer_id;
UPDATE prc_customer_price_set cps
INNER JOIN bms_customer c ON c.customer_id = cps.customer_id
SET cps.customer_code = c.customer_code
WHERE cps.customer_code IS NULL OR cps.customer_code = '';
+3 -2
View File
@@ -61,7 +61,8 @@ CREATE TABLE IF NOT EXISTS prc_price_set_detail (
CREATE TABLE IF NOT EXISTS prc_customer_price_set (
customer_priceset_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '客户价格套餐id',
price_set_id BIGINT(20) NOT NULL COMMENT '价格套餐id',
customer_id BIGINT(20) NOT NULL COMMENT '客户id',
customer_id BIGINT(20) DEFAULT NULL COMMENT '客户id',
customer_code VARCHAR(50) DEFAULT NULL COMMENT '客户代码',
customer_name VARCHAR(100) DEFAULT NULL COMMENT '客户名称(展示)',
bind_priority INT(11) NOT NULL DEFAULT 1 COMMENT '优先级,数字越小越优先',
pr_begindate DATETIME NOT NULL COMMENT '价格开始生效日期',
@@ -72,7 +73,7 @@ CREATE TABLE IF NOT EXISTS prc_customer_price_set (
updated_by VARCHAR(64) DEFAULT '' COMMENT '更新人',
updated_at DATETIME DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (customer_priceset_id),
UNIQUE KEY uk_customer_one_set (customer_id),
UNIQUE KEY uk_customer_one_set (customer_code),
INDEX idx_customer_set (customer_id, pr_begindate, pr_enddate),
INDEX idx_cps_set (price_set_id),
CONSTRAINT fk_customer_price_set FOREIGN KEY (price_set_id) REFERENCES prc_price_set (price_set_id) ON DELETE RESTRICT
+41
View File
@@ -0,0 +1,41 @@
-- ======================================================================
-- prc_quote / prc_quote_fee 主键改 UUID 改造(VARCHAR(36))
--
-- 背景:测试大数据量场景下 UUID 主键的查询性能
-- 风险:会清空 prc_quote / prc_quote_fee 全部数据
-- 备份:quote_uuid_backup.sql(保留原始 schema)
--
-- 关键顺序(踩坑总结):
-- 1. DROP FOREIGN KEY
-- 2. TRUNCATE TABLE
-- 3. **先 MODIFY 列去掉 AUTO_INCREMENT**,再 DROP PRIMARY KEY
-- 否则 InnoDB 报 1075「auto column must be defined as a key」
-- 4. 再 MODIFY quote_id 列 / ADD PRIMARY KEY
-- 5. ADD FOREIGN KEY 时**会自动创建 quote_id 索引**,不要额外 ADD INDEX
-- 否则报 1061「Duplicate key name」
--
-- 回滚:参考 quote_uuid_backup.sql,重建表结构即可
-- ======================================================================
-- === 1. 解除外键 ===
ALTER TABLE prc_quote_fee DROP FOREIGN KEY fk_quote_fee_quote;
-- === 2. 清空数据 ===
TRUNCATE TABLE prc_quote_fee;
TRUNCATE TABLE prc_quote;
-- === 3. prc_quote: PK 改 UUID ===
-- 顺序很关键:先 MODIFY 列去掉 AUTO_INCREMENT
ALTER TABLE prc_quote MODIFY quote_id VARCHAR(36) NOT NULL COMMENT '试算ID(UUID)';
ALTER TABLE prc_quote DROP PRIMARY KEY;
ALTER TABLE prc_quote ADD PRIMARY KEY (quote_id);
-- === 4. prc_quote_fee: PK 改 UUID; quote_id 列同步 ===
ALTER TABLE prc_quote_fee MODIFY fee_id VARCHAR(36) NOT NULL COMMENT '费用明细ID(UUID)';
ALTER TABLE prc_quote_fee DROP PRIMARY KEY;
ALTER TABLE prc_quote_fee MODIFY quote_id VARCHAR(36) NOT NULL COMMENT '试算ID(UUID)';
ALTER TABLE prc_quote_fee ADD PRIMARY KEY (fee_id);
-- === 5. 重建 FK(自动创建 idx_quote_fee_quote_id 索引,无需手动加) ===
ALTER TABLE prc_quote_fee ADD CONSTRAINT fk_quote_fee_quote
FOREIGN KEY (quote_id) REFERENCES prc_quote (quote_id) ON DELETE CASCADE;
+61
View File
@@ -0,0 +1,61 @@
CREATE TABLE `prc_quote` (
`quote_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '试算ID',
`quote_key` char(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '试算指纹 MD5(客户|产品|国家|重量|计费日期)',
`customer_id` bigint(20) NOT NULL COMMENT '客户ID',
`product_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品代码',
`product_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '产品名称',
`country_code` char(2) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '国家二字码',
`country_name` varchar(50) COLLATE utf8mb4_unicode_ci 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) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '命中来源 PACKAGE_FIXED/套餐固定价 PACKAGE_DISCOUNT/套餐折扣 PRODUCT_DEFAULT/产品默认价',
`match_message` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '命中说明',
`price_set_id` bigint(20) DEFAULT NULL COMMENT '价格套餐ID',
`price_set_code` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '套餐编码',
`price_set_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '套餐名称',
`set_type` varchar(10) COLLATE utf8mb4_unicode_ci 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) COLLATE utf8mb4_unicode_ci 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) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'RMB' COMMENT '币种',
`round_mode` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'HALF_UP' COMMENT '取值方式(字典bms_round_mode)',
`created_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建人',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新人',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`quote_id`),
UNIQUE KEY `uk_quote_key` (`quote_key`),
KEY `idx_quote_customer` (`customer_id`,`biz_date`),
KEY `idx_quote_product` (`product_code`,`country_code`)
) ENGINE=InnoDB AUTO_INCREMENT=150000 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='计费试算主表';
CREATE TABLE `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) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用类型(字典bms_fee_type)',
`fee_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '费用名称(附加费取配置名称)',
`sc_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '附加费配置ID,运费/挂号费为0',
`amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '金额',
`currency` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'RMB' COMMENT '币种',
`round_mode` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'HALF_UP' COMMENT '取值方式(字典bms_round_mode)',
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注(附加费明细摘要)',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`fee_id`),
UNIQUE KEY `uk_quote_fee_item` (`quote_id`,`fee_type`,`sc_id`),
KEY `idx_quote_fee_type` (`fee_type`),
KEY `idx_quote_fee_quote_id` (`quote_id`),
CONSTRAINT `fk_quote_fee_quote` FOREIGN KEY (`quote_id`) REFERENCES `prc_quote` (`quote_id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=236791 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='计费试算费用明细-按费用类型一行';