修改测试
This commit is contained in:
@@ -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 = '';
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
@@ -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='计费试算费用明细-按费用类型一行';
|
||||
Reference in New Issue
Block a user