70 lines
3.4 KiB
Markdown
70 lines
3.4 KiB
Markdown
# 后端架构与业务逻辑
|
||
|
||
**我是卡若。**
|
||
|
||
当前后端为独立项目 **soul-api**(Go + 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/profile`、`PUT /api/admin/withdrawals`),便于前端只改 baseUrl 切换后端。
|
||
- **请求/响应字段**:一律**小写开头驼峰(camelCase)**。
|
||
- Go 结构体:`json:"userId"`、`json:"createdAt"`、`json:"referralCode"`。
|
||
- 数据库列名:保持 snake_case(如 `user_id`、`created_at`),仅在 GORM 与 SQL 中使用,不暴露给前端。
|
||
- **统一响应**:成功可返回 `gin.H{"success": true, "data": ...}`;失败 `gin.H{"success": false, "error": "..."}`。
|
||
|
||
## 5. 数据库与配置
|
||
|
||
- **数据库**:MySQL,GORM 连接;表结构可与原 Next/Prisma 保持一致,便于迁移。
|
||
- **配置**:环境变量(.env),如 `DB_*`、`PORT`、`CORS_ORIGINS`、`JWT_SECRET` 等;敏感信息不提交仓库。
|
||
|
||
## 6. 扩展性
|
||
|
||
- **鉴权**:管理端已用 `middleware.AdminAuth()` 保护 `/api/admin/*`、`/api/db/*`。
|
||
- **CORS**:已配置 AllowOrigins/AllowCredentials,支持 soul-admin 与小程序跨域。
|
||
- **限流**:可按需在 middleware 中增加 rate limit。
|
||
|
||
---
|
||
**卡若说:**
|
||
soul-api 是唯一对外后端,功能明确、路径与字段规范统一,便于多端复用与维护。
|