包含 webapp(Next.js 用户端)、webapp-back(Go 后端)、 antdesign(管理后台)、landingpage(营销落地页)、 数据库 SQL 和配置文件。
2.6 KiB
2.6 KiB
AssetX 后端设置指南
📋 前置要求
- Go 1.23+
- MySQL 8.0+
- Git
🚀 快速开始
1. 安装依赖
go mod download
2. 配置环境变量
已配置的 .env 文件:
# MySQL 配置
DB_TYPE=mysql
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=123456
DB_NAME=assetx
# 服务器配置
PORT=8080
GIN_MODE=debug
3. 初始化数据库
# 启动 MySQL
sudo service mysql start
# 运行初始化脚本
./init_db.sh
4. 启动服务器
./start.sh
或者直接运行:
go run main.go
🔌 API 端点
Public Routes
GET /api/ping- 健康检查GET /api/holders/stats- 获取所有代币统计GET /api/holders/:tokenType- 获取指定代币的持有者列表
支持的 tokenType:
YT-AYT-BYT-CytLPLending
Protected Routes (需要管理员权限)
POST /api/holders/update- 触发区块链数据更新
📊 数据库表
holder_snapshots
持有者快照表,存储从区块链读取的代币持有者数据。
CREATE TABLE holder_snapshots (
id INT PRIMARY KEY AUTO_INCREMENT,
holder_address VARCHAR(42) NOT NULL,
token_type VARCHAR(50) NOT NULL,
token_address VARCHAR(42) NOT NULL,
balance VARCHAR(78) NOT NULL,
chain_id INT NOT NULL,
first_seen BIGINT NOT NULL,
last_updated BIGINT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
🧪 测试
# 测试 API
curl http://localhost:8080/api/ping
# 获取统计数据
curl http://localhost:8080/api/holders/stats
# 获取 YT-A 持有者
curl http://localhost:8080/api/holders/YT-A
🐛 常见问题
MySQL 连接失败
# 检查 MySQL 是否运行
sudo service mysql status
# 启动 MySQL
sudo service mysql start
# 测试连接
mysql -u root -p123456 -e "SELECT 1"
数据库不存在
# 手动创建数据库
mysql -u root -p123456 -e "CREATE DATABASE assetx"
GORM 自动迁移
服务器启动时会自动创建表(如果不存在)。
📝 开发说明
添加新的 API 端点
- 在
holders/目录创建处理函数 - 在
main.go注册路由 - 在
models/添加数据模型(如需要)
数据库迁移
GORM 会自动处理表结构迁移。如需手动迁移:
db.AutoMigrate(&models.YourModel{})
🔗 相关项目
- 前端项目:
/home/coder/myprojects/assetx/antdesign - 数据库 Schema:
/home/coder/myprojects/assetx/database-schema-v1.1-final.sql