init: 初始化 AssetX 项目仓库
包含 webapp(Next.js 用户端)、webapp-back(Go 后端)、 antdesign(管理后台)、landingpage(营销落地页)、 数据库 SQL 和配置文件。
This commit is contained in:
154
webapp-back/SETUP.md
Normal file
154
webapp-back/SETUP.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# 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`
|
||||
Reference in New Issue
Block a user