106 lines
7.4 KiB
SQL
106 lines
7.4 KiB
SQL
-- redline_product / redline_product_country: mirror of product / product_country
|
|
-- Run once on existing DB
|
|
|
|
CREATE TABLE IF NOT EXISTS `redline_product` (
|
|
`product_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '红线价产品ID',
|
|
`product_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品对接代码,如 WSP037',
|
|
`product_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品名称',
|
|
`service_level` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '时效等级',
|
|
`cargo_attr` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '走货属性',
|
|
`dest_region` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '目的区域',
|
|
`update_note` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新内容说明',
|
|
`tax_mode` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'TAX_INCLUDED' COMMENT 'TAX_INCLUDED包税 TAX_EXCLUDED不包税',
|
|
`effective_date` datetime DEFAULT NULL COMMENT '目录生效时间(到小时)',
|
|
`expire_date` datetime DEFAULT NULL COMMENT '失效时间(空=长期)',
|
|
`status` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '0待生效 1已生效 2已失效',
|
|
`source_sheet` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源Excel sheet名',
|
|
`pef_id` bigint(20) DEFAULT NULL COMMENT '关联导入价表Excel附件 prc_price_excel_file.pef_id',
|
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
|
`tms_id` int(11) DEFAULT NULL COMMENT '多租户ID',
|
|
`created_by` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
|
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_by` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
|
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`product_id`) USING BTREE,
|
|
UNIQUE KEY `uk_redline_product_code_eff` (`product_code`,`effective_date`),
|
|
KEY `idx_redline_tax_status` (`tax_mode`,`status`) USING BTREE,
|
|
KEY `idx_redline_product_code` (`product_code`),
|
|
KEY `idx_redline_product_pef_id` (`pef_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='红线价产品主表';
|
|
|
|
CREATE TABLE IF NOT EXISTS `redline_product_country` (
|
|
`detail_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '明细ID',
|
|
`product_id` bigint(20) DEFAULT NULL COMMENT '红线价产品ID redline_product.product_id',
|
|
`product_code` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品代码',
|
|
`country_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '国家中文名',
|
|
`country_code` char(2) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'ISO2',
|
|
`zone_id` bigint(20) DEFAULT NULL COMMENT 'prc_zone.zone_id',
|
|
`zone_code` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
|
`zone_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
|
`weight_min` decimal(10,3) DEFAULT NULL COMMENT '重量段最小值KG(含)',
|
|
`weight_max` decimal(10,3) DEFAULT NULL COMMENT '重量段最大值KG(含)',
|
|
`freight_price` decimal(10,4) DEFAULT NULL COMMENT '运费 RMB/KG',
|
|
`registration_fee` decimal(10,2) DEFAULT NULL COMMENT '挂号费 RMB/票',
|
|
`size_limit` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
|
`last_mile` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
|
`lead_time` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
|
`effective_date` datetime DEFAULT NULL COMMENT '生效时间(到小时)',
|
|
`expire_date` datetime DEFAULT NULL COMMENT '失效时间(空=开放)',
|
|
`status` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '0待生效 1已生效 2已失效',
|
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`detail_id`) USING BTREE,
|
|
UNIQUE KEY `uk_redline_country_zone_weight_eff` (`product_code`,`country_name`,`zone_code`,`weight_min`,`weight_max`,`effective_date`),
|
|
KEY `idx_redline_country_code` (`country_code`) USING BTREE,
|
|
KEY `idx_redline_weight_match` (`product_code`,`country_code`,`weight_min`,`weight_max`) USING BTREE,
|
|
KEY `idx_redline_product_eff` (`product_code`,`effective_date`,`expire_date`),
|
|
KEY `idx_redline_country_pid` (`product_id`),
|
|
KEY `idx_redline_country_zone` (`zone_id`),
|
|
CONSTRAINT `fk_redline_country_pid` FOREIGN KEY (`product_id`) REFERENCES `redline_product` (`product_id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='红线价国家服务明细';
|
|
|
|
-- Menu: under 价栶基础 parent (lookup by path price/basic or menu_name)
|
|
-- Adjust @parentId if your env differs
|
|
SET @parentId := (
|
|
SELECT menu_id FROM sys_menu
|
|
WHERE path = 'basic' AND menu_type = 'M'
|
|
ORDER BY menu_id ASC LIMIT 1
|
|
);
|
|
SET @parentId := IFNULL(@parentId, (
|
|
SELECT parent_id FROM sys_menu
|
|
WHERE perms = 'price:product:list' OR component LIKE '%price/basic/product%'
|
|
ORDER BY menu_id ASC LIMIT 1
|
|
));
|
|
|
|
-- skip insert if already exists
|
|
SET @exists := (
|
|
SELECT COUNT(1) FROM sys_menu WHERE perms = 'price:redline:list' OR component = 'price/basic/redline/index'
|
|
);
|
|
|
|
-- Only insert when parent found and not exists
|
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
|
SELECT '红线价', @parentId, 15, 'redline', 'price/basic/redline/index', 1, 0, 'C', '0', '0', 'price:redline:list', 'money', 'admin', sysdate(), '红线价目录'
|
|
WHERE @parentId IS NOT NULL AND @exists = 0;
|
|
|
|
SET @menuId := (SELECT menu_id FROM sys_menu WHERE perms = 'price:redline:list' LIMIT 1);
|
|
|
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
|
|
SELECT '红线价查询', @menuId, 1, '', '', 1, 0, 'F', '0', '0', 'price:redline:query', '#', 'admin', sysdate()
|
|
WHERE @menuId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:redline:query');
|
|
|
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
|
|
SELECT '红线价新增', @menuId, 2, '', '', 1, 0, 'F', '0', '0', 'price:redline:add', '#', 'admin', sysdate()
|
|
WHERE @menuId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:redline:add');
|
|
|
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
|
|
SELECT '红线价修改', @menuId, 3, '', '', 1, 0, 'F', '0', '0', 'price:redline:edit', '#', 'admin', sysdate()
|
|
WHERE @menuId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:redline:edit');
|
|
|
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
|
|
SELECT '红线价删除', @menuId, 4, '', '', 1, 0, 'F', '0', '0', 'price:redline:remove', '#', 'admin', sysdate()
|
|
WHERE @menuId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:redline:remove');
|
|
|
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
|
|
SELECT '红线价导入', @menuId, 5, '', '', 1, 0, 'F', '0', '0', 'price:redline:import', '#', 'admin', sysdate()
|
|
WHERE @menuId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:redline:import');
|