Compare commits

...

2 Commits

Author SHA1 Message Date
4734a67b59 show the shopping cart of current user 2024-12-18 22:42:43 +08:00
ea8347d6b9 add set meal or dish into shopping cart 2024-12-18 22:33:01 +08:00
6 changed files with 226 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ package com.sky.controller.user;
import com.sky.entity.Setmeal;
import com.sky.result.Result;
import com.sky.service.SetmealService;
import com.sky.service.ShoppingCartService;
import com.sky.vo.DishItemVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

View File

@@ -0,0 +1,49 @@
package com.sky.controller.user;
import com.sky.dto.ShoppingCartDTO;
import com.sky.entity.ShoppingCart;
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.*;
import java.util.List;
@RestController
@RequestMapping("/user/shoppingCart")
@Slf4j
@Api(tags = "shoppingCart-controller")
public class ShoppingCartController {
@Autowired
private ShoppingCartService shoppingCartService;
/**
* Adds an item into the shopping cart.
*
* @param shoppingCartDTO The data transfer object encapsulating the details of the item to be added.
* Includes 'dishId' for individual dishes, 'setmealId' for set meals, and 'dishFlavor' to specify dish flavors if applicable.
* @return A {@link Result} indicating the outcome of the operation, with a success code and no specific data content.
*/
@PostMapping("/add")
@ApiOperation("add into shopping cart")
public Result add(@RequestBody ShoppingCartDTO shoppingCartDTO){
log.info("add into shopping cart, details: {}",shoppingCartDTO);
shoppingCartService.addIntoShoppingCart(shoppingCartDTO);
return Result.success();
}
/**
* list the shopping cart of current user
* @return
*/
@GetMapping("/list")
@ApiOperation("list shopping cart")
public Result<List<ShoppingCart>> list(){
List<ShoppingCart> list = shoppingCartService.listShoppingCart();
return Result.success(list);
}
}

View File

@@ -0,0 +1,40 @@
package com.sky.mapper;
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 {
/**
* Retrieves a list of shopping carts based on a given ShoppingCart instance.
* This method is typically used to fetch carts matching specific criteria
* encapsulated within the provided ShoppingCart object.
*
* @param shoppingCart An instance of ShoppingCart containing criteria
* for the search. The fields within this object may be
* used to filter or customize the retrieval of shopping carts.
* @return A list of ShoppingCart instances that match the criteria specified
* in the input ShoppingCart object. If no carts match, an empty list is returned.
*/
List<ShoppingCart> list(ShoppingCart shoppingCart);
/**
* update the item number by item's id
* @param shoppingCart
*/
@Update("update sky_take_out.shopping_cart set number = #{number} where id = #{id}")
void updateNumberById(ShoppingCart shoppingCart);
/**
* insert a new item into the shopping cart
* @param shoppingCart
*/
@Insert("insert into sky_take_out.shopping_cart(name, image, user_id, dish_id, setmeal_id, dish_flavor, amount, create_time) " +
"values (#{name},#{image},#{userId},#{dishId},#{setmealId},#{dishFlavor},#{amount},#{createTime})")
void insert(ShoppingCart shoppingCart);
}

View File

@@ -0,0 +1,25 @@
package com.sky.service;
import com.sky.dto.ShoppingCartDTO;
import com.sky.entity.ShoppingCart;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public interface ShoppingCartService {
/**
* Adds a setmeal or dish to the shopping cart.
*
* @param shoppingCartDTO The data transfer object containing details of the item to be added to the shopping cart.
* It includes dishId, setmealId, and dishFlavor necessary for identifying and customizing the item.
*/
void addIntoShoppingCart(ShoppingCartDTO shoppingCartDTO);
/**
* list shopping cart of current user
* @return
*/
List<ShoppingCart> listShoppingCart();
}

View File

@@ -0,0 +1,87 @@
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.Collections;
import java.util.List;
@Service
@Slf4j
public class ShoppingCartServiceImpl implements ShoppingCartService {
@Autowired
private ShoppingCartMapper shoppingCartMapper;
@Autowired
private DishMapper dishMapper;
@Autowired
private SetmealMapper setmealMapper;
/**
* Adds an item to the shopping cart.
*
* @param shoppingCartDTO The data transfer object containing details of the item to be added.
* It includes the dish ID, setmeal ID, and dish flavor if applicable.
*/
@Override
public void addIntoShoppingCart(ShoppingCartDTO shoppingCartDTO) {
//check the item if exists in the shopping cart
//fix properties
ShoppingCart shoppingCart = new ShoppingCart();
BeanUtils.copyProperties(shoppingCartDTO, shoppingCart);
shoppingCart.setUserId(BaseContext.getCurrentId());
List<ShoppingCart> list = shoppingCartMapper.list(shoppingCart);
if (list != null && !list.isEmpty()){
//if exists
ShoppingCart cart = list.get(0);
cart.setNumber(cart.getNumber() +1);
shoppingCartMapper.updateNumberById(cart);
}else {
//if not,fix the rest properties: name, amount, image
//check the item to be added is of dish or set meal
Long dishId = shoppingCartDTO.getDishId();
if (dishId != null){
Dish dish = dishMapper.selectById(dishId);
shoppingCart.setName(dish.getName());
shoppingCart.setImage(dish.getImage());
shoppingCart.setAmount(dish.getPrice());
}else {
Long setmealId = shoppingCartDTO.getSetmealId();
Setmeal setmeal = setmealMapper.selectById(setmealId);
shoppingCart.setName(setmeal.getName());
shoppingCart.setImage(setmeal.getImage());
shoppingCart.setAmount(setmeal.getPrice());
}
shoppingCart.setNumber(1);
shoppingCart.setCreateTime(LocalDateTime.now());
shoppingCartMapper.insert(shoppingCart);
}
}
/**
* list shopping cart
* @return
*/
@Override
public List<ShoppingCart> listShoppingCart() {
ShoppingCart shoppingCart = ShoppingCart.builder()
.userId(BaseContext.getCurrentId())
.build();
return shoppingCartMapper.list(shoppingCart);
}
}

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sky.mapper.ShoppingCartMapper">
<select id="list" resultType="com.sky.entity.ShoppingCart">
select * from sky_take_out.shopping_cart
<where>
<if test="userId != null">
and user_id = #{userId}
</if>
<if test="setmealId != null">
and setmeal_id = #{setmealId}
</if>
<if test="dishId!= null">
and dish_id = #{dishId}
</if>
<if test="dishFlavor != null">
and dish_flavor = #{dishFlavor}
</if>
</where>
</select>
</mapper>