feat: support full community post editing

This commit is contained in:
hajimi
2026-08-02 20:38:47 +08:00
parent f78580b2b9
commit 2358603eda
9 changed files with 638 additions and 72 deletions
@@ -0,0 +1,71 @@
SET @post_menu_id = COALESCE(
(SELECT `id` FROM `la_system_menu` WHERE `perms` = 'community.communityPost/lists' LIMIT 1),
(SELECT `id` FROM `la_system_menu` WHERE `component` = 'community/post/index' LIMIT 1)
);
SET @old_edit_menu_id = (
SELECT `id` FROM `la_system_menu`
WHERE `perms` = 'community.communityPost/editContent'
LIMIT 1
);
SET @edit_menu_id = (
SELECT `id` FROM `la_system_menu`
WHERE `perms` = 'community.communityPost/edit'
LIMIT 1
);
UPDATE `la_system_menu`
SET `name` = '编辑帖子',
`perms` = 'community.communityPost/edit',
`update_time` = UNIX_TIMESTAMP()
WHERE `id` = @old_edit_menu_id
AND @edit_menu_id IS NULL;
INSERT INTO `la_system_menu`
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_cache`, `is_show`, `is_disable`, `create_time`, `update_time`)
SELECT
@post_menu_id, 'A', '编辑帖子', '', 0, 'community.communityPost/edit', '', '', '', '', 0, 0, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
WHERE @post_menu_id IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM `la_system_menu` WHERE `perms` = 'community.communityPost/edit'
);
SET @edit_menu_id = (
SELECT `id` FROM `la_system_menu`
WHERE `perms` = 'community.communityPost/edit'
LIMIT 1
);
INSERT INTO `la_system_role_menu` (`role_id`, `menu_id`)
SELECT 1, @edit_menu_id
WHERE @edit_menu_id IS NOT NULL
AND NOT EXISTS (
SELECT 1
FROM `la_system_role_menu`
WHERE `role_id` = 1
AND `menu_id` = @edit_menu_id
);
INSERT INTO `la_system_role_menu` (`role_id`, `menu_id`)
SELECT old_role_menu.`role_id`, @edit_menu_id
FROM `la_system_role_menu` old_role_menu
WHERE old_role_menu.`menu_id` = @old_edit_menu_id
AND @old_edit_menu_id IS NOT NULL
AND @old_edit_menu_id <> @edit_menu_id
AND NOT EXISTS (
SELECT 1
FROM `la_system_role_menu` current_role_menu
WHERE current_role_menu.`role_id` = old_role_menu.`role_id`
AND current_role_menu.`menu_id` = @edit_menu_id
);
DELETE FROM `la_system_role_menu`
WHERE `menu_id` = @old_edit_menu_id
AND @old_edit_menu_id IS NOT NULL
AND @old_edit_menu_id <> @edit_menu_id;
DELETE FROM `la_system_menu`
WHERE `id` = @old_edit_menu_id
AND @old_edit_menu_id IS NOT NULL
AND @old_edit_menu_id <> @edit_menu_id;