本项目是智慧停车管理系统 (Smart Parking),基于 Wails v2 构建的单进程桌面应用(Go 后端 + Vue 3 前端内嵌 WebView2)。
| 层级 | 技术 |
|---|---|
| 桌面框架 | Wails v2.13(WebView2 运行时) |
| 后端 | Go 1.25 + Gin + GORM + Casbin + JWT |
| 前端 | Vue 3 + Vite 4 + Element Plus + Pinia |
| 数据库 | SQLite(%APPDATA%/smart-parking/lc_garage.db) |
lc_garage/
├── main.go # Wails 入口(反向代理 /api → Gin :8888)
├── go.mod / go.sum # 根模块 (wails-app)
├── wails.json # Wails 项目配置
├── config.yaml # 后端配置文件
├── server_backup.tar.gz # 旧 server/ 备份(67MB,已归档)
│
├── internal/ # ★ Go 后端(所有代码)
│ ├── main.go # InitBackend() 入口
│ ├── api/v1/ # API 控制器层
│ │ ├── system/ # 系统管理(用户/角色/菜单/API/Casbin/字典)
│ │ ├── parking/ # 停车管理(停车场/岗亭/通道)
│ │ ├── uhf/ # UHF 读卡器管理
│ │ ├── vehicle/ # 车辆管理(车辆/收费/记录/类型/名单)
│ │ ├── owner/ # 车主管理
│ │ └── example/ # 示例(文件上传/断点续传)
│ ├── service/ # 业务逻辑层
│ │ ├── system/ # 系统服务(11 文件,含 Casbin)
│ │ ├── parking/ # 停车服务(booth/channel/lot)
│ │ ├── uhf/ # UHF 服务(TCP/串口读写器驱动)
│ │ ├── vehicle/ # 车辆服务(进出场+计费)
│ │ ├── owner/ # 车主服务
│ │ └── enter.go # ServiceGroupApp 全局注册中心
│ ├── router/ # 路由定义(与 api 一一对应)
│ │ └── enter.go # RouterGroupApp 全局注册中心
│ ├── model/ # 数据模型(Request / Response DTO)
│ │ ├── common/ # 通用模型(分页/响应结构)
│ │ ├── system/ # 系统模型
│ │ ├── parking/ # 停车模型
│ │ ├── uhf/ # UHF 模型
│ │ ├── vehicle/ # 车辆模型
│ │ └── owner/ # 车主模型
│ ├── dao/ # 数据访问层(GORM 实体,25 张表)
│ ├── middleware/ # 中间件(JWT/CORS/Casbin/操作日志)
│ ├── config/ # 配置结构体定义
│ ├── core/ # 核心(Viper/Zap/Server 启动)
│ ├── global/ # 全局变量(GVA_DB/GVA_CONFIG/GVA_LOG)
│ ├── initialize/ # 初始化(GORM/Redis/Seed/Timer/UHF)
│ ├── plugin/ # 插件(email/ws/plugin-tool)
│ ├── utils/ # 工具函数(upload/captcha/AST/定时器)
│ └── pkg/ # 工具函数副本(部分 core 文件引用)
│
├── frontend/ # Vue 3 前端
│ ├── vite.config.js # Vite 配置(dev :5173 → proxy :8888)
│ └── src/
│ ├── api/ # API 封装(24 文件,117 接口)
│ ├── view/ # 业务页面(37 个 .vue 文件)
│ │ ├── parking/ # 停车管理(含 Tab 联动)
│ │ ├── dashboard/ # 仪表盘
│ │ ├── report/ # 报表查询
│ │ ├── statistics/ # 统计分析
│ │ ├── superAdmin/ # 系统管理
│ │ ├── person/ # 个人中心
│ │ └── login/ # 登录页
│ ├── pinia/ # 状态管理(user + parkArea)
│ └── router/ # 路由(Hash 模式 + 动态菜单)
│
├── build/bin/ # 构建输出
│ └── smart-parking.exe # 最终产物(需与 config.yaml 同目录)
│
└── doc/ # 文档
├── PROJECT.md
└── 代码规划.md # 目标架构蓝图
现有的 api/ service/ router/ model/ dao/ 目录保持不动,所有现有功能继续维护在原有位置。
新功能按领域模块开发,放在 internal/modules/<module>/ 下。每个模块内部自包含三层结构:
internal/modules/<module>/
├── api.go # 对外暴露给 Wails/路由的方法
├── service/ # 业务逻辑
│ ├── service.go # 核心逻辑
│ └── ...
├── repository/ # 数据访问(替代 dao/)
│ └── repo.go # GORM 查询封装
└── model/ # 数据模型
├── request/ # 请求 DTO
└── response/ # 响应 DTO
模块间通信规则:
internal/service/enter.go 中的 ServiceGroupApp 引用其他模块的服务internal/model/common/ 下注册新模块路由:
internal/modules/<module>/api.go 中定义 Handler 方法internal/router/ 下新增路由文件注册路由组internal/initialize/router.go 中调用路由注册internal/utils/ — 旧工具函数(api 层引用)internal/pkg/ — 新工具函数(core/initialize 层引用)system:
addr: 8888 # 后端监听端口
db-type: sqlite # 数据库类型
sqlite:
path: "" # 空 = %APPDATA%/smart-parking/lc_garage.db
db-name: lc_garage
cors:
mode: allow-all # 桌面应用,允许所有跨域
go install github.com/wailsapp/wails/v2/cmd/wails@latestcd lc_garage
cd frontend && npm install && cd .. # 首次
wails dev # 热更新 + DevTools
cd lc_garage
wails build
# 产物:build/bin/smart-parking.exe
admin / 密码:123456(首次启动自动创建)| Authority | 角色 | 可见菜单 |
|---|---|---|
| 888 | 管理员 | 全部 |
| 618 | 操作员 | 停车管理 + 报表 + 统计 |
类型: 简要描述,如 feat: 新增停车场信息菜单、fix: 修复字典查询 EOF# 开发
cd lc_garage && wails dev
# 构建
cd lc_garage && wails build
# 前端
cd lc_garage/frontend && npm install
cd lc_garage/frontend && npm run build