fix(education): remove duplicated pay/mall menus from education subtree and add tenant_id to new tables

This commit is contained in:
2026-08-01 14:44:29 +08:00
parent 4586747331
commit 35376df79b
2 changed files with 75 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
-- 教育管理子树只保留教育自身菜单;移除复制的支付/商城/系统菜单,
-- 相关页面继续通过顶层"支付管理""商城系统""系统管理-三方登录"访问。
DO $$
DECLARE
remaining INTEGER;
BEGIN
IF to_regclass('system_menu') IS NULL THEN
RETURN;
END IF;
-- 先清理角色授权引用,避免外键阻塞
IF to_regclass('system_role_menu') IS NOT NULL THEN
DELETE FROM system_role_menu
WHERE menu_id IN (
6867, 6868, 6869, 6870, 6871, 6872, 6873, 6874, 6875, 6876, 6877, 6878, 6879, 6880,
6890, 6891, 6892, 6893, 6894, 6895, 6896, 6897, 6898, 6899, 6900, 6901, 6902, 6903,
6904, 6905, 6906, 6907, 6908, 6909, 6910, 6911, 6920, 6921, 6922, 6923, 6924, 6925,
6926, 6927, 6928, 6929, 6930, 6931, 6932, 6933, 6934, 6935, 6936, 6937, 6938, 6939,
6940, 6941, 6942, 6943, 6944, 6950, 6951, 6952, 6953, 6954, 6955, 6956, 6957, 6958,
6959, 6960, 6961, 6962, 6963, 6964, 6965, 6966, 6967, 6970, 6971, 6972, 6973, 6974,
6975, 6976, 6977, 6978, 6979, 6980, 6981, 6982, 6990, 6991, 6992, 6993, 6994, 6995,
6996, 6997, 6998, 6999, 7000, 7001, 7002, 7003, 7004, 7005, 7006, 7010, 7011, 7012,
7013, 7014, 7015, 7020, 7021, 7022, 7023, 7024, 7025, 7026, 7027, 7028, 7029, 7030,
7031, 7040, 7041, 7042, 7043, 7044, 7045, 7046, 7047, 7048, 7049, 7050, 7051, 7060,
7061, 7062, 7063, 7064, 7065, 7066, 7067
);
END IF;
DELETE FROM system_menu
WHERE id IN (
6867, 6868, 6869, 6870, 6871, 6872, 6873, 6874, 6875, 6876, 6877, 6878, 6879, 6880,
6890, 6891, 6892, 6893, 6894, 6895, 6896, 6897, 6898, 6899, 6900, 6901, 6902, 6903,
6904, 6905, 6906, 6907, 6908, 6909, 6910, 6911, 6920, 6921, 6922, 6923, 6924, 6925,
6926, 6927, 6928, 6929, 6930, 6931, 6932, 6933, 6934, 6935, 6936, 6937, 6938, 6939,
6940, 6941, 6942, 6943, 6944, 6950, 6951, 6952, 6953, 6954, 6955, 6956, 6957, 6958,
6959, 6960, 6961, 6962, 6963, 6964, 6965, 6966, 6967, 6970, 6971, 6972, 6973, 6974,
6975, 6976, 6977, 6978, 6979, 6980, 6981, 6982, 6990, 6991, 6992, 6993, 6994, 6995,
6996, 6997, 6998, 6999, 7000, 7001, 7002, 7003, 7004, 7005, 7006, 7010, 7011, 7012,
7013, 7014, 7015, 7020, 7021, 7022, 7023, 7024, 7025, 7026, 7027, 7028, 7029, 7030,
7031, 7040, 7041, 7042, 7043, 7044, 7045, 7046, 7047, 7048, 7049, 7050, 7051, 7060,
7061, 7062, 7063, 7064, 7065, 7066, 7067
);
-- 校验:教育根下仅保留 14 个教育自有二级菜单
SELECT count(*) INTO remaining
FROM system_menu
WHERE deleted = false AND parent_id = 6800
AND id IN (6817, 6818, 6819, 6820, 6832, 6837, 6842, 6843, 6844, 6846, 6849, 6853, 6858, 6862, 6881);
IF remaining <> 15 THEN
RAISE EXCEPTION 'Education menu cleanup unexpected state: %', remaining USING ERRCODE = '23505';
END IF;
END;
$$;

View File

@@ -0,0 +1,22 @@
-- 租户拦截器会对所有未忽略的表自动注入 tenant_id 条件,
-- V4462-V4464 新建的 BaseDO 表缺少该列,导致查询报 column "tenant_id" does not exist。
DO $$
DECLARE
r record;
BEGIN
FOR r IN SELECT unnest(ARRAY[
'member_address', 'member_config', 'member_group', 'member_level',
'member_level_record', 'member_experience_record', 'member_point_record',
'member_sign_in_config', 'member_sign_in_record', 'member_tag',
'promotion_article', 'promotion_article_category', 'promotion_banner',
'promotion_diy_page', 'promotion_diy_template', 'promotion_kefu_conversation',
'promotion_kefu_message', 'promotion_point_activity', 'promotion_point_product',
'pay_demo_order', 'pay_demo_withdraw'
]) AS tbl
LOOP
IF to_regclass(r.tbl) IS NOT NULL THEN
EXECUTE format('ALTER TABLE %I ADD COLUMN IF NOT EXISTS tenant_id BIGINT NOT NULL DEFAULT 0', r.tbl);
END IF;
END LOOP;
END;
$$;