专注于分享 Java 方向的 代码 辅导内容,欢迎交流
萌宠集市 PetMall
一个基于 Spring Boot 3.x/2.7 + MyBatis-Plus 的宠物交易平台,提供宠物发布、浏览、交易、订单、钱包、收藏、公告等完整功能,并配有独立的商家管理与平台管理后台。

项目简介
萌宠集市(PetMall)是一个安全可靠的宠物交易平台,买家可以浏览、搜索、收藏宠物,通过钱包担保完成交易;卖家可以发布宠物、管理订单;平台管理员负责宠物审核、用户管理、分类与公告维护。
技术栈
| 分类 | 技术 |
|---|---|
| 后端框架 | Spring Boot 2.7.18 |
| ORM | MyBatis-Plus 3.5.3.1 |
| 数据库 | MySQL 8.0 / MariaDB |
| 认证鉴权 | JWT + Spring Security Crypto (BCrypt) |
| 前端 | 原生 HTML/CSS/JavaScript |
| 构建工具 | Maven |
| Java 版本 | JDK 8+(17 需补 JAXB 依赖) |
功能总览
用户端
- 用户注册 / 登录(JWT 认证)
- 宠物分类浏览、关键词搜索、筛选排序
- 宠物详情(图片轮播、卖家信息、收藏)
- 购物车(加入、移除、结算)
- 订单流程(下单、支付、取消、发货、确认收货)
- 钱包(充值、交易流水)
- 发布宠物(等待平台审核)
- 我的发布(编辑、下架、重新上架、删除)
- 我的收藏、个人中心(资料、密码修改)
管理端
- 宠物审核(通过 / 驳回)
- 宠物管理(强制下架、状态筛选)
- 订单管理(全量订单查询)
- 用户管理(禁用、删除)
- 分类管理(增删)
- 公告管理(发布、编辑、删除、启停用)
快速开始
1. 环境准备
- JDK 8+(或 JDK 17 + JAXB 依赖,pom 已内置)
- Maven 3.6+
- MySQL 8.0 / MariaDB
2. 初始化数据库
-- 使用项目自带脚本创建库表与种子数据
mysql -u root -p < sql/pet_mall.sql
3. 配置数据库连接
修改 src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/pet_mall?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
petmall:
upload:
dir: /workspace/uploads # 图片上传保存目录
应用首次启动时会自动创建默认管理员账号
admin / 123456。
4. 构建与启动
mvn clean package -DskipTests
java -jar target/pet-mall.jar
启动成功后访问 http://localhost:8080
5. 演示账号
| 角色 | 账号 | 密码 |
|---|---|---|
| 平台管理员 | admin | 123456 |
| 卖家 | seller01 | 123456 |
| 买家 | buyer01 | 123456 |
功能截图说明
用户端
首页
平台门户首页,包含 Hero 宣传区、宠物分类导航、搜索筛选栏、萌宠展示网格与平台公告。

游客可浏览全部在售宠物,点击分类图标按「猫咪 / 狗狗 / 兔子 / 仓鼠 / 鸟类 / 爬宠 / 鱼类」筛选,也可按关键词、性别、疫苗、价格进行搜索排序。
宠物详情
展示宠物图片轮播、品种信息、价格、卖家信息、浏览量,并提供「加入购物车」「立即购买」「收藏」操作。

已售出的宠物会展示「已售出」状态,无法再次购买。

用户登录
账号密码登录,登录成功后跳转首页,支持记录跳转来源。

用户注册
注册账号需填写用户名(3-20位)、密码(6-20位)、昵称与手机号,手机号需符合大陆手机格式。

公告详情
平台公告详情页,展示公告标题、内容与发布时间。

买家首页(已登录)
登录后顶部导航显示昵称与头像,可直达购物车、订单、发布、收藏、钱包等入口。

购物车
展示加入购物车的宠物,支持勾选、删除,并可一键结算生成订单。

我的订单
买家视角的订单列表,支持按状态筛选(待付款 / 待发货 / 待收货 / 已完成 / 已取消),可执行支付、取消、确认收货等操作。

我的收藏
展示收藏的宠物卡片,点击可进入详情。

我的钱包
展示钱包余额与收支流水,支持在线充值(单次最高 5000 元),流水区分充值、购买支出、售出收入。

个人中心
修改昵称、手机号、头像以及登录密码。

宠物详情(可购买)
在售宠物的详情页展示完整购买操作按钮。

我的发布(卖家)
卖家查看自己发布的宠物列表,包含审核状态(待审核 / 在售 / 已售出 / 已下架 / 审核驳回),支持编辑、下架、重新上架、删除。

发布宠物
填写分类、名称、品种、年龄、性别、毛色、疫苗、描述、价格与封面图片,发布后等待平台审核。

卖家订单
卖家视角的订单列表,展示售出记录,支持发货操作。

卖家钱包
卖家收到货款后钱包余额增加,流水记录售出收入。

管理端
管理端登录
管理员通过独立登录入口进入管理后台。

宠物审核
对待审核宠物进行审核,可查看详情、点击「通过」上架或「驳回」。

宠物管理
按状态筛选全部宠物,支持强制下架违规宠物。

订单管理
查看平台全部订单,按状态筛选,掌握交易全貌。

用户管理
查看用户列表(余额、手机号、注册时间),支持禁用、删除用户。

分类管理
维护宠物分类,支持新增、删除分类。

公告管理
发布平台公告,支持编辑、删除、启用 / 停用公告。

项目结构
src/main/java/com/petmall/
├── controller/ # 用户端控制器(认证、宠物、购物车、订单、钱包、收藏、公告)
│ └── admin/ # 管理端控制器(审核、宠物、订单、用户、分类、公告)
├── service/ # 业务逻辑层
├── mapper/ # MyBatis-Plus Mapper
├── entity/ # 实体类(User、Pet、Order、Cart、Favorite 等)
├── dto/ # 请求参数对象
├── config/ # 配置(WebConfig、拦截器、上传、JWT、MyBatis-Plus)
├── interceptor/ # 登录拦截器、管理员拦截器
├── util/ # JWT、当前用户上下文
├── common/ # 统一返回、异常、分页
├── init/ # 启动初始化(创建默认管理员)
src/main/resources/
├── static/ # 前端页面(用户端 + admin 管理端)
└── application.yml # 应用配置
sql/pet_mall.sql # 数据库初始化脚本
API 概览
| 模块 | 路径前缀 | 说明 |
|---|---|---|
| 认证 | /api/auth/* |
注册、登录 |
| 宠物 | /api/pet/* |
列表、详情、发布、我的发布、上下架 |
| 购物车 | /api/cart/* |
加购、移除、清空、列表 |
| 订单 | /api/order/* |
下单、支付、取消、发货、收货 |
| 钱包 | /api/wallet/* |
交易流水 |
| 用户 | /api/user/* |
个人信息、充值、改密 |
| 收藏 | /api/favorite/* |
添加、移除、列表 |
| 公告 | /api/announcement/* |
公告列表、详情 |
| 文件 | /api/file/* |
图片上传 |
| 管理端 | /api/admin/* |
审核、宠物管理、订单、用户、分类、公告 |