-- 应付产品有效期。同一产品多次导入各留一版,用这张表记录生效区间和是否生效。可重复执行。 SET NAMES utf8mb4; CREATE TABLE IF NOT EXISTS `pay_product_term` ( `term_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '有效期ID', `dict_value` varchar(100) NOT NULL COMMENT '产品字典值,同一产品的各版本归在一起', `product_id` bigint(20) NOT NULL COMMENT '这一版价格', `version_no` int(11) NOT NULL DEFAULT 1 COMMENT '版本号', `effective_start` date DEFAULT NULL COMMENT '生效开始', `effective_end` date DEFAULT NULL COMMENT '生效结束,空表示不限', `file_path` varchar(500) DEFAULT NULL COMMENT '这一版源文件OSS地址,oss://bucket/key', `status` char(1) NOT NULL DEFAULT '0' COMMENT '0生效 1失效', `created_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `updated_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`term_id`), UNIQUE KEY `uk_pay_term_product` (`product_id`), KEY `idx_pay_term_dict` (`dict_value`, `status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付产品价格有效期'; -- 已有模板补一条生效记录,不覆盖后来手工改过的有效期 INSERT INTO pay_product_term ( dict_value, product_id, version_no, effective_start, status, created_by, create_time ) SELECT ifnull(nullif(dict_value, ''), product_name), product_id, ifnull(version_no, 1), effective_date, '0', ifnull(created_by, ''), ifnull(create_time, sysdate()) FROM pay_product p WHERE (p.channel_id IS NULL OR p.channel_id = '') AND NOT EXISTS (SELECT 1 FROM pay_product_term t WHERE t.product_id = p.product_id); SET @menuId := (SELECT menu_id FROM sys_menu WHERE perms = 'price:pay: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, 5, '', '', 1, 0, 'F', '0', '0', 'price:pay:edit', '#', 'admin', sysdate() WHERE @menuId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:pay:edit'); INSERT INTO sys_role_menu (role_id, menu_id) SELECT DISTINCT rm.role_id, m.menu_id FROM sys_role_menu rm JOIN sys_menu src ON src.menu_id = rm.menu_id AND src.perms = 'price:pay:list' JOIN sys_menu m ON m.perms = 'price:pay:edit' WHERE NOT EXISTS ( SELECT 1 FROM sys_role_menu x WHERE x.role_id = rm.role_id AND x.menu_id = m.menu_id ); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, m.menu_id FROM sys_menu m WHERE m.perms = 'price:pay:edit' AND NOT EXISTS ( SELECT 1 FROM sys_role_menu x WHERE x.role_id = 1 AND x.menu_id = m.menu_id );