feat: 通用授权后台、离线证、Waffo 支付页与仪表盘加强

支持多产品计划展示、LICOFF 离线签发、支付独立配置与调试,以及分析看板;同步更新 README 与集成文档。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Logan.LiandCursor committed 2026-08-12 20:25:46 +08:00
1 parent 0966375076
commit 8cc2c83f9d
41 files changed
+3177 -332

No files matched your search

+50 -76
View File
@@ -1,117 +1,91 @@
# opsx-licence
许可证(License)管理服务器 Web 版 —— 基于 Go (Gin) + Vue 3 的单体全栈应用。
通用许可证(License)管理服务器 —— Go (Gin) + Vue 3 单体全栈,面向 Web / PC / 移动等多端产品。
## 项目简介
线上示例:https://l123.91ai.io/
opsx-licence 是一个统一的授权验证与管理服务,提供许可证的生成、验证、激活、机器绑定、心跳等核心能力,并支持产品定价、订单购买、防重复购买与支付回调。
## 能力概览
技术栈与工程结构参考 [opsx-web-lite](../opsx-web-lite),业务领域参考 Licence 服务器 Web版。
| 模块 | 说明 |
|------|------|
| 产品 / 计划 / 客户 | 多产品 SKU;计划显示「体验 / 包年 / 永久」并带所属产品 |
| 在线 License | `LIC-…`,座位激活、心跳、吊销 |
| 离线 License | `LICOFF-…`,绑 device_id,最长 365 天,**不可续期(到期重签)** |
| 订单 / Waffo | create-session + webhook 对账;管理端「支付」页配置与调试 |
| 仪表盘 | 总数 / 过期 / 在线设备 / 增长 / 收入 / 产品与地理·平台分布 |
详细模型见 [docs/licensing-model.md](docs/licensing-model.md);Waffo 闭环见 [docs/waffo-integration.md](docs/waffo-integration.md)。
## 技术栈
### 后端
- **语言/框架**:Go 1.24 + Gin
- **ORM**:GORM(默认 SQLite,支持 MySQL / PostgreSQL)
- **认证**:JWT(HS256)+ bcrypt
- **架构**:4 层分层(controller → service → dto → model),按业务域分包
### 前端
- **框架**:Vue 3.4 + Vite
- **UI**:Element Plus
- **状态/路由**:Pinia + Vue Router 4
- **图表**:ECharts
### 部署
- 单二进制:前端通过 `//go:embed` 打包进 Go 二进制,一个文件即可部署
- **后端**:Go 1.24 + Gin + GORM(默认 SQLite,可 MySQL / PostgreSQL)
- **前端**:Vue 3.4 + Vite + Element Plus + ECharts(`//go:embed` 打进单二进制)
- **认证**:JWT + bcrypt
## 快速开始
### 环境要求
- Go >= 1.24
- Node.js >= 20
- CGO(SQLite 驱动需要,macOS 自带 gcc)
### 一键启动(开发模式)
```bash
cp .env.example .env
./run.sh start
./run.sh start # 开发:前端 :5181,后端 :9001
# 默认账号 admin / admin(生产请改密码)
```
- 前端:http://localhost:5181
- 后端:http://localhost:9001
- 默认账号:`admin` / `admin`
### Docker 部署(生产推荐)
### Docker(生产推荐)
```bash
cp .env.example .env
# 修改 JWT_SECRET、Waffo 等
./run.sh docker up # 等价于 docker compose up -d --build
# 配置 JWT_SECRET、Waffo、OFFLINE_LICENSE_SEED 等
./run.sh docker up # 或 ./run.sh docker rebuild
./run.sh docker logs
./run.sh docker down
```
- 访问:http://localhost:9001(管理后台 + `/api`)
- 数据卷:`licence_data` → 容器内 `/data/db.sqlite3`
- 数据卷:`licence_data` → `/data/db.sqlite3`
### 构建单二进制
### 单二进制
```bash
./run.sh build
./run.sh binary start
./run.sh build && ./run.sh binary start
```
## 管理端菜单
- **授权管理**:产品、客户、在线 License、离线 License
- **定价与订单**:定价计划、订单
- **支付**:Waffo 集成(商户 / Store / 可扩展 Product ID 映射 / 测试连接)
- **审计与设置**:操作日志、系统设置
## 客户端契约(公开 API)
前缀 `/api/v1`(无需管理 JWT):
- `POST /license/activate|verify|deactivate|heartbeat`
- `POST /checkout`、`POST /orders`、`POST /purchase/claim`
- `POST /webhooks/waffo`、`GET /purchase/success`
桌面端默认 API Base:`https://l123.91ai.io/api`(可用 `OPSX_LICENSE_API_BASE` 覆盖)。
## 常用命令
| 命令 | 说明 |
|---|---|
| `make dev` / `./run.sh start` | 启动前后端开发服务 |
| `make build` / `./run.sh build` | 构建嵌入前端的单二进制 |
| `./run.sh stop` | 停止服务 |
| `./run.sh status` | 查看服务状态 |
| `make clean` | 清理构建产物 |
|------|------|
| `./run.sh start` / `make dev` | 开发模式 |
| `./run.sh build` / `make build` | 构建嵌入前端的二进制 |
| `./run.sh docker rebuild` | 重建并滚动升级容器 |
| `./run.sh stop` / `status` | 停止 / 查看状态 |
## 项目结构
```
opsx-licence/
├── backend/ # Go 后端
│ ├── main.go # 入口
│ ├── embed.go # 前端嵌入
│ ├── config/ # 配置
│ ├── database/ # 数据库初始化 + 种子数据
│ ├── middleware/ # 中间件(auth / cors)
│ ├── router/ # 路由
│ ├── utils/ # 工具(jwt / password)
│ └── internal/ # 业务分层
│ ├── controller/ # HTTP 处理层
│ ├── service/ # 业务逻辑层
│ ├── dto/ # 请求/响应结构
│ └── model/ # 数据模型
├── frontend/ # Vue 前端
│ └── src/
│ ├── api/ # 接口封装
│ ├── stores/ # Pinia 状态
│ ├── router/ # 路由
│ ├── layouts/ # 布局
│ └── views/ # 页面
├── Makefile
├── run.sh # 启动脚本
├── backend/ # Go API + embed 前端
├── frontend/ # Vue 管理后台
├── docs/ # 授权模型 / Waffo 集成说明
├── docker-compose.yml
├── run.sh
└── .env.example
```
## 业务域(规划)
| 模块 | 说明 | 状态 |
|---|---|---|
| 认证 (Auth) | 管理员登录、JWT | ✅ |
| 核心授权 | 产品 / 客户 / License / 激活 | 🚧 规划中 |
| 定价订单 | Plan / Order / 支付网关 | 🚧 规划中 |
| 防重复购买 | 客户权益 / 幂等回调 | 🚧 规划中 |
| 分析审计 | Dashboard / Analytics / AuditLog | 🚧 规划中 |
## 作者
Logan.Li