购物车 
需求分析
- 添加菜品或者套餐到购物车
数据模型
代码开发
java
/**
    * 添加菜品或套餐到购物车
    * @param shoppingCart
    * @return
    */
@PostMapping("/add")
public R<ShoppingCart> addShoppingCart(@RequestBody ShoppingCart shoppingCart) {
    // 设置当前用户
    shoppingCart.setUserId(BaseContext.getCurrentUserId());
    // 查询是否存在相同菜品或套餐,存在则合并更新,不存在则新增
    ShoppingCart shoppingCartRow = shoppingCartService.getShoppingCart(shoppingCart);
    if (shoppingCartRow != null) {
        shoppingCartRow.setNumber(shoppingCartRow.getNumber() + 1);
        shoppingCartService.updateById(shoppingCartRow);
    } else {
        shoppingCart.setNumber(1);
        shoppingCartService.save(shoppingCart);
        shoppingCartRow = shoppingCart;
    }
    return R.success(shoppingCartRow);
}java
/**
* 查询套餐
*
* @param shoppingCart
*/
@Override
public ShoppingCart getShoppingCart(ShoppingCart shoppingCart) {
    LambdaQueryWrapper<ShoppingCart> queryWrapper = new LambdaQueryWrapper<>();
    // 用户
    if (shoppingCart.getUserId() != null) {
        queryWrapper.eq(ShoppingCart::getUserId, shoppingCart.getUserId());
    }
    // 菜品
    if (shoppingCart.getDishId() != null) {
        queryWrapper.eq(ShoppingCart::getDishId, shoppingCart.getDishId());
    }
    // 套餐
    if (shoppingCart.getSetmealId() != null) {
        queryWrapper.eq(ShoppingCart::getSetmealId, shoppingCart.getSetmealId());
    }
    return super.getOne(queryWrapper);
}功能测试