基于SSM的闲猫二手商城
系统使用技术:SSM
前端技术:bootstrap、css、js等
开发工具:idea
数据库:mysql5.7
项目介绍:
该系统适合选择框架为SSM,基础中等或以下,做二手商城系统,要求页面美观度高的。主要功能包括:前端用户注册后,可以登陆进行商品查看、购买,能够关注商品、发布商品等。后端包括:用户管理、商品管理、订单管理、留言管理、钱包管理、公告管理。满足二手商城的基本要求。
下面我们来看看功能。
系统首页:
分类查看
查看某个分类的商品
商品详情
查看某一个商品信息
个人中心
查看个人信息及商品等
发布商品
可以发布商品
我的订单
查看个人的订单
商品管理
对商品进行操作
订单管理
对订单进行操作
留言管理
对留言进行操作
公告管理
对公告行操作
代码
首页信息展示及操作控制层:
@Controller
@RequestMapping(value = "/goods")
public class GoodsController {@Autowiredprivate GoodsService goodsService;@Autowiredprivate ImageService imageService;@Autowiredprivate CatelogService catelogService;@Autowiredprivate UserService userService;@Resourceprivate PurseService purseService;@Autowiredprivate GonggaoService gonggaoService;/*** 首页显示商品,每一类商品查询6件,根据最新上架排序 key的命名为catelogGoods1、catelogGoods2....** @return* @throws Exception*/@RequestMapping(value = "/homeGoods")public ModelAndView homeGoods() throws Exception {ModelAndView modelAndView = new ModelAndView();// 商品种类数量int catelogSize = 4;// 每个种类显示商品数量int goodsSize = 10;List<Goods> goodsList = null;List<GoodsExtend> goodsAndImage = null;/* 获取最新发布列表 */goodsList = goodsService.getGoodsOrderByDate(goodsSize);goodsAndImage = new ArrayList<GoodsExtend>();for (int j = 0; j < goodsList.size(); j++) {// 将用户信息和image信息封装到GoodsExtend类中,传给前台GoodsExtend goodsExtend = new GoodsExtend();Goods goods = goodsList.get(j);List<Image> images = imageService.getImagesByGoodsPrimaryKey(goods.getId());goodsExtend.setGoods(goods);goodsExtend.setImages(images);goodsAndImage.add(j, goodsExtend);}String key0 = "catelog" + "Goods";modelAndView.addObject(key0, goodsAndImage);/* 获取公告 */List<Gonggao> gonggaoList = gonggaoService.getGonggaoList();modelAndView.addObject("gonggaoList", gonggaoList);/* 获取其他列表物品信息 */for (int i = 1; i <= catelogSize; i++) {goodsList = goodsService.getGoodsByCatelogOrderByDate(i, goodsSize);goodsAndImage = new ArrayList<GoodsExtend>();for (int j = 0; j < goodsList.size(); j++) {// 将用户信息和image信息封装到GoodsExtend类中,传给前台GoodsExtend goodsExtend = new GoodsExtend();Goods goods = goodsList.get(j);List<Image> images = imageService.getImagesByGoodsPrimaryKey(goods.getId());goodsExtend.setGoods(goods);goodsExtend.setImages(images);goodsAndImage.add(j, goodsExtend);}String key = "catelog" + "Goods" + i;modelAndView.addObject(key, goodsAndImage);}modelAndView.setViewName("goods/homeGoods");return modelAndView;}/*** 搜索商品* * @param str //ajax传值* @return* @throws Exception*/@RequestMapping(value = "/search")public ModelAndView searchGoods(@RequestParam(value = "str", required = false) String str) throws Exception {List<Goods> goodsList = goodsService.searchGoods(str, str);List<GoodsExtend> goodsExtendList = new ArrayList<GoodsExtend>();for (int i = 0; i < goodsList.size(); i++) {GoodsExtend goodsExtend = new GoodsExtend();Goods goods = goodsList.get(i);List<Image> imageList = imageService.getImagesByGoodsPrimaryKey(goods.getId());goodsExtend.setGoods(goods);goodsExtend.setImages(imageList);goodsExtendList.add(i, goodsExtend);}ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("goodsExtendList", goodsExtendList);modelAndView.addObject("search", str);modelAndView.setViewName("/goods/searchGoods");return modelAndView;}/*** 查询该类商品* * @param id* 要求该参数不为空* @return* @throws Exception*/@RequestMapping(value = "/catelog")public ModelAndView homeGoods(HttpServletRequest request, @RequestParam(value = "str", required = false) String str)throws Exception {ModelAndView modelAndView = new ModelAndView();// 每个种类显示商品数量int goodsSize = 12;List<Goods> goodsList = null;List<GoodsExtend> goodsAndImage = null;/* 获取最新发布列表 */goodsList = goodsService.getGoodsByStr(goodsSize, str, str);goodsAndImage = new ArrayList<GoodsExtend>();for (int j = 0; j < goodsList.size(); j++) {// 将用户信息和image信息封装到GoodsExtend类中,传给前台GoodsExtend goodsExtend = new GoodsExtend();Goods goods = goodsList.get(j);List<Image> images = imageService.getImagesByGoodsPrimaryKey(goods.getId());goodsExtend.setGoods(goods);goodsExtend.setImages(images);goodsAndImage.add(j, goodsExtend);}modelAndView.addObject("goodsExtendList", goodsAndImage);modelAndView.addObject("search", str);modelAndView.setViewName("/goods/catelogGoods");return modelAndView;}/*** 查询该类商品* * @param id* 要求该参数不为空* @return* @throws Exception*/@RequestMapping(value = "/catelog/{id}")public ModelAndView catelogGoods(HttpServletRequest request, @PathVariable("id") Integer id,@RequestParam(value = "str", required = false) String str) throws Exception {List<Goods> goodsList = goodsService.getGoodsByCatelog(id, str, str);Catelog catelog = catelogService.selectByPrimaryKey(id);List<GoodsExtend> goodsExtendList = new ArrayList<GoodsExtend>();for (int i = 0; i < goodsList.size(); i++) {GoodsExtend goodsExtend = new GoodsExtend();Goods goods = goodsList.get(i);List<Image> imageList = imageService.getImagesByGoodsPrimaryKey(goods.getId());goodsExtend.setGoods(goods);goodsExtend.setImages(imageList);goodsExtendList.add(i, goodsExtend);}ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("goodsExtendList", goodsExtendList);modelAndView.addObject("catelog", catelog);modelAndView.addObject("search", str);modelAndView.setViewName("/goods/catelogGoods");return modelAndView;}/*** 根据商品id查询该商品详细信息* * @param id* @return* @throws Exception*/@RequestMapping(value = "/goodsId/{id}")public ModelAndView getGoodsById(HttpServletRequest request, @PathVariable("id") Integer id,@RequestParam(value = "str", required = false) String str) throws Exception {Goods goods = goodsService.getGoodsByPrimaryKey(id);User seller = userService.selectByPrimaryKey(goods.getUserId());Catelog catelog = catelogService.selectByPrimaryKey(goods.getCatelogId());GoodsExtend goodsExtend = new GoodsExtend();List<Image> imageList = imageService.getImagesByGoodsPrimaryKey(id);CommentExtend CommentExtend=goodsService.selectCommentsByGoodsId(id);goodsExtend.setGoods(goods);goodsExtend.setImages(imageList);ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("CommentExtend",CommentExtend);modelAndView.addObject("goodsExtend", goodsExtend);modelAndView.addObject("seller", seller);modelAndView.addObject("search", str);modelAndView.addObject("catelog", catelog);modelAndView.setViewName("/goods/detailGoods");return modelAndView;}/*** 发布评论* @return */@RequestMapping(value = "/addComments",method=RequestMethod.POST)public void deleteFocus(HttpServletRequest request,Comments comments) {User cur_user = (User)request.getSession().getAttribute("cur_user");comments.setUser(cur_user);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");Date createAt =new Date();comments.setCreateAt(sdf.format(createAt));goodsService.addComments(comments);}/*** 修改商品信息** @return* @throws Exception*/@RequestMapping(value = "/editGoods/{id}")public ModelAndView editGoods(HttpServletRequest request,@PathVariable("id") Integer id) throws Exception {User cur_user = (User) request.getSession().getAttribute("cur_user");Goods goods = goodsService.getGoodsByPrimaryKey(id);List<Image> imageList = imageService.getImagesByGoodsPrimaryKey(id);GoodsExtend goodsExtend = new GoodsExtend();goodsExtend.setGoods(goods);goodsExtend.setImages(imageList);ModelAndView modelAndView = new ModelAndView();Integer userId = cur_user.getId();Purse myPurse = purseService.getPurseByUserId(userId);modelAndView.addObject("myPurse", myPurse);// 将商品信息添加到modelmodelAndView.addObject("goodsExtend", goodsExtend);modelAndView.setViewName("/goods/editGoods");return modelAndView;}/*** 提交商品更改信息** @return* @throws Exception*/@RequestMapping(value = "/editGoodsSubmit")public String editGoodsSubmit(HttpServletRequest request, Goods goods) throws Exception {User cur_user = (User) request.getSession().getAttribute("cur_user");goods.setUserId(cur_user.getId());String polish_time = DateUtil.getNowDay();goods.setPolishTime(polish_time);goods.setStatus(1);goodsService.updateGoodsByPrimaryKeyWithBLOBs(goods.getId(), goods);return "redirect:/user/allGoods";}/*** 商品下架** @return* @throws Exception*/@RequestMapping(value = "/offGoods")public ModelAndView offGoods() throws Exception {return null;}/*** 用户删除商品** @return* @throws Exception*/@RequestMapping(value = "/deleteGoods/{id}")public String deleteGoods(HttpServletRequest request, @PathVariable("id") Integer id) throws Exception {Goods goods = goodsService.getGoodsByPrimaryKey(id);// 删除商品后,catlog的number-1,user表的goods_num-1,image删除,更新session的值User cur_user = (User) request.getSession().getAttribute("cur_user");goods.setUserId(cur_user.getId());int number = cur_user.getGoodsNum();Integer calelog_id = goods.getCatelogId();Catelog catelog = catelogService.selectByPrimaryKey(calelog_id);catelogService.updateCatelogNum(calelog_id, catelog.getNumber() - 1);userService.updateGoodsNum(cur_user.getId(), number - 1);cur_user.setGoodsNum(number - 1);request.getSession().setAttribute("cur_user", cur_user);// 修改session值//imageService.deleteImagesByGoodsPrimaryKey(id);goodsService.deleteGoodsByPrimaryKey(id);return "redirect:/user/allGoods";}/*** 发布商品** @return* @throws Exception*/@RequestMapping(value = "/publishGoods")public ModelAndView publishGoods(HttpServletRequest request) {// 可以校验用户是否登录User cur_user = (User) request.getSession().getAttribute("cur_user");// if (cur_user == null) {// return "/goods/homeGoods";// } else {Integer userId = cur_user.getId();Purse myPurse = purseService.getPurseByUserId(userId);ModelAndView mv = new ModelAndView();mv.addObject("myPurse", myPurse);mv.setViewName("/goods/pubGoods");return mv;}/*** 提交发布的商品信息** @return* @throws Exception*/@RequestMapping(value = "/publishGoodsSubmit")public String publishGoodsSubmit(HttpServletRequest request, Image ima, Goods goods, MultipartFile image)throws Exception {// 查询出当前用户cur_user对象,便于使用idUser cur_user = (User) request.getSession().getAttribute("cur_user");goods.setUserId(cur_user.getId());goodsService.addGood(goods, 10);// 在goods表中插入物品// 返回插入的该物品的idint goodsId = goods.getId();ima.setGoodsId(goodsId);imageService.insert(ima);// 在image表中插入商品图片// 发布商品后,catlog的number+1,user表的goods_num+1,更新session的值int number = cur_user.getGoodsNum();Integer calelog_id = goods.getCatelogId();Catelog catelog = catelogService.selectByPrimaryKey(calelog_id);catelogService.updateCatelogNum(calelog_id, catelog.getNumber() + 1);userService.updateGoodsNum(cur_user.getId(), number + 1);cur_user.setGoodsNum(number + 1);request.getSession().setAttribute("cur_user", cur_user);// 修改session值return "redirect:/user/allGoods";}/*** 上传物品* * @param session* @param myfile* @return* @throws IllegalStateException* @throws IOException*/@ResponseBody@RequestMapping(value = "/uploadFile")public Map<String, Object> uploadFile(HttpSession session, MultipartFile myfile)throws IllegalStateException, IOException {// 原始名称String oldFileName = myfile.getOriginalFilename(); // 获取上传文件的原名// 存储图片的物理路径String file_path = session.getServletContext().getRealPath("upload");// System.out.println("file_path:"+file_path);// 上传图片if (myfile != null && oldFileName != null && oldFileName.length() > 0) {// 新的图片名称String newFileName = UUID.randomUUID() + oldFileName.substring(oldFileName.lastIndexOf("."));// 新图片File newFile = new File(file_path + "/" + newFileName);// 将内存中的数据写入磁盘myfile.transferTo(newFile);// 将新图片名称返回到前端Map<String, Object> map = new HashMap<String, Object>();map.put("success", "成功啦");map.put("imgUrl", newFileName);return map;} else {Map<String, Object> map = new HashMap<String, Object>();map.put("error", "图片不合法");return map;}}/*** 根据商品id查询该商品详细信息* * @param id* @return* @throws Exception*/@RequestMapping(value = "/buyId/{id}")public ModelAndView getGoodsdetailById(HttpServletRequest request, @PathVariable("id") Integer id)throws Exception {Goods goods = goodsService.getGoodsByPrimaryKey(id);GoodsExtend goodsExtend = new GoodsExtend();List<Image> imageList = imageService.getImagesByGoodsPrimaryKey(id);goodsExtend.setGoods(goods);goodsExtend.setImages(imageList);User cur_user = (User)request.getSession().getAttribute("cur_user");Integer userId = cur_user.getId();Purse myPurse=purseService.getPurseByUserId(userId);ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("goodsExtend", goodsExtend);modelAndView.addObject("myPurse",myPurse);modelAndView.setViewName("/user/pay");return modelAndView;}}
数据库配置信息:
<!-- 加载数据库参数 --><context:property-placeholder location="classpath:conf/jdbc.properties"/><context:component-scan base-package="com.ldu.service.impl"/><bean id = "dataSource" class = "com.alibaba.druid.pool.DruidDataSource" destroy-method = "close"><!-- 数据库基本信息配置 --><property name = "url" value = "${druid.url}" /><property name = "username" value = "${druid.username}" /><property name = "password" value = "${druid.password}" /><property name = "driverClassName" value = "${druid.driverClassName}" /><property name = "filters" value = "${druid.filters}" /><!-- 最大并发连接数 --><property name = "maxActive" value = "${druid.maxActive}" /><!-- 初始化连接数量 --><property name = "initialSize" value = "${druid.initialSize}" /><!-- 配置获取连接等待超时的时间 --><property name = "maxWait" value = "${druid.maxWait}" /><!-- 最小空闲连接数 --><property name = "minIdle" value = "${druid.minIdle}" /><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name = "timeBetweenEvictionRunsMillis" value ="${druid.timeBetweenEvictionRunsMillis}" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --><property name = "minEvictableIdleTimeMillis" value ="${druid.minEvictableIdleTimeMillis}" /><property name = "validationQuery" value = "${druid.validationQuery}" /><property name = "testWhileIdle" value = "${druid.testWhileIdle}" /><property name = "testOnBorrow" value = "${druid.testOnBorrow}" /><property name = "testOnReturn" value = "${druid.testOnReturn}" /><property name = "maxOpenPreparedStatements" value ="${druid.maxOpenPreparedStatements}" />
以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,而且也与当前的热点话题关联,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,比较适合毕业设计和课程设计的相关应用。
好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~
基于SSM的闲猫二手商城相关推荐
- java项目-第90期基于ssm的嘟嘟二手书商城系统
源码获取:本博客首页"资源"专栏下载! java项目-第90期基于ssm的嘟嘟二手书商城系统 1.项目简述 该项目是二手书城商城系统,包含普通用户和管理员两个角色.普通用户可以购买 ...
- 基于Springboot+Vue的校园二手商城系统
介绍 毕设:基于Springboot的校园二手交易商城的设计与实现 软件架构 Springboot+vue.js+MySQL 部署系统必备 JDK(1.8版本,并配置系统环境变量) MySQL(5.7 ...
- 基于ssm框架的校园二手交易平台
基于ssm框架的校园二手交易平台 idea eclispe运行 数据库mysql tomcat8.5 jdk1.8 主要功能 包括前后台 用户注册登陆 发布闲置 擦亮 下架 上架 编辑个人信息 收货地 ...
- 基于ssm的流浪猫狗救助网站(包含数据库、完美运行、可远程调试)
文章目录 前言 一.开发环境 二.前台主要模块展示 1.主页面 2.流浪猫狗知识 3.领养中心 4.团队活动 5.团队展示 6.登陆注册 三.后台主要模块展示 1.用户管理 2.流浪猫狗信息管理 3. ...
- 基于SSM的零食小食品商城(零食商城源码)
项目类型:Java EE项目(SSM框架) 项目名称:基于SSM的零食小食品商城(snack) 论文作者:辣条学长撰写 当前版本:V1.0.0版本 难度等级:✩✩✩ 复杂程度:✩✩✩ 用户类型:两个角 ...
- 基于SSM+MySQL+Bootstrap的在线购物商城系统
登陆注册 注册 添加商品 登陆 订单 添加商品 留言列表 首页 添加购物车 购物清单 购物车 修改密码 技术描述 开发工具: Idea/Eclipse 数据库: mysql Jar包仓库:普通jar包 ...
- javaweb基于SSM开发网上电子购物商城系统+论文+PPT 课程设计 毕业设计源码
基于SSM开发网上电子购物商城系统+论文+PPT:(毕业设计/课程设计) 开发工具: MyEclipse(eclipse/idea)+Jdk+Tomcat+MySQL数据库 演示视频: 基于SSM开发 ...
- 基于SSM框架的体育用品商城购物系统
基于SSM框架的体育用品商城购物系统 本系统是基于SSM框架的体育用品商城购物系统,本系统后端使用ssm框架,数据库使用mysql,前端使用bootstrap,JQuery框架,页面使用JSP 用户可 ...
- 基于SSM+SpringBoot《校园二手交易平台项目》实战开发教程(附论文及源码)-毕业设计
文章目录 1.项目简介 2.技术选型 3.项目资料 4.项目部分截图 1.项目简介 毕业设计基于SSM+SpringBoot校园二手交易平台项目 源码在课程附件中进行下载,地址:https://dow ...
- idea中ssm集成freemark_基于SSM框架的迷你天猫商城
作者:TMall来源:https://gitee.com/project_team/Tmall_demo 迷你天猫商城 迷你天猫商城是一个基于SSM框架的综合性B2C电商平台,需求设计主要参考天猫商城 ...
最新文章
- java下拉框选择_java中下拉框选项内容
- 百度浏览器支持html5,百度手机浏览器完美驾驭HTML5
- Netiler 开发规范
- OpenCV添加中文(五)
- AMD桌面处理器Roadmap也已泄露
- [概率论]如何通俗地理解“最大似然估计法”?
- redis设置密码和其它服务器连接
- javascript Date
- An unknown error occurred.
- listview拖动优化问题
- Exchange 2013 创建发送连接器
- centos 安装 LAMP
- ※C++随笔※=☆C++基础☆=※№→C++中 #include与#include
- 孟云飞 :一代通才 自成家数——赵之谦的艺术人生
- 克隆PDB数据库操作
- 华为丁耘突发疾病去世
- 金士顿DT100 G3 PS2251-07海力士U盘量产修复成功教程
- LD、CD、VCD、SVCD、DVD、DVCD、HDCD
- 深度学习中的正则化方法
- 【uni-app】uni-app实现聊天页面功能——功能篇(下)
热门文章
- 部署中遇到的问题(四)
- 实习笔记 6: 测试技巧,json序列化对象
- 简单瀑布流-jquery实现
- 国外大牛开发者创造出Siri第三方服务器
- apache和IIS共存,服务器对外统一使用80端口
- 拓端tecdat|R语言代写岭回归ridge regression分析租房价格报告
- 织梦支持php版本,DedeCMS不支持PHP5.3、5.4及以上版本后台500错误白屏的解决方法...
- 深度学习之神经网络(一)
- Dijkstra算法,起点到当前点的最短距离及路径 C++实现
- Servlet教程第0~3讲笔记