first commit

This commit is contained in:
Your Name
2026-09-08 11:40:15 +08:00
commit a5353f7eb5
9568 changed files with 1646214 additions and 0 deletions
@@ -0,0 +1,20 @@
-- 自动分配日志:支持回退(撤回已自动分配的医助至上一任/一中心原医助)
-- 表:zyt_tcm_diagnosis_auto_assign_log
-- 接口权限:stats.autoAssignLog/rollback
ALTER TABLE `zyt_tcm_diagnosis_auto_assign_log`
ADD COLUMN `rollback_time` int unsigned NOT NULL DEFAULT 0 COMMENT '回退时间戳,0=未回退' AFTER `create_time`,
ADD COLUMN `rollback_admin_id` int unsigned NOT NULL DEFAULT 0 COMMENT '回退操作人管理员ID' AFTER `rollback_time`,
ADD COLUMN `rollback_admin_name` varchar(64) NOT NULL DEFAULT '' COMMENT '回退操作人姓名' AFTER `rollback_admin_id`;
SET @menu_id = (SELECT id FROM zyt_system_menu WHERE perms = 'stats.autoAssignLog/lists' LIMIT 1);
INSERT INTO `zyt_system_menu`
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_show`, `is_disable`, `create_time`, `update_time`)
SELECT
@menu_id, 'A', '回退自动分配', '', 1,
'stats.autoAssignLog/rollback', '', '',
'', '', 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
FROM DUAL
WHERE @menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'stats.autoAssignLog/rollback');
@@ -0,0 +1,82 @@
-- 控糖消消乐:真实用户周榜、幂等局记录与轻量分享访问关系
CREATE TABLE IF NOT EXISTS `zyt_tcm_game_weekly_allocator` (
`week_start` date NOT NULL COMMENT '周一日期',
`sex` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '同行组性别:0未知 1男 2女',
`create_time` int unsigned NOT NULL DEFAULT 0,
`update_time` int unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`week_start`, `sex`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='控糖消消乐每周同行分组并发锁';
CREATE TABLE IF NOT EXISTS `zyt_tcm_game_weekly_group` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`week_start` date NOT NULL COMMENT '周一日期',
`sex` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '同行组性别:0未知 1男 2女',
`group_no` int unsigned NOT NULL DEFAULT 1 COMMENT '同周同性别的分组序号',
`member_count` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '组内人数,最多7人',
`create_time` int unsigned NOT NULL DEFAULT 0,
`update_time` int unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_week_sex_group` (`week_start`, `sex`, `group_no`),
KEY `idx_week_sex_capacity` (`week_start`, `sex`, `member_count`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='控糖消消乐每周7人同行分组';
CREATE TABLE IF NOT EXISTS `zyt_tcm_game_weekly_score` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`group_id` int unsigned NOT NULL COMMENT '周同行分组ID',
`week_start` date NOT NULL COMMENT '周一日期',
`user_id` int unsigned NOT NULL COMMENT '小程序用户ID',
`learned_count` int unsigned NOT NULL DEFAULT 0 COMMENT '本周认糖数量',
`best_score` int unsigned NOT NULL DEFAULT 0 COMMENT '本周单局最高分',
`games_played` int unsigned NOT NULL DEFAULT 0 COMMENT '本周完成局数',
`share_count` int unsigned NOT NULL DEFAULT 0 COMMENT '本周发起分享次数',
`nickname` varchar(32) NOT NULL DEFAULT '' COMMENT '周榜昵称快照',
`avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '周榜头像快照',
`sex` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '性别快照:0未知 1男 2女',
`create_time` int unsigned NOT NULL DEFAULT 0,
`update_time` int unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_week_user` (`week_start`, `user_id`),
KEY `idx_group_rank` (`group_id`, `learned_count`, `best_score`),
KEY `idx_user` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='控糖消消乐每周认糖成绩';
CREATE TABLE IF NOT EXISTS `zyt_tcm_game_session` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`session_key` varchar(64) NOT NULL COMMENT '客户端每局随机标识,用于重试去重',
`user_id` int unsigned NOT NULL COMMENT '小程序用户ID',
`week_start` date NOT NULL COMMENT '该局计入的周一日期',
`learned_count` int unsigned NOT NULL DEFAULT 0 COMMENT '本局已确认认糖数量',
`last_score` int unsigned NOT NULL DEFAULT 0 COMMENT '本局最新分数',
`ended` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '是否已经结束并计入完成局数',
`create_time` int unsigned NOT NULL DEFAULT 0,
`update_time` int unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_session_key` (`session_key`),
KEY `idx_user_week` (`user_id`, `week_start`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='控糖消消乐局进度去重';
CREATE TABLE IF NOT EXISTS `zyt_tcm_game_share_invite` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`invite_code` varchar(16) NOT NULL COMMENT '不包含用户ID的分享码',
`user_id` int unsigned NOT NULL COMMENT '分享人小程序用户ID',
`week_start` date NOT NULL COMMENT '分享码所属周',
`open_count` int unsigned NOT NULL DEFAULT 0 COMMENT '去重后的受邀打开人数',
`create_time` int unsigned NOT NULL DEFAULT 0,
`update_time` int unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_invite_code` (`invite_code`),
UNIQUE KEY `uk_week_user` (`week_start`, `user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='控糖消消乐微信分享码';
CREATE TABLE IF NOT EXISTS `zyt_tcm_game_share_visit` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`invite_code` varchar(16) NOT NULL COMMENT '来源分享码',
`inviter_user_id` int unsigned NOT NULL COMMENT '分享人用户ID',
`visitor_user_id` int unsigned NOT NULL COMMENT '受邀打开用户ID',
`create_time` int unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_invite_visitor` (`invite_code`, `visitor_user_id`),
KEY `idx_inviter` (`inviter_user_id`),
KEY `idx_visitor` (`visitor_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='控糖消消乐分享打开记录(不做强绑定)';
@@ -0,0 +1,55 @@
-- 仅用于已经执行过旧版小游戏建表脚本的数据库。
-- 新安装直接执行 add_tcm_endless_game_platform.sql 即可。
CREATE TABLE IF NOT EXISTS `zyt_tcm_game_weekly_allocator` (
`week_start` date NOT NULL COMMENT '周一日期',
`sex` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '同行组性别:0未知 1男 2女',
`create_time` int unsigned NOT NULL DEFAULT 0,
`update_time` int unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`week_start`, `sex`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='控糖消消乐每周同行分组并发锁';
SET @has_old_visit_index = (
SELECT COUNT(*) FROM information_schema.statistics
WHERE table_schema = DATABASE()
AND table_name = 'zyt_tcm_game_share_visit'
AND index_name = 'uk_inviter_visitor'
);
SET @drop_old_visit_index_sql = IF(
@has_old_visit_index > 0,
'ALTER TABLE `zyt_tcm_game_share_visit` DROP INDEX `uk_inviter_visitor`',
'SELECT 1'
);
PREPARE drop_old_visit_index_stmt FROM @drop_old_visit_index_sql;
EXECUTE drop_old_visit_index_stmt;
DEALLOCATE PREPARE drop_old_visit_index_stmt;
SET @has_invite_visit_index = (
SELECT COUNT(*) FROM information_schema.statistics
WHERE table_schema = DATABASE()
AND table_name = 'zyt_tcm_game_share_visit'
AND index_name = 'uk_invite_visitor'
);
SET @add_invite_visit_index_sql = IF(
@has_invite_visit_index = 0,
'ALTER TABLE `zyt_tcm_game_share_visit` ADD UNIQUE INDEX `uk_invite_visitor` (`invite_code`, `visitor_user_id`)',
'SELECT 1'
);
PREPARE add_invite_visit_index_stmt FROM @add_invite_visit_index_sql;
EXECUTE add_invite_visit_index_stmt;
DEALLOCATE PREPARE add_invite_visit_index_stmt;
SET @has_inviter_index = (
SELECT COUNT(*) FROM information_schema.statistics
WHERE table_schema = DATABASE()
AND table_name = 'zyt_tcm_game_share_visit'
AND index_name = 'idx_inviter'
);
SET @add_inviter_index_sql = IF(
@has_inviter_index = 0,
'ALTER TABLE `zyt_tcm_game_share_visit` ADD INDEX `idx_inviter` (`inviter_user_id`)',
'SELECT 1'
);
PREPARE add_inviter_index_stmt FROM @add_inviter_index_sql;
EXECUTE add_inviter_index_stmt;
DEALLOCATE PREPARE add_inviter_index_stmt;