diff --git a/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java b/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java index 8c1caad..108c69d 100644 --- a/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java +++ b/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java @@ -48,6 +48,10 @@ public class ShoppingCartController { return Result.success(list); } + /** + * clean shopping cart + * @return + */ @DeleteMapping("/clean") @ApiOperation("clean the shopping cart") public Result clean(){ @@ -55,4 +59,16 @@ public class ShoppingCartController { shoppingCartService.cleanShoppingCart(); return Result.success(); } + + /** + * subtract an item from the shopping cart + * @param shoppingCartDTO + * @return + */ + @PostMapping("/sub") + @ApiOperation("subtract an item from the shopping cart") + public Result sub(@RequestBody ShoppingCartDTO shoppingCartDTO){ + shoppingCartService.subtractFromShoppingCart(shoppingCartDTO); + return Result.success(); + } } diff --git a/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java b/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java index 04b7127..4627cd6 100644 --- a/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java @@ -45,4 +45,10 @@ public interface ShoppingCartMapper { */ @Delete("delete from sky_take_out.shopping_cart where user_id = #{userId}") void clean(Long userId); + + /** + * delete the item that number is 0 from the shopping cart + * @param shoppingCart + */ + void delete(ShoppingCart shoppingCart); } diff --git a/sky-server/src/main/java/com/sky/service/ShoppingCartService.java b/sky-server/src/main/java/com/sky/service/ShoppingCartService.java index c2293b4..cea500d 100644 --- a/sky-server/src/main/java/com/sky/service/ShoppingCartService.java +++ b/sky-server/src/main/java/com/sky/service/ShoppingCartService.java @@ -27,4 +27,10 @@ public interface ShoppingCartService { * clean shopping cart */ void cleanShoppingCart(); + + /** + * subtract an item from the shopping cart + * @param shoppingCartDTO + */ + void subtractFromShoppingCart(ShoppingCartDTO shoppingCartDTO); } diff --git a/sky-server/src/main/java/com/sky/service/impl/ShoppingCartServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/ShoppingCartServiceImpl.java index fb5ab78..17daebd 100644 --- a/sky-server/src/main/java/com/sky/service/impl/ShoppingCartServiceImpl.java +++ b/sky-server/src/main/java/com/sky/service/impl/ShoppingCartServiceImpl.java @@ -94,4 +94,28 @@ public class ShoppingCartServiceImpl implements ShoppingCartService { Long userId = BaseContext.getCurrentId(); shoppingCartMapper.clean(userId); } + + /** + * subtract an item from the shopping cart + * @param shoppingCartDTO + */ + @Override + public void subtractFromShoppingCart(ShoppingCartDTO shoppingCartDTO) { + //construct an object that contains the basic properties : userId, set meal/dish id, dish flavor + ShoppingCart shoppingCart = new ShoppingCart(); + BeanUtils.copyProperties(shoppingCartDTO, shoppingCart); + shoppingCart.setUserId(BaseContext.getCurrentId()); + + List list = shoppingCartMapper.list(shoppingCart); + if (!list.isEmpty()) { + shoppingCart = list.get(0); + //check the number of shopping cart + if (shoppingCart.getNumber() > 1) { + shoppingCart.setNumber(shoppingCart.getNumber() - 1); + shoppingCartMapper.updateNumberById(shoppingCart); + } else { + shoppingCartMapper.delete(shoppingCart); + } + } + } } diff --git a/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml b/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml index 43881ff..b63d361 100644 --- a/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml +++ b/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml @@ -3,6 +3,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + delete from sky_take_out.shopping_cart + + + and user_id = #{userId} + + + and setmeal_id = #{setmealId} + + + and dish_id = #{dishId} + + + and dish_flavor = #{dishFlavor} + + +