Files
opsx-licence/README.md
T
Logan.LiandCursor cb1a9be2c4 chore: 增加 Docker 单容器部署
生产用 Dockerfile + compose 嵌入前端二进制,run.sh docker 一键构建启动。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 12:02:29 +08:00

118 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# opsx-licence
许可证(License)管理服务器 Web 版 —— 基于 Go (Gin) + Vue 3 的单体全栈应用。
## 项目简介
opsx-licence 是一个统一的授权验证与管理服务,提供许可证的生成、验证、激活、机器绑定、心跳等核心能力,并支持产品定价、订单购买、防重复购买与支付回调。
技术栈与工程结构参考 [opsx-web-lite](../opsx-web-lite),业务领域参考 Licence 服务器 Web版。
## 技术栈
### 后端
- **语言/框架**: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
- Node.js >= 20
- CGO(SQLite 驱动需要,macOS 自带 gcc)
### 一键启动(开发模式)
```bash
cp .env.example .env
./run.sh start
```
- 前端:http://localhost:5181
- 后端:http://localhost:9001
- 默认账号:`admin` / `admin`
### Docker 部署(生产推荐)
```bash
cp .env.example .env
# 修改 JWT_SECRET、Waffo 等
./run.sh docker up # 等价于 docker compose up -d --build
./run.sh docker logs
./run.sh docker down
```
- 访问:http://localhost:9001(管理后台 + `/api`)
- 数据卷:`licence_data` → 容器内 `/data/db.sqlite3`
### 构建单二进制
```bash
./run.sh build
./run.sh binary start
```
## 常用命令
| 命令 | 说明 |
|---|---|
| `make dev` / `./run.sh start` | 启动前后端开发服务 |
| `make build` / `./run.sh build` | 构建嵌入前端的单二进制 |
| `./run.sh stop` | 停止服务 |
| `./run.sh status` | 查看服务状态 |
| `make clean` | 清理构建产物 |
## 项目结构
```
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 # 启动脚本
└── .env.example
```
## 业务域(规划)
| 模块 | 说明 | 状态 |
|---|---|---|
| 认证 (Auth) | 管理员登录、JWT | ✅ |
| 核心授权 | 产品 / 客户 / License / 激活 | 🚧 规划中 |
| 定价订单 | Plan / Order / 支付网关 | 🚧 规划中 |
| 防重复购买 | 客户权益 / 幂等回调 | 🚧 规划中 |
| 分析审计 | Dashboard / Analytics / AuditLog | 🚧 规划中 |
## 作者
Logan.Li