Java项目:springboot校园二手交易平台

作者主页:Java毕设网

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

一、项目介绍

本项目分为管理员与普通用户两种角色
后台管理员功能:
求购管理,收购管理,学生管理,评论管理,建议管理,新闻公告,网站设置,订单管理,图书管理。
1.求购管理实现了查看前台用户发布的求购信息和删除功能
2.收购管理实现了学生发布的二手书籍商品的查看和收购
3.学生管理实现了前台用户信息的查看和账号冻结功能
4.评论管理实现了对发布的图书的留言评论信息的查看和删除功能
5.建议管理实现了用户对发布的二手书籍的建议查看和删除
6.新闻公告实现了新闻公告的发布的增删改查,在前台首页显示
7.网站设置分为友情链接和站点设置
A、友情链接实现了前台下面的友情网站的增删改查,(比如发布一个网址)
B、站点设置实现了前台显示logo和网站名称的增删改查
8.订单管理实现了用户购买的订单信息的查看
9.图书管理实现了分类列表和图书列表
A、分类列表实现书籍分类的增删改查(二级分类)
B、图书列表实现了被收购的二手书籍在这里进行编辑,上架下架,是否进行推荐(上架后,用户可以进行购买)

前台用户功能:
注册登录,个人信息的管理,我发布的出售书籍,我发布的求购书籍管理,我建议的书籍,查看书籍订单,求购专区查看等等功能。
1.个人信息实现了个人信息的管理和密码修改
2.我发布的出售书籍实现了可以对出售的书籍进行增删改查(被官网收购后只能查看)
3.我发布的求购书籍实现了可以对求购书籍进行增删改查
4.我建议的书籍实现了对某个上架的书籍的建议查看
5.查看书籍订单实现了查看购买的书籍
6.求购专区实现了查看全部求购信息
7.前台书籍信息的查看,新闻公告的查看等等功能

二、环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
4.数据库:MySql 8.0/5.7版本;
5.是否Maven项目:是;

三、技术栈

freemarker+CSS+JavaScript+mysql+SpringBoot+springJpa

四、使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application-dev.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,前台地址:在浏览器中输入http://localhost:8081/home/index/index 访问

后台地址:http://localhost:8081/system/login

五、运行截图

前台界面

后台界面

六、相关代码

商品管理控制器

/**
 * 后台物品管理控制器
 * @author Administrator
 *
 */
@RequestMapping("/admin/goods")
@Controller
public class GoodsController {

	@Autowired
	private GoodsCategoryService goodsCategoryService;
	@Autowired
	private GoodsService goodsService;
	@Autowired
	private StudentService studentService;
	
	/**
	 * 物品管理列表页面
	 * @param pageBean
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Goods goods,PageBean<Goods> pageBean,Model model){
		if(goods.getStudent() != null && goods.getStudent().getSn() != null){
			Student student = studentService.findBySn(goods.getStudent().getSn());
			if(student != null){
				goods.setStudent(student);
			}
		}
		if(goods.getGoodsCategory() != null && goods.getGoodsCategory().getName() != null){
			List<GoodsCategory> goodsCategorys = goodsCategoryService.findByName(goods.getGoodsCategory().getName());
			if(goodsCategorys != null && goodsCategorys.size() > 0){
				goods.setGoodsCategory(goodsCategorys.get(0));
			}
		}
		goods.setStatus(-1);
		model.addAttribute("title", "物品列表");
		model.addAttribute("name", goods.getName());
		model.addAttribute("goodsCategoryName", goods.getGoodsCategory() == null ? null : goods.getGoodsCategory().getName());
		model.addAttribute("sn", goods.getStudent() == null ? null : goods.getStudent().getSn());
		model.addAttribute("pageBean", goodsService.findlist(pageBean, goods));
		return "admin/goods/list";
	}
	
	

	/**
	 * 物品上架
	 * @param id,status
	 * @return
	 */
	@RequestMapping(value="/up_down",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> upDown(@RequestParam(name="id",required=true)Long id ,@RequestParam(name="status",required=true)Integer status){
		Goods goods = goodsService.findById(id);
		if(goods == null){
			return Result.error(CodeMsg.ADMIN_GOODS_NO_EXIST);
		}
		if(goods.getStatus() == status){
			return Result.error(CodeMsg.ADMIN_GOODS_STATUS_NO_CHANGE);
		}
		if(status != Goods.GOODS_STATUS_UP && status != Goods.GOODS_STATUS_DOWN){
			return Result.error(CodeMsg.ADMIN_GOODS_STATUS_ERROR);
		}
		if(goods.getStatus() == Goods.GOODS_STATUS_SOLD){
			return Result.error(CodeMsg.ADMIN_GOODS_STATUS_UNABLE);
		}
		goods.setStatus(status);
		//进行更新数据库
		if(goodsService.save(goods) ==null){
			return Result.error(CodeMsg.ADMIN_GOODS_EDIT_ERROR);
		}
		return Result.success(true);
	}
	
	/**
	 * 物品推荐或取消推荐
	 * @param id
	 * @param recommend
	 * @return
	 */
	@RequestMapping(value="/recommend",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> recommend(@RequestParam(name="id",required=true)Long id ,@RequestParam(name="recommend",required=true)Integer recommend){
		Goods goods = goodsService.findById(id);
		if(goods == null){
			return Result.error(CodeMsg.ADMIN_GOODS_NO_EXIST);
		}
		if(goods.getRecommend() == recommend){
			return Result.error(CodeMsg.ADMIN_GOODS_STATUS_NO_CHANGE);
		}
		if(recommend != Goods.GOODS_RECOMMEND_OFF && recommend != Goods.GOODS_RECOMMEND_ON){
			return Result.error(CodeMsg.ADMIN_GOODS_STATUS_ERROR);
		}
		if(goods.getStatus() == Goods.GOODS_STATUS_SOLD){
			return Result.error(CodeMsg.ADMIN_GOODS_STATUS_UNABLE);
		}
		goods.setRecommend(recommend);;
		//进行更新数据库
		if(goodsService.save(goods) ==null){
			return Result.error(CodeMsg.ADMIN_GOODS_EDIT_ERROR);
		}
		return Result.success(true);
	}
	
	
	
	/**
	 * 物品删除操作
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/delete",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
		try {
			goodsService.delete(id);
		} catch (Exception e) {
			return Result.error(CodeMsg.ADMIN_GOODS_DELETE_ERROR);
		}
		return Result.success(true);
	}
}

新闻管理控制器

/**
 * 后台新闻公告管理控制器
 * @author Administrator
 *
 */
@RequestMapping("/admin/news")
@Controller
public class NewsController {

	@Autowired
	private NewsService newsService;
	@Autowired
	private OperaterLogService operaterLogService;
	/**
	 * 新闻公告列表页面
	 * @param model
	 * @param user
	 * @param pageBean
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Model model,News news,PageBean<News> pageBean){
		model.addAttribute("title", "新闻公告列表");
		model.addAttribute("newsTitle", news.getTitle());
		model.addAttribute("pageBean", newsService.findList(pageBean,news));
		return "admin/news/list";
	}
	
	/**
	 * 新增新闻公告页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model){
		return "admin/news/add";
	}
	
	/**
	 * 新闻公告添加表单提交处理
	 * @param news
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> add(News news){
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(news);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		//到这说明一切符合条件,进行数据库新增
		if(newsService.save(news) == null){
			return Result.error(CodeMsg.ADMIN_NEWS_ADD_ERROR);
		}
		operaterLogService.add("添加新闻公告:" + news);
		return Result.success(true);
	}
	
	/**
	 * 新闻公告编辑页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.GET)
	public String edit(Model model,@RequestParam(name="id",required=true)Long id){
		model.addAttribute("news", newsService.find(id));
		return "admin/news/edit";
	}
	
	/**
	 * 编辑新闻公告信息表单提交处理
	 * @param news
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> edit(News news){
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(news);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		//到这说明一切符合条件,进行数据库保存
		News findById = newsService.find(news.getId());
		//讲提交的新闻公告信息指定字段复制到已存在的user对象中,该方法会覆盖新字段内容
		BeanUtils.copyProperties(news, findById, "id","createTime","updateTime");
		if(newsService.save(findById) == null){
			return Result.error(CodeMsg.ADMIN_NEWS_EDIT_ERROR);
		}
		operaterLogService.add("编辑新闻公告:" + findById);
		return Result.success(true);
	}
	
	/**
	 * 删除新闻公告
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/delete",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
		newsService.delete(id);
		operaterLogService.add("删除新闻公告,新闻公告ID:" + id);
		return Result.success(true);
	}
}

七、如果也想学习本系统,下面领取。关注并回复:104springboot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值