目录
二、ShoppingCartController部分代码实现
三、ShoppingCartService接口及实现类ShoppingCartServiceImpl代码实现
一、业务分析
分析:删除购物车中的一个商品,我们需要看到的效果是购物车页面商品数量减1或者商品被删除了。
从请求参数中可以看到,C端传递给服务端的数据有dishId、setmealId,我们可以通过dishId+userId(当前使用者)或者setmealId+userId去查询数据库购物车表。
二、ShoppingCartController部分代码实现
/**
* 删除购物车中的一个商品
* @param shoppingCartDTO
* @return
*/
@PostMapping("/sub")
@ApiOperation("删除购物车中的一个商品")
public Result subtract(@RequestBody ShoppingCartDTO shoppingCartDTO){
shoppingCartService.subtract(shoppingCartDTO);
return Result.success();
}
三、ShoppingCartService接口及实现类ShoppingCartServiceImpl代码实现
ShoppingCartService接口
/**
* 删除购物车中的一个商品
* @param shoppingCartDTO
*/
void subtract(ShoppingCartDTO shoppingCartDTO);
ShoppingCartServiceImpl
/**
* 删除购物车中的一个商品
* @param shoppingCartDTO
*/
@Override
public void subtract(ShoppingCartDTO shoppingCartDTO) {
//获取当前微信用户id
Long userId = BaseContext.getCurrentId();
//根据dishId或者setmealId查询购物车
Long dishId = shoppingCartDTO.getDishId();
ShoppingCart shoppingCart = new ShoppingCart();
BeanUtils.copyProperties(shoppingCartDTO,shoppingCart);
shoppingCart.setUserId(userId);
if(shoppingCart.getDishId() != null){
//当前商品为菜品
ShoppingCart cart = shoppingCartMapper.getByUserIdAndDishId(shoppingCart);
//如果购物车中商品数量大于1 则对应商品数量减少1
cart.setNumber(cart.getNumber() - 1);
if(cart.getNumber() == 0){
//如果减少后购物车中商品数量等于0 则删除购物车中的商品数据
shoppingCartMapper.deleteByShoppingId(cart.getId());
}else {
//如果减少后购物车中商品数量>=1 则跟新购物车中的商品数据
shoppingCartMapper.updateNumberById(cart);
}
}else {
//当前商品为套餐
ShoppingCart cart = shoppingCartMapper.getByUserIdAndSetmealId(shoppingCart);
//如果购物车中商品数量大于1 则对应商品数量减少1
cart.setNumber(cart.getNumber() - 1);
if(cart.getNumber() == 0){
//如果减少后购物车中商品数量等于0 则删除购物车中的商品数据
shoppingCartMapper.deleteByShoppingId(cart.getId());
}else {
//如果减少后购物车中商品数量>=1 则跟新购物车中的商品数据
shoppingCartMapper.updateNumberById(cart);
}
}
}
四、ShoppingCartMapper代码实现
/**
* 根据菜品id查询购物车数据
* @param shoppingCart
* @return
*/
@Select("select * from shopping_cart where user_id = #{userId} and dish_id = #{dishId}")
ShoppingCart getByUserIdAndDishId(ShoppingCart shoppingCart);
/**
* 根据商品的套餐id查询购物车数据
* @param shoppingCart
* @return
*/
@Select("select * from shopping_cart where user_id = #{userId} and setmeal_id = #{setmealId}")
ShoppingCart getByUserIdAndSetmealId(ShoppingCart shoppingCart);
/**
* 根据商品id删除购物车数据
* @param id
*/
@Delete("delete from shopping_cart where id = #{id}")
void deleteByShoppingId(Long id);
/**
* 根据id修改商品数量
* @param shoppingCart
*/
@Update("update shopping_cart set number = #{number} where id = #{id}")
void updateNumberById(ShoppingCart shoppingCart);