Skip to content

van104/campus-finder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎓 Campus Finder — 校园失物招领平台

👉 在线演示 (Live Demo)
一个基于 Spring Boot + Vue 3 的前后端分离校园失物招领信息共享平台
快速开始 »  ·  功能特性  ·  技术栈  ·  参与贡献


📖 项目简介

Campus Finder 是一个面向高校师生的失物招领信息管理平台。用户可以在平台上发布失物或招领信息,通过分类浏览和关键词搜索快速匹配,并在线提交认领申请。平台支持图片上传、实时通知、公告管理等功能,旨在为校园失物的寻回提供便捷、安全的渠道。

✨ 功能特性

👤 用户端

  • 注册 / 登录 — 基于学号的账号体系,JWT Token 认证
  • 信息发布 — 发布失物(丢失)或招领(捡到)信息,支持多图上传
  • 分类浏览 — 按物品类型分类浏览(手机、证件、书籍、雨伞等 14+ 类别)
  • 认领申请 — 在线提交认领请求,附带证明信息和联系方式
  • 认领审核 — 物品发布者审核认领申请,支持通过/拒绝并回复理由
  • 消息通知 — 实时接收认领申请通知,站内消息提醒
  • 个人中心 — 修改个人资料、头像、联系方式、密码

🔧 管理端

  • 用户管理 — 查看/禁用/删除用户,分配角色权限
  • 分类管理 — 物品分类的增删改查,支持排序和图标配置
  • 公告管理 — 发布/编辑/置顶/删除系统公告
  • 认领审计 — 查看全平台认领记录
  • 操作日志 — 记录关键操作(角色变更等)

🛡️ 系统特性

  • 角色权限 — 三级权限体系:USER / ADMIN / SUPER_ADMIN
  • 逻辑删除 — 数据软删除,支持数据恢复
  • 全局异常处理 — 统一错误响应格式
  • 分页查询 — MyBatis-Plus 分页插件
  • 文件上传 — 图片上传与静态资源服务

🛠️ 技术栈

后端

技术 版本 说明
Spring Boot 3.5.8 核心框架
Java 17 编程语言
MyBatis-Plus 3.5.6 ORM 框架
MySQL 9.x 关系型数据库
JWT 4.4.0 身份认证 (java-jwt)
Lombok 代码简化
Jakarta Validation 参数校验
Maven 项目构建

前端

技术 版本 说明
Vue 3.5.24 渐进式 JavaScript 框架
Vite 7.2.4 构建工具
Element Plus 2.12.0 UI 组件库
Vue Router 4.6.3 路由管理
Axios 1.13.2 HTTP 客户端
Sass 1.96.0 CSS 预处理器

📁 项目结构

campus-finder/
├── 📄 pom.xml                          # Maven 项目配置
├── 📄 campus_lost_found.sql            # 数据库初始化脚本
├── 📂 src/main/
│   ├── 📂 java/com/campus/finder/
│   │   ├── CampusFinderApplication.java    # 启动类
│   │   ├── 📂 annotation/                  # 自定义注解
│   │   ├── 📂 common/                      # 通用工具 (Result)
│   │   ├── 📂 config/                      # 配置类
│   │   ├── 📂 controller/                  # 控制器 (7个)
│   │   ├── 📂 dto/                         # 数据传输对象 (8个)
│   │   ├── 📂 entity/                      # 实体类 (7个)
│   │   ├── 📂 exception/                   # 全局异常处理
│   │   ├── 📂 interceptor/                 # 登录拦截器
│   │   ├── 📂 mapper/                      # MyBatis Mapper
│   │   ├── 📂 service/                     # 业务接口
│   │   └── 📂 service/impl/               # 业务实现
│   └── 📂 resources/
│       └── application.yml                 # 应用配置
├── 📂 web/                             # 前端项目 (Vue 3)
│   ├── 📄 package.json
│   ├── 📄 vite.config.js
│   └── 📂 src/
│       ├── App.vue
│       ├── main.js
│       ├── 📂 api/                     # API 接口封装
│       ├── 📂 router/                  # 路由配置
│       └── 📂 views/                   # 页面视图
│           ├── Home.vue                # 首页
│           ├── Login.vue               # 登录/注册
│           ├── Layout.vue              # 布局框架
│           ├── ArticleCategory.vue     # 物品分类/广场
│           ├── ArticleManage.vue       # 我的发布
│           ├── ClaimAudit.vue          # 认领审核
│           ├── AnnouncementManage.vue  # 公告管理
│           ├── CategoryManage.vue      # 分类管理
│           ├── 📂 admin/              # 管理员页面
│           └── 📂 user/               # 用户中心
└── 📂 uploads/                         # 文件上传目录

📋 环境要求

环境 最低版本
JDK 17+
Node.js 18+
MySQL 8.0+
Maven 3.8+

🚀 快速开始

1. 克隆项目

git clone https://github.com/van104/campus-finder.git
cd campus-finder

2. 数据库初始化

# 登录 MySQL 并创建数据库
mysql -u root -p

CREATE DATABASE campus_lost_found DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE campus_lost_found;

# 导入初始化脚本
SOURCE campus_lost_found.sql;

🔑 默认账号

项目导入 SQL 脚本后,系统预设了一个超级管理员账号:

角色 用户名 学号 密码
超级管理员 admin admin (您初始设置的管理员密码)

💡 建议首次登录后通过“个人中心”及时修改密码。

3. 后端配置与启动

配置数据库连接

编辑 src/main/resources/application.yml,修改数据库连接信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/campus_lost_found?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: your_username # 修改为你的数据库用户名
    password: your_password # 修改为你的数据库密码

或通过环境变量配置(推荐):

# 创建 .env 文件
DB_USERNAME=your_username
DB_PASSWORD=your_password

启动后端

# Maven 方式
./mvnw spring-boot:run

# 或使用 IDE 直接运行 CampusFinderApplication.java

后端服务将在 http://localhost:8080 启动,API 上下文路径为 /api

4. 前端配置与启动

cd web
npm install
npm run dev

前端开发服务器启动后,访问终端输出的地址(默认 http://localhost:5173)即可。

💡 Vite 已配置代理,开发环境下 /api/files 请求会自动转发到后端服务。

⚙️ 配置说明

application.yml 核心配置

server:
  port: 8080 # 服务端口
  servlet:
    context-path: /api # API 上下文路径

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/campus_lost_found
    username: ${DB_USERNAME} # 支持环境变量
    password: ${DB_PASSWORD} # 支持环境变量
    hikari:
      maximum-pool-size: 10 # 连接池最大连接数
      minimum-idle: 5 # 最小空闲连接数

mybatis-plus:
  global-config:
    db-config:
      id-type: AUTO # 主键自增
      logic-delete-field: deleted
      logic-not-delete-value: 0
      logic-delete-value: 1

🗄️ 数据库设计

系统包含 7 张核心数据表

表名 说明 关键字段
sys_users 用户表 username, student_id, role, status
lost_items 失物招领信息表 type(失物/招领), status, images(JSON), location
claim_records 认领记录表 item_id, claimer_id, status(待审核/通过/拒绝), proof_info
sys_categories 物品分类表 name, icon, sort_order
sys_announcements 系统公告表 title, content, is_pinned
sys_notifications 消息通知表 user_id, type, is_read
operation_logs 操作日志表 operator_id, operation_type, content

所有核心表均支持 逻辑删除deleted 字段),详见 SQL 脚本 campus_lost_found.sql

🔌 API 接口概览

所有接口以 /api 为前缀,需携带 Authorization 请求头(JWT Token),登录/注册接口除外。

模块 接口前缀 说明
用户 /api/users 注册/登录/个人信息/修改密码
失物招领 /api/lost-items 发布/查询/我的发布/详情
认领 /api/claim-records 提交认领/审核/记录查询
分类 /api/categories 分类列表/CRUD
公告 /api/announcements 公告列表/CRUD
通知 /api/notifications 通知列表/标记已读
文件 /api/files 图片上传/访问

🤝 参与贡献

欢迎任何形式的贡献!请按以下步骤操作:

  1. Fork 本仓库
  2. 创建你的功能分支:git checkout -b feature/amazing-feature
  3. 提交你的修改:git commit -m 'feat: 添加某某功能'
  4. 推送到分支:git push origin feature/amazing-feature
  5. 发起 Pull Request

提交规范

请遵循 Conventional Commits 规范:

前缀 说明
feat 新功能
fix Bug 修复
docs 文档更新
style 代码格式调整
refactor 代码重构
test 测试相关
chore 构建/工具链相关

📝 开源协议

本项目采用 MIT License 开源协议 — 详情请参阅 LICENSE 文件。

🙏 致谢


如果这个项目对你有帮助,请给一个 ⭐ Star!

About

基于 Spring Boot 3 + Vue 3 的校园失物招领平台,支持实时通知、认领审核及 RBAC 权限管理,前后端分离架构。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors