feat: 新增禾圃集应用版本更新管理功能

新增禾圃集应用(appCode=garden)的版本策略管理功能,包括后端接口、前端API、页面路由、数据库迁移及相关常量配置,支持对不同平台和渠道的版本策略进行增删改查操作,与现有讯工捷使(appCode=im)版本管理功能保持一致的架构和交互逻辑。
This commit is contained in:
Austin
2026-10-12 15:31:11 +08:00
parent 315d97895b
commit 2c5995073f
15 changed files with 526 additions and 28 deletions
@@ -0,0 +1,12 @@
SET @now := NOW();
SET @cultivateRootId := (SELECT `id` FROM `hg_admin_menu` WHERE `name` = 'cultivateManager' LIMIT 1);
INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`)
SELECT NULL, @cultivateRootId, '版本更新', 'cultivateAppReleaseIndex', 'app-release', '', '2', '', '/cultivate/app-release/list', '', '/cultivate/appRelease/index', '1', 'cultivateAppReleaseIndex', '0', '0', '', '0', '0', '0', '2', CONCAT('tr_', @cultivateRootId, ' '), '50', '禾圃集应用版本策略(app_code=garden)', '1', @now, @now
WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name` = 'cultivateAppReleaseIndex');
SET @cultivateAppReleaseId := (SELECT `id` FROM `hg_admin_menu` WHERE `name` = 'cultivateAppReleaseIndex' LIMIT 1);
INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`)
SELECT NULL, @cultivateAppReleaseId, '版本编辑', 'cultivateAppReleaseEdit', '', '', '3', '', '/cultivate/app-release/edit', '', '', '1', '', '0', '0', '', '0', '0', '0', '3', CONCAT('tr_', @cultivateRootId, ' tr_', @cultivateAppReleaseId, ' '), '10', '', '1', @now, @now
WHERE NOT EXISTS (SELECT 1 FROM `hg_admin_menu` WHERE `name` = 'cultivateAppReleaseEdit');
@@ -0,0 +1,26 @@
-- 存量库升级:im_app_releases 增加 app_code 维度(im=讯工捷使, garden=禾圃集)
-- 幂等:已存在 app_code 列时跳过 ALTER(通过 information_schema 判断由执行方保证)
ALTER TABLE `im_app_releases`
ADD COLUMN `app_code` VARCHAR(32) NOT NULL DEFAULT 'im' AFTER `id`;
ALTER TABLE `im_app_releases`
DROP INDEX `uk_im_app_releases_platform_channel`,
ADD UNIQUE KEY `uk_im_app_releases_app_platform_channel` (`app_code`, `platform`, `channel`);
INSERT INTO `im_app_releases`
(`app_code`, `platform`, `channel`, `latest_version`, `min_supported_version`, `update_type`, `release_notes`)
VALUES
('garden', 'ios', 'stable', '1.0.0', '1.0.0', 'none', '当前已是最新版本。'),
('garden', 'android', 'stable', '1.0.0', '1.0.0', 'none', '当前已是最新版本。')
ON DUPLICATE KEY UPDATE `platform` = VALUES(`platform`);
-- 菜单
SOURCE cultivate_app_release_menu.sql;
-- 超管角色绑定新菜单(role_id 按实际环境调整)
SET @cultivateAppReleaseMenuId := (SELECT `id` FROM `hg_admin_menu` WHERE `name` = 'cultivateAppReleaseIndex' LIMIT 1);
SET @cultivateAppReleaseEditId := (SELECT `id` FROM `hg_admin_menu` WHERE `name` = 'cultivateAppReleaseEdit' LIMIT 1);
INSERT IGNORE INTO `hg_admin_role_menu` (`role_id`, `menu_id`)
SELECT r.`id`, m.`menu_id` FROM (SELECT 1 AS id) r
CROSS JOIN (SELECT @cultivateAppReleaseMenuId AS menu_id UNION SELECT @cultivateAppReleaseEditId) m;
@@ -1,6 +1,8 @@
-- Global MeetingIM client release policy. This table belongs to hotgo and is not tenant-scoped.
-- app_code: im=讯工捷使主应用, garden=禾圃集(后续新增 app 在此扩展)
CREATE TABLE IF NOT EXISTS `im_app_releases` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`app_code` VARCHAR(32) NOT NULL DEFAULT 'im',
`platform` VARCHAR(32) NOT NULL,
`channel` VARCHAR(32) NOT NULL DEFAULT 'stable',
`latest_version` VARCHAR(64) NOT NULL,
@@ -15,12 +17,14 @@ CREATE TABLE IF NOT EXISTS `im_app_releases` (
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (`id`),
UNIQUE KEY `uk_im_app_releases_platform_channel` (`platform`, `channel`)
UNIQUE KEY `uk_im_app_releases_app_platform_channel` (`app_code`, `platform`, `channel`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='MeetingIM全局客户端版本策略';
INSERT INTO `im_app_releases`
(`platform`, `channel`, `latest_version`, `min_supported_version`, `update_type`, `release_notes`)
(`app_code`, `platform`, `channel`, `latest_version`, `min_supported_version`, `update_type`, `release_notes`)
VALUES
('ios', 'stable', '1.0.0', '1.0.0', 'none', '当前已是最新版本。'),
('android', 'stable', '1.0.0', '1.0.0', 'none', '当前已是最新版本。')
('im', 'ios', 'stable', '1.0.0', '1.0.0', 'none', '当前已是最新版本。'),
('im', 'android', 'stable', '1.0.0', '1.0.0', 'none', '当前已是最新版本。'),
('garden', 'ios', 'stable', '1.0.0', '1.0.0', 'none', '当前已是最新版本。'),
('garden', 'android', 'stable', '1.0.0', '1.0.0', 'none', '当前已是最新版本。')
ON DUPLICATE KEY UPDATE `platform` = VALUES(`platform`);