基于 Golang 的智能餐盒 IoT + AI 营养管理系统后端服务
K-XYZ 智能餐盒系统通过 ESP32 硬件设备采集用户进食数据,结合 AI 大模型提供个性化营养建议,并支持社区化健康数据共享。
# 拉取镜像
docker pull mysql:8.0
docker pull redis:7-alpine
# 启动 MySQL(请自定义密码)
docker run -d --name kxyz-mysql \
-e MYSQL_ROOT_PASSWORD=your-mysql-password \
-e MYSQL_DATABASE=kxyz \
-p 3306:3306 mysql:8.0
# 启动 Redis
docker run -d --name kxyz-redis \
-p 6379:6379 redis:7-alpine
# 若容器已存在,直接启动
docker start kxyz-mysql kxyz-redis
PowerShell:
$env:HTTP_PORT="8080" $env:MYSQL_DSN="root:your-mysql-password@tcp(127.0.0.1:3306)/kxyz?charset=utf8mb4&parseTime=True&loc=Local" $env:REDIS_ADDR="127.0.0.1:6379" $env:REDIS_PASSWORD="" $env:REDIS_DB="0" $env:JWT_SECRET="your-jwt-secret" # 请自定义 $env:AI_BASE_URL="https://api.openai.com/v1" $env:AI_MODEL="gpt-4" $env:AI_API_KEY="your-ai-api-key" # 请自定义 $env:AI_TEMPERATURE="0.7"
Linux/macOS:
export HTTP_PORT="8080"
export MYSQL_DSN="root:your-mysql-password@tcp(127.0.0.1:3306)/kxyz?charset=utf8mb4&parseTime=True&loc=Local"
export REDIS_ADDR="127.0.0.1:6379"
export REDIS_PASSWORD=""
export REDIS_DB="0"
export JWT_SECRET="your-jwt-secret" # 请自定义
export AI_BASE_URL="https://api.openai.com/v1"
export AI_MODEL="gpt-4"
export AI_API_KEY="your-ai-api-key" # 请自定义
export AI_TEMPERATURE="0.7"
go run ./cmd/server
curl http://127.0.0.1:8080/api/v1/ping
预期响应:
{
"message": "pong",
"timestamp": "2026-03-20T09:10:37Z"
}
. ├── cmd/server/ # 应用入口 ├── internal/ │ ├── api/ # HTTP 处理器 │ ├── config/ # 配置加载 │ ├── middleware/ # 中间件(JWT 认证等) │ ├── model/ # 数据模型 │ ├── server/ # 路由配置 │ ├── service/ # 业务逻辑层 │ └── store/ # 数据访问层 └── scripts/ # 部署脚本
POST /api/v1/auth/register - 用户注册POST /api/v1/auth/login - 用户登录POST /api/v1/devices/bind - 绑定设备GET /api/v1/devices - 查询已绑定设备DELETE /api/v1/devices/{device_id} - 解绑设备POST /api/v1/hardware/telemetry - 遥测数据上报(ESP32)GET /api/v1/meals - 历史用餐列表GET /api/v1/meals/{meal_id} - 用餐详情PUT /api/v1/meals/{meal_id}/foods - 上传菜品信息GET /api/v1/meals/{meal_id}/trajectory - 就餐轨迹数据GET /api/v1/users/me/statistics/charts - 个人饮食图表GET /api/v1/users/me/ai-advice - 获取 AI 营养建议POST /api/v1/communities/create - 创建社区POST /api/v1/communities/{community_id}/join - 加入社区GET /api/v1/communities - 我的社区列表GET /api/v1/communities/{community_id}/dashboard - 社区大屏数据go test ./...
MIT