-- ---------------------------- -- BMS price set: 客户中心 · 价格套餐管理 -- charset: utf8mb4 -- menu_id: 2200-2210 -- 相对 PRD《价格表优化建表.sql》差异: -- 1. prc_price_set 增加 price_set_code / set_type / default_discount,status 对齐原型 D/A/E/R/S -- 2. 新增 prc_price_set_detail(原型 FIXED/DISCOUNT 明细,运费+挂号费同行) -- 3. prc_customer_price_set 增加 customer_name / bind_priority -- ---------------------------- CREATE TABLE IF NOT EXISTS prc_price_set ( price_set_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '价格套餐id', price_set_code VARCHAR(20) DEFAULT NULL COMMENT '套餐编码 SET0001', price_set_name VARCHAR(50) NOT NULL COMMENT '报价名称', price_set_note VARCHAR(200) DEFAULT NULL COMMENT '备注', set_type VARCHAR(10) NOT NULL DEFAULT 'FIXED' COMMENT '计价类型 FIXED=固定价 DISCOUNT=折扣', default_discount DECIMAL(5,2) DEFAULT NULL COMMENT '默认折扣百分数 1-99,仅 DISCOUNT', default_type CHAR(1) DEFAULT NULL COMMENT '默认套餐 Y=默认', calculate_sign CHAR(1) DEFAULT NULL COMMENT '试算标记 Y=外部试算套餐', effective_date DATE NOT NULL COMMENT '生效日期', expire_date DATE DEFAULT NULL COMMENT '失效日期(空=长期)', status CHAR(1) NOT NULL DEFAULT 'D' COMMENT 'D草稿 A审核中 E生效 R驳回 S停用', tms_id BIGINT(20) DEFAULT NULL COMMENT '多租户系统ID', created_by VARCHAR(64) DEFAULT '' COMMENT '创建人', created_at DATETIME DEFAULT NULL COMMENT '创建时间', updated_by VARCHAR(64) DEFAULT '' COMMENT '更新人', updated_at DATETIME DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (price_set_id), UNIQUE KEY uk_price_set_code (price_set_code), INDEX idx_ps_status (status), INDEX idx_ps_type (set_type), INDEX idx_ps_tms (tms_id), INDEX idx_ps_effective (effective_date, expire_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='价格方案表-报价基本资料'; CREATE TABLE IF NOT EXISTS prc_price_set_detail ( psd_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '套餐明细id', price_set_id BIGINT(20) NOT NULL COMMENT '价格套餐id', product_code VARCHAR(10) NOT NULL COMMENT '产品代码', product_name VARCHAR(50) DEFAULT NULL COMMENT '产品名称', country_code CHAR(2) DEFAULT NULL COMMENT '国家二字码', country_name VARCHAR(50) DEFAULT NULL COMMENT '国家名称', zd_id BIGINT(20) DEFAULT NULL COMMENT '收费区划id', wsd_id BIGINT(20) DEFAULT NULL COMMENT '重量段明细id', weight_label VARCHAR(50) DEFAULT NULL COMMENT '重量段展示', fv_value DECIMAL(10,4) DEFAULT NULL COMMENT '运费单价 RMB/KG', fv_registration_fee DECIMAL(10,2) DEFAULT NULL COMMENT '挂号费 RMB/票', discount_value DECIMAL(5,2) DEFAULT NULL COMMENT '明细折扣百分数,DISCOUNT 可覆盖默认', pr_id INT(11) DEFAULT NULL COMMENT '关联价格规则id', created_at DATETIME DEFAULT NULL COMMENT '创建时间', updated_at DATETIME DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (psd_id), INDEX idx_psd_set (price_set_id), INDEX idx_psd_product (price_set_id, product_code, country_code), CONSTRAINT fk_psd_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='价格套餐明细-固定价/折扣范围'; 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_name VARCHAR(100) DEFAULT NULL COMMENT '客户名称(展示)', bind_priority INT(11) NOT NULL DEFAULT 1 COMMENT '优先级,数字越小越优先', pr_begindate DATETIME NOT NULL COMMENT '价格开始生效日期', pr_enddate DATETIME DEFAULT NULL COMMENT '价格失效日期(空=长期)', price_set_note VARCHAR(100) DEFAULT NULL COMMENT '备注', created_by VARCHAR(64) DEFAULT '' COMMENT '创建人', created_at DATETIME DEFAULT NULL COMMENT '创建时间', updated_by VARCHAR(64) DEFAULT '' COMMENT '更新人', updated_at DATETIME DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (customer_priceset_id), 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 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户套餐表-客户某时间段内使用的套餐'; -- 客户中心目录 INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT 2200, N'客户中心', 0, 8, 'customer', NULL, '', '', 1, 0, 'M', '0', '0', '', 'peoples', 'admin', sysdate(), N'客户中心目录' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2200); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT 2201, N'价格套餐管理', 2200, 1, 'set', 'price/set/priceSet', '', 'PriceSet', 1, 0, 'C', '0', '0', 'price:set:list', 'shopping', 'admin', sysdate(), N'价格套餐管理菜单' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2201); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT 2202, N'套餐查询', 2201, 1, '', NULL, '', '', 1, 0, 'F', '0', '0', 'price:set:query', '#', 'admin', sysdate(), '' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2202); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT 2203, N'套餐新增', 2201, 2, '', NULL, '', '', 1, 0, 'F', '0', '0', 'price:set:add', '#', 'admin', sysdate(), '' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2203); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT 2204, N'套餐修改', 2201, 3, '', NULL, '', '', 1, 0, 'F', '0', '0', 'price:set:edit', '#', 'admin', sysdate(), '' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2204); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT 2205, N'套餐删除', 2201, 4, '', NULL, '', '', 1, 0, 'F', '0', '0', 'price:set:remove', '#', 'admin', sysdate(), '' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2205); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT 2206, N'套餐审核', 2201, 5, '', NULL, '', '', 1, 0, 'F', '0', '0', 'price:set:audit', '#', 'admin', sysdate(), '' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2206); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT 2208, N'新建套餐', 2200, 2, 'setCreate', 'price/set/create', '', 'PriceSetCreate', 1, 0, 'C', '1', '0', 'price:set:add', '#', 'admin', sysdate(), N'新建套餐隐藏页' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2208); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) SELECT 2209, N'套餐详情', 2200, 3, 'setDetail', 'price/set/detail', '', 'PriceSetDetail', 1, 0, 'C', '1', '0', 'price:set:query', '#', 'admin', sysdate(), N'套餐详情隐藏页' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2209); -- role_id=1 grants INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2200 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2200); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2201 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2201); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2202 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2202); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2203 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2203); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2204 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2204); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2205 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2205); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2206 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2206); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2208 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2208); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2209 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2209);