# chart **Repository Path**: izenvip/chart ## Basic Information - **Project Name**: chart - **Description**: 一个基于 Go + Gin 开发的专业图表生成服务平台,支持多种图表类型、API 数据源接入、会员套餐管理等功能 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-31 - **Last Updated**: 2026-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: 报表 ## README # DataViz Pro - 专业数据可视化平台
DataViz Pro 是一个基于 Go + Gin 开发的专业图表生成服务平台,支持多种图表类型、API 数据源接入、会员套餐管理等功能。
--- ## 📸 截图预览  *登录页面 - 支持邮箱/手机号登录*  *用户控制台 - 数据概览与管理*  *管理后台 - 系统配置与数据分析* --- ## ✨ 功能特性 ### 🎯 核心功能 - **7 种专业图表类型**:折线图、柱状图、横向柱状图、饼图、环形图、漏斗图、仪表盘 - **双数据源支持**:静态 JSON 数据 + API 接口实时数据 - **SVG 矢量渲染**:生成高质量矢量图表,支持任意缩放 - **Redis 缓存**:7 天故障回退机制,保证图表高可用 ### 👤 用户系统 - **多种登录方式**:邮箱/密码、手机号+验证码(可选腾讯云短信) - **JWT 认证**:安全的身份验证机制 - **会员套餐**:Free / Personal / Enterprise 三级套餐体系 - **联系验证**:手机号/邮箱验证功能 ### 📊 图表管理 - 图表创建向导:类型选择 → 数据配置 → 样式定制 → 实时预览 - 自定义配色:支持动态添加/修改图表颜色 - 项目分组:图表可绑定到项目进行组织 - 唯一 URL 访问:`/c/{uuid}.svg` 直接获取图表 ### 🔧 数据源配置 - **静态 JSON**:可视化表格编辑,实时预览 - **API 数据源**: - 支持自定义 Headers - 字段映射转换 - 超时配置 - 错误降级(使用缓存数据) ### 🛡️ 安全防护 - **验证码机制**:图形验证码 + 短信验证码(可选) - **频率限制**:IP 级别 + 手机号级别双重限制 - **密码加密**:bcrypt 哈希存储 ### 🖥️ 管理后台 - 用户管理:查看、禁用、重置密码、修改套餐 - 项目管理:查看所有用户项目 - 图表管理:查看系统全部图表 - 套餐管理:灵活配置会员套餐 - 系统配置: - 短信服务配置(腾讯云 SMS) - 邮件服务配置(SMTP) - 频率限制参数 - 访问统计:PV/UV 数据分析 --- ## 🚀 快速开始 ### 环境要求 - Go 1.21+ - MySQL 8.0+ - Redis 6.0+ ### 1. 克隆项目 ```bash git clone https://github.com/lvtao-net/chart.git cd chart ``` ### 2. 配置文件 ```bash cp config.example.yaml config.yaml ``` 编辑 `config.yaml`: ```yaml server: port: 8080 mode: debug # debug 或 release mysql: host: 127.0.0.1 port: 3306 username: root password: "your_password" database: charts redis: host: 127.0.0.1:6379 password: "" db: 0 ``` ### 3. 运行服务 ```bash # 方式一:直接运行(推荐开发) go run . # 方式二:使用 Makefile make run # 方式三:编译运行 make build ./build/chart-server ``` ### 4. 访问系统 - 前台页面:http://localhost:8080 - 管理后台:http://localhost:8080/admin - 默认管理员:`admin` / `admin123` --- ## 📁 项目结构 ``` chart/ ├── internal/ # 后端代码 │ ├── auth/ # JWT 认证 │ ├── cache/ # Redis 缓存 │ ├── config/ # 配置加载 │ ├── handler/ # HTTP 处理器 │ ├── middleware/ # Gin 中间件 │ ├── model/ # 数据模型 │ ├── repository/ # 数据库操作 │ ├── router/ # 路由定义 │ ├── service/ # 业务逻辑 │ ├── svg/ # SVG 渲染引擎 │ └── utils/ # 工具函数 ├── web/ # 前端页面 │ ├── index.html # 用户前台 │ └── admin.html # 管理后台 ├── config.example.yaml # 配置示例 ├── main.go # 入口文件 └── Makefile # 构建脚本 ``` --- ## 📡 API 文档 ### 认证相关 | 接口 | 方法 | 描述 | |------|------|------| | `/api/auth/register` | POST | 用户注册 | | `/api/auth/login` | POST | 邮箱/密码登录 | | `/api/auth/phone-login` | POST | 手机号验证码登录 | | `/api/auth/send-code` | POST | 发送短信验证码 | | `/api/auth/captcha` | GET | 获取图形验证码 | | `/api/auth/me` | GET | 当前用户信息 | ### 图表相关 | 接口 | 方法 | 描述 | |------|------|------| | `/api/charts/list` | GET | 图表列表 | | `/api/charts` | POST | 创建图表 | | `/api/charts/detail/:id` | GET | 图表详情 | | `/api/charts/detail/:id` | PUT | 更新图表 | | `/api/charts/detail/:id` | DELETE | 删除图表 | | `/api/charts/preview` | POST | 预览图表 | | `/c/:uuid.svg` | GET | 获取 SVG 图表(公开) | ### 管理后台 | 接口 | 方法 | 描述 | |------|------|------| | `/api/admin/login` | POST | 管理员登录 | | `/api/admin/users` | GET | 用户列表 | | `/api/admin/projects` | GET | 项目列表 | | `/api/admin/charts` | GET | 图表列表 | | `/api/admin/configs/sms` | GET/PUT | 短信配置 | | `/api/admin/configs/email` | GET/PUT | 邮件配置 | --- ## 🛠️ 常用命令 ```bash # 开发运行 go run . # 编译(输出到 build/) make build # 多平台编译 make build-all # 清理编译产物 make clean ``` --- ## 🔒 安全配置 ### 短信服务(可选) 在后台「系统设置」中配置腾讯云短信: - SecretId / SecretKey - SDK AppId - 短信签名与模板 ID - 频率限制参数 ### 邮件服务(可选) 支持 SMTP 协议,可配置: - SSL/TLS 加密 - 发送频率限制 - 验证码有效期 --- ## 📄 开源协议 MIT License