文末获取源码
开发语言:Java
使用框架:spring boot
前端技术:JavaScript、Vue.js 、css3
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:Java jdk8
Maven:apache-maven 3.8.1-bin
目录
一、前言介绍
二、功能性分析
2.1用户管理模块
2.2卖家管理模块
2.3管理员管理模块
三、系统前台模块
3.1系统前台登录页面
3.2二手交易论坛页面
3.3商品资讯页面
3.4二手商品页面
3.5商品页面
四、管理员功能模块
4.1公告内容管理页面
4.2用户管理页面
4.3内容模块管理页面
4.4商城管理页面
4.5签收评分管理页面
五、卖家功能模块
5.1二手商城管理
5.2签收评分管理
六、用户功能模块
6.1签收评分页面
七、部分核心代码
7.1二手商品展示主要代码
7.2商品购买主要代码
7.3订单生成界面逻辑代码
7.4个人资料修改的逻辑代码
7.5商品管理主要代码
一、前言介绍
现代社会的网络和信息技术不断提高,人们的生活水平达到一个新的层次。但由于用户的工作和生活越来越忙,开发出一个网上校园二手交易平台是必然的,正是我们所需要的。这篇文章研究了基于Spring Boot框架的校园二手交易平台的开发和实现,从需求分析、总体设计到具体实现,最终完成了整个在线二手交易平台,从而方便了用户和提高了管理员人员的管理水平。 此校园二手交易平台的开发项目采用java技术+MYSQL数据库,就论题的各类需求分析说明做出解释,然后再就网站的总体设计和详细设计做出论述,给出了网站总体结构的搭建方法。从而满足大部分中二手网站的需求。
二、功能性分析
按照校园二手交易平台的角色,我划分为了用户管理模块、卖家管理模块和管理员管理模块这三大部分。
2.1用户管理模块
(1)用户注册登录:用户注册为会员并登录校园二手交易平台;用户对个人信息的增删改查,比如个人资料,密码修改。
(2)用户查看商品:用户进行商品信息的阅览,通过发现喜欢的商品后可以购买+评论+收藏。
(3)校园资讯:用户进行资讯的阅览,查看管理者发布的校园资讯信息。
(4)留言板:用户在留言板这一菜单下对用户提交的查看、同时也可以发布、评论。
(5)商品购买:用户对喜欢的商品可以加购,在购物车里面,当用户确定提交完毕后,将其提交给服务器后台系统,并生成订单。
(6)我的订单:用户在提交订单后,可以对提交的订单进行管理。
2.2卖家管理模块
(1)我的留言:卖家对用户提交的留言回复、删除。
(2)商城管理:管理员可以对校园二手交易平台中现有的商品进行增删改查。
(3)订单列表:查看购买的我的商品订单,对提交的订单进行管理。
2.3管理员管理模块
(1)用户管理:管理员可以对前台上注册过的用户信息进行管控,也可以对管理员信息进行管控。
(2)校园资讯管理:管理员在后台可以对校园二手交易平台中显示的校园资讯信息进行增删改查。
(3)留言管理:管理员可以对校园二手交易平台中用户提交的留言以及留言的分类进行增删改查。
(4)分类管理:管理员对校园二手交易平台中商品的分类进行管控。
(5)商城管理:管理员对卖家提交的商品订单进行管控。
(6)系统管理:管理员可以对校园二手交易平台中首页显示的轮播图以及系统中的一些公告发布到系统当中,让用户及时的查看到系统信息,进行合理安排。
三、系统前台模块
3.1系统前台登录页面
3.2二手交易论坛页面
3.3商品资讯页面
3.4二手商品页面
3.5商品页面
四、管理员功能模块
4.1公告内容管理页面
4.2用户管理页面
4.3内容模块管理页面
4.4商城管理页面
4.5签收评分管理页面
五、卖家功能模块
5.1二手商城管理
5.2签收评分管理
六、用户功能模块
6.1签收评分页面
七、部分核心代码
7.1二手商品展示主要代码
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
StringBuffer sql = new StringBuffer("INSERT INTO ");
sql.append("`").append(table).append("`").append(" (");
for (Map.Entry<String,Object> entry:body.entrySet()){
sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(") VALUES (");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("'").append(entry.getValue()).append("'").append(",");
}else {
sql.append(entry.getValue()).append(",");
}
}
sql.deleteCharAt(sql.length() - 1);
sql.append(")");
log.info("[{}] - 插入操作:{}",table,sql);
Query query = runCountSql(sql.toString());
query.executeUpdate();
}
7.2商品购买主要代码
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
Query count = service.avg(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
7.3订单生成界面逻辑代码
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
7.4个人资料修改的逻辑代码
@RestController
@RequestMapping("auth")
public class AuthController extends BaseController<Auth, AuthService> {
/**
* 服务对象
*/
@Autowired
public AuthController(AuthService service) {
setService(service);
}
}
7.5商品管理主要代码
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
Query count = service.avg(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}