# secondhand-api **Repository Path**: wadsadaw/secondhand-api ## Basic Information - **Project Name**: secondhand-api - **Description**: secondhand的后端代码仓库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-04 - **Last Updated**: 2026-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot ## README # 二手交易平台 API 基于 Spring Boot + MyBatis Plus 开发的二手交易平台 RESTful API 服务。 ## 项目简介 这是一个完整的二手商品交易平台后端服务,提供用户认证、商品管理、分类管理、订单管理、收藏管理、即时消息等功能。支持 JWT Token 认证、文件上传、数据库自动迁移等特性。 ## 技术栈 - **框架**: Spring Boot 2.x - **持久层**: MyBatis Plus - **数据库**: MySQL - **安全**: Spring Security + JWT - **工具**: Lombok, Validation ## 主要功能 ### 用户模块 - 用户注册/登录 - JWT Token 认证 - 用户信息管理 ### 商品模块 - 商品 CRUD 操作 - 商品搜索(按分类、关键词、状态) - 商品详情浏览 - 展示码获取 ### 分类模块 - 分类管理 - 带商品数量的分类列表 ### 订单模块 - 订单创建/查询/修改/删除 - 按买家/卖家/状态筛选 ### 收藏模块 - 商品收藏/取消收藏 - 收藏列表 ### 消息模块 - 会话管理 - 即时消息发送 - 未读消息计数 ### 文件上传 - 图片上传/删除 - 静态资源服务 ### 数据统计 - 仪表盘数据统计 ## 项目结构 ``` com.secondhand ├── common/ # 通用响应类 ├── config/ # 配置类 │ ├── CorsConfig # CORS跨域配置 │ ├── JwtAuthenticationFilter # JWT认证过滤器 │ └── SecurityConfig # 安全配置 ├── controller/ # 控制器 │ ├── AuthController # 认证 │ ├── CategoryController # 分类 │ ├── DashboardController # 仪表盘 │ ├── FavoriteController # 收藏 │ ├── MessageController # 消息 │ ├── OrderController # 订单 │ ├── ProductController # 商品 │ ├── UploadController # 上传 │ └── UserController # 用户 ├── entity/ # 实体类 ├── dto/ # 数据传输对象 ├── exception/ # 异常处理 ├── interceptor/ # 请求拦截器 ├── mapper/ # MyBatis Mapper ├── service/ # 服务接口 │ └── impl/ # 服务实现 └── util/ # 工具类 ``` ## 快速开始 ### 环境要求 - JDK 1.8+ - Maven 3.x - MySQL 5.7+ ### 配置数据库 在 `application.yml` 中配置数据库连接: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/secondhand?useUnicode=true&characterEncoding=utf-8 username: root password: your_password ``` ### 运行项目 ```bash # 使用 Maven 构建 ./mvnw clean install # 运行项目 ./mvnw spring-boot:run ``` 服务启动后访问 `http://localhost:8080` ## API 接口文档 ### 认证接口 | 方法 | 路径 | 描述 | |------|------|------| | POST | /auth/login | 用户登录 | | POST | /auth/register | 用户注册 | | POST | /auth/logout | 用户登出 | | GET | /auth/userinfo | 获取用户信息 | ### 用户接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | /users | 用户列表 | | POST | /users | 创建用户 | | DELETE | /users/{id} | 删除用户 | ### 商品接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | /products | 商品列表 | | GET | /products/{id} | 商品详情 | | GET | /products/code/{displayCode} | 通过展示码获取商品 | | POST | /products | 创建商品 | | PUT | /products/{id} | 更新商品 | | DELETE | /products/{id} | 删除商品 | ### 分类接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | /categories | 分类列表 | | GET | /categories/page | 分页分类 | | POST | /categories | 创建分类 | | PUT | /categories/{id} | 更新分类 | | DELETE | /categories/{id} | 删除分类 | ### 订单接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | /orders | 订单列表 | | POST | /orders | 创建订单 | | PUT | /orders/{id} | 更新订单 | | DELETE | /orders/{id} | 删除订单 | ### 收藏接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | /favorites | 收藏列表 | | POST | /favorites/{productId} | 添加收藏 | | DELETE | /favorites/{productId} | 取消收藏 | ### 消息接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | /messages/conversations | 会话列表 | | GET | /messages/unread-count | 未读消息数 | | POST | /messages/open/{productId} | 开启会话 | | POST | /messages/conversations/{id}/read | 标记已读 | | POST | /messages/conversations/{id}/send | 发送消息 | ### 上传接口 | 方法 | 路径 | 描述 | |------|------|------| | POST | /upload/image | 上传图片 | | DELETE | /upload/image | 删除图片 | ### 其他接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | /dashboard | 仪表盘数据 | | GET | /preview/config | 预览配置 | ## 配置说明 主要配置文件 `application.yml`: ```yaml server: port: 8080 spring: datasource: # 数据库配置 servlet: multipart: max-file-size: 10MB max-request-size: 10MB jwt: secret: your-jwt-secret-key expiration: 86400000 app: upload-dir: uploads ``` ## 数据库表 系统会自动创建以下表: - `user` - 用户表 - `category` - 分类表 - `product` - 商品表 - `orders` - 订单表 - `favorite` - 收藏表 - `conversation` - 会话表 - `conversation_message` - 消息表 - `preview_config` - 预览配置表 首次启动时会自动执行数据库迁移。 ## 安全说明 - 密码使用 BCrypt 加密存储 - 接口使用 JWT Token 认证 - 已配置 CORS 跨域支持 ## 许可证 本项目仅供学习交流使用。