连接每一只需要家的动物与每一颗愿意付出爱的心。
LinkPet 是一个面向普通用户与管理员的宠物领养平台,支持宠物发布与浏览、领养申请、社区帖子、图片上传等完整业务闭环。
- 首页:动态统计数据(成功领养数、待领养数、注册用户数)、全局装饰背景
- 领养中心:按品种筛选宠物、查看宠物详情弹窗(多图轮播)、申请领养、发布宠物
- 宠物社区:浏览帖子、发布帖子、点赞 / 取消点赞、评论 / 回复、删除自己的帖子
- 个人中心:查看我发布的宠物 / 帖子、领养申请记录
- 自定义品种:发布宠物时可填写自定义品种名称,提交管理员审核
- 用户管理、宠物管理、帖子管理(包括删帖)、领养申请审核
- 品种管理:审核用户提交的自定义品种,通过后自动创建品种记录
- JWT 无状态认证(用户端 + 管理端独立 Security 配置)
- MinIO 图片对象存储(支持多图上传)
- 全局统一响应格式
{ code, message, data } - 雪花 ID Long → String 序列化,避免前端精度丢失
| 层次 | 技术 |
|---|---|
| 后端框架 | Spring Boot 3.2 |
| 持久层 | MyBatis-Plus 3.5.5 |
| 安全认证 | Spring Security + JWT (jjwt 0.11) |
| 对象存储 | MinIO 8.2 |
| 数据库 | MySQL 8 |
| 前端框架 | Vue 3 + Vite |
| HTTP 客户端 | Axios |
| 构建工具 | Maven(多模块) |
| Java 版本 | Java 17 |
LinkPet/ ├── linkpet-common/ # 公共模块:JWT、MinIO、ThreadLocal、统一响应、全局异常 ├── linkpet-model/ # 数据模型:Entity / DTO / VO ├── linkpet-mapper/ # 持久层:MyBatis-Plus Mapper + XML ├── linkpet-service/ # 业务层:Service 接口 + 实现 ├── linkpet-web-app/ # 用户端 API(端口 8080) ├── linkpet-web-admin/ # 管理端 API(独立端口) ├── linkpet-frontend/ # Vue 3 前端(Vite) │ └── src/ │ ├── api/ # 接口封装(pets / posts / auth / upload...) │ ├── views/ # 页面(home / adoption / community / guide / profile) │ ├── router/ # 路由配置 │ ├── store/ # 用户状态管理 │ └── utils/ # 工具函数(format / http) └── docs/ # 开发文档(dev-log.md / issues.md) | 表名 | 说明 |
|---|---|
user | 用户信息 |
pet_type | 宠物品种 |
pet | 宠物信息(含多图 JSON) |
post | 社区帖子 |
comment | 评论(支持一级 + 回复) |
user_action | 用户行为(点赞记录) |
adoption_apply | 领养申请 |
完整建表语句见 docs/db.sql。
- JDK 17+
- Maven 3.8+
- MySQL 8.0+
- MinIO(本地部署或云端)
- Node.js 18+
-
初始化数据库
-- 执行建表语句 source docs/db.sql;
-
配置文件
在
linkpet-web-app/src/main/resources/application.yml和linkpet-web-admin/src/main/resources/application.yml中配置:spring: datasource: url: jdbc:mysql://localhost:3306/linkpet username: your_username password: your_password minio: endpoint: http://localhost:9000 access-key: your_access_key secret-key: your_secret_key bucket-name: linkpet
-
编译并启动
# 编译整个多模块项目 mvn clean install -DskipTests # 启动用户端 cd linkpet-web-app mvn spring-boot:run # 启动管理端(新终端) cd linkpet-web-admin mvn spring-boot:run
cd linkpet-frontend npm install npm run dev| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /auth/register | 注册 |
| POST | /auth/login | 登录(返回 JWT) |
| GET | /pets | 分页查询宠物列表 |
| GET | /pets/{id} | 宠物详情(含点赞状态) |
| POST | /pets | 发布宠物(需登录) |
| DELETE | /pets/{id} | 删除宠物(需登录) |
| GET | /posts | 分页查询帖子列表 |
| POST | /posts | 发布帖子(需登录) |
| PUT | /posts/{id}/like | 点赞 / 取消点赞 |
| GET | /comments | 查询评论列表 |
| POST | /comments | 发表评论(需登录) |
| POST | /adoptions | 提交领养申请(需登录) |
| POST | /upload/image | 上传图片至 MinIO |
| GET | /stats/home | 首页统计数据 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /admin/auth/login | 管理员登录 |
| GET | /admin/pets/type-reviews | 待审核自定义品种列表 |
| PUT | /admin/pets/{id}/type-review | 审核品种(?approved=true/false) |
| GET | /admin/adoptions | 领养申请列表 |
| PUT | /admin/adoptions/{id} | 审核领养申请 |