Refactor surcharge management by replacing PrcPriceSetVersionSurcharge with PrcSurchargeRel, introducing price type handling (PRODUCT, SALES, REDLINE) and updating related services, mappers, and front-end components. Enhance validation and error messaging for price type and detail ID requirements. Update database schema to support new relationships and constraints.

This commit is contained in:
wuweihua
2026-10-09 17:20:10 +08:00
parent 70e9c18182
commit 380577f691
19 changed files with 647 additions and 530 deletions
+8 -35
View File
@@ -1351,36 +1351,6 @@ CREATE TABLE `prc_price_set_product` (
CONSTRAINT `fk_psp_set` FOREIGN KEY (`price_set_id`) REFERENCES `prc_price_set` (`price_set_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='价格套餐产品主表-与产品库快照独立';
-- ----------------------------
-- 表结构:`prc_price_set_version_surcharge`
-- ----------------------------
CREATE TABLE `prc_price_set_version_surcharge` (
`psvs_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '版本附加费id',
`psv_id` bigint(20) NOT NULL COMMENT '套餐版本id',
`psd_id` bigint(20) NOT NULL COMMENT '套餐明细id',
`sc_id` bigint(20) DEFAULT NULL COMMENT '来源附加费配置id',
`product_code` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '产品代码(与明细一致)',
`sc_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '附加费名称快照',
`fee_type` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'SURCHARGE' COMMENT '费用类型(字典bms_fee_type)',
`charge_type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计费方式 FIXED固定金额/WEIGHT按重量/RATE按比例',
`charge_value` decimal(18,6) NOT NULL COMMENT '计费数值快照',
`currency` char(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CNY' COMMENT '币种',
`round_mode` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'HALF_UP' COMMENT '取值方式(字典bms_round_mode)',
`country_code` char(2) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '适用国家ISO2(空=全部)',
`sc_note` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
`created_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`updated_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`psvs_id`),
KEY `idx_psvs_psv` (`psv_id`),
KEY `idx_psvs_psd` (`psd_id`),
KEY `idx_psvs_product` (`psv_id`,`product_code`),
KEY `idx_psvs_sc` (`sc_id`),
CONSTRAINT `fk_psvs_psd` FOREIGN KEY (`psd_id`) REFERENCES `prc_price_set_detail` (`psd_id`) ON DELETE CASCADE,
CONSTRAINT `fk_psvs_psv` FOREIGN KEY (`psv_id`) REFERENCES `prc_price_set_version` (`psv_id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=487 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='价格套餐版本附加费快照';
-- ----------------------------
-- 表结构:`prc_quote`
-- ----------------------------
@@ -1488,22 +1458,25 @@ CREATE TABLE `prc_surcharge` (
CREATE TABLE `prc_surcharge_rel` (
`rel_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '关联ID',
`sc_id` bigint(20) NOT NULL COMMENT '附加费配置ID prc_surcharge.sc_id',
`product_id` bigint(20) NOT NULL COMMENT '产品ID product.product_id',
`product_id` bigint(20) NOT NULL COMMENT '产品ID或套餐产品ID:PRODUCT/REDLINE=product.product_id;SALES=prc_price_set_product.psp_id',
`product_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品对接代码 product.product_code',
`detail_id` bigint(20) DEFAULT NULL COMMENT '产品明细ID product_country.detail_id(空=作用于产品全部明细)',
`detail_id` bigint(20) DEFAULT NULL COMMENT '明细ID:PRODUCT/REDLINE=product_country.detail_id(空=产品全部);SALES=prc_price_set_detail.psd_id',
`price_type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'PRODUCT' COMMENT '价格类型 PRODUCT产品价/SALES销售价/REDLINE红线价',
`country_code` char(2) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '适用国家ISO2(空=全部)',
`created_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建人',
`create_time` datetime DEFAULT NULL,
`updated_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新人',
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`rel_id`),
UNIQUE KEY `uk_rel_scope` (`sc_id`,`product_id`,`detail_id`),
UNIQUE KEY `uk_rel_scope` (`sc_id`,`product_id`,`detail_id`,`price_type`,`country_code`),
KEY `idx_rel_sc` (`sc_id`),
KEY `idx_rel_product` (`product_id`),
KEY `idx_rel_product_code` (`product_code`),
KEY `idx_rel_detail` (`detail_id`),
CONSTRAINT `fk_rel_product` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON DELETE CASCADE,
KEY `idx_rel_price_type` (`price_type`),
KEY `idx_rel_country` (`country_code`),
CONSTRAINT `fk_rel_sc` FOREIGN KEY (`sc_id`) REFERENCES `prc_surcharge` (`sc_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='附加费与产品/明细关联表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='附加费关联表(按price_type多态关联产品或套餐)';
-- ----------------------------
-- 表结构:`prc_weight_section_detail`