PetMarket 是一个完整的宠物交易平台,包含 Android 移动应用和 Spring Boot 后端服务。用户可以浏览、搜索、收藏和交易宠物,支持实时通知、AI 助手等功能。
PetMarket/
├── app/ # Android 应用
│ ├── src/main/
│ │ ├── java/ # Java 源代码
│ │ └── res/ # 资源文件
│ └── build.gradle.kts # Gradle 构建配置
│
└── backend/ # Spring Boot 后端服务
├── src/main/
│ ├── java/ # Java 源代码
│ └── resources/ # 配置文件
├── pom.xml # Maven 构建配置
└── target/ # 编译输出目录
- 语言: Java
- 架构: Fragment + Activity
- 网络: Retrofit + OkHttp
- 图片加载: Glide
- 数据库: Room (本地缓存,已迁移到后端)
- UI: Material Design
- 框架: Spring Boot 3.2.0
- 数据库: MySQL 8.0
- ORM: Spring Data JPA / Hibernate
- 构建工具: Maven
- API: RESTful API
- JDK: 17+
- Maven: 3.6+
- MySQL: 8.0+
- Android Studio: 最新版本
- Gradle: 8.0+
CREATE DATABASE IF NOT EXISTS Androidpet CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;编辑 backend/src/main/resources/application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/Androidpet
spring.datasource.username=YOUR_DATABASE_USERNAME
spring.datasource.password=YOUR_DATABASE_PASSWORD
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialectcd backend
mvn spring-boot:run# 先编译
cd backend
mvn clean package -DskipTests
# 运行
java -jar target/androidpet-backend-1.0.0.jar双击运行 backend/快速编译.bat
编辑 app/src/main/java/com/example/androidpet/api/ApiClient.java,根据你的环境修改 BACKEND_BASE_URL:
- Android 模拟器:
http://10.0.2.2:8080/api/ - 真机测试:
http://你的电脑IP:8080/api/(例如:http://192.168.1.100:8080/api/)
如果需要使用 AI 助手功能,编辑 app/src/main/java/com/example/androidpet/PetAiAssistantFragment.java,将 ZHIPU_AI_API_KEY 替换为你的智谱 AI API Key:
private static final String ZHIPU_AI_API_KEY = "YOUR_ZHIPU_AI_API_KEY_HERE";注意:如果没有配置 API Key,AI 助手功能将无法使用。
- 使用 Android Studio 打开项目
- 连接设备或启动模拟器
- 点击运行按钮
- 🏠 首页: 轮播图展示、宠物列表(小红书风格)
- 🔍 AI 助手: 基于智谱 AI 的宠物咨询助手,支持流式输出
- 🔔 通知中心: 实时通知(价格变化、已售出、公告推送)
- 👤 个人中心:
- 我的收藏
- 我发布的宠物
- 在售宠物
- 已售出宠物
- 购买记录
- 收货地址管理
- 📱 宠物详情: 完整的宠物信息展示、收藏、购买功能
- 🔄 下拉刷新: 首页和通知页面支持下拉刷新
- 📡 RESTful API: 完整的 CRUD 接口
- 🌐 Web 管理界面: 浏览器访问
http://localhost:8080/admin- 宠物管理
- 轮播图管理
- 通知与公告管理
- 用户管理
- 收藏管理
- 购买记录管理
- 📤 文件上传: 支持图片上传,自动存储到
backend/uploads/目录 - 🔄 数据初始化: 首次启动自动初始化演示数据
GET /api/pets- 获取所有宠物GET /api/pets/home- 获取首页显示的宠物GET /api/pets/my- 获取我的宠物GET /api/pets/my/selling- 获取我在售的宠物GET /api/pets/my/sold- 获取我已售出的宠物GET /api/pets/{id}- 获取宠物详情GET /api/pets/{id}/recommended- 获取推荐宠物POST /api/pets- 创建宠物PUT /api/pets/{id}- 更新宠物DELETE /api/pets/{id}- 删除宠物
GET /api/carousels- 获取所有轮播图POST /api/carousels- 创建轮播图PUT /api/carousels/{id}- 更新轮播图DELETE /api/carousels/{id}- 删除轮播图
GET /api/favorites- 获取所有收藏GET /api/favorites/pet/{petId}- 获取宠物收藏信息GET /api/favorites/pet/{petId}/check- 检查是否收藏POST /api/favorites- 添加收藏DELETE /api/favorites/{id}- 取消收藏
GET /api/notifications- 获取所有通知GET /api/notifications/unread- 获取未读通知GET /api/notifications/unread/count- 获取未读通知数量POST /api/notifications- 创建通知PUT /api/notifications/mark-all-read- 标记所有为已读DELETE /api/notifications/{id}- 删除通知DELETE /api/notifications- 删除所有通知
GET /api/purchases- 获取所有购买记录POST /api/purchases- 创建购买记录
GET /api/users- 获取所有用户GET /api/users/{id}- 获取用户详情POST /api/users- 创建用户PUT /api/users/{id}- 更新用户
POST /api/upload/image- 上传图片文件- 参数:
file(MultipartFile) - 返回:
{ "url": "/api/files/{filename}", "filename": "{filename}" }
- 参数:
启动后端服务后,访问以下地址:
- 管理后台首页: http://localhost:8080/admin
- 宠物管理: http://localhost:8080/admin/pets
- 通知与公告管理: http://localhost:8080/admin/notifications
- 轮播图管理: http://localhost:8080/admin/carousels
- 用户管理: http://localhost:8080/admin/users
- 收藏管理: http://localhost:8080/admin/favorites
- 购买记录管理: http://localhost:8080/admin/purchases
- ✅ 完整的 CRUD 操作
- ✅ 图片上传功能(支持浏览器直接上传)
- ✅ 实时数据同步
- ✅ 响应式设计
上传的文件存储在 backend/uploads/ 目录(项目根目录下)
- URL 路径:
/api/files/{filename}(用于访问) - 实际路径:
backend/uploads/{filename}(文件存储)
- 在 Web 管理界面选择图片文件
- 点击"上传图片"按钮
- 上传成功后,图片 URL 会自动填充
- 图片可通过
http://localhost:8080/api/files/{filename}访问
问题: MySQL 连接失败
解决方案:
- 检查 MySQL 服务是否运行
- 检查数据库
Androidpet是否已创建 - 检查用户名密码是否正确
Windows 检查 MySQL:
net start MySQLLinux/Mac 检查 MySQL:
sudo systemctl status mysql问题: 网络请求失败
解决方案:
- 检查后端服务是否启动(访问 http://localhost:8080/api/pets)
- 检查
ApiClient.java中的BACKEND_BASE_URL是否正确 - 真机测试时,确保手机和电脑在同一网络
- 检查防火墙设置,确保 8080 端口开放
问题: 轮播图或宠物图片显示为空
解决方案:
- 检查图片 URL 是否正确
- 检查
backend/uploads/目录是否存在 - 检查
FileConfig.java配置是否正确 - 确保图片 URL 是完整路径(相对路径会自动转换为完整 URL)
问题: 8080 端口已被使用
解决方案:
修改 backend/src/main/resources/application.properties:
server.port=8081同时修改 Android 应用的 ApiClient.java 中的端口号。
问题: Maven 编译错误
解决方案:
- 检查 Java 版本是否为 17+
- 检查网络连接(需要下载依赖)
- 检查 Maven 配置是否正确
PetMarket - 宠物市场
后端服务首次启动时,如果数据库为空,会自动初始化演示数据:
- 用户数据
- 轮播图数据
- 宠物数据
- 收藏记录
- 购买记录
- 通知数据
Android 应用会自动处理相对路径的图片 URL:
- 相对路径
/api/files/xxx.jpg会自动转换为http://10.0.2.2:8080/api/files/xxx.jpg - 完整 URL 直接使用
确保 AndroidManifest.xml 中有以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />并且 <application> 标签中添加:
android:usesCleartextTraffic="true"- ✅ 添加用户认证(JWT Token)
- ✅ 实现数据缓存机制
- ✅ 添加离线支持
- ✅ 优化网络请求错误处理
- ✅ 实现数据分页加载
- ✅ 添加图片压缩功能
- ✅ 支持多图片上传
- ✅ 添加数据统计图表
本项目仅供学习和演示使用。
如有问题或建议,欢迎提交 Issue。