SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频

这篇具有很好参考价值的文章主要介绍了SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、项目演示

项目演示地址: 视频地址

二、项目介绍

项目描述:这是一个基于SpringBoot+微信小程序框架开发的在线订餐小程序系统。首先,这是一个前后端分离的项目,代码简洁规范,注释说明详细,易于理解和学习。其次,这项目功能丰富,具有一个在线订餐小程序系统该有的所有功能。

项目功能:此项目分为两个角色:普通用户管理员普通用户有登录注册、浏览商品信息、添加购物车、结算订单、查看个人信息、查看个人订单详情、管理个人地址信息、发布评价信息等等功能。管理员有管理所有商品信息、管理所有订单信息、管理所有用户信息、管理所有评价信息等等功能。

应用技术:SpringBoot + 微信小程序 + MySQL + MyBatis + Redis + ElementUI + Lua + Vue + Vant Weapp

运行环境:IntelliJ IDEA2019.3.5 + 微信开发者工具(项目压缩包中自带)+ MySQL5.7(项目压缩包中自带) + Redis5.0.5(项目压缩包中自带) + JDK1.8 + Maven3.6.3(项目压缩包中自带)+ Node14.16.1(项目压缩包中自带)

三、运行截图

SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序
SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频,项目介绍,小程序,spring boot,微信小程序

四、主要代码

1.提交订单代码

	/**
     * 提交订单操作处理
     * @param orderDTO
     * @return
     */
    @Override
    public ResponseDTO<OrderDTO> submitOrder(OrderDTO orderDTO) {
        UserDTO userDTO = new UserDTO();
        userDTO.setToken(orderDTO.getToken());
        ResponseDTO<UserDTO> loginUserResponse = userService.getLoginUser(userDTO);
        if(!CodeMsg.SUCCESS.getCode().equals(loginUserResponse.getCode())) {
            return ResponseDTO.errorByMsg(CodeMsg.USER_SESSION_EXPIRED);
        }
        // 获取登录用户信息
        userDTO = loginUserResponse.getData();
        AddressExample addressExample = new AddressExample();
        addressExample.createCriteria().andUserIdEqualTo(userDTO.getId());
        if(addressMapper.selectByExample(addressExample).size() == 0) {
            return ResponseDTO.errorByMsg(CodeMsg.ADDRESS_NOT_EXIST);
        }

        String[] cartIdList = orderDTO.getCartIdList().split(",");
        CartExample cartExample = new CartExample();
        cartExample.createCriteria().andIdIn(Arrays.stream(cartIdList).collect(Collectors.toList()));
        List<Cart> cartList = cartMapper.selectByExample(cartExample);
        List<String> productIdList = cartList.stream().map(Cart::getProductId).collect(Collectors.toList());
        ProductExample productExample = new ProductExample();
        productExample.createCriteria().andIdIn(productIdList);
        List<Product> productList = productMapper.selectByExample(productExample);
        List<String> productNameList = productList.stream().map(Product::getName).collect(Collectors.toList());
        List<String> productPriceList = productList.stream().map(Product::getPrice).map(String::valueOf).collect(Collectors.toList());
        List<String> productPhotoList = productList.stream().map(Product::getPhoto).map(String::valueOf).collect(Collectors.toList());
        List<String> cartQuantityList = cartList.stream().map(Cart::getQuantity).map(String::valueOf).collect(Collectors.toList());
        String orderId = UuidUtil.getShortUuid();
        String orderDate = CommonUtil.getFormatterDate(new Date(), "yyyy-MM-dd HH:mm:ss");
        // 执行lua脚本
        String result = stringRedisTemplate.execute(
                SECKILL_SCRIPT,
                Collections.singletonList(RedisConstant.STOCK_REDIS_KEY_TEMPLATE),
                StringUtils.join(productIdList, ","),
                StringUtils.join(productNameList, ","),
                StringUtils.join(cartQuantityList, ","),
                orderId,
                userDTO.getId(),
                orderDate,
                StringUtils.join(productPriceList, ","),
                StringUtils.join(productPhotoList, ","),
                StringUtils.join(Arrays.asList(cartIdList), ",")
        );
        if(!"成功".equals(result)) {
            CodeMsg codeMsg = CodeMsg.PRODUCT_STOCK_OVER;
            codeMsg.setMsg(result);
            return ResponseDTO.errorByMsg(codeMsg);
        }
        orderDTO.setId(orderId);
        return ResponseDTO.success(orderDTO);
    }

2.购物车保存操作(添加、减少)代码

 	/**
     * 购物车保存操作(添加、减少)
     * @param cartDTO
     * @return
     */
    @Override
    public ResponseDTO<Boolean> saveCart(CartDTO cartDTO) {
        UserDTO userDTO = new UserDTO();
        userDTO.setToken(cartDTO.getToken());
        ResponseDTO<UserDTO> loginUserResponse = userService.getLoginUser(userDTO);
        if(!CodeMsg.SUCCESS.getCode().equals(loginUserResponse.getCode())) {
            return ResponseDTO.errorByMsg(CodeMsg.USER_SESSION_EXPIRED);
        }
        // 获取登录用户信息
        userDTO = loginUserResponse.getData();
        cartDTO.setUserId(userDTO.getId());

        Product product = productMapper.selectByPrimaryKey(cartDTO.getProductId());
        if (product == null) {
            return ResponseDTO.errorByMsg(CodeMsg.PRODUCT_NOT_EXIST);
        }
        Cart cart = CopyUtil.copy(cartDTO, Cart.class);
        // 判断购物车是否已经有此商品
        CartExample cartExample = new CartExample();
        cartExample.createCriteria().andProductIdEqualTo(cartDTO.getProductId()).andUserIdEqualTo(cartDTO.getUserId());
        List<Cart> cartList = cartMapper.selectByExample(cartExample);
        if(cartList.size() > 0) {
            // 购物车中已经有此商品
            if(CartOperateEnum.ADD.getCode().equals(cartDTO.getOperateType())) {
                // 添加操作
                if(cart.getQuantity() + cartList.get(0).getQuantity() > product.getStock()) {
                    return ResponseDTO.errorByMsg(CodeMsg.PRODUCT_STOCK_OVER);
                }
                cartList.get(0).setQuantity(cart.getQuantity() + cartList.get(0).getQuantity());
            } else if (CartOperateEnum.SUB.getCode().equals(cartDTO.getOperateType())) {
                // 减少操作
                if(cartList.get(0).getQuantity() <= cart.getQuantity()) {
                    // 删除
                    CartDTO copy = CopyUtil.copy(cartList.get(0), CartDTO.class);
                    copy.setToken(cartDTO.getToken());
                    removeCart(copy);
                    return ResponseDTO.successByMsg(true, "购物车操作成功!");
                } else {
                    cartList.get(0).setQuantity(cartList.get(0).getQuantity() - cart.getQuantity());
                }
            }
            // 更新数据
            if(cartMapper.updateByPrimaryKeySelective(cartList.get(0)) == 0) {
                return ResponseDTO.errorByMsg(CodeMsg.CART_SAVE_ERROR);
            }

        } else {
            // 购物车中没有此商品
            if(product.getStock() == 0) {
                return ResponseDTO.errorByMsg(CodeMsg.PRODUCT_STOCK_OVER);
            }
            cart.setId(UuidUtil.getShortUuid());
            // 添加数据
            if(cartMapper.insertSelective(cart) == 0) {
                return ResponseDTO.errorByMsg(CodeMsg.CART_SAVE_ERROR);
            }
        }
        return ResponseDTO.successByMsg(true, "购物车操作成功!");
    }

3.小程序登录操作代码文章来源地址https://www.toymoban.com/news/detail-521712.html

	/**
     * 小程序用户登录操作
     * @param userDTO
     * @return
     */
    @Override
    public ResponseDTO<UserDTO> appLogin(UserDTO userDTO) {
        // 进行是否为空判断
        if(CommonUtil.isEmpty(userDTO.getUsername())){
            return ResponseDTO.errorByMsg(CodeMsg.USERNAME_EMPTY);
        }
        if(CommonUtil.isEmpty(userDTO.getPassword())){
            return ResponseDTO.errorByMsg(CodeMsg.PASSWORD_EMPTY);
        }
        // 对比昵称和密码是否正确
        UserExample userExample = new UserExample();
        userExample.createCriteria().andUsernameEqualTo(userDTO.getUsername()).andPasswordEqualTo(userDTO.getPassword());
        List<User> userList = userMapper.selectByExample(userExample);
        if(userList == null || userList.size() != 1){
            return ResponseDTO.errorByMsg(CodeMsg.USERNAME_PASSWORD_ERROR);
        }
        // 生成登录token并存入Redis中
        User selectedUser = userList.get(0);
        UserDTO selectedUserDTO = CopyUtil.copy(selectedUser, UserDTO.class);
        String token = UuidUtil.getShortUuid();
        selectedUserDTO.setToken(token);
        //把token存入redis中 有效期1小时
        stringRedisTemplate.opsForValue().set("USER_" + token, JSON.toJSONString(selectedUser), 3600, TimeUnit.SECONDS);
        return ResponseDTO.successByMsg(selectedUserDTO, "登录成功!");
    }

到了这里,关于SpringBoot+微信小程序在线订餐小程序系统 附带详细运行指导视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • N-144基于微信小程序在线订餐系统

    开发工具:IDEA、微信小程序 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:vue、ElementUI、 Vant Weapp 服务端技术:springboot+mybatis+redis 本系统分微信小程序和管理后台两部分,项目采用前后端分离 一、普通用户功能: 登录注册、浏览商品信息、添加购物车、

    2024年02月20日
    浏览(47)
  • (N-144)基于微信小程序在线订餐系统

    开发工具:IDEA、微信小程序 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:vue、ElementUI、 Vant Weapp 服务端技术:springboot+mybatis+redis 本系统分微信小程序和管理后台两部分,项目采用前后端分离 一、普通用户功能: 登录注册、浏览商品信息、添加购物车、

    2024年02月21日
    浏览(65)
  • 基于微信小程序的在线订餐系统+ssm后台管理源码和论文

    微信小程序在线订餐系统 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序在线订餐系统的开发全过程。通过分析微信小程序在线订餐系统管理的不足,创建了一个计算机管理微信小程序在线订餐系统的

    2024年02月01日
    浏览(47)
  • 基于微信小程序在线外卖点餐订餐系统设计与实现 毕业设计论文大纲参考(JSP后台)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年02月19日
    浏览(52)
  • 基于SpringBoot+Vue+uniapp微信小程序的订餐系统的详细设计和实现

    💗 博主介绍 :✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅 👇🏻 2023-2024年最值得选的微信小程序毕业设

    2024年02月22日
    浏览(86)
  • SpringBoot+微信小程序实现的云音乐小程序系统 附带详细运行指导视频

    项目演示地址: 视频地址 项目描述:这是一个 基于SpringBoot+微信小程序框架 开发的云音乐微信小程序系统。首先,这是一个 前后端分离 的项目,前端分为 用户端 和 管理端 , 用户端 使用 微信小程序(微信小程序开发) , 管理端 使用 Web页面(Vue开发) 。其次这项目代码简洁

    2024年02月08日
    浏览(86)
  • SpringBoot+微信小程序实现的酒店预订小程序系统 附带详细运行指导视频

    项目演示地址: 视频地址 项目描述:这是一个 基于SpringBoot+微信小程序框架 开发的酒店预订小程序系统。首先,这是一个 前后端分离 的项目,代码简洁规范,注释说明详细,易于理解和学习。其次,这项目功能丰富,具有一个酒店预订小程序系统该有的所有功能。 项目功

    2024年04月22日
    浏览(39)
  • 微信小程序外卖跑腿点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现)

    自从计算机发展开始,计算机软硬件相关技术的发展速度越来越快,在信息化高速发展的今天,计算机应用技术似乎已经应用到了各个领域。 在餐饮行业,除了外卖以外就是到店里就餐,在店里就餐如果需要等待点餐的话,用户的体验度就会急剧下降,很多餐饮店也开始开发

    2024年04月11日
    浏览(58)
  • 微信小程序扫码点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端)项目全套源码+完成文档说明+毕业论文

    摘要 随着当前社会人们的生活节奏越来越快,人们对生活效率的追求也越来越高,以往的传统的点餐方式已不能满足人们的需要,首先有些小型饭馆是需要顾客排队点餐,然后安排专人在台前记录,这样不仅造成时间上的浪费,还浪费人力,有些大型餐厅是当顾客入座后,安

    2024年04月15日
    浏览(68)
  • 微信小程序订餐系统

    技术栈 : MySQL、Maven、Spring、SpringMVC、MyBatis、HikariCP、fastjson、slf4j、微信小程序 系统功能 : 小程序端 : a、用户注册:用户在注册账号时必须输入账号、姓名、密码、确认密码、性别和电话号码,并且密码和确认密码必须一致,否则无法提交注册信息。 b、用户登录:必须

    2024年02月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包