|
|
@@ -5,89 +5,96 @@
|
|
|
## 技术栈
|
|
|
|
|
|
- **桌面框架**:Wails v2.13
|
|
|
-- **后端**:Go 1.25 + Gin + GORM + Casbin + JWT
|
|
|
+- **后端**:Go 1.25 + Gin + GORM + Casbin v3 + JWT
|
|
|
- **前端**:Vue 3 + Vite 4 + Element Plus + Pinia
|
|
|
- **数据库**:SQLite(`%APPDATA%/smart-parking/lc_garage.db`)
|
|
|
|
|
|
## 环境要求
|
|
|
|
|
|
-- Go >= 1.25
|
|
|
-- Node.js >= 16
|
|
|
-- Wails CLI
|
|
|
+- Go >= 1.25 / Node.js >= 16
|
|
|
+- Wails CLI:`go install github.com/wailsapp/wails/v2/cmd/wails@latest`
|
|
|
- Windows 10 build 1809+(WebView2 运行时)
|
|
|
|
|
|
-## 安装 Wails CLI
|
|
|
-
|
|
|
-```bash
|
|
|
-go install github.com/wailsapp/wails/v2/cmd/wails@latest
|
|
|
-```
|
|
|
-
|
|
|
-## 安装依赖
|
|
|
+## 快速开始
|
|
|
|
|
|
```bash
|
|
|
+# 1. 安装前端依赖
|
|
|
cd frontend && npm install && cd ..
|
|
|
-```
|
|
|
-
|
|
|
-## 开发模式
|
|
|
|
|
|
-```bash
|
|
|
-cd lc_garage
|
|
|
+# 2. 启动开发模式
|
|
|
wails dev
|
|
|
-```
|
|
|
|
|
|
-Wails 自动:
|
|
|
-1. 编译 Go 后端,Gin 在 goroutine 中启动(:8888)
|
|
|
-2. 创建 SQLite 数据库并写入系统初始数据(首次启动)
|
|
|
-3. 启动 Vite 开发服务器(:5173)
|
|
|
-4. 打开 WebView2 窗口,支持热更新
|
|
|
-
|
|
|
-## 生产构建
|
|
|
-
|
|
|
-```bash
|
|
|
-cd lc_garage
|
|
|
+# 3. 生产构建
|
|
|
wails build
|
|
|
+# 产物:build/bin/smart-parking.exe
|
|
|
```
|
|
|
|
|
|
-产物:`build/bin/smart-parking.exe`,需与 `config.yaml` 同目录。
|
|
|
-
|
|
|
## 管理员账户
|
|
|
|
|
|
-- 账号:`admin`
|
|
|
-- 密码:`123456`
|
|
|
-
|
|
|
-首次启动自动创建系统数据(用户、角色、菜单、API、Casbin 规则、字典),后续重启跳过。
|
|
|
+- 账号:`admin` / 密码:`123456`
|
|
|
+- 首次启动自动创建系统数据(用户、角色、菜单、权限、字典)
|
|
|
|
|
|
## 数据库
|
|
|
|
|
|
- 文件位置:`%APPDATA%/smart-parking/lc_garage.db`
|
|
|
-- 可通过 `config.yaml` 的 `sqlite.path` 自定义路径(空 = 默认)
|
|
|
-- 查询工具:[DB Browser for SQLite](https://sqlitebrowser.org/) 或 `sqlite3` 命令行
|
|
|
+- `config.yaml` 中 `sqlite.path` 为空时使用默认路径
|
|
|
+- 查询工具:[DB Browser for SQLite](https://sqlitebrowser.org/)
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
```
|
|
|
lc_garage/
|
|
|
-├── main.go # Wails 入口(反向代理 /api → Gin :8888)
|
|
|
-├── wails.json # Wails 配置
|
|
|
-├── go.mod # 根模块 (wails-app)
|
|
|
-├── config.yaml # 后端配置
|
|
|
-├── server/ # Go 后端(独立模块 "server")
|
|
|
-│ ├── main.go # InitBackend() + SeedSystemData()
|
|
|
-│ ├── initialize/ # 初始化(GORM/Redis/Timer/UHF/Seed)
|
|
|
-│ ├── api/ # API 控制器
|
|
|
-│ ├── service/ # 业务逻辑
|
|
|
-│ └── dao/ # 数据访问
|
|
|
-├── frontend/ # Vue 3 前端
|
|
|
-└── build/bin/ # 构建产物
|
|
|
+├── main.go # Wails 入口
|
|
|
+├── wails.json # Wails 配置
|
|
|
+├── go.mod # 根模块 (wails-app)
|
|
|
+├── config.yaml # 后端配置
|
|
|
+│
|
|
|
+├── internal/ # Go 后端
|
|
|
+│ ├── api/v1/ # API 控制器(system/parking/uhf/vehicle/owner)
|
|
|
+│ ├── service/ # 业务逻辑(含 UHF TCP/串口硬件驱动)
|
|
|
+│ ├── router/ # 路由注册
|
|
|
+│ ├── model/ # 数据模型(Request/Response DTO)
|
|
|
+│ ├── dao/ # 数据访问(GORM 实体,25 张表)
|
|
|
+│ ├── middleware/ # 中间件(JWT/CORS/Casbin)
|
|
|
+│ ├── core/ # 核心(Viper/Zap/Server)
|
|
|
+│ ├── config/ # 配置结构体
|
|
|
+│ ├── global/ # 全局变量
|
|
|
+│ ├── initialize/ # 初始化(GORM/Seed/Timer)
|
|
|
+│ ├── plugin/ # 插件(email/ws)
|
|
|
+│ ├── utils/ # 工具函数
|
|
|
+│ └── pkg/ # 工具函数(core 层引用)
|
|
|
+│
|
|
|
+├── frontend/ # Vue 3 前端
|
|
|
+│ └── src/
|
|
|
+│ ├── api/ # API 封装(24 文件)
|
|
|
+│ ├── view/ # 业务页面
|
|
|
+│ │ ├── parking/ # 停车管理(含 Tab 联动)
|
|
|
+│ │ ├── dashboard/ # 仪表盘
|
|
|
+│ │ ├── superAdmin/ # 系统管理
|
|
|
+│ │ └── ...
|
|
|
+│ ├── pinia/ # 状态管理
|
|
|
+│ └── router/ # 路由配置
|
|
|
+│
|
|
|
+├── build/bin/ # 构建输出
|
|
|
+│ └── smart-parking.exe
|
|
|
+│
|
|
|
+└── doc/ # 文档
|
|
|
+ ├── PROJECT.md
|
|
|
+ └── 代码规划.md # 目标架构蓝图
|
|
|
```
|
|
|
|
|
|
+## 代码规范
|
|
|
+
|
|
|
+- **旧模块**(`internal/api/` `internal/service/` 等):保持不动,继续维护
|
|
|
+- **新模块**(`internal/modules/<module>/`):自包含 api / service / repository / model 四层
|
|
|
+- 详细规范见 [CLAUDE.md](CLAUDE.md)
|
|
|
+
|
|
|
## 常见问题
|
|
|
|
|
|
-**双击 exe 打不开?**
|
|
|
-确保 `config.yaml` 与 `smart-parking.exe` 在同一目录。
|
|
|
+**双击 exe 打不开?** 确保 `config.yaml` 与 `smart-parking.exe` 在同一目录。
|
|
|
+
|
|
|
+**超级管理员菜单不显示?** 删除 `%APPDATA%/smart-parking/lc_garage.db` 后重启重建。
|
|
|
|
|
|
-**超级管理员菜单不显示?**
|
|
|
-可能是数据库种子数据异常,删除 `%APPDATA%/smart-parking/lc_garage.db` 后重新启动即可重建。
|
|
|
+**wails dev 卡住?** 确保 `cd frontend && npm install` 已执行过。
|
|
|
|
|
|
-**wails dev 卡住?**
|
|
|
-确保 `cd frontend && npm install` 已执行过。
|
|
|
+**端口 5173 被占用?** 上次 `wails dev` 残留的 node 进程,任务管理器结束即可。
|