当前位置: 首页 > news >正文

添加购物车功能

业务需求:

用户提交三个字段,服务端根据提交的字段判断是菜品还是套餐,根据菜品或者套餐添加购物车表中。

代码实现


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

    @Autowired
    private ShoppingCartService shoppingCartService;
    @PostMapping("/add")
    public Result addShoppingCart(@RequestBody ShoppingCartDTO shoppingCartDTO){
        log.info("添加购物车参数:{}",shoppingCartDTO);
        shoppingCartService.addShoppingCart(shoppingCartDTO);
        return Result.success();

    }
}

实现类


@Slf4j
@Service
public class ShoppingCartServiceImpl implements ShoppingCartService {

    @Autowired
    private ShoppingCartMapper shoppingCartMapper;

    @Autowired
    private DishMapper dishMapper;

    @Autowired
    private SetmealMapper setmealMapper;
    @Override
    public void addShoppingCart(ShoppingCartDTO shoppingCartDTO) {
        //1.先构造一个shoppingcart对象
        ShoppingCart shoppingCart = new ShoppingCart();
        BeanUtils.copyProperties(shoppingCartDTO,shoppingCart);
        Long userId = BaseContext.getCurrentId();
        shoppingCart.setUserId(userId);
        List<ShoppingCart> list = shoppingCartMapper.list(shoppingCart);

        //2.查询这个用户的购物车中有没有这个对象,如果有那么number数量加1,如果没有那么插入这个商品
        if (list != null && list.size()>0){
            ShoppingCart shoppingcart = list.get(0);
            shoppingcart.setNumber(shoppingcart.getNumber()+1);
            shoppingCartMapper.update(shoppingcart);
        }else {
            //3.如果没有那么插入商品时,判断是菜品还是套餐。
            Long dishId = shoppingCartDTO.getDishId();
            if (dishId != null){
                //如果dishId不为空,说明是菜品,那么插入菜品
                Dish dish = dishMapper.getById(dishId);
                shoppingCart.setName(dish.getName());
                shoppingCart.setImage(dish.getImage());
                shoppingCart.setAmount(dish.getPrice());
            }else {
                Long setmealId = shoppingCartDTO.getSetmealId();
                Setmeal setmeal = setmealMapper.getById(setmealId);
                shoppingCart.setName(setmeal.getName());
                shoppingCart.setImage(setmeal.getImage());
                shoppingCart.setAmount(setmeal.getPrice());
            }
            shoppingCart.setNumber(1);
            shoppingCart.setCreateTime(LocalDateTime.now());
            shoppingCartMapper.insert(shoppingCart);
        }

        //3.插入商品时,判断是菜品还是套餐。
    }
}

 

http://www.dtcms.com/a/111642.html

相关文章:

  • LeetCode热题100记录-【链表】
  • Linux内核物理内存组织结构
  • 【GPT入门】第33课 从应用场景出发,区分 TavilyAnswer 和 TavilySearchResults,代码实战
  • [每周一更]-(第138期):MySQL 子查询详解:原理、应用及优化方案
  • 爬虫工程师的社会现状
  • ISIS多区域配置
  • 基于CATIA参数化块体建模的自动化插件开发实践——NX建模之块命令的参考与移植
  • 4.3-2 jenkins
  • Cortex-M​ 中断的压栈与出栈操作
  • 【51单片机】2-3【I/O口】震动传感器控制LED灯
  • 【记录】kali制作绕过火绒检测的木马(仅通过MSF的方式)
  • shared_ptr和weak_ptr原理
  • TortoiseGit多账号切换配置
  • Ubuntu服务器 无法正常启动redis
  • cmake(12):在 CMake 的 CMakeLists.txt 中也可以进行流程控制,也就是说可以像写 shell 脚本那样进行条件判断和循环。
  • ubantu22.04中搭建地图开发环境(qt5.15.2 + osg3.7.0 + osgearth3.7.1 + osgqt)
  • 自然科学基金项目答辩ppt设计制作美化案例模板下载
  • 机器学习学习笔记
  • Promise 详细说明、常用方法
  • 【备考高项】模拟预测题(一)综合知识及答案详解
  • C++_模板初阶
  • transform
  • VirtualBox安装FnOS
  • pat学习笔记
  • JavaScript学习19-事件类型之鼠标事件
  • 【2019】【论文笔记】混合石墨烯等离子体光栅在THz下增强非线——
  • 配置文件、Spring日志
  • Java基础 4.4
  • 论文阅读Diffusion Autoencoders: Toward a Meaningful and Decodable Representation
  • Dagster系列教程:快速掌握数据资产定义