11
This commit is contained in:
1 parent
a099e72517
commit
fc36d1b17a
96 files changed
+6804
-209
No files matched your search
@@ -0,0 +1,106 @@
|
||||
-- App 可信安装包、版本发布及逐版本灰测名单。适用于 MySQL 5.7/8.0。
|
||||
-- 选择目标业务库后执行,先备份。此脚本只创建新表与菜单,不发布版本、不改写会员。
|
||||
-- 重复执行安全。部署顺序为执行脚本、发布 Java、分配菜单权限、发布 PC、重新打原生基座。
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `member_app_version_package` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '可信包编号',
|
||||
`app_id` varchar(100) NOT NULL COMMENT 'uni-app AppID',
|
||||
`platform` varchar(64) NOT NULL COMMENT '规范CSV目标平台,android/ios/harmony',
|
||||
`package_type` varchar(8) NOT NULL COMMENT 'apk/wgt',
|
||||
`file_name` varchar(255) NOT NULL COMMENT '原始文件名',
|
||||
`file_size` bigint NOT NULL COMMENT '文件大小,字节',
|
||||
`sha256` char(64) NOT NULL COMMENT '真实文件SHA-256',
|
||||
`md5` char(32) NOT NULL COMMENT '原生运行时文件校验MD5',
|
||||
`download_url` varchar(2048) NOT NULL COMMENT '已有存储生成的地址',
|
||||
`version_code` int NOT NULL COMMENT 'APK原生版本码或WGT资源版本码',
|
||||
`version_name` varchar(100) NOT NULL COMMENT '包清单版本名',
|
||||
`native_version_code` int DEFAULT NULL COMMENT 'APK原生基座版本码',
|
||||
`resource_version_code` int NOT NULL COMMENT '包内资源版本码',
|
||||
`package_name` varchar(200) DEFAULT NULL COMMENT 'APK原生包名',
|
||||
`creator` varchar(64) DEFAULT '',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updater` varchar(64) DEFAULT '',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`deleted` bit(1) NOT NULL DEFAULT b'0',
|
||||
`tenant_id` bigint NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_app_package_tenant` (`tenant_id`, `app_id`, `platform`, `package_type`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='App可信安装包';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `member_app_version` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '版本发布编号',
|
||||
`package_id` bigint NOT NULL COMMENT '可信包编号',
|
||||
`app_id` varchar(100) NOT NULL COMMENT 'uni-app AppID快照',
|
||||
`platform` varchar(64) NOT NULL COMMENT '规范CSV目标平台,android/ios/harmony',
|
||||
`package_type` varchar(8) NOT NULL COMMENT 'apk/wgt',
|
||||
`version_code` int NOT NULL COMMENT '按包类型比较的版本码',
|
||||
`version_name` varchar(100) NOT NULL COMMENT '展示版本名',
|
||||
`native_version_code` int DEFAULT NULL COMMENT 'APK原生基座版本码',
|
||||
`resource_version_code` int NOT NULL COMMENT '目标资源版本码',
|
||||
`package_name` varchar(200) DEFAULT NULL COMMENT 'APK原生包名',
|
||||
`update_content` text NOT NULL COMMENT '纯文本更新说明',
|
||||
`force_update` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否强制更新',
|
||||
`release_scope` varchar(16) NOT NULL DEFAULT 'all' COMMENT 'all/members',
|
||||
`status` varchar(16) NOT NULL DEFAULT 'draft' COMMENT 'draft/published/offline',
|
||||
`min_native_version_code` int DEFAULT NULL COMMENT 'WGT最低兼容基座,包含边界',
|
||||
`max_native_version_code` int DEFAULT NULL COMMENT 'WGT最高兼容基座,NULL无上限',
|
||||
`publish_time` datetime DEFAULT NULL COMMENT '最近发布时间',
|
||||
`creator` varchar(64) DEFAULT '',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updater` varchar(64) DEFAULT '',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`deleted` bit(1) NOT NULL DEFAULT b'0',
|
||||
`tenant_id` bigint NOT NULL DEFAULT 0,
|
||||
`active_unique_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 THEN 1 ELSE NULL END) STORED COMMENT '有效记录唯一标记',
|
||||
`android_active_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 AND LOCATE(',android,', CONCAT(',', `platform`, ',')) > 0 THEN 1 ELSE NULL END) STORED COMMENT 'android有效目标唯一标记',
|
||||
`ios_active_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 AND LOCATE(',ios,', CONCAT(',', `platform`, ',')) > 0 THEN 1 ELSE NULL END) STORED COMMENT 'ios有效目标唯一标记',
|
||||
`harmony_active_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 AND LOCATE(',harmony,', CONCAT(',', `platform`, ',')) > 0 THEN 1 ELSE NULL END) STORED COMMENT 'harmony有效目标唯一标记',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_app_version_active` (`tenant_id`,`app_id`,`platform`,`package_type`,`version_code`,`active_unique_flag`),
|
||||
UNIQUE KEY `uk_app_version_android_active` (`tenant_id`,`app_id`,`package_type`,`version_code`,`android_active_flag`),
|
||||
UNIQUE KEY `uk_app_version_ios_active` (`tenant_id`,`app_id`,`package_type`,`version_code`,`ios_active_flag`),
|
||||
UNIQUE KEY `uk_app_version_harmony_active` (`tenant_id`,`app_id`,`package_type`,`version_code`,`harmony_active_flag`),
|
||||
KEY `idx_app_version_check` (`tenant_id`,`app_id`,`platform`,`status`,`resource_version_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='App版本发布';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `member_app_version_member` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`version_id` bigint NOT NULL COMMENT '版本发布编号',
|
||||
`member_id` bigint NOT NULL COMMENT '真实会员主键',
|
||||
`creator` varchar(64) DEFAULT '',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updater` varchar(64) DEFAULT '',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`deleted` bit(1) NOT NULL DEFAULT b'0',
|
||||
`tenant_id` bigint NOT NULL DEFAULT 0,
|
||||
`active_unique_flag` tinyint GENERATED ALWAYS AS (CASE WHEN `deleted` = 0 THEN 1 ELSE NULL END) STORED,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_app_version_member_active` (`tenant_id`,`version_id`,`member_id`,`active_unique_flag`),
|
||||
KEY `idx_app_version_member_lookup` (`tenant_id`,`member_id`,`version_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='逐版本灰测会员';
|
||||
|
||||
-- 优先复用既有 app/version/index 菜单及其父目录,保留已分配角色关系。
|
||||
SET @app_version_menu_id = (SELECT MIN(id) FROM system_menu WHERE component = 'app/version/index' AND deleted = 0);
|
||||
SET @app_parent_id = (SELECT parent_id FROM system_menu WHERE id = @app_version_menu_id);
|
||||
SET @app_parent_id = COALESCE(@app_parent_id, (SELECT MIN(id) FROM system_menu WHERE type = 1 AND path IN ('app', '/app') AND deleted = 0));
|
||||
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, status, visible, keep_alive, always_show, creator, updater, deleted)
|
||||
SELECT '应用管理', '', 1, 30, 0, 'app', 'ep:iphone', NULL, 0, b'1', b'1', b'1', '1', '1', b'0'
|
||||
WHERE @app_parent_id IS NULL;
|
||||
SET @app_parent_id = COALESCE(@app_parent_id, (SELECT MIN(id) FROM system_menu WHERE type = 1 AND path IN ('app','/app') AND deleted = 0));
|
||||
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, updater, deleted)
|
||||
SELECT '版本管理', 'app:version:query', 2, 10, @app_parent_id, 'version', 'ep:upload-filled', 'app/version/index', 'AppVersion', 0, b'1', b'1', b'1', '1', '1', b'0'
|
||||
WHERE @app_version_menu_id IS NULL;
|
||||
SET @app_version_menu_id = (SELECT MIN(id) FROM system_menu WHERE component = 'app/version/index' AND deleted = 0);
|
||||
UPDATE system_menu SET permission = 'app:version:query', component_name = 'AppVersion', update_time = CURRENT_TIMESTAMP
|
||||
WHERE id = @app_version_menu_id;
|
||||
|
||||
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, status, visible, keep_alive, always_show, creator, updater, deleted)
|
||||
SELECT buttons.name, buttons.permission, 3, buttons.sort, @app_version_menu_id, '', 0, b'1', b'1', b'1', '1', '1', b'0'
|
||||
FROM (
|
||||
SELECT '版本查询' name, 'app:version:query' permission, 1 sort
|
||||
UNION ALL SELECT '版本新增', 'app:version:create', 2
|
||||
UNION ALL SELECT '版本编辑', 'app:version:update', 3
|
||||
UNION ALL SELECT '版本删除', 'app:version:delete', 4
|
||||
UNION ALL SELECT '版本发布与下架', 'app:version:publish', 5
|
||||
) buttons
|
||||
WHERE NOT EXISTS (SELECT 1 FROM system_menu current_menu WHERE current_menu.parent_id = @app_version_menu_id AND current_menu.permission = buttons.permission AND current_menu.deleted = 0);
|
||||
Reference in new issue
Block a user