# FssAdmin_goframe
**Repository Path**: fsscms/FssAdmin_goframe
## Basic Information
- **Project Name**: FssAdmin_goframe
- **Description**: 基于 GoFrame 的企业级中后台:一套 REST API + 两套 Vue 3 前台
- **Primary Language**: Go
- **License**: MIT
- **Default Branch**: main
- **Homepage**: https://gf.phpframe.org/
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2026-10-13
- **Last Updated**: 2026-10-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# FssAdmin (golang版)
基于 [GoFrame](https://goframe.org) 的企业级中后台:**一套 REST API + 两套 Vue 3 前台**。
JWT 鉴权、多租户、RBAC、定时任务、监控运维、附件与视频队列。后端无 CGO,可交叉编译为单一静态二进制。
[](go-project/go.mod)
[](https://goframe.org)
[](https://vuejs.org)
[](LICENSE)
**[Soybean Admin 演示](https://gf.phpframe.org)** · **[Art Design Pro 演示](https://goframe.phpframe.org/)** · [后端说明](go-project/README.md) · [Linux 部署](go-project/deploy/Install.md)
## 在线演示
| 前台 | 地址 | 说明 |
| --- | --- | --- |
| Soybean Admin | https://gf.phpframe.org | `Soybean/`,清新布局、elegant-router |
| Art Design Pro | https://goframe.phpframe.org/ | `web/`,多布局、Tailwind + UnoCSS |
两套前台对接同一套 Go 后端(默认 `:8787`)。演示账号以站点提示为准,本地默认多为 `admin` / `123456`。
OpenAPI:`/api.json` Swagger:`/docs`
## 特性
- **双前台可选**:Art Design Pro 与 Soybean Admin 共用 API,按团队 UI 偏好选一套或并行维护
- **权限与组织**:JWT + 刷新令牌、验证码、RBAC、部门 / 岗位 / 多租户数据隔离
- **开箱业务**:用户角色菜单、字典配置、附件上传、操作日志、通知、文章 CMS、插件配置
- **运维能力**:主机 / Redis / 在线用户监控、进程内定时调度、数据库备份还原、代码生成
- **安全默认**:CSRF、XSS 过滤、限流、IP 黑白名单;密码哈希兼容 PHP `$2y$` bcrypt
- **可部署**:Windows / Linux 交叉编译脚本、systemd + Nginx 一键部署;后端 `CGO_ENABLED=0`
## 架构
```
浏览器
├─ Soybean Admin :9527 (开发) ──┐
└─ Art Design Pro :5730 (开发) ──┤ /api /core /ws
▼
GoFrame API :8787
(生产反代后 :8181)
│
┌──────────────┼──────────────┐
▼ ▼ ▼
MySQL Redis 可选
fssoa-net db 4 yt-dlp / ffmpeg
```
生产推荐:Nginx(80/443)托管前端 `dist`,反代 `/api`、`/core`、`/ws` 到本机后端。
## 技术栈
| 层 | 选型 |
| --- | --- |
| 后端 | Go 1.27.1、[GoFrame v2](https://github.com/gogf/gf) 2.10.x、MySQL 5.7/8.0、Redis 5+ |
| 认证 / 安全 | JWT(HS256)、bcrypt、CSRF、bluemonday XSS、限流、IP 名单 |
| 实时 / 媒体 | Gorilla WebSocket(`/ws/ai`)、go-ytdlp + 系统 `yt-dlp` / `ffmpeg` |
| 前台 `web/` | Vue 3.5、Vite、TypeScript、Element Plus、vxe-table、Pinia、vue-i18n、TailwindCSS v4、UnoCSS |
| 前台 `Soybean/` | Vue 3.5、Vite、TypeScript、Element Plus、UnoCSS、Pinia、elegant-router、pnpm workspace(`@sa/*`) |
## 仓库结构
```
.
├── go-project/ # GoFrame 后端
│ ├── main.go
│ ├── manifest/config/ # 运行时配置(生产密钥勿入库)
│ ├── internal/modules/ # 业务模块:router → controller → service → dao → models
│ ├── scripts/ # 编译 / 启停
│ └── deploy/ # systemd、Nginx、一键部署
├── web/ # Art Design Pro 前台(开发端口 5730)
└── Soybean/ # Soybean Admin 前台(开发端口 9527)
```
后端模块一览见 [go-project/README.md](go-project/README.md)。公共能力在 `internal/authkit`、`internal/middleware`、`internal/shared`。
## 功能模块
| 模块 | 说明 |
| --- | --- |
| `auth` | 登录、验证码、令牌刷新、按用户名查租户 |
| `menu` / `user` / `role` / `dept` / `post` / `tenant` | 权限与组织 |
| `dict` / `config` | 字典与系统配置 |
| `attachment` / `file` | 附件与上传 |
| `logmod` / `notice` | 操作日志、通知 |
| `plugin` | 插件注册与配置 |
| `article` | 文章 CMS |
| `video` | 视频解析与下载队列 |
| `monitor` | 主机、Redis、在线用户 |
| `cronjob` / `crontab` | 任务节点、进程内调度、执行日志 |
| `gencode` | 代码生成 |
| `dbmaint` | 数据库维护(仅 `app.debug=true`) |
| `health` | `/health`、`/health/ready` |
| `wsai` | WebSocket AI 通道(未绑定外部 LLM) |
| `demo` / `flow` | 演示接口;工作流为占位(空列表) |
## 快速开始
### 环境
- Go 1.27.1+
- MySQL 5.7 / 8.0(库名默认 `fssoa-net`)
- Redis 5.0+(默认 **db 4**)
- Node.js ≥ 20.19、pnpm ≥ 8.8(跑前台时)
- 可选:`yt-dlp`、`ffmpeg`(视频)、`mysqldump`(备份)
### 1. 后端
准备 MySQL / Redis,导入结构与初始数据(如 `go-project/static/restore/init.sql`),再改 `go-project/manifest/config/config.yaml`(**生产密钥不要提交**)。
```bash
cd go-project
# 国内可改 GOPROXY=https://goproxy.cn,direct
export GOPROXY=https://proxy.golang.org,direct
go mod tidy
go run .
```
默认:http://127.0.0.1:8787
Windows:`scripts\start.bat` / `scripts\stop.bat`
Linux:`bash scripts/start.sh` / `bash scripts/stop.sh`
热重载:`gf run main.go`(需 [GoFrame CLI](https://goframe.org/docs/cli))
常用覆盖:`GF_GCFG_FILE`、`FSSADMIN_DB_LINK`、`FSSADMIN_YTDLP_BIN`。
```bash
go test ./...
curl -s http://127.0.0.1:8787/health
```
### 2. 前台(二选一)
两端开发代理都指向 `http://127.0.0.1:8787`,请先启动后端。
**Art Design Pro(`web/`)**
```bash
cd web
pnpm install
pnpm dev
```
浏览器:http://127.0.0.1:5730
生产构建:`pnpm build`
**Soybean Admin(`Soybean/`)**
```bash
cd Soybean
pnpm install
pnpm dev
```
浏览器:http://127.0.0.1:9527
生产构建:`pnpm build` 路由生成:`pnpm gen-route`
## 编译与部署
后端无 CGO,统一 `CGO_ENABLED=0`。脚本默认 `GOPROXY=https://goproxy.cn,direct`。
| 场景 | 命令 | 产物 |
| --- | --- | --- |
| Windows 本机 | `scripts\build-windows.bat` | `bin/fssadmin.exe` |
| Windows → Linux | `scripts\build-linux.bat` | `bin/fssadmin-linux-amd64` |
| Linux 本机 | `bash scripts/build.sh` | `bin/fssadmin` |
| Linux → Windows | `bash scripts/build.sh windows` | `bin/fssadmin.exe` |
```bash
# 手动交叉编译 Linux amd64
cd go-project
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags "-s -w" -o bin/fssadmin .
```
Linux 生产请用 `go-project/deploy/`(systemd + Nginx),不要用 `scripts/start.sh` 长期托管:
```bash
chmod +x deploy/deploy.sh
sudo DOMAIN=admin.example.com ./deploy/deploy.sh all
```
分步命令、环境变量与发布包清单见 [deploy/Install.md](go-project/deploy/Install.md)。`deploy.sh` 默认后端端口 **8181**(仅本机),本地开发仍是 **8787**。
未内置 Dockerfile:交叉编译出目标二进制,挂载 `manifest/`、`static/`、`logs/` 即可。外部配置优先于 `gf build` 打进二进制的默认配置。
## 配置要点
主配置:`go-project/manifest/config/config.yaml`。生产建议:
- `server.address` 只监听本机,由 Nginx 对外
- `app.debug: false`(关闭调试类接口)
- `app.secretKey`、数据库与 Redis 密码用强随机值,通过环境变量或部署脚本注入
- `app.schedulerEnable: true` 时启用内置备份 cron(默认每天 02:00,输出 `static/bakup`)
## 参与贡献
1. Fork 本仓库,创建分支 `feature/xxx`
2. 后端改动请先 `cd go-project && go test ./...`
3. 提交并发起 Pull Request
问题与讨论请走 GitHub Issues。提交前不要把生产密钥、`.env` 实密、数据库 dump 打进仓库。
## 致谢
- [GoFrame](https://github.com/gogf/gf)
- [Art Design Pro](https://github.com/Daymychen/art-design-pro)(`web/`)
- [Soybean Admin](https://github.com/soybeanjs/soybean-admin)(`Soybean/`)
## 许可证
本仓库采用 [MIT License](LICENSE)。前台目录保留各自上游的版权声明。