文末获取源码

开发语言:Java
开发工具:IDEA /Eclipse
数据库:MYSQL5.7/8.0
应用服务:Tomcat7/Tomcat8
是否Maven项目:是
后端框架:SpringBoot
前端框架:vue+element等
JDK版本:jdk1.8
项目架构:B/S架构

前言介绍

基于springboot的恒捷网上家电商城系统根据实际情况分为前后台两部分,前台部分主要是让用户购物使用的,包括用户的注册登录,查看公告,查看和搜索商品信息,根据分类定位不同类型的商品,将喜欢的商品加入购物车,对购物车内的商品进行结算生成订单,对订单进行管理,对个人注册信息进行管理等功能;后台部分主要是给商城购物系统的管理人员使用的,主要包括添加新闻公告信息,对商品进行分类管理,对商品进行管理方便前台用户购物使用,对用户的订单信息进行发货等操作,对用户的购物评价内容进行管理等操作。通过这些功能基本可以满足一个商城购物系统的需求。

系统结构

基于springboot的恒捷网上家电商城系统是为了方便人们购物而开发的,本系统根据实际情况分为前台和后台两部分,前台部分主要是让用户查看和购物使用的,同时用户还可以在前台对商品进行收藏和评价等操作;后台部分主要是给基于springboot的恒捷网上家电商城系统的管理人员使用的,主要包括对商品分类信息的管理,对商品进行管理,对用户购买商品的订单信息进行管理,以及对用户的评价等内容进行管理,基于springboot的恒捷网上家电商城系统具体功能如下图所示

系统详细设计

系统首页

本系统是一个电子商务网站,为了能够尽量满足用户的操作习惯,我们在首页的设计的时候参考了天猫,京东等一些比较成熟的电子商务网站的布局,首先是在顶部加入用户注册登录的功能,然后是在下面加入了一个搜索栏方便用户快速的查找所需的商品,在首页部门我们还加入了图片轮播的动态效果,在首页的左侧我们对商品的类型进行了展示,这样可以方便用户快速的定位不同类型的商品。首页整体设计以减价大方为主,并且兼顾了用户的操作习惯。基于springboot的恒捷网上家电商城系统首页部分具体效果如图

用户注册登录

在本基于springboot的恒捷网上家电商城系统中会有很多的顾客购买所需的商品,如果用户不进行注册登录就进行购买很难区分是那个客户买的商品,对后期的订单和发货等操作都会有很大的影响,所以用户在购物等操作的时候一定要先注册登录才可以进行后续操作。用户在注册的时候按照界面要求输入注册信息并点击[提交]按钮即可完成注册操作。基于springboot的恒捷网上家电商城系统用户注册效果如图

基于springboot的恒捷网上家电商城系统的用户在注册之后只是确定账号存在了,在购物等操作的时候还要根据上一步中注册的账号登录才可以,用户在登录的时候输入用户名+密码+验证码之后即可完成登录,登陆后系统会将当前登录的用户保存在Session对象中,方便用户的后续购物操作,基于springboot的恒捷网上家电商城系统用户登陆界面如图

商品信息

用户通过本基于springboot的恒捷网上家电商城系统的商品展示模块,首页的搜索模块,首页的商品分类模块和优惠商品等都可以快速的看到商品的展示信息,在商品展示模块中我们通商品的图片+商品的名称+商品的价格三要素对商品进行了展示,这样可以让用户快速的定位和筛选出自己所需的商品,当对某个商品感兴趣的时候还通过点击商品的图片和名称来查看商品的详细内容,基于springboot的恒捷网上家电商城系统商品信息效果如图

当用户上商品展示界面中点击了商品的图片或者名称之后系统会根据商品的ID自动的跳转到商品的详情页面中来,在商品的详情页面中可以看到商品的图片+商品的价格+商品的详细介绍+商品的销量等内容,当用户登录之后还可以根据需要进行收藏和加入购入车,加入购物车的时候可以选择购买的数量。同时为了能够让用户更好的查看商品的图片,我们还加入了图片放大镜的功能,用户只需将鼠标滑到图片上即可对图片进行放大查看大图,基于springboot的恒捷网上家电商城系统商品详情界面如图

用户除了可以查看商品之外可以查看优惠商品,优惠商品相当于限时秒杀,这部分和普通商品不同的是这些商品价格都相对比较低,且有时间限制,超过时间限制之后将不能够购买。基于springboot的恒捷网上家电商城系统优惠商品信息效果如图

当用户在上一步中点击了[点击购买]按钮之后系统会跳转到确认下单界面,在确认下面界面中选择已经添加过的地址,并点击[支付]按钮即可完成下单操作,基于springboot的恒捷网上家电商城系统用户购物车管理界面如图

订单信息管理

当用户在购物车中对商品进行了结算之后系统会自动的生成订单信息,在订单信息中可以看到订单的编号+商品名称+价格+数量+总价等订单信息,并且为了让用户更加方便的对不同状态下的订单进行管理,我们根据订单状态进行了分类主要包括[未支付],[已支付],[已发货],[已完成],[已退款],[已取消],等几个类型。在[未支付]状态下用户可以进行取消和付款,在[已支付]状态下可以进行退款操作,在[已发货]状态下用户可以进行收货操作,在[已完成]状态下用户可以进行评价操作,[已退款],[已取消]两个状态下只能查看历史订单

地址信息管理

当用户在进行购物的时候一般都是需要收货地址的,为了能够让用户保存自己的地址而不是每次都输入我们开发了收货地址管理模块,在收货地址添加模块中用户输入收货的联系人,手机号和地址以及是否设置为默认地址等之后点击[添加]按钮即可完成对地址的添加操作

当用户在上一步中添加地址之后可以在[我的地址]中对自己的地址进行管理,主要包括对有变化的收货地址进行修改,对不需要的收货地址进行删除等操作

管理员登录模块

网上家电商城系统中的管理员需要通过登录后台才可以对系统内的商品信息和订单信息进行管理,在商城购物系统管理人员登录界面中我们加入了另个input控件来存储用户名+密码,当管理人员输入了这些内容并点击 [登录]按钮之后系统会判断用户名和密码是否正确,如果正确就正常登录,否则给出提示,登录失败

商品类型信息管理

网上家电商城系统是一个综合性的购物平台,里面的商品琳琅满目五花八门,为了能够让顾客更方便的定位所需商品的类型,管理人员要对商品进行分类以方便管理和顾客购物使用,在商品分类管理中管理人员只需输入商品类型名称并点击[提交]按钮即可完成对商品分类的添加工作

商品管理

为了方便顾客查看和购买商品,基于springboot的恒捷网上家电商城系统的管理员要可以对不同的商品进行管理,主要包括对商品的添加,修改和删除等操作,当有新的商品需要发布的时候管理人员要可以对商品进行添加,在添加界面中输入商品基本信息,并上传商品的图片之后即可完成对商品的添加工作,这里要说明的是商品类型是通过上一步的商品类型管理中的内容进行动态读取的

网上家电商城系统的管理人员对商品信息完成添加之后还需要能够对商品进行管理,主要包括对不再销售的商品进行删除,对有误的商品进行修改等操作

订单管理

网上家电商城系统的用户在提交了自己的订单之后,管理人员要可以对订单进行管理,并且管理人员很好的控制订单的状态,当订单是没有发货的时候在订单管理中是显示发货操作按钮的,这个情况下管理人员可以进行发货处理,当订单是已发货或者其他状态下的时候发货按钮是不显示的,通过这种方式还可以起到提醒管理人员发货的作用。此外基于springboot的恒捷网上家电商城系统的管理人员还可以查看订单的详情和删除一些过期的订单内容

网上家电商城系统的管理员还可以查看订单的详细信息,在详细信息中可以看到用户过购买了那些商品

部分核心代码

/*** 家电产品* 后端接口* @author * @email * @date 2022-05-05 10:31:32*/
@RestController
@RequestMapping("/jiadianchanpin")
public class JiadianchanpinController {@Autowiredprivate JiadianchanpinService jiadianchanpinService;@Autowiredprivate StoreupService storeupService;@Autowiredprivate OrdersService ordersService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,JiadianchanpinEntity jiadianchanpin,HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("shangjia")) {jiadianchanpin.setShangjiamingcheng((String)request.getSession().getAttribute("username"));}EntityWrapper<JiadianchanpinEntity> ew = new EntityWrapper<JiadianchanpinEntity>();PageUtils page = jiadianchanpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiadianchanpin), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,JiadianchanpinEntity jiadianchanpin, HttpServletRequest request){EntityWrapper<JiadianchanpinEntity> ew = new EntityWrapper<JiadianchanpinEntity>();PageUtils page = jiadianchanpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiadianchanpin), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( JiadianchanpinEntity jiadianchanpin){EntityWrapper<JiadianchanpinEntity> ew = new EntityWrapper<JiadianchanpinEntity>();ew.allEq(MPUtil.allEQMapPre( jiadianchanpin, "jiadianchanpin")); return R.ok().put("data", jiadianchanpinService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(JiadianchanpinEntity jiadianchanpin){EntityWrapper< JiadianchanpinEntity> ew = new EntityWrapper< JiadianchanpinEntity>();ew.allEq(MPUtil.allEQMapPre( jiadianchanpin, "jiadianchanpin")); JiadianchanpinView jiadianchanpinView =  jiadianchanpinService.selectView(ew);return R.ok("查询家电产品成功").put("data", jiadianchanpinView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){JiadianchanpinEntity jiadianchanpin = jiadianchanpinService.selectById(id);jiadianchanpin.setClicknum(jiadianchanpin.getClicknum()+1);jiadianchanpin.setClicktime(new Date());jiadianchanpinService.updateById(jiadianchanpin);return R.ok().put("data", jiadianchanpin);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){JiadianchanpinEntity jiadianchanpin = jiadianchanpinService.selectById(id);jiadianchanpin.setClicknum(jiadianchanpin.getClicknum()+1);jiadianchanpin.setClicktime(new Date());jiadianchanpinService.updateById(jiadianchanpin);return R.ok().put("data", jiadianchanpin);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody JiadianchanpinEntity jiadianchanpin, HttpServletRequest request){jiadianchanpin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(jiadianchanpin);jiadianchanpinService.insert(jiadianchanpin);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody JiadianchanpinEntity jiadianchanpin, HttpServletRequest request){jiadianchanpin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(jiadianchanpin);jiadianchanpinService.insert(jiadianchanpin);return R.ok();}/*** 修改*/@RequestMapping("/update")@Transactionalpublic R update(@RequestBody JiadianchanpinEntity jiadianchanpin, HttpServletRequest request){//ValidatorUtils.validateEntity(jiadianchanpin);jiadianchanpinService.updateById(jiadianchanpin);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){jiadianchanpinService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<JiadianchanpinEntity> wrapper = new EntityWrapper<JiadianchanpinEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("shangjia")) {wrapper.eq("shangjiamingcheng", (String)request.getSession().getAttribute("username"));}int count = jiadianchanpinService.selectCount(wrapper);return R.ok().put("count", count);}/*** 前端智能排序*/@IgnoreAuth@RequestMapping("/autoSort")public R autoSort(@RequestParam Map<String, Object> params,JiadianchanpinEntity jiadianchanpin, HttpServletRequest request,String pre){EntityWrapper<JiadianchanpinEntity> ew = new EntityWrapper<JiadianchanpinEntity>();Map<String, Object> newMap = new HashMap<String, Object>();Map<String, Object> param = new HashMap<String, Object>();Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();while (it.hasNext()) {Map.Entry<String, Object> entry = it.next();String key = entry.getKey();String newKey = entry.getKey();if (pre.endsWith(".")) {newMap.put(pre + newKey, entry.getValue());} else if (StringUtils.isEmpty(pre)) {newMap.put(newKey, entry.getValue());} else {newMap.put(pre + "." + newKey, entry.getValue());}}params.put("sort", "clicknum");params.put("order", "desc");PageUtils page = jiadianchanpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiadianchanpin), params), params));return R.ok().put("data", page);}/*** 协同算法(按用户购买推荐)*/@RequestMapping("/autoSort2")public R autoSort2(@RequestParam Map<String, Object> params,JiadianchanpinEntity jiadianchanpin, HttpServletRequest request){String userId = request.getSession().getAttribute("userId").toString();String goodtypeColumn = "shangpinfenlei";List<OrdersEntity> orders = ordersService.selectList(new EntityWrapper<OrdersEntity>().eq("userid", userId).eq("tablename", "jiadianchanpin").orderBy("addtime", false));List<String> goodtypes = new ArrayList<String>();Integer limit = params.get("limit")==null?10:Integer.parseInt(params.get("limit").toString());List<JiadianchanpinEntity> jiadianchanpinList = new ArrayList<JiadianchanpinEntity>();//去重List<OrdersEntity> ordersDist = new ArrayList<OrdersEntity>();for(OrdersEntity o1 : orders) {boolean addFlag = true;for(OrdersEntity o2 : ordersDist) {if(o1.getGoodid()==o2.getGoodid() || o1.getGoodtype().equals(o2.getGoodtype())) {addFlag = false;break;}}if(addFlag) ordersDist.add(o1);}if(ordersDist!=null && ordersDist.size()>0) {for(OrdersEntity o : ordersDist) {jiadianchanpinList.addAll(jiadianchanpinService.selectList(new EntityWrapper<JiadianchanpinEntity>().eq(goodtypeColumn, o.getGoodtype())));}}EntityWrapper<JiadianchanpinEntity> ew = new EntityWrapper<JiadianchanpinEntity>();params.put("sort", "id");params.put("order", "desc");PageUtils page = jiadianchanpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiadianchanpin), params), params));List<JiadianchanpinEntity> pageList = (List<JiadianchanpinEntity>)page.getList();if(jiadianchanpinList.size()<limit) {int toAddNum = (limit-jiadianchanpinList.size())<=pageList.size()?(limit-jiadianchanpinList.size()):pageList.size();for(JiadianchanpinEntity o1 : pageList) {boolean addFlag = true;for(JiadianchanpinEntity o2 : jiadianchanpinList) {if(o1.getId().intValue()==o2.getId().intValue()) {addFlag = false;break;}}if(addFlag) {jiadianchanpinList.add(o1);if(--toAddNum==0) break;}   }} else if(jiadianchanpinList.size()>limit) {jiadianchanpinList = jiadianchanpinList.subList(0, limit);}page.setList(jiadianchanpinList);return R.ok().put("data", page);}}

SpringBoot+Vue项目网上家电商城相关推荐

  1. springboot毕设项目网上图书商城q3ulr(java+VUE+Mybatis+Maven+Mysql)

    springboot毕设项目网上图书商城q3ulr(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBui ...

  2. Springboot+vue项目零食销售商城

    摘  要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,零食销售商城当然也不能排除在外.零食销售商城是以实际运用为开发背景,运用软件工程原 ...

  3. 基于SpringBoot+vue的网上图书商城系统设计和实现

     博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序.Python和Android等技术,能够为大家提供全方位的技术支持和交流. 我擅长在Jav ...

  4. springboot毕设项目网上点餐系统z5055(java+VUE+Mybatis+Maven+Mysql)

    springboot毕设项目网上点餐系统z5055(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBui ...

  5. Springboot毕设项目欢乐购商城系统1l1e1(java+VUE+Mybatis+Maven+Mysql)

    Springboot毕设项目欢乐购商城系统1l1e1(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBu ...

  6. 基于SpringBoot框架的网上购物商城

    目录 项目介绍 运行环境 项目技术 使用说明 运行截图 项目介绍 随着人们进入新时代以及网络的普遍提速,人们将更多的时间放在互联网上来进行商品的购买,网上的商品相对实体店里的便宜且质量有保证,随时退换 ...

  7. java基于Springboot+vue的宠物销售商城网站 elementui

    宠物是人类最好的伙伴.尤其是近些年来,随着人们生活条件的改善,同时生活压力的增加越来越多的人.会选择宠物来相伴.在饲养宠物的同时,也会给这些铲屎官们带来一些困惑.不同类型和不同个体的宠物爱好是不同的, ...

  8. 【毕业设计】基于springboot + vue微信小程序商城

    目录 前言 创新点/亮点✨ 毕设目录 一.视频展示 二.系统介绍 三.项目地址 四.运行环境 五.设计模块 ①前台 ②后台 六.系统功能模块结构图 七. 准备阶段 ①使用真实支付 ②使用模拟支付 八. ...

  9. java基于springboot+vue的宠物用品销售商城 nodejs 前后端分离

    随着人们生活压力的不断增加,饲养宠物基本是现在很多家庭排除压力的一个选择,尤其是当代年轻人, 他们更喜欢在家里饲养一些毛孩子以排解自己在生活和学习中的一些压力.但是毛孩子们也和人类一样是需要一些用品的 ...

  10. 一键生成Springboot Vue项目! 【私活神器】

    今天给大家推荐一款自己公司正在打磨的一款一键部署,一键生成全自动化的低代码生成器工具,可以实现前端可视化操作(拖拽形式+配置就可以生成前端页面),后端直接结合前端代码一键生成,数据库(含表字段)可一键 ...

最新文章

  1. 思考如何提高博客的访问量
  2. 青龙羊毛——某元宇宙(非原创)
  3. 关于onclick操作,影响按钮submit提交
  4. unresolved external symbol怎么解决_收藏!用Kubernetes和PKS 1.5解决Windows Server2008的问题...
  5. html页脚行距,html Word行距怎么设置
  6. 云计算与分布式系统课程学习笔记(二)——Linux基本命令的使用与熟悉
  7. mysql利用内存表导入数据_Mysql 大量数据导入
  8. yum配置(源配置-光驱,ftp服务器;基本用法)
  9. 华为顶尖应届生最高年薪超 200 万;抖音服务器宕机;GitLab 12.1 发布 | 极客头条...
  10. java lc ctype_postgresql中的 LC_CTYPE、LC_COLLATE
  11. [zhuan]asp.net程序性能优化的七个方面 (c#(或vb.net)程序改进)
  12. matlab插值拟合案例,matlab插值与拟合
  13. 湖北武汉电信及全国DNS分析(湖北的DNS已验证)
  14. OpenGL递归细分四面体法绘制球体
  15. Unityt涂抹擦除功能
  16. 《这个历史挺靠谱·上·袁腾飞讲中国史》读后感
  17. CAS单点登录(http方式)
  18. 脱掉360奇虎的“加固保”壳后的发现与你的微信安全
  19. win10创建Ubuntu16.04子系统,安装常用软件以及图形界面(包括win10远程桌面连接Ubuntu)
  20. 【动漫整理】好番推荐(含微量剧透)

热门文章

  1. 采样定理的证明与推导
  2. 大专计算机论文什么方向,大专计算机论文
  3. 奇偶校验码海明码循环冗余校验码
  4. metasploit、msfvenom生成木马入侵电脑及手机
  5. 常用数学建模知识点及方法总结(1)(2021-8-10)
  6. 中国互联网的5大生死逻辑
  7. 吐血推荐:VBScript教程及语言参考电子书
  8. 马云在《赢在中国》对创业者的经典点评~
  9. 安全工具(免费杀毒软件Avast、免费防火墙费尔、免费木马清理工具arswp,AVG/Ewido,超级兔子)...
  10. Ubuntu16.04 LTS无法开启无线网开关的解决方法(联想Y7000)