# FitScan **Repository Path**: ndkkfl/fit-scan ## Basic Information - **Project Name**: FitScan - **Description**: FitScan 是一款基于 AI 图像识别的健身器材使用指导工具,帮助用户快速了解器材使用方法,生成个性化训练方案。 核心功能: 拍摄健身器材 → AI 识别 → 生成多种训练动作方案 发布平台: 微信小程序 + 安卓 App + 后台管理系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-19 - **Last Updated**: 2026-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FitScan 后端 - 健身训练助手 基于 Spring Boot 3.2 + Java 17 + Sa-Token 权限认证 --- ## 🚀 快速启动 ### 1. 环境要求 - JDK 17+ - Maven 3.6+ - MySQL 8.0+ - Redis 7.0+ ### 2. 初始化数据库 ```bash # 执行 SQL 脚本 mysql -u root -p < sql/init.sql ``` ### 3. 配置环境变量 ```bash # 数据库密码(可选,默认 root) export DB_PASSWORD=your_password # Redis 配置(可选,默认 localhost:6379) export REDIS_HOST=127.0.0.1 export REDIS_PORT=6379 export REDIS_PASSWORD= # 智谱 AI API Key(必须) export ZHIPU_API_KEY=your_zhipu_api_key ``` ### 4. 启动项目 ```bash cd /root/.openclaw/workspace/fitscan-backend mvn spring-boot:run ``` ### 5. 访问 API 文档 ``` http://localhost:8080/api/v1/doc.html ``` --- ## 📋 核心功能 ### 1. 用户认证(Sa-Token) | 接口 | 方法 | 说明 | 需要登录 | |------|------|------|---------| | `/auth/login` | POST | 用户登录 | ❌ | | `/auth/logout` | POST | 用户登出 | ✅ | | `/auth/current` | GET | 获取当前用户 | ✅ | **登录示例:** ```bash curl -X POST http://localhost:8080/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{"account":"admin","password":"123456"}' ``` **响应:** ```json { "code": 200, "message": "success", "data": { "token": "xxxxx-xxxxx-xxxxx", "tokenName": "Authorization", "userId": 1, "username": "admin", "nickname": "管理员" } } ``` **后续请求携带 Token:** ```bash curl -X GET http://localhost:8080/api/v1/auth/current \ -H "Authorization: xxxxx-xxxxx-xxxxx" ``` --- ### 2. AI 健身器材识别(智谱 GLM-4V) | 接口 | 方法 | 说明 | 需要登录 | |------|------|------|---------| | `/ai/recognize` | POST | 识别健身器材 | ✅ | **识别示例:** ```bash curl -X POST http://localhost:8080/api/v1/ai/recognize \ -H "Authorization: your_token" \ -F "image=@dumbbell.jpg" ``` **响应:** ```json { "code": 200, "message": "success", "data": "{ \"equipmentName\": \"哑铃\", \"category\": \"力量器材\", \"confidence\": 0.95, \"description\": \"哑铃是自由重量训练器材\", \"recommendedExercises\": [ { \"name\": \"哑铃弯举\", \"difficulty\": \"新手\", \"muscleGroups\": [\"肱二头肌\"], \"recommendedSets\": 3, \"recommendedReps\": \"8-12\", \"restTime\": 60 } ], \"safetyTips\": [\"选择合适的重量\", \"保持身体稳定\"] }" } ``` --- ## 🗄️ 数据库表 | 表名 | 说明 | |------|------| | `users` | 用户表 | | `equipment` | 健身器材表 | | `exercises` | 动作表 | | `training_plans` | 训练计划表 | | `user_records` | 用户训练记录表 | | `recognition_logs` | AI 识别日志表 | | `user_collections` | 用户收藏表 | --- ## 🔧 技术栈 | 组件 | 版本 | 说明 | |------|------|------| | Spring Boot | 3.2.3 | 核心框架 | | Java | 17 | 编程语言 | | MyBatis Plus | 3.5.5 | ORM 框架 | | Sa-Token | 1.37.0 | 权限认证 | | MySQL | 8.0+ | 数据库 | | Redis | 7.0+ | 缓存 | | 智谱 AI | glm-4v | 多模态大模型 | | Knife4j | 4.4.0 | API 文档 | --- ## 📁 项目结构 ``` fitscan-backend/ ├── src/main/java/com/fitscan/ │ ├── FitscanBackendApplication.java # 启动类 │ ├── auth/ │ │ ├── controller/AuthController.java # 认证控制器 │ │ ├── service/AuthService.java # 认证服务 │ │ └── dto/ # 认证 DTO │ ├── ai/ │ │ ├── controller/AiRecognitionController.java # AI 识别控制器 │ │ └── service/ZhipuAiService.java # 智谱 AI 服务 │ ├── config/ │ │ ├── SaTokenConfig.java # Sa-Token 配置 │ │ └── MyBatisPlusConfig.java # MyBatis Plus 配置 │ ├── entity/ │ │ └── User.java # 用户实体 │ ├── mapper/ │ │ └── UserMapper.java # 用户 Mapper │ └── common/ │ └── Result.java # 统一响应 ├── src/main/resources/ │ ├── application.yml # 配置文件 │ └── mapper/ # MyBatis XML ├── sql/ │ └── init.sql # 数据库初始化脚本 └── pom.xml # Maven 配置 ``` --- ## 🔑 获取智谱 AI API Key 1. 访问:https://open.bigmodel.cn/ 2. 注册/登录账号 3. 进入控制台:https://open.bigmodel.cn/console 4. 创建应用 → 获取 API Key 5. 新用户赠送 100 万 token(约 2000 次识别) --- ## 🛡️ Sa-Token 配置 配置文件 `application.yml`: ```yaml sa-token: token-name: Authorization timeout: 7200 # 2 小时(秒) activity-timeout: -1 # 永不过期 is-concurrent: true # 允许同账号同时登录 is-share: true # 共享登录会话 token-style: uuid # Token 风格 is-log: false # 关闭操作日志 is-read-cookie: false # 不读取 Cookie(移动端友好) ``` --- ## 📊 API 测试 ### 测试登录 ```bash curl -X POST http://localhost:8080/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{"account":"admin","password":"123456"}' ``` ### 测试 AI 识别 ```bash # 准备一张健身器材图片 curl -X POST http://localhost:8080/api/v1/ai/recognize \ -H "Authorization: your_token" \ -F "image=@/path/to/equipment.jpg" ``` --- ## 📝 默认账号 | 用户名 | 密码 | 说明 | |--------|------|------| | admin | 123456 | 管理员账号 | --- **版本**: v1.0 **更新时间**: 2026-03-19 **技术负责人**: Dev Agent 🦞