更新皮肤分类功能,添加帮助页面和Yggdrasil教程

This commit is contained in:
Mikuisnotavailable
2025-10-06 18:54:26 +08:00
parent 695001157a
commit 0645948fcc
46 changed files with 4180 additions and 1312 deletions

114
数据库参考.txt Normal file
View File

@@ -0,0 +1,114 @@
-- 用户表,支持积分系统和权限管理
CREATE TABLE `user` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` VARCHAR(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户名',
`password` VARCHAR(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '密码哈希',
`email` VARCHAR(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '邮箱地址',
`avatar` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '头像URL存储在MinIO中',
`points` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户积分',
`role` VARCHAR(50) NOT NULL DEFAULT 'user' COMMENT '用户角色user, vip, admin等',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '用户状态1:正常, 0:禁用, -1:删除)',
`last_login_at` TIMESTAMP NULL COMMENT '最后登录时间',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
UNIQUE KEY `uk_email` (`email`),
INDEX `idx_role` (`role`),
INDEX `idx_status` (`status`),
INDEX `idx_points` (`points` DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户表';
-- 材质表,存储皮肤和披风
CREATE TABLE `textures` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '材质的唯一ID',
`uploader_id` BIGINT UNSIGNED NOT NULL COMMENT '上传者的用户ID',
`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '材质名称',
`description` TEXT COMMENT '材质描述',
`type` ENUM('SKIN', 'CAPE') NOT NULL COMMENT '材质类型(皮肤或披风)',
`url` VARCHAR(255) NOT NULL COMMENT '材质在MinIO中的永久访问URL',
`hash` VARCHAR(64) NOT NULL COMMENT '材质文件的SHA-256哈希值用于快速去重和校验',
`size` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '文件大小(字节)',
`is_public` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否公开到皮肤广场',
`download_count` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '下载次数',
`favorite_count` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '收藏次数',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态1:正常, 0:审核中, -1:已删除)',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_hash` (`hash`),
INDEX `idx_uploader_id` (`uploader_id`),
INDEX `idx_public_type_status` (`is_public`, `type`, `status`),
INDEX `idx_download_count` (`download_count` DESC),
INDEX `idx_favorite_count` (`favorite_count` DESC),
CONSTRAINT `fk_textures_uploader` FOREIGN KEY (`uploader_id`) REFERENCES `user` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='皮肤与披风材质表';
-- 用户材质收藏表
CREATE TABLE `user_texture_favorites` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '收藏记录的唯一ID',
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
`texture_id` BIGINT UNSIGNED NOT NULL COMMENT '收藏的材质ID',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_texture` (`user_id`, `texture_id`),
INDEX `idx_user_id` (`user_id`),
INDEX `idx_texture_id` (`texture_id`),
INDEX `idx_created_at` (`created_at`),
CONSTRAINT `fk_favorites_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_favorites_texture` FOREIGN KEY (`texture_id`) REFERENCES `textures` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户材质收藏表';
-- 用户角色信息表Minecraft档案
CREATE TABLE `profiles` (
`uuid` VARCHAR(36) NOT NULL COMMENT '角色的UUID通常为Minecraft玩家的UUID',
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '关联的用户ID',
`name` VARCHAR(16) NOT NULL COMMENT '角色名Minecraft游戏内名称',
`skin_id` BIGINT UNSIGNED NULL DEFAULT NULL COMMENT '当前使用的皮肤ID',
`cape_id` BIGINT UNSIGNED NULL DEFAULT NULL COMMENT '当前使用的披风ID',
`rsa_private_key` TEXT NOT NULL COMMENT '用于签名的RSA-2048私钥PEM格式',
`is_active` BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否为活跃档案',
`last_used_at` TIMESTAMP NULL COMMENT '最后使用时间',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`uuid`),
UNIQUE KEY `uk_name` (`name`),
INDEX `idx_user_id` (`user_id`),
INDEX `idx_active` (`is_active`),
CONSTRAINT `fk_profiles_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_profiles_skin` FOREIGN KEY (`skin_id`) REFERENCES `textures` (`id`) ON DELETE SET NULL,
CONSTRAINT `fk_profiles_cape` FOREIGN KEY (`cape_id`) REFERENCES `textures` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色信息表Minecraft档案';
-- Casbin权限管理相关表
-- casbin_rule表用于存储RBAC权限规则
CREATE TABLE `casbin_rule` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '规则ID',
`ptype` VARCHAR(100) NOT NULL COMMENT '策略类型p, g等',
`v0` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '主体(用户或角色)',
`v1` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '资源对象',
-- 材质表,存储皮肤和披风
CREATE TABLE `textures` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '材质的唯一ID',
`uploader_id` BIGINT UNSIGNED NOT NULL COMMENT '上传者的用户ID',
`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '材质名称',
`description` TEXT COMMENT '材质描述',
`type` ENUM('SKIN', 'CAPE') NOT NULL COMMENT '材质类型(皮肤或披风)',
`url` VARCHAR(255) NOT NULL COMMENT '材质在MinIO中的永久访问URL',
`hash` VARCHAR(64) NOT NULL COMMENT '材质文件的SHA-256哈希值用于快速去重和校验',
`size` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '文件大小(字节)',
`is_public` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否公开到皮肤广场',
`download_count` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '下载次数',
`favorite_count` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '收藏次数',
"is_silm" BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否为细手臂模型Steve/Alex默认为粗手臂模型Steve',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态1:正常, 0:审核中, -1:已删除)',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_hash` (`hash`),
INDEX `idx_uploader_id` (`uploader_id`),
INDEX `idx_public_type_status` (`is_public`, `type`, `status`),
INDEX `idx_download_count` (`download_count` DESC),
INDEX `idx_favorite_count` (`favorite_count` DESC),
CONSTRAINT `fk_textures_uploader` FOREIGN KEY (`uploader_id`) REFERENCES `user` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='皮肤与披风材质表';