# opsx-licence 通用许可证(License)管理服务器 —— Go (Gin) + Vue 3 单体全栈,面向 Web / PC / 移动等多端产品。 线上示例:https://l123.91ai.io/ ## 能力概览 | 模块 | 说明 | |------|------| | 产品 / 计划 / 客户 | 多产品 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 + GORM(默认 SQLite,可 MySQL / PostgreSQL) - **前端**:Vue 3.4 + Vite + Element Plus + ECharts(`//go:embed` 打进单二进制) - **认证**:JWT + bcrypt ## 快速开始 ```bash cp .env.example .env ./run.sh start # 开发:前端 :5181,后端 :9001 # 默认账号 admin / admin(生产请改密码) ``` ### Docker(生产推荐) ```bash cp .env.example .env # 配置 JWT_SECRET、Waffo、OFFLINE_LICENSE_SEED 等 ./run.sh docker up # 或 ./run.sh docker rebuild ./run.sh docker logs ``` - 访问:http://localhost:9001(管理后台 + `/api`) - 数据卷:`licence_data` → `/data/db.sqlite3` ### 单二进制 ```bash ./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` 覆盖)。 ## 常用命令 | 命令 | 说明 | |------|------| | `./run.sh start` / `make dev` | 开发模式 | | `./run.sh build` / `make build` | 构建嵌入前端的二进制 | | `./run.sh docker rebuild` | 重建并滚动升级容器 | | `./run.sh stop` / `status` | 停止 / 查看状态 | ## 项目结构 ``` opsx-licence/ ├── backend/ # Go API + embed 前端 ├── frontend/ # Vue 管理后台 ├── docs/ # 授权模型 / Waffo 集成说明 ├── docker-compose.yml ├── run.sh └── .env.example ``` ## 作者 Logan.Li