Files
sundynix-pets/pets-be/README.md
T

2.2 KiB
Raw Blame History

肉垫计划

核心功能:多宠物档案、日常照顾任务、多宠物遛狗与主动位置分享、约遛。后端用 Gin + GORM + PostgreSQL,管理端用 React + Vite + shadcn/ui + Tailwind,构建后通过 go:embed 随服务提供 /admin/。

目录

  • cmd/server:服务入口
  • internal/config:配置
  • internal/model:数据库模型
  • internal/database:PostgreSQL 连接和迁移
  • internal/storage:MinIO 文件存储
  • internal/httpapi:用户与管理端 API
  • web/admin:管理端源码
  • internal/admin/dist:嵌入的管理端构建产物

本地启动

  1. cp configs/config.example.yaml configs/config.yaml,设置 PostgreSQL、MinIO、JWT 和微信参数。配置文件不进入 Git。
  2. cd web/admin && npm ci && npm run build。
  3. 若数据库还不存在,在 pets-be 目录执行一次 go run ./cmd/dbinit。
  4. 执行 go run ./cmd/server。

默认业务接口 http://localhost:9090/api,管理端 http://localhost:9090/admin/。小程序生产 API 地址是 https://pet.sundynix.cn/api。

配置可用 PETS_ 前缀的环境变量覆盖,例如 PETS_POSTGRES_PASSWORD。生产模式必须设置 PETS_ADMIN_PASSWORD,微信登录需要 App ID 和 App Secret。auth.dev_login 只能在 debug 模式开启。

数据

GORM 使用 sundynix_ 表前缀、单数 snake_case 表名和字段名,例如 sundynix_user。主键均为 PostgreSQL uuid,Go 字段为 string。文件内容存 MinIO;sundynix_file 存 bucket、object_key、md5、url 和元信息。头像与约遛封面只通过 *_file_id 关联文件表。上传会先按 MD5 查重。

现有 MySQL 数据未自动迁移。新的 PostgreSQL 表在服务启动时自动创建。正式切换旧数据前,应单独设计数据迁移映射并备份。

部署

../deploy/docker-compose.yml 使用外部 PostgreSQL 和 MinIO;把 ../deploy/.env.example 复制为 .env 后设置凭据。pet.sundynix.cn 用于业务 API;s3.sundynix.cn 用于文件上传和图片直链。URL 由 MinIO endpoint、bucket 和 object key 拼接,在上传时写入文件表,格式为 https://s3.sundynix.cn/sundynix-pet/<object_key>。res.sundynix.cn/browser/... 是 MinIO 控制台页面,不能作为图片直链。