黑马瑞吉外卖之购物车功能开发(添加购物车和购物车数据展示)

黑马瑞吉外卖之购物车功能

前端界面分析

当我们点击选择规格的时候,数据参数item会传入按钮绑定的方法中
在这里插入图片描述

在这里插入图片描述
我们点击到这个按钮的时候,那么就会绑定到这个方法。这个方法会将数据给这个窗体中的数据项赋值。这个diaglogFlavor其实就是定义初始化在vue的data里面。其实是可以看作一个列表。
在这里插入图片描述

在这里插入图片描述
这里会将show这个字段设置为true,那么据一定是一个标志的了,于是我们定位到上面的需要它的地方。到这里的时候就还会非常清楚了,这里的flag为true,这个这里就会执行这样的一个展示。具体的展示就是divCart,然后其实就是一个大的div。

在这里插入图片描述

在这里插入图片描述
这里就是具体的数据展示了。具体的呢,就是这样的一些数据,如下。

然后下面的数据包是怎么样展示出来的呢?

在这里插入图片描述
这里其实就是对口味规格进行了遍历。这样就展示出来了这样的数据。

在这里插入图片描述
当我们点击选择的时候,那么就会绑定到一个按钮。这里就会传入数据。

在这里插入图片描述

当我们点击flavorClick按钮的时候就会跳到这个方法。
在这里插入图片描述
那么选中的口味数据就会被赋值上。然后整个框的下面应该就是加入购物车的选择。当我们点击机器如购物车的时候就应该是一个按钮绑定方法,这个方法一定会向后端提交数据请求。那么就是走到这里的这个方法。

在这里插入图片描述
然乎我们定位到加入购物车的这个按钮所绑定给的方法。下面这里就是进行了一些数据的·遍历赋值,当然如果我们美誉选择口味数据的时候就点击加入购物车,这里就会提示让你请选择数据。

在这里插入图片描述

flag已经在上面设置为了true.r然后这里按照循环下面的走下来就是。

那么其实就是走到了这里。addCart。
在这里插入图片描述

然后呢,我们点位到这个addCart()这个方法。这个方法的逻辑就写在了这里。

在这里插入图片描述
其实这里还有一个调用的提交的请求接口。
那么我们就需要定位到这个addCartApi这个方法。

在这里插入图片描述
最终我们就来到了实际的js里面缩写的据具体的发送请求数据的接口。
在这里插入图片描述
然后就是这样啦!前端后面当然会接收数据,然后根据后端返回的数据做出响应即可。

后台购物车功能逻辑实现

这里同样按照原来的需要数据库表的设计,以及实体类。这是最为初步的操作。
这些字段都是十分好理解的。
在这里插入图片描述

id当然就是购物车的主键id,name当然就是所选的菜品或者套餐,然后image就是其实作为图片路径,将来要展示具体的图片的时候,我们就会需要这个字段的属性,然后就是user_id,这是比较重要的一个部分,因为这个购物车表中会添加很多的数据,我们需要按照片不同的用户来区分不同的用户的购物车,当然没非常重要的就是,如果用户登录到前台页面,所展示也就是他的id下面所关联到的购物车数据。dish_id和setmeal_id就自然很清楚,如果你的购物车有加入这些关系的数据那么这些字段下面就会有值,否则就没有。下面的不说了。

然后需要根据这样的表设计我们的实体类。还有mybatisplus框架搭建好就可以。
那么后台我们需要做的是什么,首先需要做的就是一个添加,因为我们刚刚做的就是一个添加的功能。点击按钮然后添加。就是这样,所以那么我们据先完成这样的功能。

后台逻辑如下

  @Autowired
    private ShoppingCartService shoppingCartService;
//    添加购物车
    @PostMapping("/add")
    public R_<ShoppingCart> add(@RequestBody ShoppingCart shoppingCart, HttpSession session)
    {
        log.info("购物车数据{}",shoppingCart);
        //这只用户id指定是哪个用户的购物车数据
//        查询当前用户的菜品或者套餐是否在购物车上
//        如果已经存在就在原来的数量的基础上进行加一
//        如果不存在,则添加到购物车,数量默认是一
//        获得当前用户的id
       Long userId = (Long) session.getAttribute("user");

//        将这个id设置到购物车当中去
        shoppingCart.setUserId(userId);
//        查询当前菜品或者套餐是否在购物车当中、
//        还需要判断当前添加的是套餐还是菜品
        Long dishId = shoppingCart.getDishId();
        LambdaQueryWrapper<ShoppingCart> shoppingCartLambdaQueryWrapper = new LambdaQueryWrapper<>();
//        添加用户条件
        shoppingCartLambdaQueryWrapper.eq(ShoppingCart::getUserId,userId);
        if(dishId!=null)
        {
//            添加的是菜品
            shoppingCartLambdaQueryWrapper.eq(ShoppingCart::getDishId,dishId);

        }else {
//            添加的是套餐
            shoppingCartLambdaQueryWrapper.eq(ShoppingCart::getSetmealId,shoppingCart.getSetmealId());
        }
//        查询当前菜品或者套餐是否在购物车当中,如果能够查出来,说明已经存在
        ShoppingCart one = shoppingCartService.getOne(shoppingCartLambdaQueryWrapper);
       if(one!=null)
       {
//           如果已经存在,那么就在原先的数量上加一
           Integer number = one.getNumber();
           one.setNumber(number+1);
           shoppingCartService.updateById(one);
       }else {
           shoppingCart.setNumber(1);
           shoppingCart.setCreateTime(LocalDateTime.now());
           shoppingCartService.save(shoppingCart);
           one = shoppingCart;

       }
      return R_.success(one);
    }

这样我们就完整了具体的功能。为什么还需要返回,当然了,因为数据添加成功以后就可以将这个购车的数据返回出去,因为我们取到成功的状态和数据。

在这里插入图片描述
当然这个展示查询的话一定是需要我们后台给的购物车的查询接口的。在这里插入图片描述
在这里插入图片描述

那么controller就是这样去写了

   查看购物车
    @GetMapping("/list")
    public R_<List<ShoppingCart>> list(HttpSession session)
    {
        log.info("查看购物车:{}");
        LambdaQueryWrapper<ShoppingCart> shoppingCartLambdaQueryWrapper = new LambdaQueryWrapper<>();

        shoppingCartLambdaQueryWrapper.eq(ShoppingCart::getUserId,(Long)session.getAttribute("user"));

        shoppingCartLambdaQueryWrapper.orderByAsc(ShoppingCart::getCreateTime);
        List<ShoppingCart> list = shoppingCartService.list(shoppingCartLambdaQueryWrapper);


       return R_.success(list);
    }

这个是查看购物车,效果就是这个样子

在这里插入图片描述

这是整体界面最后添加的结果,下面是套餐添加后的界面,

按照这个瑞吉外卖的前端设计的话,点菜需要选择口味这些规格,套餐的话则不需要去选择规格了。认为是固定的。效果就是这个样子
在这里插入图片描述
懒惰今天更一篇。文章全部包含前后端的逻辑分析。

请添加图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 要使用QQ邮箱来进行黑马瑞吉外卖移动端验证码登录,您需要按照以下步骤进行操作。 首先,在黑马瑞吉外卖移动应用程序中选择使用验证码登录选项。 然后,系统会要求您输入您的手机号码。请输入与您的QQ邮箱绑定的手机号码。 接下来,系统将会向您的QQ邮箱发送一封包含验证码的电子邮件。请在移动应用程序中等待几秒钟,确保您的QQ邮箱可以收到邮件。 打开您的QQ邮箱,并查找名为“黑马瑞吉外卖验证码”的邮件。请注意,有时候邮件可能会被归类到垃圾邮件或其他文件夹中,请确保您检查所有文件夹。 在邮件中,您将找到一个验证码。将该验证码复制,并返回到黑马瑞吉外卖移动应用程序。 在应用程序中,粘贴您刚才复制的验证码,并点击“确认”按钮。 系统将根据您输入的验证码验证您的身份。如果验证码输入正确,您将成功登录黑马瑞吉外卖移动应用程序。 请注意,验证码一般在发送后几分钟内失效。如果您在一定时间内没有收到邮件或验证码已失效,请尝试重新请求或重新发送验证码。 这样,您就可以使用您的QQ邮箱来进行黑马瑞吉外卖移动端验证码登录了。如果您遇到任何问题,请及时联系黑马瑞吉外卖的客户支持。 ### 回答2: 黑马瑞吉外卖是一家提供外卖服务的公司,为了提高用户的账户安全性,他们在移动端推出了验证码登录功能。用户可以选择使用qq邮箱进行验证码登录。 用户在移动端打开黑马瑞吉外卖的应用后,选择登录界面,并选择验证码登录选项。接下来,用户需要点击“使用qq邮箱登录”的按钮。 在点击按钮后,应用会要求用户输入他们的qq邮箱地址。用户需要输入正确的邮箱地址,并点击确认。系统会验证该邮箱是否存在以及是否正确。 验证通过后,系统会向用户的qq邮箱发送一封邮件,邮件中包含一个验证码。用户需要打开邮箱,找到这封邮件,复制验证码并返回外卖应用。 用户需要粘贴该验证码,并点击确认。系统会对验证码进行验证,如果验证码正确,用户将成功登录外卖应用,并可开始使用各种功能。 通过验证码登录的方式,账户的安全性得到了提高。因为只有用户本人能够收到并使用qq邮箱中的验证码,在他人无法猜测的情况下,他人无法登录用户的账户。 同时,使用qq邮箱登录还具有方便性。许多用户已经有自己的qq邮箱,不需要再注册新的账户,可以直接使用已有的qq邮箱进行登录,省去了注册的时间和麻烦。 总之,黑马瑞吉外卖的移动端验证码登录使用qq邮箱的功能保证了用户账户的安全性,同时也提供了便利的登录方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兰舟千帆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值