Files
assetx/webapp-back/SETUP.md

155 lines
2.6 KiB
Markdown
Raw Normal View History

# 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`