本文档旨在概述 dsbqj-admin Go 项目的技术栈、结构、规范和可用命令,为开发者提供统一的指引。
这是一个基于 Go 语言和 Gin 框架构建的后台管理系统。项目采用 Monorepo(单一仓库多项目)的组织形式,包含了多个独立运行的服务。
dsbqj-admin1.24项目采用了一系列成熟的 Go 技术栈,核心技术如下:
github.com/gin-gonic/gingo.mongodb.org/mongo-driver 驱动和 github.com/kamva/mgm/v3 ORM。github.com/jinzhu/gorm ORM。github.com/go-redis/redisgithub.com/joho/godotenv 从 .env 文件加载环境变量。github.com/go-playground/validator/v10项目遵循了清晰的、按功能划分的目录结构:
.
├── app/ # 应用核心逻辑
│ ├── api/ # API 接口定义 (HTTP Handler)
│ ├── router/ # 路由注册与配置
│ ├── service/ # 业务逻辑层
│ └── task/ # 后台定时任务
├── config/ # 配置文件 (如 .env.local)
├── main-admin/ # 管理后台服务入口
├── main-point/ # "Point" 服务入口
├── main-subscribe/ # "Subscribe" 服务入口
├── middleware/ # Gin 中间件 (JWT, CORS, Logger)
├── model/ # 数据模型 (区分 Mongo 和 MySQL)
│ ├── mongo/
│ └── mysql/
├── pkg/ # 可重用的公共包 (工具、日志、配置等)
├── .gitignore
├── go.mod # Go 模块依赖
├── go.sum
└── build.bat # 全局构建脚本
为了保持代码的一致性和高质量,所有开发者应遵循以下规范:
gofmt: 所有提交的代码都必须使用 gofmt 进行格式化。推荐在 IDE 中配置保存时自动格式化。go vet: 在提交代码前,运行 go vet ./... 来捕获可疑的构造和潜在错误。.golangci.yml,但强烈建议使用 golangci-lint 并配置一套合理的规则,以进行更全面的静态分析。camelCase 或 PascalCase),并根据其导出状态决定首字母大小写。-er 结尾(如 Reader, Writer)。项目的主要操作通过根目录及各 main-* 目录下的 build.bat 批处理脚本执行。
build.bat (根目录):
main-*/build.bat:
admin, point, subscribe)。运行服务 (示例):
# 进入特定服务的目录
cd main-admin
# 运行构建脚本 (如果脚本支持) 或直接运行 main.go
go run main.go
依赖管理:
go mod tidygo mod download