# 游戏资讯论坛 **Repository Path**: imprprpr/game-information-forum ## Basic Information - **Project Name**: 游戏资讯论坛 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-22 - **Last Updated**: 2026-06-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Galgame 游戏资讯论坛 (GalForum) 一个基于 Node.js + Express + MySQL/MariaDB 开发的 Galgame 游戏资讯与交流论坛。项目采用原生 HTML/CSS/JavaScript 构建前端,使用 Glassmorphism(磨砂玻璃/毛玻璃)现代极简主义设计风格,并实现了完整的 MVC 架构和后端 API 服务。 ## 项目特点与主要功能 * **现代极简视觉风格**:采用深色毛玻璃微光质感(Glassmorphism),搭配平滑的微交互动画,界面精致高端。 * **游戏资讯库**:展示经典 Galgame 列表,支持按标题搜索、按开发商和标签多维度过滤筛选。 * **游戏详情页**:展示游戏详细信息(如原作名、发售日、平均评分、开发商信息和关联标签等)。 * **交互式评分与评论系统**:用户可以对游戏进行 1-10 分的打分并发表评论,后台自动实时计算游戏的平均评分。 * **用户认证系统**:支持用户注册和登录,基于 JWT 实现安全的身份验证与状态管理,支持退出登录。 * **完整 MVC 架构**:后端代码结构清晰,分为 Routes(路由)、Controllers(控制器)、Services(业务服务逻辑)和 Config(数据库配置),并配备全局错误处理中间件。 --- ## 技术栈 * **前端**:原生 HTML5、CSS3 (Flexbox/Grid 布局, 玻璃拟态特效)、原生 JavaScript (ES6, Fetch API) * **后端**:Node.js、Express * **数据库**:MySQL / MariaDB * **身份验证**:JSON Web Token (JWT)、Bcrypt.js (密码加密) --- ## 数据库设计 项目共设计了 6 张关联数据表(完全符合学校作业要求的 >=5 张表设计): 1. `users` (用户表):存储用户名、加密密码、邮箱、头像及角色(管理员/普通用户)。 2. `developers` (开发商表):存储厂商名称、官方网站、详细描述等。 3. `games` (游戏表):存储游戏标题、原名、封面、描述、发售日、关联开发商 ID、平均分等。 4. `reviews` (评价/评论表):存储用户对游戏的评分(1-10分)及评语,与 `users` 和 `games` 多对一关联。 5. `tags` (标签表):存储系统支持的游戏标签,如“泣系”、“科幻”、“胃疼”、“废萌”、“奇幻”等。 6. `game_tags` (游戏标签多对多关联表):多对多关系表,连接 `games` 与 `tags`。 ### 数据库的 JSON 数据转换 (任务检查点) 项目已将上述设计的数据库表结构和初始测试数据转换为 JSON 格式,保存在根目录的 `database_json` 文件夹下,用于任务检查与数据交换: * [**`database_json/schema.json`**](./database_json/schema.json):以 JSON 格式完整描述了数据库结构、各个表的字段类型、约束与关联关系。 * [**`database_json/data.json`**](./database_json/data.json):将数据库中所有的初始测试数据(用户、开发商、游戏、评论和标签数据)完整转换为 JSON 格式存储。 --- ## 快速上手与本地部署 ### 1. 准备环境 确保本地已安装 [Node.js](https://nodejs.org/) 和 MySQL/MariaDB。 ### 2. 初始化数据库 * 打开本地的数据库管理工具(如 **HeidiSQL**、Navicat 等)。 * 导入并执行项目根目录下的 [`database.sql`](./database.sql) 文件。 * 该脚本会自动创建 `galgame_forum` 数据库及所有表,并写入初始测试数据(包含《CLANNAD》《命运石之门》《白色相簿2》《丸子与银河龙》《Fate/stay night》)。 ### 3. 配置环境变量 * 在项目根目录下复制一份 `.env.example` 并重命名为 **`.env`**: ```bash cp .env.example .env ``` * 编辑 `.env` 文件,将 `DB_PASS` 修改为你本地数据库的真实密码: ```ini DB_PASS=你的数据库密码 ``` ### 4. 安装依赖并启动 在项目根目录打开终端,运行: ```bash # 安装依赖 npm install # 启动服务器 node server.js ``` 启动成功后,在浏览器访问 [http://localhost:3000](http://localhost:3000) 即可开始使用。 --- ## 内置测试账号 你可以使用以下内置测试账号直接登录系统: * **用户名**:`admin` * **密码**:`password123` 或者在前端界面点击“注册”按钮注册全新账号。 --- ## 后端主要 API 路由 系统实现了满足作业要求的完整 RESTful API (共计 12+ API): * **用户模块 (`/api/users`)**: * `POST /register` - 用户注册 * `POST /login` - 用户登录 * `GET /me` - 获取当前登录用户信息 * **游戏模块 (`/api/games`)**: * `GET /` - 获取游戏列表(支持分页、搜索、筛选) * `GET /:id` - 获取游戏详情 * **开发商模块 (`/api/developers`)**: * `GET /` - 获取开发商列表 * `GET /:id` - 获取指定开发商信息与旗下游戏 * **评论模块 (`/api/reviews`)**: * `GET /game/:gameId` - 获取某款游戏的所有评论 * `POST /` - 发表评论与评分(需登录) * `DELETE /:id` - 删除指定评论(需登录且只能删除自己发表的) * **标签模块 (`/api/tags`)**: * `GET /` - 获取标签列表