一、新增购物车
需求分析和设计:
购物车数据库:
封装请求数据的对象:
套餐/单个菜品+对应口味
Controller:
Service:
先判断购物车是否存在同品种同口味的菜品,如果存在则修改对应数据,如果不存在则插入新数据
/**
* 添加购物车
* @param shoppingCartDTO
* */
@Override
public void addShoppingCart(ShoppingCartDTO shoppingCartDTO) {
//判断当前加入到购物车中的商品是否存在
ShoppingCart shoppingCart=new ShoppingCart();
BeanUtils.copyProperties(shoppingCartDTO,shoppingCart);
Long userId = BaseContext.getCurrentId();
shoppingCart.setUserId(userId);
List<ShoppingCart> list = shoppingCartMapper.list(shoppingCart);
//如果已经存在,只需要将数量+1
if(list !=null && list.size()>0){
ShoppingCart shoppingCart1 = list.get(0);
//购物车对应数量+1
shoppingCart1.setNumber(shoppingCart1.getNumber()+1);
//+1后更新表数据 执行update语句
shoppingCartMapper.updateNumberById(shoppingCart1);
}else{
//如果不存在,需要插入一条购物车数据
Long dishId = shoppingCart.getDishId();
if(dishId != null){
//判断本次添加到购物车的是否是菜品
//查询对应菜品的属性
Dish dish=dishMapper.getById(dishId+"");
//填充到对象中
shoppingCart.setImage(dish.getImage());
shoppingCart.setName(dish.getName());
shoppingCart.setAmount(dish.getPrice());
}else{
//是套餐
Long setmealId = shoppingCartDTO.getSetmealId();
Setmeal setmeal = setmealMapper.getById(setmealId+"");
//填充到对象中
shoppingCart.setName(setmeal.getName());
shoppingCart.setName(setmeal.getName());
shoppingCart.setAmount(setmeal.getPrice());
}
//补充数据
shoppingCart.setNumber(1);
shoppingCart.setCreateTime(LocalDateTime.now());
//-- 插入购物车表
shoppingCartMapper.insert(shoppingCart);
}
}