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 new file mode 100644 index 0000000..48dc3ab --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java @@ -0,0 +1,35 @@ +package com.sky.controller.user; + + +import com.sky.dto.ShoppingCartDTO; +import com.sky.result.Result; +import com.sky.service.ShoppingCartService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@Slf4j +@RequestMapping("/user/shoppingCart") +@Api(tags = "C端购物车相关接口") +public class ShoppingCartController { + + @Autowired + private ShoppingCartService shoppingCartService; + + + @PostMapping("/add") + @ApiOperation("添加购物车") + public Result add(@RequestBody ShoppingCartDTO shoppingCartDTO){ + log.info("添加购物车,商品信息:{}", shoppingCartDTO); + + shoppingCartService.addShoppingCart(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 new file mode 100644 index 0000000..3442e7e --- /dev/null +++ b/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java @@ -0,0 +1,36 @@ +package com.sky.mapper; + + +import com.sky.dto.ShoppingCartDTO; +import com.sky.entity.ShoppingCart; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Update; + +import java.util.List; + +@Mapper +public interface ShoppingCartMapper { + + + /** + * 动态条件查询 + * @param shoppingCart + * @return + */ + List list(ShoppingCart shoppingCart); + + + @Update("update shopping_cart set number = #{number} where id = #{id}") + void updateNumberById(ShoppingCart shoppingCart); + + + /** + * 插入购物车数据 + * @param shoppingCart + */ + @Insert("insert into shopping_cart (name, image, user_id, dish_id, setmeal_id, dish_flavor, amount, create_time, number) " + + + "values (#{name}, #{image}, #{userId}, #{dishId}, #{setmealId}, #{dishFlavor}, #{amount}, #{createTime}, #{number})") + void insert(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 new file mode 100644 index 0000000..6c3c2a5 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/ShoppingCartService.java @@ -0,0 +1,14 @@ +package com.sky.service; + + +import com.sky.dto.ShoppingCartDTO; + +public interface ShoppingCartService { + + + /** + * 添加购物车 + * @param shoppingCartDTO + */ + void addShoppingCart(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 new file mode 100644 index 0000000..890457c --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/impl/ShoppingCartServiceImpl.java @@ -0,0 +1,84 @@ +package com.sky.service.impl; + +import com.sky.context.BaseContext; +import com.sky.dto.ShoppingCartDTO; +import com.sky.entity.Dish; +import com.sky.entity.Setmeal; +import com.sky.entity.ShoppingCart; +import com.sky.mapper.DishMapper; +import com.sky.mapper.SetmealMapper; +import com.sky.mapper.ShoppingCartMapper; +import com.sky.service.ShoppingCartService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + + +@Service +@Slf4j +public class ShoppingCartServiceImpl implements ShoppingCartService { + + @Autowired + private ShoppingCartMapper shoppingCartMapper; + @Autowired + private DishMapper dishMapper; + @Autowired + private SetmealMapper setmealMapper; + + + /** + * 添加购物车 + * @param shoppingCartDTO + */ + @Override + public void addShoppingCart(ShoppingCartDTO shoppingCartDTO) { + //判断当前加入购物车的商品是否已经存在 + ShoppingCart shoppingCart = new ShoppingCart(); + BeanUtils.copyProperties(shoppingCartDTO,shoppingCart); + + Long userId = BaseContext.getCurrentId(); + shoppingCart.setUserId(userId); + + List list = shoppingCartMapper.list(shoppingCart); + + //如果已经存在 只需要将数量加一 + if (list != null && list.size() > 0) { + ShoppingCart cart = list.get(0); + cart.setNumber(cart.getNumber() + 1); + + shoppingCartMapper.updateNumberById(cart); + }else{ + //如果不存在则需要插入一条购物车数据 + + //判断本次添加的是菜品还是套餐 + Long dishId = shoppingCartDTO.getDishId(); + if(dishId != null){ + //本次添加到购物车的是菜品 + 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); + + } + + } +} diff --git a/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml b/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml new file mode 100644 index 0000000..49e7101 --- /dev/null +++ b/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml @@ -0,0 +1,24 @@ + + + + + + +