Files
assetx/webapp-back/SETUP.md
default 2ee4553b71 init: 初始化 AssetX 项目仓库
包含 webapp(Next.js 用户端)、webapp-back(Go 后端)、
antdesign(管理后台)、landingpage(营销落地页)、
数据库 SQL 和配置文件。
2026-03-27 11:26:43 +00:00

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-A
  • YT-B
  • YT-C
  • ytLP
  • Lending

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 端点

  1. holders/ 目录创建处理函数
  2. main.go 注册路由
  3. models/ 添加数据模型(如需要)

数据库迁移

GORM 会自动处理表结构迁移。如需手动迁移:

db.AutoMigrate(&models.YourModel{})

🔗 相关项目

  • 前端项目: /home/coder/myprojects/assetx/antdesign
  • 数据库 Schema: /home/coder/myprojects/assetx/database-schema-v1.1-final.sql