# yihuo
**Repository Path**: Yxiangcan/yihuo
## Basic Information
- **Project Name**: yihuo
- **Description**: SYSU-SSE 20级 中级实训 JavaWeb项目:易货——二手商品交易平台
技术框架vue + springboot + mybatis
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2026-02-27
- **Last Updated**: 2026-02-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
<<<<<<< HEAD
## 中山大学软件工程学院20级中级实训课程项目
##### 项目名称:易货二手商品交易平台
##### 学院:软件工程学院
##### 年级:20级
##### 指导老师:黄袁
##### 助教:林泽炜
##### 小组成员
| 姓名 | 学号 |
| ---- | ---- |
| 冯洪江 | 20331012 |
| 储震坤 | 20318068 |
| 黄能 | 20331014 |
| 宋皓 | 20331032 |
| 李昱航| 20331022 |
##### [项目成果仓库](https://gitee.com/joshvon/yihuo)
**该文档以markdown存于仓库**
**前端**
Vue项目是由npm管理的,可以直接使用npm启动
```shell
npm run serve
```
**后端**
因为springboot是基于maven管理的,可以直接使用maven命令启动项目
```shell
mvn compile # 编译源码
mvn spring-boot:run # 启动项目
```
### 项目背景
在当今网络广泛普及的环境下,人们的消费方式发生了很大改变。具体体现为人们开始倾向于线上购物,尤其是以大学生为主要代表的年轻人群体。而且,以大学生为代表的消费群体目前还不能做到经济独立,个人的经济能力有限,因此,线上二手交易平台的推广有良好的环境以及经济基础。
在大学校园,伴随着学生购买能力的提高和每年的升学和毕业,也存在许多各种类型的二手商品,由于信息交流的落后,很多只限于实地买卖或者请人代为宣传的方式进行交易。这种方式有很多局限性和偶然性,并不能满足二手商品畅通交流的要求。
新兴的校内二手交易平台利用网络信息的共享性,在网上发布商品信息,实现商品价值的最大化。这种交易方式的优点有:信息共享性大、耗时少、方便快捷、运行成本低等。通过网上交易,可以提高买卖的效率和满意度,也可以实行物物交换,达到物尽其用的原则。通过一个专门的网上交易平台,收录各种二手商品的信息,并对商品进行分类,方便买者根据自己的意愿进行检索,买到自己想要的商品。同时,交易平台也为卖者提供便利,让他们在不耗时不耗力的情况下销售自己不用的物品,获得一定的经济回报。
### 需求分析
线上二手交易系统主要是实现上架自己闲置的二手商品、网上选物、购物、产生订单,查看订单等功能的系统。
+ 系统功能目标
1. 用户可以进行注册、登陆
2. 用户能够在系统上输入自己的商品信息
3. 用户能够在系统上浏览其他用户发布的商品信息
4. 用户可以在系统上检索自己所需的商品
5. 用户可以进行商品购买
6. 用户可以查看以往订单
7. 用户可以修改个人信息
+ 系统性能目标
1. 系统运行安全稳定,可靠性强,功能齐全
2. 操作方便、灵活、页面简洁
3. 信息容量大,安全性高
4. 系统易于维护和扩充升级
+ 总体功能需求
我们设计的校园二手交易平台主要是为了方便校内同学们的二手物品的交易,其要满足的主要功能需求是以下几点:
1. 会员可以通过账号和密码登录,搜索或查看二手商品的信息;
2. 未成为会员的可以通过相关信息注册成为会员;
3. 会员可以发布要卖掉的二手物品的信息;
4. 会员可以可以购买二手商品
### 技术简介
该项目采用Vue + Springboot + Mysql搭建的前后端分离的Web应用,前端使用的是Vue3,后端使用的是2.7.6版本的springboot和jdk1.8,数据库使用的是mysql8
+ 前端
前端使用Vue3框架配合element-ui和axios进行设计,与后端通过网络请求进行json格式数据的传输
+ 后端
之所以选择springboot框架是因为其大大简化了spring应用的开发,springboot采用注解化进行配置,可以减少对xml配置的依赖进而提高开发效率,springboot内嵌了Servlet容器,根据依赖来自动配置Spring框架。
+ 数据库
数据库与后端之间使用了Mybatis当作持久层,MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和Java对象为数据库中的记录
### 系统设计
+ 数据库设计
+ 用户收藏表
| 字段 | 类型 | 说明 |
| ---- | ---- | ---- |
| uid | int | 用户id |
| gid | int | 收藏商品id |
+ 商品信息表
| 字段 | 类型 | 说明 |
| ---- | ---- | ---- |
| gid | int | 商品id |
| uid | int | 卖家id |
| gname | varchar | 商品名称 |
| gtype | int | 商品类型id |
| gcontent | varcahr | 商品简介 |
| gprice | decimal | 商品价格 |
| gstatus | int | 商品状态 |
| gtime | datetime | 商品上架时间 |
| quality | varchar | 商品成色 |
| is_check | int | 用于辅助返回刚加入的商品id |
+ 商品状态表
| 字段 | 类型 | 说明 |
| ---- | ---- | ---- |
| status_id | int | 商品状态id |
| status_name | varchar | 商品状态名 |
+ 图片信息表
| 字段 | 类型 | 说明 |
| ---- | ---- | ---- |
| gid | int | 商品id |
| imgurl | varchar | 商品存于后端的路径 |
+ 交易信息表
| 字段 | 类型 | 说明 |
| ---- | ---- | ---- |
| trade_id | int | 交易id |
| gid | int | 商品id |
| buyer | int | 买家id |
| is_finish | int | 表示是否付款 |
| trade_time | datetime | 付款时间 |
| address | varchar | 配送地址 |
+ 商品类型表
| 字段 | 类型 | 说明 |
| ---- | ---- | ---- |
| tid | int | 类型id |
| tname| varchar| 类型名 |
+ 用户信息表
| 字段 | 类型 | 说明 |
| ---- | ---- | ---- |
| uid | int | 用户id |
| uname | varchar | 用户名 |
| uphone | varchar | 用户电话 |
| upwd | varchar | 用户密码 |
| uemail | varchar| 用户邮箱 |
+ springboot基于maven进行管理,所用依赖如下,包括`spring web`, `mybatis`, `mysql-connecter-j`等等,同时引入了`lombok`插件提高开发效率
```xml
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.3.0
com.mysql
mysql-connector-j
runtime
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
org.projectlombok
lombok
```
+ 项目结构
+ `/src/main/java/com/yihuo/yihuo` 为源代码
+ `common` 为全局工具类,内有`Result.java` 和 `ResultCode.java`,包装返回至前端的数据,包括了状态码,数据及消息
+ `config` 为配置类,内有`CorsConfig.java`,前后端分离项目当在一个机器上运行时,由于前后端运行在不同端口,则需要来配置过滤器
+ `controller` 为控制层,从前端发起的HTTP请求中解析参数和数据,并调用Service来处理业务,同时向前端返回JSON格式数据
+ `entity` 为实体类,从前端和持久层获取的数据映射成实体类
+ `mapper` 为DAO层,用于处理持久层的连接
+ `service` 为业务层,用于处理业务,因该项目为一个小项目,故不作业务接口
+ `/src/main/resources` 为资源文件
+ `mapper` 为Mybatis的xml文件用于与DAO层的映射
+ `application.yaml` 为springbooot配置文件,配置了运行端口,与数据库连接的信息,Mybatis的xml文件路径等等
### 主要功能模块介绍
+ 登录界面
用户通过注册时用的手机号和密码进行登录,登录完跳至首页 
+ 注册界面
用户通过填写对应信息进行注册,手机号会被后端进行查重校验,一个手机号只能对应一个账号 
+ 首页
用户登录后可以进入到首页,首页上方为导航栏,导航栏下方有搜索功能,往下滑动可浏览所有商品(因前期测试部分商品没有上传图片故有些商品无图片)  
+ 个人中心
+ 个人信息查看及修改
用户可以在个人中心查看或修改基本信息 
+ 查看订单
用户可以查看自己所有订单、购买了但未付款的订单和已完成的订单 
+ 查看收藏
用户可以在商品页面收藏商品,并在个人中心的商品收藏可以查看,还可以直接从收藏跳转至商品页面 
+ 商品页面
用户点击商品可以查看商品详细内容,并且可以直接购买或者收藏
+ 订单页面
用户从商品页面点击购买后跳转至订单页面,若不提交订单,则可以在个人中心的订单页面的`待付款`查看,填写地址并提交订单即可完成订单(无支付及配送功能) 
+ 上架商品
用户可以在导航栏点击`我要易货` 跳转至上架商品页面,用户填写相应信息后可以上架商品 
### 部分接口介绍
后端返回数据统一使用`Result`类包装
1. 商品详情信息
```
请求方式:GET
url:/good/info/{gid}
返回结果:
{
"gid": 1,
"uid": 2,
"gname": "提拉米苏(约2磅)",
"gtype": 1,
"gcontent": "这是一块提拉米苏",
"gprice": 99.00,
"gstatus": 4,
"gtime": "14:42:14",
"soldtime": "15:27:39",
"quality": "未开封"
}
```
| 参数 | 说明 |
| ---- | ---- |
| gid | 商品id|
2. 收藏商品
```
请求方式:POST
url:/good/collect/{uid}/{gid}
返回结果:
{
code //是否成功
}
```
| 参数 | 说明 |
| ---- | ---- |
| uid | 用户id |
| gid | 商品id|
3. 下订商品,为商品创建订单但未付款
```
请求方式:POST
url:/good/buy?gid= &uid=
返回结果:
{
code //是否成功
}
```
| 参数 | 说明 |
| ---- | ---- |
| uid | 用户id |
| gid | 商品id|
4. 为创建订单的商品付款
```
请求方式:POST
url:/good/pay?gid= &addr=
返回结果:
{
code //是否成功
}
```
| 参数 | 说明 |
| ---- | ---- |
| addr | 用户收货地址 |
| gid | 商品id|
5. 获取商品类型列表
```
请求方式:GET
url:/good/type
返回结果:
{
[
{
"tid": 1,
"tname": "数码产品"
},
{
"tid": 2,
"tname": "运动户外"
},
{
"tid": 3,
"tname": "美容彩妆"
},
{
"tid": 4,
"tname": "生活用品"
},
{
"tid": 5,
"tname": "服饰鞋帽"
},
{
"tid": 6,
"tname": "优惠券码"
},
{
"tid": 7,
"tname": "图书音像"
},
{
"tid": 8,
"tname": "包表首饰"
},
{
"tid": 9,
"tname": "模玩动漫"
}
]
}
```
6. 上架商品
```
请求方式:POST
url:/good/shelf
请求数据:
{
uid //卖家id
gname //商品名称
gtype //商品类型
gcontent //商品简介
gprice //商品价格
quality //商品成色
}
返回结果:
{
gid: //商品id
}
```
7. 请求订单数据
```
请求方式:GET
url:/good/order
请求数据:
{
uid //用户id
type //订单类型 1为所有订单,2为未付款订单,3为已完成订单
}
返回结果:
{
[
{
"gid" 商品id
"uid" 卖家id,
"gname" 商品名称,
"gtype" 商品类型id,
"tname" 商品类型名,
"gcontent" 商品简介,
"gprice" 商品价格,
"gstatus" 商品状态,
"status_name" 商品状态名,
"gtime" 上架时间,
"quality" 商品成色,
"addr" 配送地址
},
...
]
}
```
8. 上传文件
```
请求方式:POST
url:/file/upload
请求数据:
{
file //用户上传文件
gid //商品id
}
返回结果
{
code //是否成功
}
```
=======
# yihuo
#### 介绍
SYSU-SSE 20级 中级实训 JavaWeb项目:易货——二手商品交易平台
技术框架vue + springboot + mybatis
#### 仓库结构
`/img` 后端接收图片存放路径
`/springboot` 后端代码
>>>>>>> 438a99617f41ad946eb75a9c49d76970b6c000e1