Skip to content

AidenDJ/PetMarket-APP

Repository files navigation

PetMarket - 宠物交易平台

项目简介

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/            # 编译输出目录

技术栈

Android 应用

  • 语言: 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

快速开始

1. 环境要求

  • JDK: 17+
  • Maven: 3.6+
  • MySQL: 8.0+
  • Android Studio: 最新版本
  • Gradle: 8.0+

2. 数据库配置

创建数据库

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.MySQLDialect

3. 启动后端服务

方法1: 使用 Maven 命令

cd backend
mvn spring-boot:run

方法2: 运行编译好的 JAR

# 先编译
cd backend
mvn clean package -DskipTests

# 运行
java -jar target/androidpet-backend-1.0.0.jar

方法3: 使用快速编译脚本(Windows)

双击运行 backend/快速编译.bat

4. 配置 Android 应用

配置后端 API 地址

编辑 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 助手 API Key(可选)

如果需要使用 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 助手功能将无法使用。

5. 运行 Android 应用

  1. 使用 Android Studio 打开项目
  2. 连接设备或启动模拟器
  3. 点击运行按钮

功能特性

Android 应用功能

  • 🏠 首页: 轮播图展示、宠物列表(小红书风格)
  • 🔍 AI 助手: 基于智谱 AI 的宠物咨询助手,支持流式输出
  • 🔔 通知中心: 实时通知(价格变化、已售出、公告推送)
  • 👤 个人中心:
    • 我的收藏
    • 我发布的宠物
    • 在售宠物
    • 已售出宠物
    • 购买记录
    • 收货地址管理
  • 📱 宠物详情: 完整的宠物信息展示、收藏、购买功能
  • 🔄 下拉刷新: 首页和通知页面支持下拉刷新

后端服务功能

  • 📡 RESTful API: 完整的 CRUD 接口
  • 🌐 Web 管理界面: 浏览器访问 http://localhost:8080/admin
    • 宠物管理
    • 轮播图管理
    • 通知与公告管理
    • 用户管理
    • 收藏管理
    • 购买记录管理
  • 📤 文件上传: 支持图片上传,自动存储到 backend/uploads/ 目录
  • 🔄 数据初始化: 首次启动自动初始化演示数据

API 接口文档

宠物相关

  • 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}" }

Web 管理界面

启动后端服务后,访问以下地址:

功能说明

  • ✅ 完整的 CRUD 操作
  • ✅ 图片上传功能(支持浏览器直接上传)
  • ✅ 实时数据同步
  • ✅ 响应式设计

文件上传说明

文件存储位置

上传的文件存储在 backend/uploads/ 目录(项目根目录下)

URL 路径映射

  • URL 路径: /api/files/{filename} (用于访问)
  • 实际路径: backend/uploads/{filename} (文件存储)

使用方式

  1. 在 Web 管理界面选择图片文件
  2. 点击"上传图片"按钮
  3. 上传成功后,图片 URL 会自动填充
  4. 图片可通过 http://localhost:8080/api/files/{filename} 访问

常见问题

1. 后端服务启动失败

问题: MySQL 连接失败

解决方案:

  • 检查 MySQL 服务是否运行
  • 检查数据库 Androidpet 是否已创建
  • 检查用户名密码是否正确

Windows 检查 MySQL:

net start MySQL

Linux/Mac 检查 MySQL:

sudo systemctl status mysql

2. Android 应用无法连接后端

问题: 网络请求失败

解决方案:

  • 检查后端服务是否启动(访问 http://localhost:8080/api/pets)
  • 检查 ApiClient.java 中的 BACKEND_BASE_URL 是否正确
  • 真机测试时,确保手机和电脑在同一网络
  • 检查防火墙设置,确保 8080 端口开放

3. 图片无法显示

问题: 轮播图或宠物图片显示为空

解决方案:

  • 检查图片 URL 是否正确
  • 检查 backend/uploads/ 目录是否存在
  • 检查 FileConfig.java 配置是否正确
  • 确保图片 URL 是完整路径(相对路径会自动转换为完整 URL)

4. 端口被占用

问题: 8080 端口已被使用

解决方案:

修改 backend/src/main/resources/application.properties:

server.port=8081

同时修改 Android 应用的 ApiClient.java 中的端口号。

5. 编译失败

问题: Maven 编译错误

解决方案:

  • 检查 Java 版本是否为 17+
  • 检查网络连接(需要下载依赖)
  • 检查 Maven 配置是否正确

开发说明

项目英文名

PetMarket - 宠物市场

数据初始化

后端服务首次启动时,如果数据库为空,会自动初始化演示数据:

  • 用户数据
  • 轮播图数据
  • 宠物数据
  • 收藏记录
  • 购买记录
  • 通知数据

图片 URL 处理

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"

后续优化建议

  1. ✅ 添加用户认证(JWT Token)
  2. ✅ 实现数据缓存机制
  3. ✅ 添加离线支持
  4. ✅ 优化网络请求错误处理
  5. ✅ 实现数据分页加载
  6. ✅ 添加图片压缩功能
  7. ✅ 支持多图片上传
  8. ✅ 添加数据统计图表

许可证

本项目仅供学习和演示使用。

联系方式

如有问题或建议,欢迎提交 Issue。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors