首页 > 其他分享 >向购物车添加菜品、删除菜品、展示购物车数据

向购物车添加菜品、删除菜品、展示购物车数据

时间:2023-03-16 14:34:13浏览次数:32  
标签:queryWrapper shoppingCartService shoppingCart 购物车 ShoppingCart 添加 菜品 import

package com.itheima.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.itheima.common.BaseContext;
import com.itheima.common.R;
import com.itheima.entity.ShoppingCart;
import com.itheima.service.ShoppingCartService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.*;

import javax.xml.ws.soap.Addressing;
import java.time.LocalDateTime;
import java.util.List;

@Slf4j
@RestController
@RequestMapping("/shoppingCart")
public class ShoppingCartController {

    @Autowired
    private ShoppingCartService shoppingCartService;





    /**
     * 添加购物车
     * @param shoppingCart
     * @return
     */
    @PostMapping("/add")
    public R<ShoppingCart> add(@RequestBody ShoppingCart shoppingCart){
        log.info("购物车数据:{}", shoppingCart);
        //设置用户id,指定当前是哪个用户的购物车数据
        long currentId = BaseContext.getCurrentId();
        shoppingCart.setUserId(currentId);

        //查询当前要添加菜品或者套餐是否已经存在购物车
        Long dishId = shoppingCart.getDishId();
        LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ShoppingCart::getUserId, currentId);
        if(dishId!=null){
            //添加到购物车的是菜品
            queryWrapper.eq(ShoppingCart::getDishId, dishId);

        }else{
            //添加到购物车的是套餐
            queryWrapper.eq(ShoppingCart::getSetmealId, shoppingCart.getSetmealId());
        }
        //查询当前菜品或套餐是否在购物车中
        ShoppingCart cartServiceOne = shoppingCartService.getOne(queryWrapper);

        if(cartServiceOne!=null){
            //如果已经存在,就在原来数量基础上加一
            Integer number = cartServiceOne.getNumber();
            cartServiceOne.setNumber(number+1);
            shoppingCartService.updateById(cartServiceOne);
        }else{
            //如果不存在,则添加到购物车,数量默认就是一
            shoppingCart.setNumber(1);
            shoppingCart.setCreateTime(LocalDateTime.now());
            shoppingCartService.save(shoppingCart);
            cartServiceOne = shoppingCart;
        }

        return R.success(cartServiceOne);
    }

    /**
     * 将菜品或套餐数量减一
     * @param shoppingCart
     * @return
     */
    @PostMapping("/sub")
    public R<String> sub(@RequestBody ShoppingCart shoppingCart){
        Long dishId = shoppingCart.getDishId();
        LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ShoppingCart::getUserId, BaseContext.getCurrentId());
        if(dishId!=null){
            //找到给菜品
            queryWrapper.eq(ShoppingCart::getDishId, dishId);
            ShoppingCart dish = shoppingCartService.getOne(queryWrapper);
            if(dish.getNumber()==1){
                //数量为1时则删除该菜品
                shoppingCartService.remove(queryWrapper);
            }else{
                //否则将该菜品数量减一
                dish.setNumber(dish.getNumber()-1);
                shoppingCartService.updateById(dish);
            }
        }else{
            //找到套餐
            queryWrapper.eq(ShoppingCart::getSetmealId, shoppingCart.getSetmealId());
            ShoppingCart setmeal = shoppingCartService.getOne(queryWrapper);
            if(setmeal.getNumber()==1){
                //数量为1时则删除该套餐
                shoppingCartService.remove(queryWrapper);
            }else{
                setmeal.setNumber(setmeal.getNumber()-1);
                shoppingCartService.updateById(setmeal);
            }

        }
        return R.success("修改成功");
    }



    /**
     * 查看购物车
     * @return
     */
    @GetMapping("/list")
    public R<List<ShoppingCart>> list(){
        long currentId = BaseContext.getCurrentId();
        LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ShoppingCart::getUserId, currentId);
        queryWrapper.orderByAsc(ShoppingCart::getCreateTime);
        List<ShoppingCart> list = shoppingCartService.list(queryWrapper);
        return R.success(list);
    }


    /**
     * 清空购物车
     * @return
     */
    @DeleteMapping("/clean")
    public R<String> clean(){
        LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ShoppingCart::getUserId, BaseContext.getCurrentId());
        shoppingCartService.remove(queryWrapper);
        return R.success("清空购物车成功");

    }

}

 

标签:queryWrapper,shoppingCartService,shoppingCart,购物车,ShoppingCart,添加,菜品,import
From: https://www.cnblogs.com/fxzm/p/17222433.html

相关文章

  • wgcloud详解 - 初始添加ping监测正常,过一会又ping不通的问题
    WGCLOUD有个模块【PING监测】,可以监测各种网络设备、网关、链路是否能正常ping通,如果ping不通说明网络不通,或设备已经下线,系统会发送告警通知提醒我在刚开始添加PING监测后,......
  • 添加项目邮箱
    1。返回Jenkins首页,点击jemter-deom,点击左边的设置,选择构建后操作,选择增加构建后操作步骤,选择”EditableEmailNotification“ 2.开始项目邮箱的设置--复制邮件模板.tx......
  • img标签如何添加动态src地址
    把图片当成模块用require引入图片地址(不带图片名称),后面加上循环遍历的图片名称拼接后就可以展示图片。即 require('@/assets/images/home/'+item.url)  // item.......
  • EAS添加审核/反审核按钮功能
    一、在按钮添加完成后,按钮功能是没有生效的,需要编写代码进行相关处理。当然这是在本人的开发环境下面。二、这个时候,就需要用到按钮的name属性了。所以添加按钮时,name属性......
  • 【824】Latex文章添加行号
    参考:latex生成pdf显示行号参考:latex显示行号\usepackage{lineno}\begin{document}\linenumbers\end{document}双列两侧显示:\usepackage[switch]{lineno}\b......
  • 【小哥132】显示与隐藏网络名-Z-Copy命令使用-导入网表-放置封装-添加Mark点与非电气
    走线,焊盘,动态铜皮显示网络名称。静态铜皮与过孔不能显示网络名称  Z-copy复制一个RouterKeepin区域(允许布线)内缩20mil,拼板与使用过程不会损坏到线Z-copy命令使用,......
  • Magento2.4.5 在后台产品列表添加自定义列
    要在Magento2.4.5后台产品展示列表中添加自定义列,请按照以下步骤进行操作:1.创建一个自定义模块。2.在自定义模块的"view/adminhtml/ui_component/product_listing.xm......
  • 【HarmonyOS】FA服务卡片中如何给List添加消息事件
    ​ 【关键字】消息事件、JSUI、服务卡片 【介绍】HarmonyOS使用JSUI进行Java服务卡片开发大家一定不陌生,如果还有没有接触过服务卡片开发的可以参考以下文档:http......
  • Linux - 添加用户
    添加用户语法:useradd[选项]用户名-d 指定用户的家目录-g 指定用户所属组-m 不自动建立用户登录的目录-u 指定用户idpasswd用于设置/修改用户密码passwd[用户名]w......
  • Cesium 与 Babylon.js 可视化 添加贴地
    我决定不从Babylonjs基础来讲了直接整合cesium与babylonjs可视化来讲 我整合一个类库后续不断更新中```javascript npmi@haibalai/cesium-babylonjs ``` ......