beweb目录结构审视
beweb 目录结构深度审视
整体架构视图
plainText
beweb/ # Web 后端服务主目录 ├── cmd/ # CLI 命令行工具 │ └── beweb/ │ ├── internal/consts/ # 常量定义 │ ├── internal/menu/ # 命令菜单系统 │ └── internal/service/ # 命令服务(代码生成、Git操作等) ├── config/ # 配置文件 │ ├── godi/ # 依赖注入配置模板 │ ├── template/ # 报表/文档模板 │ └── *.yml/json # 数据源、环境配置 ├── data/ # 测试数据与报表 ├── docs/ # Swagger API 文档 ├── docx/ # HTML 文档生成(Node.js) ├── server/ # HTTP 服务器核心 ├── setupweb/ # Web 服务初始化(旧版) ├── webset/ # Web 设置与中间件(新版) ├── webctl/ # 通用控制器层 │ ├── ctlbase/ # 基础控制器 │ ├── ctlcredits/ # 研值/积分/支付 │ ├── ctlplan/ # 训练计划 │ ├── ctlright/ # RBAC 权限 │ ├── ctluser/ # 用户管理(admin/coach/parent/stu) │ ├── ctlword/ # 词汇管理 │ └── ... ├── webwords/ # 单词训练专用控制器 ├── webbiz/ # 业务逻辑层(前后端分离) │ ├── backend/ # 后台管理业务 │ │ ├── beadmin/ # 管理员管理 │ │ ├── becoach/ # 领学师管理 │ │ ├── becredit/ # 研值管理 │ │ ├── bestudent/ # 学员管理 │ │ └── ... │ └── frontend/ # 前端业务(H5/Web) │ ├── feuser/ # 用户前端 │ ├── festudent/ # 学员前端 │ ├── fepay/ # 支付前端 │ └── ... ├── webplat/ # 平台管理模块 │ ├── platbe/ # 平台后台 │ │ ├── platkbase/ # 题库管理 │ │ ├── platimer/ # 定时器管理 │ │ ├── platopc/ # OPC 接口 │ │ └── platsys/ # 系统管理 │ └── platfe/ # 平台前端 ├── webtrial/ # 试训模块 └── uiopc/ # OPC 接口 UI核心目录职责详解
1. 控制器层(Controller Layer)
| 目录 | 职责 | 说明 |
|---|---|---|
webctl/ | 通用控制器 | 基础 API 控制器,供所有模块复用 |
webwords/ | 单词训练 | 专注于单词训练与复习业务 |
webtrial/ | 试训管理 | 试训学员与训练计划管理 |
2. 业务逻辑层(Business Layer)
| 目录 | 职责 | 模块数 |
|---|---|---|
webbiz/backend/ | 后台管理业务 | 8 个模块 |
webbiz/frontend/ | 前端业务接口 | 7 个模块 |
设计模式:前后端分离,通过register.go统一注册路由。
3. 平台管理层(Platform Layer)
| 目录 | 职责 | 核心功能 |
|---|---|---|
webplat/platbe/ | 平台后台 | 题库、定时任务、OPC、系统设置 |
webplat/platfe/ | 平台前端 | 用户消息等前端接口 |
4. 基础设施层(Infrastructure)
| 目录 | 职责 |
|---|---|
server/ | HTTP 服务器封装 |
setupweb/ | 服务初始化(旧) |
webset/ | 中间件配置(新) |
config/ | 配置管理 |
设计模式与架构特点
1. 依赖注入模式
所有控制器遵循统一的初始化模式:
plainText
xxx_ctl.go # 控制器实现 xxx_ctl_init.go # 依赖注入注册2. 模块化注册
通过register.go文件实现模块自动注册,支持:
- 按需加载
- 模块解耦
- 统一管理
3. 分层架构
plainText
┌─────────────────────────────────────┐ │ HTTP Server (server/) │ ├─────────────────────────────────────┤ │ Middleware (webset/) │ ├─────────────────────────────────────┤ │ Controllers (webctl/) │ ├─────────────────────────────────────┤ │ Business Logic (webbiz/) │ ├─────────────────────────────────────┤ │ Platform Services (webplat/) │ └─────────────────────────────────────┘文件统计与规模
| 类型 | 数量 | 说明 |
|---|---|---|
| 控制器文件 | ~150 | 业务接口实现 |
| 初始化文件 | ~80 | 依赖注入注册 |
| 测试文件 | ~20 | 单元测试 |
| 配置文件 | ~10 | 环境与数据源配置 |
架构评估
优点
- 职责清晰:按业务领域划分模块,高内聚低耦合
- 扩展性强:模块化设计便于新增业务模块
- 代码规范:统一的命名和初始化模式
- 文档完善:集成 Swagger 自动生成 API 文档
待优化点
| 问题 | 建议 |
|---|---|
| 新旧代码并存 | 合并setupweb/与webset/ |
| 模块职责重叠 | 整合webctl/ctlword/与webwords/ |
| 测试覆盖率低 | 补充单元测试,建议 80%+ 覆盖率 |
| node_modules 过大 | .gitignore排除docx/node_modules |
技术栈
| 分类 | 技术 | 版本 |
|---|---|---|
| Web 框架 | Gin | v1.10.0 |
| ORM | GORM | v1.30.0 |
| API 文档 | Swag | v1.16.4 |
| 数据库 | PostgreSQL | - |
| 缓存 | Redis | - |
总结
beweb 采用分层架构设计,模块职责清晰,遵循 Go 语言最佳实践。项目处于持续演进中(新旧代码并存),建议逐步完成重构,提升代码质量和可维护性。
