渠道管理增加应收关联

This commit is contained in:
wuweihua
2026-11-09 17:27:21 +08:00
parent ace1eb06c0
commit 2632e5aa78
10 changed files with 131 additions and 28 deletions
+22 -2
View File
@@ -4,7 +4,8 @@ SET NAMES utf8mb4;
CREATE TABLE IF NOT EXISTS `srv_channel_product_map` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`channel_id` varchar(50) NOT NULL COMMENT '渠道ID,对应 srv_service_channel.id',
`product_id` bigint(20) NOT NULL COMMENT '产品ID,应付时为价卡产品编号',
`channel_code` varchar(64) DEFAULT NULL COMMENT '渠道编码,对应 srv_service_channel.channel_code',
`product_id` bigint(20) NOT NULL COMMENT '产品ID,应付/应收时为价卡产品编号',
`price_set_id` bigint(20) DEFAULT NULL COMMENT '应收套餐ID,对应 prc_price_set.price_set_id',
`pay_type` varchar(10) NOT NULL COMMENT '收付类型,字典 bms_pay_type:AR应收 AP应付',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
@@ -14,7 +15,8 @@ CREATE TABLE IF NOT EXISTS `srv_channel_product_map` (
PRIMARY KEY (`id`),
UNIQUE KEY `uk_channel_pay_type` (`channel_id`, `pay_type`),
KEY `idx_channel_product_map_product` (`product_id`),
KEY `idx_channel_product_map_price_set` (`price_set_id`)
KEY `idx_channel_product_map_price_set` (`price_set_id`),
KEY `idx_channel_product_map_channel_code` (`channel_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='渠道产品关系映射';
SET @sql = (
@@ -30,6 +32,24 @@ PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @sql_channel_code = (
SELECT IF(
COUNT(*) = 0,
'ALTER TABLE srv_channel_product_map ADD COLUMN channel_code varchar(64) DEFAULT NULL COMMENT ''渠道编码,对应 srv_service_channel.channel_code'' AFTER channel_id, ADD KEY idx_channel_product_map_channel_code (channel_code)',
'SELECT 1'
)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'srv_channel_product_map' AND COLUMN_NAME = 'channel_code'
);
PREPARE stmt FROM @sql_channel_code;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
UPDATE srv_channel_product_map m
INNER JOIN srv_service_channel c ON c.id = m.channel_id
SET m.channel_code = c.channel_code
WHERE m.channel_code IS NULL OR m.channel_code = '';
SET @copy_sql = (
SELECT IF(
COUNT(*) > 0,