Files
sundynix-pets/pets-be/README.md
T
Blizzard 609f7d06cf init: 毛孩子计划 小程序 + Go 后端 + 内嵌后台
- pets-fe: 微信原生小程序(首页/计划/记录/报告/社区/引导),
  服务端驱动、无假数据;弹层改用 scroll-view,打开时隐藏自定义 tabBar
- pets-be: Gin + GORM(MySQL, sundynix_ 前缀) + MinIO,统一响应/分页,
  微信 code2session 登录,provider-neutral AI(DeepSeek),go:embed React 后台
- 修复:分段选择类型不匹配(字符串 vs 数字)导致选不中

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 15:36:55 +08:00

50 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 毛孩子计划 · 后端 (pets-be)
Gin + GORM + MySQL + MinIO 的宠物小程序后端,内嵌 React(Vite + Tailwind + shadcn/ui) 后台管理。
## 技术栈与约定
- 模块路径 `github.com/sundynix/pets-be`,标准 Go 布局(`cmd/ internal/ pkg/ configs/ deployments/ web/`
- 所有数据库表带前缀 `sundynix_`
- 统一响应 `{code, message, data}``pkg/response`),列表接口统一分页参数 `page` / `page_size``response.PageQuery` + `PageResult`
- MySQL `root/root``pets`MinIO `sundynix/sundynix``pets`
- 服务端口 `:8080`;后台在 `http://localhost:8080/admin`seed 管理员 `sundynix/sundynix`
## 快速开始
```bash
# 1. 起依赖(MySQL + MinIO
make env-up # 或 cd deployments && docker compose up -d
# 2. 构建后台前端 + 后端单二进制
make build # 产物 bin/pets-be(已 embed 后台)
./bin/pets-be
# 或开发期直接运行(使用现有 internal/admin/dist
make run
```
### 后台前端开发(热更新)
```bash
make admin-dev # vite dev server :5173,已代理 /api → :8080
# 改完执行 make admin-build 让产物落到 internal/admin/dist,再 go build 即 embed
```
## 目录
- `cmd/server` 入口:载配置→连库→迁移→seed→建桶→路由→启动
- `internal/config` 配置(viper,支持 `PETS_` 环境变量覆盖)
- `internal/model` GORM 模型(`sundynix_` 前缀)
- `internal/database` 连接/迁移/seed
- `internal/storage` MinIO 封装(自动建桶 + 上传)
- `internal/service` 业务逻辑;`internal/handler` HTTP 处理器;`internal/router` 路由
- `internal/middleware` CORS / 用户鉴权 / 管理员鉴权
- `internal/admin` `go:embed` 内嵌后台产物 + SPA fallback
- `pkg/response` 统一响应与分页;`pkg/jwt` 令牌;`pkg/errcode` 错误码
- `web/admin` 后台前端源码
## 接口
- 小程序 `/api/*`(用户 JWT):auth / user / pets / onboarding / records / tasks / plan / reminders / report / bill / community / articles / pro / ai / upload
- 后台 `/api/admin/*`(管理员 JWT):login / stats / users / pets / posts / comments / articles / memberships
## 登录鉴权
默认 `auth.dev_login: true``POST /api/auth/login {"nickname":"xxx"}` 即发用户 JWT。
接真微信:在 `configs/config.yaml``wechat.app_secret` 并把 `dev_login` 置 false,实现 `/api/auth/wechat`(code2session)。