更新
This commit is contained in:
1 parent
012f8edf8b
commit
36ff960fbd
33 files changed
+1644
-344
No files matched your search
@@ -0,0 +1,49 @@
|
||||
-- =============================================================
|
||||
-- yz_system_menu 增加「是否必须登录」字段 require_login
|
||||
--
|
||||
-- 用途:免登录控制从模块级下沉到菜单级——Platform 菜单管理逐条配置
|
||||
-- 某菜单(功能入口)是否允许移动端游客(持游客令牌)免登录使用。
|
||||
-- 1 = 必须登录(默认,保持既有行为)
|
||||
-- 0 = 可免登录使用(进入 nav 公开菜单 /api/menus/public)
|
||||
--
|
||||
-- 关联:yz_system_modules.require_login 保留但移动端不再作为判定依据,
|
||||
-- 以菜单级开关为准(模块宫格是否可点 = 该模块下存在免登录菜单)。
|
||||
--
|
||||
-- 幂等:MySQL 的 ALTER TABLE ADD COLUMN 不支持 IF NOT EXISTS,
|
||||
-- 重复执行会报 1060 Duplicate column name。这里用 information_schema
|
||||
-- 判断列是否存在,缺失才拼 ADD COLUMN,再通过 PREPARE 执行。
|
||||
-- 约定:本脚本在 mysql 客户端手动执行(同一会话保持 PREPARE 生效)。
|
||||
-- =============================================================
|
||||
|
||||
SET @sql := CONCAT(
|
||||
'ALTER TABLE `yz_system_menu` ',
|
||||
IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'yz_system_menu'
|
||||
AND COLUMN_NAME = 'require_login') = 0,
|
||||
'ADD COLUMN `require_login` TINYINT NOT NULL DEFAULT 1 COMMENT ''1=必须登录 0=可免登录使用'' AFTER `is_visible`',
|
||||
''
|
||||
)
|
||||
);
|
||||
|
||||
-- 列已存在时 @sql 仅剩 'ALTER TABLE `yz_system_menu` ',替换为无害语句
|
||||
SET @sql := IF(RIGHT(TRIM(@sql), 1) = '`', 'SELECT 1 AS column_already_exists', @sql);
|
||||
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- =============================================================
|
||||
-- 初始放开「便捷工具」的三个免登录功能(确认菜单标题后再执行):
|
||||
--
|
||||
-- SELECT id, title, path FROM `yz_system_menu`
|
||||
-- WHERE title IN ('记事本', '日程提醒', '账号管理') AND delete_time IS NULL;
|
||||
--
|
||||
-- UPDATE `yz_system_menu`
|
||||
-- SET `require_login` = 0
|
||||
-- WHERE title IN ('记事本', '日程提醒', '账号管理');
|
||||
--
|
||||
-- 说明:父级目录菜单如需游客可见,也要一并置 0;
|
||||
-- 后续新模块按需放开,全部走 Platform 菜单管理界面配置。
|
||||
-- =============================================================
|
||||
@@ -0,0 +1,46 @@
|
||||
-- =============================================================
|
||||
-- yz_system_modules 增加「是否必须登录」字段 require_login
|
||||
--
|
||||
-- 用途:Platform 模块管理可配置某业务模块是否允许移动端免登录访问。
|
||||
-- 1 = 必须登录(默认,保持既有行为)
|
||||
-- 0 = 可免登录使用
|
||||
--
|
||||
-- 幂等:MySQL 的 ALTER TABLE ADD COLUMN 不支持 IF NOT EXISTS,
|
||||
-- 重复执行会报 1060 Duplicate column name。这里用 information_schema
|
||||
-- 判断列是否存在,缺失才拼 ADD COLUMN,再通过 PREPARE 执行。
|
||||
-- 约定:本脚本在 mysql 客户端手动执行(同一会话保持 PREPARE 生效)。
|
||||
-- =============================================================
|
||||
|
||||
SET @sql := CONCAT(
|
||||
'ALTER TABLE `yz_system_modules` ',
|
||||
IF(
|
||||
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'yz_system_modules'
|
||||
AND COLUMN_NAME = 'require_login') = 0,
|
||||
'ADD COLUMN `require_login` TINYINT NOT NULL DEFAULT 1 COMMENT ''1=必须登录 0=可免登录使用'' AFTER `is_show`',
|
||||
''
|
||||
)
|
||||
);
|
||||
|
||||
-- 列已存在时 @sql 仅剩 'ALTER TABLE `yz_system_modules` ',替换为无害语句
|
||||
SET @sql := IF(RIGHT(TRIM(@sql), 1) = '`', 'SELECT 1 AS column_already_exists', @sql);
|
||||
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- =============================================================
|
||||
-- 方案 B(兜底):不支持会话变量 / PREPARE 的执行器(工单系统等),
|
||||
-- 改用下面的纯静态语句。注意:本条不幂等,列已存在会报
|
||||
-- 1060 Duplicate column,执行前先用 information_schema 自查:
|
||||
--
|
||||
-- SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
-- WHERE TABLE_SCHEMA = DATABASE()
|
||||
-- AND TABLE_NAME = 'yz_system_modules'
|
||||
-- AND COLUMN_NAME = 'require_login'; -- 返回 0 才执行 ALTER
|
||||
--
|
||||
-- ALTER TABLE `yz_system_modules`
|
||||
-- ADD COLUMN `require_login` TINYINT NOT NULL DEFAULT 1
|
||||
-- COMMENT '1=必须登录 0=可免登录使用' AFTER `is_show`;
|
||||
-- =============================================================
|
||||
@@ -0,0 +1,33 @@
|
||||
-- =============================================================
|
||||
-- 游客(免登录模块)身份与通用数据表
|
||||
-- 对应代码:models.GuestUser / models.GuestData、services/gueststore
|
||||
-- 幂等:CREATE TABLE IF NOT EXISTS,可重复执行
|
||||
-- 用途:小程序用手机号授权换取“游客轻身份”,免登录模块产生的数据
|
||||
-- 按 guest_id + module 存入 yz_guest_data(文档式,永久保留不清理);
|
||||
-- 正式登录后按手机号把数据合并进正式账号(merged_uid 标记,行置 is_deleted=2)。
|
||||
-- =============================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `yz_guest_user` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`phone` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '微信验证手机号(游客唯一标识)',
|
||||
`openid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '小程序 openid(可选溯源)',
|
||||
`unionid` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'unionid(可为空)',
|
||||
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '首次授权时间',
|
||||
`last_active_time` DATETIME NULL COMMENT '最近一次签发/活动时间',
|
||||
`merged_uid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '转正并入的 AuthIdentity.ID,0=未合并',
|
||||
`merged_time` DATETIME NULL COMMENT '合并时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_phone` (`phone`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='游客轻身份(微信手机号授权签发)';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `yz_guest_data` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`guest_id` BIGINT UNSIGNED NOT NULL COMMENT 'yz_guest_user.id',
|
||||
`module` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '所属业务模块:notebook / schedule / passwordStore / …',
|
||||
`payload` TEXT NOT NULL COMMENT '业务条目 JSON 序列化(结构由各模块自定义)',
|
||||
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '0正常 1已删除(保留不清理) 2已合并进正式账号',
|
||||
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`update_time` DATETIME NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_guest_module` (`guest_id`, `module`, `is_deleted`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='游客通用数据(按模块文档式存储,永久保留)';
|
||||
Reference in new issue
Block a user