包含 webapp(Next.js 用户端)、webapp-back(Go 后端)、 antdesign(管理后台)、landingpage(营销落地页)、 数据库 SQL 和配置文件。
155 lines
2.6 KiB
Markdown
155 lines
2.6 KiB
Markdown
# AssetX 后端设置指南
|
|
|
|
## 📋 前置要求
|
|
|
|
- Go 1.23+
|
|
- MySQL 8.0+
|
|
- Git
|
|
|
|
## 🚀 快速开始
|
|
|
|
### 1. 安装依赖
|
|
|
|
```bash
|
|
go mod download
|
|
```
|
|
|
|
### 2. 配置环境变量
|
|
|
|
已配置的 `.env` 文件:
|
|
|
|
```bash
|
|
# 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. 初始化数据库
|
|
|
|
```bash
|
|
# 启动 MySQL
|
|
sudo service mysql start
|
|
|
|
# 运行初始化脚本
|
|
./init_db.sh
|
|
```
|
|
|
|
### 4. 启动服务器
|
|
|
|
```bash
|
|
./start.sh
|
|
```
|
|
|
|
或者直接运行:
|
|
|
|
```bash
|
|
go run main.go
|
|
```
|
|
|
|
## 🔌 API 端点
|
|
|
|
### Public Routes
|
|
|
|
- `GET /api/ping` - 健康检查
|
|
- `GET /api/holders/stats` - 获取所有代币统计
|
|
- `GET /api/holders/:tokenType` - 获取指定代币的持有者列表
|
|
|
|
支持的 tokenType:
|
|
- `YT-A`
|
|
- `YT-B`
|
|
- `YT-C`
|
|
- `ytLP`
|
|
- `Lending`
|
|
|
|
### Protected Routes (需要管理员权限)
|
|
|
|
- `POST /api/holders/update` - 触发区块链数据更新
|
|
|
|
## 📊 数据库表
|
|
|
|
### holder_snapshots
|
|
持有者快照表,存储从区块链读取的代币持有者数据。
|
|
|
|
```sql
|
|
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
|
|
);
|
|
```
|
|
|
|
## 🧪 测试
|
|
|
|
```bash
|
|
# 测试 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 连接失败
|
|
|
|
```bash
|
|
# 检查 MySQL 是否运行
|
|
sudo service mysql status
|
|
|
|
# 启动 MySQL
|
|
sudo service mysql start
|
|
|
|
# 测试连接
|
|
mysql -u root -p123456 -e "SELECT 1"
|
|
```
|
|
|
|
### 数据库不存在
|
|
|
|
```bash
|
|
# 手动创建数据库
|
|
mysql -u root -p123456 -e "CREATE DATABASE assetx"
|
|
```
|
|
|
|
### GORM 自动迁移
|
|
|
|
服务器启动时会自动创建表(如果不存在)。
|
|
|
|
## 📝 开发说明
|
|
|
|
### 添加新的 API 端点
|
|
|
|
1. 在 `holders/` 目录创建处理函数
|
|
2. 在 `main.go` 注册路由
|
|
3. 在 `models/` 添加数据模型(如需要)
|
|
|
|
### 数据库迁移
|
|
|
|
GORM 会自动处理表结构迁移。如需手动迁移:
|
|
|
|
```go
|
|
db.AutoMigrate(&models.YourModel{})
|
|
```
|
|
|
|
## 🔗 相关项目
|
|
|
|
- 前端项目: `/home/coder/myprojects/assetx/antdesign`
|
|
- 数据库 Schema: `/home/coder/myprojects/assetx/database-schema-v1.1-final.sql`
|