前言
之前在业余时间开发过一个商城管理系统,技术栈是目前比较主流的前后端分离。前端主要使用的是Vue框架、后端是SpringBoot框架、中间件采用的是Redis、数据库采用的是Mysql、持久层框架是Mybatis。目前代码已经开源到GitHub、对初学者来说有一定的参考价值~
更多文章:更多资源
需求功能说明
基本上包括了从管理员发布商品,到用户下订单购买收货的大致流程。简化了相关的逻辑,进攻参考学习。这里大致说明一下功能:商品分类管理、商品管理、订单管理、用户浏览商品,下订单购买、查看订单状态等。后台管理多为列表,增删改查这些操作。了解掌握一个模块,大部分模块即可掌握。注意:这里的业务逻辑经过简化,不代表实际生产操作。
实现效果截图
这里截取部分页面效果,页面设计的也较为简单。
图1 首页
相关代码
/** * 查询商品 * * @param id 商品id * @return 商品 */ public Good getGoodById(Long id) { String redisKey = RedisConstants.GOOD_ID_KEY + id; //从redis中查,若有则返回 Good redisGood = redisTemplate.opsForValue().get(redisKey); if (redisGood != null) { redisTemplate.expire(redisKey, RedisConstants.GOOD_ID_TTL, TimeUnit.MINUTES); return redisGood; } //若redis中没有则去数据库查 Good dbGood = lambdaQuery().eq(Good::getIsDelete, Boolean.FALSE).eq(Good::getId, id).one(); if (dbGood != null) { //将商品信息存入redis redisTemplate.opsForValue().set(redisKey, dbGood, RedisConstants.GOOD_ID_TTL, TimeUnit.MINUTES); return dbGood; } //数据库中没有则返回异常 throw new BizException(Status.NO_RESULT, "无结果"); }图2 商品详情
相关代码
/** * 分页查询商品 - 带查询条件 * * @param pageNum 页数 * @param pageSize 分页大学 * @param searchText 查询文本 * @param categoryId 分类id * @return 商品列表 */ public IPage<GoodVo> findPage(Integer pageNum, Integer pageSize, String searchText, Integer categoryId) { LambdaQueryWrapper<Good> query = Wrappers.<Good>lambdaQuery() //对商品名称模糊匹配 .like(StrUtil.isNotBlank(searchText), Good::getName, searchText).or() //对商品描述模糊匹配 .like(StrUtil.isNotBlank(searchText), Good::getDescription, searchText).or() //商品id查询 .eq(StrUtil.isNotBlank(searchText), Good::getId, searchText) .eq(categoryId != null, Good::getCategoryId, categoryId) .eq(Good::getIsDelete, Boolean.FALSE) .orderByDesc(Good::getId); //分页查询 IPage<Good> page = this.page(new Page<>(pageNum, pageSize), query); IPage<GoodVo> goodVoPage = page.convert(good -> { GoodVo goodVo = new GoodVo(); BeanUtil.copyProperties(good, goodVo); return goodVo; }); for (GoodVo good : goodVoPage.getRecords()) { //附上最低价格 good.setPrice(getMinPrice(good.getId())); } return goodVoPage; }图3 商品详情列表
相关代码
/** * 分页查询商品 - 带查询条件 * * @param pageNum 页数 * @param pageSize 分页大学 * @param searchText 查询文本 * @param categoryId 分类id * @return 商品列表 */ public IPage<GoodVo> findPage(Integer pageNum, Integer pageSize, String searchText, Integer categoryId) { LambdaQueryWrapper<Good> query = Wrappers.<Good>lambdaQuery() //对商品名称模糊匹配 .like(StrUtil.isNotBlank(searchText), Good::getName, searchText).or() //对商品描述模糊匹配 .like(StrUtil.isNotBlank(searchText), Good::getDescription, searchText).or() //商品id查询 .eq(StrUtil.isNotBlank(searchText), Good::getId, searchText) .eq(categoryId != null, Good::getCategoryId, categoryId) .eq(Good::getIsDelete, Boolean.FALSE) .orderByDesc(Good::getId); //分页查询 IPage<Good> page = this.page(new Page<>(pageNum, pageSize), query); IPage<GoodVo> goodVoPage = page.convert(good -> { GoodVo goodVo = new GoodVo(); BeanUtil.copyProperties(good, goodVo); return goodVo; }); for (GoodVo good : goodVoPage.getRecords()) { //附上最低价格 good.setPrice(getMinPrice(good.getId())); } return goodVoPage; }分享几个开源的项目(在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