# ESJY **Repository Path**: mxioabai/esjy ## Basic Information - **Project Name**: ESJY - **Description**: 校园二手交易平台 springbook3+java+jdk17+redis+mybatis框架+vue3+node.js -v20.18.0+Element Plus - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-12 - **Last Updated**: 2026-01-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 校园二手交易平台 ## 项目简介 一个安全、便捷、规范的校内二手物品交易平台,促进闲置资源循环利用,提升交易体验。 ## 技术栈 - **后端**: Spring Boot 3 + Java 17 + MyBatis + Redis + Apache POI - **前端**: Vue 3 + Vite + Element Plus + ECharts + Node.js v20.18.0 - **数据库**: MySQL 8.0 ## 项目结构 ``` ESJY-node/ ├── backend/ # 后端项目 │ ├── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/esjy/ │ │ │ │ ├── controller/ # 控制器层 │ │ │ │ ├── service/ # 服务层 │ │ │ │ ├── mapper/ # 数据访问层 │ │ │ │ ├── entity/ # 实体类 │ │ │ │ ├── dto/ # 数据传输对象 │ │ │ │ ├── vo/ # 视图对象 │ │ │ │ ├── config/ # 配置类 │ │ │ │ ├── exception/ # 异常处理 │ │ │ │ └── util/ # 工具类 │ │ │ └── resources/ │ │ │ ├── mapper/ # MyBatis映射文件 │ │ │ ├── application.yml # 配置文件 │ │ │ └── logback.xml # 日志配置 │ │ └── test/ │ └── pom.xml ├── frontend/ # 前端项目 │ ├── src/ │ │ ├── assets/ # 静态资源 │ │ ├── components/ # 公共组件 │ │ ├── views/ # 页面组件 │ │ ├── router/ # 路由配置 │ │ ├── store/ # 状态管理 │ │ ├── api/ # API接口 │ │ ├── utils/ # 工具函数 │ │ ├── styles/ # 样式文件 │ │ ├── App.vue │ │ └── main.js │ ├── public/ │ ├── package.json │ └── vite.config.js └── README.md ``` ## 核心功能 ### 用户功能 - 用户注册与认证 - 个人信息管理 - 头像上传与展示 - 信誉分系统 ### 商品功能 - 商品发布与管理 - 商品浏览与搜索 - 商品分类筛选 - 商品详情展示 - 商品收藏功能 - 商品图片多图展示 ### 交易功能 - 在线下单 - 订单管理 - 订单状态跟踪 - 交易方式选择(自提/邮寄) - 交易地点设置 ### 评价功能 - 买家评价 - 卖家评价 - 评价展示 ### 管理员功能 - 用户管理 - 用户列表查看 - 用户状态管理(启用/禁用) - 用户详情查看 - 用户数据导出(Excel) - 商品审核 - 待审核商品列表 - 商品审核通过 - 商品审核拒绝 - 商品详情查看 - 商品数据导出(Excel) - 订单监控 - 订单列表查看 - 订单状态跟踪 - 订单详情查看 - 订单数据导出(Excel) - 数据统计 - 用户总数统计 - 商品总数统计 - 订单总数统计 - 交易总额统计 - 已完成订单统计 - **订单趋势图**(柱形图 + 折线图) - **商品分类统计图**(饼图) - **交易金额统计图**(面积折线图) - 时间范围筛选(全部/近7天/近30天/近90天) - 数据刷新功能 ### 数据导出功能 - **用户列表导出**(Excel格式) - 支持关键词搜索 - 支持状态筛选 - 导出字段:用户ID、学号、用户名、真实姓名、手机号、邮箱、宿舍楼栋、宿舍房号、信誉分、状态、创建时间 - **商品列表导出**(Excel格式) - 支持状态筛选 - 支持分类筛选 - 支持关键词搜索 - 导出字段:商品ID、标题、价格、运费、新旧程度、交易方式、自提地点、状态、浏览次数、收藏次数、创建时间 - **订单列表导出**(Excel格式) - 支持状态筛选 - 支持关键词搜索 - 导出字段:订单号、商品标题、价格、运费、总金额、交易方式、交易地点、状态、买家姓名、买家学号、买家手机号、卖家姓名、卖家学号、卖家手机号、创建时间 ## 开发环境要求 - JDK 17 - Node.js v20.18.0 - MySQL 8.0 - Redis (可选) - Maven 3.6+ ## 快速开始 ### 后端启动 ```bash cd backend mvn clean install mvn spring-boot:run ``` 后端服务将在 `http://localhost:8080` 启动 ### 前端启动 ```bash cd frontend npm install npm run dev ``` 前端服务将在 `http://localhost:5173` 启动 ## 数据库配置 ### 创建数据库 ```sql CREATE DATABASE esjy CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### 导入数据表 执行 `backend/src/main/resources/schema.sql` 创建数据表 ### 配置文件 修改 `backend/src/main/resources/application.yml` 中的数据库配置: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/esjy?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: your_password ``` ## 功能特性 ### 1. 用户认证与授权 - 基于Cookie的会话管理 - JWT令牌认证 - 角色权限控制(普通用户/管理员) - 密码加密存储 ### 2. 商品管理 - 商品发布(支持多图上传) - 商品编辑与删除 - 商品状态管理(待审核/已上架/已售出) - 商品搜索与筛选 ### 3. 订单管理 - 订单创建与确认 - 订单状态流转 - 订单取消功能 - 订单评价功能 ### 4. 评价系统 - 买家评价卖家 - 卖家评价买家 - 评分展示 - 信誉分计算 ### 5. 数据统计 - 实时数据统计 - 可视化图表展示 - 时间范围筛选 - 数据自动刷新 ### 6. 数据导出 - Excel格式导出 - 支持筛选条件 - 中文文件名支持 - 完整字段导出 ### 7. 图片展示 - 头像展示 - 商品图片展示 - 多图轮播 - 图片懒加载 - URL自动处理 ## API接口文档 ### 用户相关 - `POST /api/auth/register` - 用户注册 - `POST /api/auth/login` - 用户登录 - `GET /api/auth/info` - 获取用户信息 - `PUT /api/auth/info` - 更新用户信息 - `PUT /api/auth/password` - 修改密码 ### 商品相关 - `GET /api/products` - 获取商品列表 - `GET /api/products/{id}` - 获取商品详情 - `POST /api/products` - 发布商品 - `PUT /api/products/{id}` - 更新商品 - `DELETE /api/products/{id}` - 删除商品 - `POST /api/products/{id}/favorite` - 收藏/取消收藏 ### 订单相关 - `GET /api/orders` - 获取订单列表 - `GET /api/orders/{id}` - 获取订单详情 - `POST /api/orders` - 创建订单 - `PUT /api/orders/{id}/accept` - 接受订单 - `PUT /api/orders/{id}/reject` - 拒绝订单 - `PUT /api/orders/{id}/complete` - 完成订单 - `PUT /api/orders/{id}/cancel` - 取消订单 ### 管理员相关 - `GET /api/admin/users` - 获取用户列表 - `PUT /api/admin/users/{id}/status` - 更新用户状态 - `GET /api/admin/products` - 获取商品列表 - `PUT /api/admin/products/{id}/approve` - 审核通过商品 - `PUT /api/admin/products/{id}/reject` - 审核拒绝商品 - `GET /api/admin/orders` - 获取订单列表 - `GET /api/admin/statistics` - 获取统计数据 - `GET /api/export/users` - 导出用户列表 - `GET /api/export/products` - 导出商品列表 - `GET /api/export/orders` - 导出订单列表 ### 文件上传 - `POST /api/upload` - 上传文件 - `DELETE /api/upload` - 删除文件 ## 项目亮点 1. **安全性** - 密码加密存储 - JWT令牌认证 - XSS防护 - SQL注入防护 2. **用户体验** - 响应式设计 - 动画效果 - 图片懒加载 - 实时数据更新 3. **数据可视化** - ECharts图表展示 - 多种图表类型 - 交互式操作 - 时间范围筛选 4. **数据导出** - Excel格式导出 - 支持筛选条件 - 完整字段导出 - 中文文件名支持 5. **性能优化** - Redis缓存 - 数据库索引 - 图片压缩 - 前端代码分割 ## 常见问题 ### 1. 图片无法显示 确保后端配置的 `upload.path` 和 `upload.url-prefix` 正确,并且前端能访问到上传的文件路径。 ### 2. 图表不显示 确保已安装 ECharts 依赖:`npm install echarts --save` ### 3. 导出功能失败 确保已添加 Apache POI 依赖,并且后端有写入权限。 ## 更新日志 ### v1.1.0 (最新) - 新增数据统计图表功能 - 订单趋势图(柱形图 + 折线图) - 商品分类统计图(饼图) - 交易金额统计图(面积折线图) - 时间范围筛选功能 - 数据刷新功能 - 新增数据导出功能 - 用户列表导出(Excel) - 商品列表导出(Excel) - 订单列表导出(Excel) - 修复图片展示问题 - 头像显示修复 - 商品图片显示修复 - URL自动处理 ### v1.0.0 - 初始版本发布 - 用户注册与登录 - 商品发布与管理 - 订单管理 - 评价系统 - 后台管理 ## 贡献指南 欢迎提交 Issue 和 Pull Request! ## 许可证 MIT License