Files
soul-yongping/开发文档/6、后端/后端架构.md
2026-02-09 15:09:29 +08:00

3.4 KiB
Raw Blame History

后端架构与业务逻辑

我是卡若。

当前后端为独立项目 soul-apiGo + Gin + GORM提供全部 /api/* 接口,与 soul-admin、小程序对接。

1. 技术栈(当前)

项目 技术 说明
soul-api Go 1.25 + Gin + GORM + MySQL 独立 API 服务,路径与现网一致,响应 camelCase

2. soul-api 目录结构

``` soul-api/ ├── cmd/ │ └── server/ │ └── main.go # 入口 ├── internal/ │ ├── config/ # 配置(环境变量) │ ├── database/ # 数据库连接 (GORM) │ ├── handler/ # API 处理函数(按业务拆分) │ │ ├── admin.go, admin_chapters.go, admin_withdrawals.go ... │ │ ├── auth.go, user.go, book.go, orders.go │ │ ├── withdraw.go, referral.go, distribution.go │ │ ├── config.go, db.go, miniprogram.go ... │ ├── middleware/ # 中间件CORS、鉴权、限流、安全头 │ ├── model/ # 数据模型GORM + json 标签 camelCase │ │ ├── user.go, order.go, chapter.go, withdrawal.go ... │ └── router/ │ └── router.go # 路由注册,路径与现网 /api/* 一致 ├── .env, .env.example ├── go.mod, go.sum └── Makefile ```

3. 核心业务模块(在 handler 中实现)

  • 鉴权/api/admin 登录与鉴权,管理端 Cookie/Token小程序走 /api/miniprogram/login 等。
  • 用户/api/user/profile/api/user/update/api/user/track/api/user/purchase-status 等。
  • 书籍/章节/api/book/*(目录、章节、搜索、统计)。
  • 订单与支付/api/orders/api/miniprogram/pay、支付回调等。
  • 分销与提现/api/referral/*/api/distribution/*/api/withdraw/*/api/admin/withdrawals
  • 配置与内容/api/config/api/content/api/db/config/api/db/book 等。
  • 管理端/api/admin/*(章节、分销概览、提现审核等)、/api/db/*(用户、配置、初始化等)。

4. 接口与字段规范

  • 路径:与现网完全一致(如 GET /api/user/profilePUT /api/admin/withdrawals),便于前端只改 baseUrl 切换后端。
  • 请求/响应字段:一律小写开头驼峰camelCase
    • Go 结构体:json:"userId"json:"createdAt"json:"referralCode"
    • 数据库列名:保持 snake_caseuser_idcreated_at),仅在 GORM 与 SQL 中使用,不暴露给前端。
  • 统一响应:成功可返回 gin.H{"success": true, "data": ...};失败 gin.H{"success": false, "error": "..."}

5. 数据库与配置

  • 数据库MySQLGORM 连接;表结构可与原 Next/Prisma 保持一致,便于迁移。
  • 配置:环境变量(.envDB_*PORTCORS_ORIGINSJWT_SECRET 等;敏感信息不提交仓库。

6. 扩展性

  • 鉴权:管理端已用 middleware.AdminAuth() 保护 /api/admin/*/api/db/*
  • CORS:已配置 AllowOrigins/AllowCredentials支持 soul-admin 与小程序跨域。
  • 限流:可按需在 middleware 中增加 rate limit。

卡若说: soul-api 是唯一对外后端,功能明确、路径与字段规范统一,便于多端复用与维护。