前言
这个系统是蛮久之前开发的一个,也是一个商城系统。包含了常见的商品发布和订单购买功能,当时学习练手做的一个系统。技术栈的话是SpringBoot + Vue,持久层框架用的是Mybatis,数据库的话是Mysql,很经典的一个技术战组合。不过这个系统是没有进行前后端分离的,一个项目包含了前端和后端。目前代码已经开源到GitHub、对初学者来说有一定的参考价值~
更多资料:更多资料
需求功能说明
此系统基本上包括了从管理员管理商品种类,发布商品信息、到用户浏览商品、加入购物车,下订单购买,收货评论的大致流程。简化了相关的逻辑,仅供参考学习。这里大致说明一下功能:商品分类管理、商品管理、订单管理、发布平台公告;用户浏览商品,在线交流、下订单购买、查看订单状态等。后台管理多为列表,增删改查这些操作。包括图上上传,超文本编辑等功能。注意:这里的业务逻辑经过简化,不代表实际生产操作。
实现效果(部分页面截图)
图1 商品详情页面
核心代码
查询商品涉及到两个接口一个是查询商品详情,一个是商品评论信息。当然这两个接口也可以合并为一个。这里的分页是通过插件的形式实现~
public GoodsInfo findById(Long id) { GoodsInfo goodsInfo = goodsInfoDao.selectByPrimaryKey(id); getRelInfo(goodsInfo); return goodsInfo; } public PageInfo<GoodsInfo> findRecommendGoods(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); List<GoodsInfo> list = goodsInfoDao.findRecommendGoods(); return PageInfo.of(list); }图2 商品新增页面
核心代码
图片上传相关接口~
@PostMapping("/upload") public Result upload(MultipartFile file, HttpServletRequest request) throws IOException { String originName = file.getOriginalFilename(); // 1. 先查询有没有相同名称的文件 NxSystemFileInfo fileInfo = nxSystemFileInfoService.findByFileName(name); if (fileInfo != null) { throw new CustomException("1001", "文件名:\"" + name + "\"已存在"); } // 文件名加个时间戳 String fileName = FileUtil.mainName(originName) + System.currentTimeMillis() + "." + FileUtil.extName(originName); // 2. 文件上传 FileUtil.writeBytes(file.getBytes(), BASE_PATH + fileName); // 3. 信息入库,获取文件id NxSystemFileInfo info = new NxSystemFileInfo(); info.setOriginName(originName); info.setFileName(fileName); NxSystemFileInfo addInfo = nxSystemFileInfoService.add(info); System.out.println(addInfo); if (addInfo != null) { return Result.success(addInfo); } else { return Result.error("4001", "上传失败"); } }图3 公告发布页面
核心代码
@PostMapping("/notice/upload") public Result<Map<String, String>> noticeUpload(MultipartFile file, HttpServletRequest request) throws IOException { String originName = file.getOriginalFilename(); // 文件名加个时间戳 String fileName = FileUtil.mainName(originName) + System.currentTimeMillis() + "." + FileUtil.extName(originName); // 2. 缩小尺寸 FileUtil.mkdir(BASE_PATH); Thumbnails.of(file.getInputStream()).width(400).toFile(BASE_PATH + fileName); // 3. 信息入库,获取文件id NxSystemFileInfo info = new NxSystemFileInfo(); info.setOriginName(originName); info.setFileName(fileName); NxSystemFileInfo addInfo = nxSystemFileInfoService.add(info); Map<String, String> map = new HashMap<>(2); map.put("src", "/files/download/" + addInfo.getId()); map.put("title", originName); return Result.success(map); }分享几个开源的项目(在GitHub上)
🎯 项目一:美妆商城系统
技术栈:SpringBoot + Vue + mybatis + mysql
https://github.com/zhengyuzh/meizhuangshop
🚀 项目二:智能美妆商城系统
技术栈:SpringBoot + Vue + 协同过滤算法 + 敏感词过滤 + mybatis + mysql
https://github.com/zhengyuzh/mzshop
🛍️ 项目三:通用商城系统
技术栈:前后端分离 SpringBoot + Vue + mybatis + mysql
https://github.com/zhengyuzh/mallsystem
💗 项目四:大学生心理健康管理系统
技术栈:SpringBoot + mybatis + mysql 等
https://github.com/zhengyuzh/Mental-health-management-system
📚 项目五:智能书籍借阅系统
技术栈:SpringBoot + Vue + Redis + Mybatis-plus + 微信小程序
https://github.com/zhengyuzh/Book-borrowing-system公众号回复如下内容即可获取对应资料