|
|
|
@ -0,0 +1,140 @@
|
|
|
|
|
package com.sky.service.impl;
|
|
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.databind.ser.Serializers;
|
|
|
|
|
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;
|
|
|
|
|
// 注入套餐数据库操作接口
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 添加购物车
|
|
|
|
|
* */
|
|
|
|
|
@Override
|
|
|
|
|
public void addShoppingCart(ShoppingCartDTO shoppingCartDTO) {
|
|
|
|
|
// 创建购物车对象,并将DTO数据复制到实体对象中
|
|
|
|
|
ShoppingCart shoppingCart = new ShoppingCart();
|
|
|
|
|
BeanUtils.copyProperties(shoppingCartDTO, shoppingCart);
|
|
|
|
|
|
|
|
|
|
// 获取当前用户的ID(假设通过BaseContext获取)
|
|
|
|
|
Long userId = BaseContext.getCurrentId();
|
|
|
|
|
shoppingCart.setUserId(userId);
|
|
|
|
|
|
|
|
|
|
// 查询当前用户购物车中是否已有此商品
|
|
|
|
|
List<ShoppingCart> list = shoppingCartMapper.list(shoppingCart);
|
|
|
|
|
|
|
|
|
|
// 如果购物车中已经有该商品,数量加1
|
|
|
|
|
if (list != null && list.size() > 0) {
|
|
|
|
|
ShoppingCart cart = list.get(0);
|
|
|
|
|
cart.setNumber(cart.getNumber() + 1); // 更新购物车中商品的数量 + 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 = shoppingCart.getSetmealId();
|
|
|
|
|
Setmeal setmeal = setmealMapper.getById(setmealId); // 从数据库查询该套餐的信息
|
|
|
|
|
shoppingCart.setName(setmeal.getName()); // 设置套餐名称
|
|
|
|
|
shoppingCart.setImage(setmeal.getImage()); // 设置套餐图片
|
|
|
|
|
shoppingCart.setAmount(setmeal.getPrice()); // 设置套餐价格
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
shoppingCart.setNumber(1); // 新增购物车商品,数量为1
|
|
|
|
|
shoppingCart.setCreateTime(LocalDateTime.now()); // 设置当前时间为创建时间
|
|
|
|
|
shoppingCartMapper.insert(shoppingCart); // 将购物车记录插入数据库
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 查看购物车
|
|
|
|
|
* */
|
|
|
|
|
@Override
|
|
|
|
|
public List<ShoppingCart> showShoppingCart() {
|
|
|
|
|
// 获取当前用户ID
|
|
|
|
|
Long userId = BaseContext.getCurrentId();
|
|
|
|
|
|
|
|
|
|
// 创建一个ShoppingCart对象,只设置了用户ID,用于查询该用户的购物车
|
|
|
|
|
ShoppingCart shoppingCart = ShoppingCart.builder()
|
|
|
|
|
.userId(userId)
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
// 查询该用户的购物车数据并返回
|
|
|
|
|
List<ShoppingCart> list = shoppingCartMapper.list(shoppingCart);
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 清空购物车
|
|
|
|
|
* */
|
|
|
|
|
@Override
|
|
|
|
|
public void cleanShoppingCart() {
|
|
|
|
|
// 获取当前用户ID
|
|
|
|
|
Long userId = BaseContext.getCurrentId();
|
|
|
|
|
|
|
|
|
|
// 调用删除方法,清空该用户的所有购物车数据
|
|
|
|
|
shoppingCartMapper.deleteByUserId(userId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 减少购物车中商品的数量
|
|
|
|
|
* */
|
|
|
|
|
@Override
|
|
|
|
|
public void subShoppingCart(ShoppingCartDTO shoppingCartDTO) {
|
|
|
|
|
// 创建购物车对象,并将DTO数据复制到实体对象中
|
|
|
|
|
ShoppingCart shoppingCart = new ShoppingCart();
|
|
|
|
|
BeanUtils.copyProperties(shoppingCartDTO, shoppingCart);
|
|
|
|
|
|
|
|
|
|
// 获取当前用户的ID
|
|
|
|
|
Long userId = BaseContext.getCurrentId();
|
|
|
|
|
shoppingCart.setUserId(userId);
|
|
|
|
|
|
|
|
|
|
// 查询该用户的购物车数据
|
|
|
|
|
List<ShoppingCart> list = shoppingCartMapper.list(shoppingCart);
|
|
|
|
|
|
|
|
|
|
if (list != null && list.size() > 0) {
|
|
|
|
|
shoppingCart = list.get(0);
|
|
|
|
|
Integer number = shoppingCart.getNumber();
|
|
|
|
|
|
|
|
|
|
// 如果商品数量为1,删除这条购物车记录
|
|
|
|
|
if (number == 1) {
|
|
|
|
|
shoppingCartMapper.deleteById(shoppingCart.getId()); // 删除该商品
|
|
|
|
|
} else {
|
|
|
|
|
// 如果商品数量大于1,将数量减1并更新数据库
|
|
|
|
|
shoppingCart.setNumber(shoppingCart.getNumber() - 1); // 减少商品数量
|
|
|
|
|
shoppingCartMapper.updateNumberById(shoppingCart); // 更新购物车数据
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|