Files
YMhut-box-C-/server/update
QWQLwToo 962a2f2143
build-winui / winui (push) Waiting to run
更新 update 门户站点界面和后台功能
2026-06-27 18:09:11 +08:00
..
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00
2026-06-26 13:28:09 +08:00

YMhut更新站 - Go 版本

这是 Node.js 版本的完整 Go 实现,使用 Gin 框架构建,提供了更好的性能和更完善的 UI/UX 体验。

功能特性

  • 完整复现 Node.js 版本的所有功能
  • 产品列表展示(自动从 downloads 目录读取)
  • JSON API 接口(tool-status.json, update-info.json, media-types.json 等)
  • 文件下载功能(支持安全校验)
  • 历史版本查看
  • 改进的 UI/UX(增强动画、优化响应式设计)
  • 完整的错误处理(404、500 页面)
  • 彩色日志系统
  • 后台管理系统(新增)
    • 用户注册和登录(第一个用户自动成为管理员)
    • 密码强度验证(防止弱密码)
    • 路由管理(可视化添加、编辑、删除路由)
    • 文件管理(浏览、查看、编辑文件)
    • 配置管理(编辑 JSON 配置文件)
    • 日志查看(实时查看系统日志)
    • 系统信息(查看系统统计)

项目结构

go/
├── main.go              # 主入口文件
├── go.mod               # Go 模块依赖
├── go.sum               # 依赖校验文件
├── config/
│   └── routes.go        # 路由配置
├── models/              # 数据模型
│   ├── user.go          # 用户模型
│   └── route.go         # 路由模型
├── database/            # 数据库
│   └── db.go            # 数据库初始化
├── handlers/            # 请求处理
│   ├── auth.go          # 认证处理
│   └── admin.go         # 后台管理处理
├── middleware/          # 中间件
│   └── auth.go          # 认证中间件
├── utils/
│   ├── logger.go        # 日志工具
│   ├── route-utils.go   # 路由辅助函数
│   ├── password.go      # 密码验证
│   ├── jwt.go           # JWT Token
│   └── config.go        # 配置缓存
├── views/               # HTML 模板
│   ├── index.html
│   ├── admin.html       # 后台管理界面
│   ├── 404.html
│   └── 500.html
└── public/              # 静态资源
    ├── css/
    ├── img/
    ├── fonts/
    ├── lang/
    ├── downloads/       # 下载文件目录
    └── *.json          # JSON 配置文件

前置要求

必需

可选(用于编译)

  • Git(用于版本控制)
  • CGOSQLite 需要,Windows 可能需要安装 GCC

快速开始

新手推荐:查看 QUICKSTART.md 获取详细的、一步一步的安装指南。

完整安装步骤

步骤 1: 检查 Go 环境

打开终端(Windows: PowerShell 或 CMDLinux/macOS: Terminal),运行:

go version

预期输出示例:

go version go1.21.0 windows/amd64

如果显示 "command not found" 或类似错误,请先安装 Go。

步骤 2: 进入项目目录

# Windows (PowerShell)
cd D:\Desktop\update\go

# Windows (CMD)
cd D:\Desktop\update\go

# Linux/macOS
cd /path/to/update/go

步骤 3: 下载依赖

go mod download

预期输出:

go: downloading github.com/gin-gonic/gin v1.9.1
go: downloading github.com/golang-jwt/jwt/v5 v5.2.0
go: downloading gorm.io/gorm v1.25.5
...

步骤 4: 整理依赖(生成 go.sum)

go mod tidy

预期输出:

go: downloading github.com/mattn/go-sqlite3 v1.14.17
go: downloading github.com/jinzhu/now v1.1.5
...

这个命令会:

  • 下载所有缺失的依赖
  • 移除未使用的依赖
  • 生成/更新 go.sum 文件

步骤 5: 验证依赖

go mod verify

预期输出:

all modules verified

步骤 6: 测试编译

# Windows
go build -o software-download-center.exe .

# Linux/macOS
go build -o software-download-center .

预期输出:

  • 无错误信息
  • 生成可执行文件

步骤 7: 运行项目

# Windows
go run main.go

# 或使用编译后的文件
.\software-download-center.exe

# Linux/macOS
go run main.go

# 或使用编译后的文件
./software-download-center

预期输出:

=============================================
✅ 数据库初始化成功
✅ 配置缓存初始化成功
=============================================
📋 开始注册路由...
✅ 路由注册成功 [GET ] / (类型: view)
...
📋 路由注册完成!

=============================================
✅ 服务器启动成功
📡 访问地址: http://localhost:3355
🌍 当前环境: production
🔄 兼容旧版访问:支持 /tool-status.json /update-info.json /media-types.json
=============================================

步骤 8: 访问应用

  1. 主页http://localhost:3355
  2. 后台管理http://localhost:3355/admin

开发模式运行

启用调试模式

# Windows (PowerShell)
$env:GIN_MODE="debug"; go run main.go

# Windows (CMD)
set GIN_MODE=debug && go run main.go

# Linux/macOS
GIN_MODE=debug go run main.go

自定义端口

# Windows (PowerShell)
$env:PORT="8080"; go run main.go

# Windows (CMD)
set PORT=8080 && go run main.go

# Linux/macOS
PORT=8080 go run main.go

编译打包

方法 1: 使用打包脚本(推荐)

Windows

# 运行批处理脚本
build.bat

Linux/macOS

# 添加执行权限
chmod +x build.sh

# 运行脚本
./build.sh

编译后的文件位于 build/output/ 目录。

方法 2: 手动编译

编译当前平台版本

# Windows
go build -ldflags="-s -w" -o software-download-center.exe .

# Linux
go build -ldflags="-s -w" -o software-download-center .

# macOS
go build -ldflags="-s -w" -o software-download-center .

交叉编译(在其他平台编译)

# 在 Windows 上编译 Linux 版本
set GOOS=linux
set GOARCH=amd64
go build -ldflags="-s -w" -o software-download-center .

# 在 Linux/macOS 上编译 Windows 版本
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o software-download-center.exe .

# 在 Linux/macOS 上编译 macOS 版本(Apple Silicon
GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o software-download-center .

编译参数说明:

  • -ldflags="-s -w":减小可执行文件大小
    • -s:去除符号表
    • -w:去除调试信息

方法 3: 静态编译(无 CGO 依赖)

# Windows
set CGO_ENABLED=0
set GOOS=windows
set GOARCH=amd64
go build -ldflags="-s -w" -o software-download-center.exe .

# Linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o software-download-center .

# macOS
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" -o software-download-center .

注意: 静态编译时 SQLite 可能无法使用,需要 CGO 支持。

配置说明

环境变量

变量名 说明 默认值
PORT 服务器端口 3355
GIN_MODE Gin 运行模式 release
CGO_ENABLED 是否启用 CGO 1

文件命名规则

下载文件需要遵循以下命名格式才能被正确识别:

产品名称 Setup 版本号.扩展名

示例:

  • YmhutBox Setup 1.4.21.exe
  • 弈鸣小筑 Setup 2.0.0.zip

支持的扩展名: .exe, .zip, .pkg, .dmg, .msi

后台管理

访问地址

http://localhost:3355/admin

首次使用

  1. 访问后台管理页面
  2. 点击"注册"标签
  3. 填写注册信息(第一个注册的用户自动成为管理员)
  4. 登录后即可使用所有管理功能

密码要求

  • 至少 8 个字符
  • 包含至少一个大写字母
  • 包含至少一个小写字母
  • 包含至少一个数字
  • 包含至少一个特殊字符
  • 不能是常见弱密码

详细使用说明请查看 ADMIN.md

UI/UX 改进

相比 Node.js 版本,Go 版本在 UI/UX 方面做了以下改进:

  1. 增强的动画效果

    • 更流畅的卡片入场动画
    • 改进的悬停效果(轻微上浮)
    • 优化的按钮交互反馈
  2. 改进的滚动条

    • 更宽的滚动条(10px
    • 圆角设计
    • 平滑的过渡效果
  3. 无障碍改进

    • 支持 prefers-reduced-motion 媒体查询
    • 增强的焦点可见性
    • 更好的键盘导航支持
  4. 性能优化

    • Go 的高性能并发处理
    • 更快的响应时间
    • 更低的内存占用

API 接口

JSON 接口

  • GET /tool-status.json - 工具状态配置
  • GET /update-info.json - 更新信息
  • GET /media-types.json - 媒体类型配置
  • GET /plugins.json - 插件配置

所有接口都支持不带 .json 后缀的访问方式(向后兼容)。

文件下载

  • GET /downloads/:filename - 下载指定文件

静态资源

  • /css/* - CSS 样式文件
  • /img/* - 图片资源
  • /fonts/* - 字体文件
  • /lang/* - 语言文件

后台管理 API

详细 API 文档请查看 ADMIN.md

常见问题

1. 编译错误:missing go.sum entry

解决方法:

go mod tidy

2. 运行时错误:数据库初始化失败

可能原因:

  • data 目录权限不足
  • 磁盘空间不足

解决方法:

  • 检查目录权限
  • 确保有足够的磁盘空间
  • 手动创建 data 目录

3. 端口被占用

解决方法:

# 使用其他端口
PORT=8080 go run main.go

4. SQLite 相关错误(CGO 问题)

错误信息:

SQLite 连接失败: Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work

可能原因:

  • 缺少 CGO 支持
  • 缺少 GCC 编译器
  • 编译时禁用了 CGO

解决方法:

方案 1: 启用 CGO 重新编译

# Windows (PowerShell)
$env:CGO_ENABLED="1"
go build -o software-download-center.exe .

# Linux/macOS
export CGO_ENABLED=1
go build -o software-download-center .

方案 2: 使用 MySQL(无需 CGO

# Windows (PowerShell)
$env:DB_TYPE="mysql"
$env:DB_HOST="localhost"
$env:DB_USER="root"
$env:DB_PASSWORD="password"
$env:DB_NAME="software_download_center"
go run main.go

# Linux/macOS
export DB_TYPE=mysql
export DB_HOST=localhost
export DB_USER=root
export DB_PASSWORD=password
export DB_NAME=software_download_center
go run main.go

详细说明请查看 CGO_FIX.md

5. 依赖下载失败

解决方法:

# 设置 Go 代理(中国大陆)
go env -w GOPROXY=https://goproxy.cn,direct

# 或使用官方代理
go env -w GOPROXY=https://proxy.golang.org,direct

开发说明

添加新路由

config/routes.go 中的 RegisterRoutes 函数中添加新路由。

修改模板

模板文件位于 views/ 目录,使用 Go 的 html/template 语法。

添加新的工具函数

utils/ 目录下创建新的工具文件。

数据库迁移

数据库使用 GORM 自动迁移,启动时会自动创建表结构。

部署说明

生产环境部署

  1. 编译可执行文件

    go build -ldflags="-s -w" -o software-download-center .
    
  2. 复制必要文件

    # 复制静态资源
    cp -r public output/
    cp -r views output/
    
  3. 运行服务

    PORT=3355 ./software-download-center
    

使用进程管理器

详细部署说明请查看 BUILD.md

与 Node.js 版本的差异

  1. 性能: Go 版本具有更好的并发性能和更低的内存占用
  2. 部署: Go 版本编译为单个可执行文件,部署更简单
  3. UI: Go 版本包含了一些 UI/UX 改进
  4. 功能: 功能完全一致,100% 兼容
  5. 后台管理: Go 版本新增了完整的后台管理系统

快速开始(完整流程)

# 1. 检查 Go 版本
go version

# 2. 进入项目目录
cd go

# 3. 下载依赖
go mod download

# 4. 整理依赖
go mod tidy

# 5. 验证依赖
go mod verify

# 6. 运行项目
go run main.go

# 7. 访问应用
# 浏览器打开: http://localhost:3355

许可证

MIT License

作者

YMhut

相关文档