PROJECT_SPEC.md 3.6 KB

项目规范文档 (dsbqj-admin)

本文档旨在概述 dsbqj-admin Go 项目的技术栈、结构、规范和可用命令,为开发者提供统一的指引。

1. 项目概述

这是一个基于 Go 语言和 Gin 框架构建的后台管理系统。项目采用 Monorepo(单一仓库多项目)的组织形式,包含了多个独立运行的服务。

  • 项目名称: dsbqj-admin
  • Go 版本: 1.24
  • 核心框架: Gin

2. 技术栈

项目采用了一系列成熟的 Go 技术栈,核心技术如下:

  • Web 框架: github.com/gin-gonic/gin
  • 数据库:
    • MongoDB: 使用 go.mongodb.org/mongo-driver 驱动和 github.com/kamva/mgm/v3 ORM。
    • MySQL: 使用 github.com/jinzhu/gorm ORM。
  • 缓存: github.com/go-redis/redis
  • 配置: 通过 github.com/joho/godotenv 从 .env 文件加载环境变量。
  • 校验: github.com/go-playground/validator/v10
  • 云服务:
    • 阿里云对象存储 (OSS)
    • 阿里云短信服务

3. 项目结构

项目遵循了清晰的、按功能划分的目录结构:

.
├── 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             # 全局构建脚本

4. 编码规范

为了保持代码的一致性和高质量,所有开发者应遵循以下规范:

代码格式化

  • 强制使用 gofmt: 所有提交的代码都必须使用 gofmt 进行格式化。推荐在 IDE 中配置保存时自动格式化。
  • 遵循 Go 社区风格: 编写符合 Go 社区普遍接受的编码风格和模式。

静态检查

  • 使用 go vet: 在提交代码前,运行 go vet ./... 来捕获可疑的构造和潜在错误。
  • Linter (推荐): 虽然项目中未包含 .golangci.yml,但强烈建议使用 golangci-lint 并配置一套合理的规则,以进行更全面的静态分析。

命名规范

  • 包名: 使用简短、小写且有意义的名称。
  • 变量与函数: 遵循 Go 的驼峰命名法(camelCase 或 PascalCase),并根据其导出状态决定首字母大小写。
  • 接口: 单一方法的接口通常以 -er 结尾(如 Reader, Writer)。

5. 可用命令

项目的主要操作通过根目录及各 main-* 目录下的 build.bat 批处理脚本执行。

  • build.bat (根目录):

    • 用于构建所有或特定的服务。具体用法请查看脚本内容。
  • main-*/build.bat:

    • 用于单独构建和运行对应的服务(admin, point, subscribe)。
  • 运行服务 (示例):

    # 进入特定服务的目录
    cd main-admin
    
    # 运行构建脚本 (如果脚本支持) 或直接运行 main.go
    go run main.go
    
  • 依赖管理:

    • 安装/更新依赖: go mod tidy
    • 下载依赖: go mod download