Skip to content

scanf-and-printf/campus-trade

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

校园二手交易平台 - 后端

基于 Spring Boot 3 + MyBatis + MySQL + Redis + JWT 的校园二手交易平台后端服务。

技术栈

技术 版本 / 说明
Spring Boot 3.5.2
MyBatis 3.0.5(MyBatis-Spring-Boot-Starter)
Spring Security 认证与授权框架
JWT jjwt 0.12.6(API / HMAC-SHA256)
MySQL 8+(Connector/J)
Redis 7+(Lettuce 连接池)
Jackson 含 jsr310 模块,统一日期格式
Lombok 简化实体类代码
JUnit 5 + Mockito 单元测试框架
Maven 构建与依赖管理

环境要求

  • JDK 17+
  • Maven 3.9+
  • MySQL 8.0+
  • Redis 7.0+

功能模块

模块 说明
用户模块 注册 / 登录 / JWT Token 鉴权 / 登出
商品模块 发布商品 / 搜索商品 / 分类筛选 / 图片上传 / Redis 缓存
订单模块 创建订单 / 状态流转(待付款 → 已付款 → 已完成 → 已取消)
收藏模块 添加收藏 / 取消收藏 / 收藏列表
文件上传 图片上传(支持压缩)、静态资源映射

项目结构

campus-trade
├── src/main/java/com/campus/trade
│   ├── controller/          # 控制器层(接口入口)
│   │   ├── UserController.java
│   │   ├── ProductController.java
│   │   ├── OrderController.java
│   │   ├── FavoriteController.java
│   │   └── FileUploadController.java
│   ├── service/             # 业务逻辑层
│   │   ├── UserService.java / UserServiceImpl.java
│   │   ├── ProductService.java / ProductServiceImpl.java
│   │   ├── OrderService.java / OrderServiceImpl.java
│   │   └── FavoriteService.java / FavoriteServiceImpl.java
│   ├── entity/              # 实体类(对应数据库表)
│   │   ├── User.java
│   │   ├── Product.java
│   │   ├── Order.java
│   │   └── Favorite.java
│   ├── mapper/              # MyBatis Mapper 接口
│   │   ├── UserMapper.java
│   │   ├── ProductMapper.java
│   │   ├── OrderMapper.java
│   │   └── FavoriteMapper.java
│   ├── dto/                 # 数据传输对象
│   ├── config/              # Spring 配置类(Security / Redis / CORS 等)
│   ├── common/              # 通用工具(统一响应 Result 类等)
│   ├── interceptor/         # JWT 拦截器
│   └── util/                # 工具类
├── src/main/resources
│   ├── db/init.sql          # 数据库初始化脚本
│   ├── mapper/              # MyBatis XML 映射文件
│   └── application.yml      # 配置文件
├── src/test/java/           # 单元测试
│   ├── CampusTradeApplicationTests.java
│   ├── controller/ProductControllerTest.java
│   └── service/impl/ProductServiceImplTest.java
└── pom.xml

快速启动

1. 数据库初始化

执行 src/main/resources/db/init.sql

mysql -u root -p < src/main/resources/db/init.sql

脚本会自动创建 campus_trade 数据库,并建立以下表:

表名 说明
t_user 用户表(BCrypt 加密存储)
t_product 商品表
t_order 订单表
t_favorite 收藏表

2. 修改配置

编辑 src/main/resources/application.yml,按实际环境修改数据库和 Redis 连接信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/campus_trade
    username: root
    password: 你的密码
  data:
    redis:
      host: localhost
      port: 6379

3. 构建与运行

# 编译打包
mvn clean package -DskipTests

# 启动服务
java -jar target/campus-trade-0.0.1-SNAPSHOT.jar

服务默认运行在 **http://localhost:8080**。

API 文档

所有接口返回统一格式 Result,包含 codemessagedata 字段。

用户模块 /api/user

方法 路径 说明 认证
POST /api/user/register 用户注册
POST /api/user/login 用户登录,返回 JWT Token
GET /api/user/current 获取当前登录用户信息

商品模块 /api/product

方法 路径 说明 认证
GET /api/product/list 商品列表(支持搜索、分类筛选、Redis 缓存)
GET /api/product/{id} 商品详情
POST /api/product 发布商品
PUT /api/product/{id} 更新商品
PUT /api/product/{id}/status 上架 / 下架
GET /api/product/my 我的发布列表

订单模块 /api/order

方法 路径 说明 认证
POST /api/order 创建订单
GET /api/order/list 我的订单列表(含买家和卖家维度)
PUT /api/order/{id}/status 更新订单状态

收藏模块 /api/favorite

方法 路径 说明 认证
POST /api/favorite 添加收藏
DELETE /api/favorite/{productId} 取消收藏
GET /api/favorite/list 我的收藏列表

文件上传 /api/upload

方法 路径 说明 认证
POST /api/upload/image 上传商品图片(限制 5MB)

特色功能

  • Redis 缓存商品列表:热门商品列表使用 Redis 缓存,减少数据库查询压力,提升响应速度。
  • 图片上传压缩:上传图片时自动压缩处理,控制文件体积,节省存储空间与带宽。
  • 日志按日滚动:使用 Logback 按日滚动日志文件,方便排查问题与运维管理。
  • 单元测试覆盖:Service 层和 Controller 层均有 JUnit 5 + Mockito 测试用例,保证核心逻辑质量。
  • JWT Token 鉴权:无状态认证方案,Token 默认有效期 24 小时,支持过期自动拦截。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages