55 lines
2.8 KiB
SQL
55 lines
2.8 KiB
SQL
-- 应付产品有效期。同一产品多次导入各留一版,用这张表记录生效区间和是否生效。可重复执行。
|
|
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
|
|
);
|