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