小程序添加购物车业务逻辑

数据库设计

DTO设计

实现步骤

1 判断当前加入购物车中的的商品是否已经存在了

2 如果已经存在 只需要将数量加一

3 如果不存在 插入一条购物车数据

4 判断加到本次购物车的是菜品还是套餐

Impl代码实现

@Service
public class ShoppingCartServiceImpl implements ShoppingCartService {

    @Autowired
    private ShoppingCartMapper shoppingCartMapper;
    @Autowired
    private DishMapper dishMapper;
    @Autowired
    private SetmealMapper setmealMapper;
    /**
     * 添加购物车
     * @param shoppingCartDTO
     */
    @Override
    public void add(ShoppingCartDTO shoppingCartDTO) {

        //判断当前加入购物车中的的商品是否已经存在了
        ShoppingCart shoppingCart = new ShoppingCart();
        BeanUtils.copyProperties(shoppingCartDTO,shoppingCart);
        shoppingCart.setUserId(BaseContext.getCurrentId());
        List<ShoppingCart> 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);
        }
    }

    @Override
    public List<ShoppingCart> showShoppingCart() {
        Long userId = BaseContext.getCurrentId();
        ShoppingCart shoppingCart = ShoppingCart.builder().userId(userId).build();
        List<ShoppingCart> list = shoppingCartMapper.list(shoppingCart);
        return list;
    }

    @Override
    public void clean() {
        shoppingCartMapper.deleteByUserId(BaseContext.getCurrentId());
    }
}
相关推荐
真的不想写实验8 小时前
开发完的小程序如何分包
小程序
出门喝奶茶14 小时前
微信小程序的制作
微信小程序·小程序
code袁14 小时前
基于微信小程序的博物馆预约系统的设计与实现
微信小程序·小程序·notepad++·博物馆小程序
baby_hua15 小时前
2021版小程序开发5——小程序项目开发实践(2)-完
前端·小程序·apache
guanpinkeji19 小时前
废品回收小程序:技术创新下的经济效益
小程序·软件开发·app开发·小程序开发·回收小程序·废品回收
会飞的胖达喵19 小时前
微信小程序如何使用decimal计算金额
微信小程序·小程序
硬件人某某某20 小时前
微信小程序~电器维修系统小程序
java·ajax·微信小程序·小程序
寰宇软件20 小时前
PHP音视频课程培训系统
小程序·uni-app·php·音视频
AdSet聚合广告1 天前
APP广告变现如何优化广告填充率,提升变现收益?
大数据·搜索引擎·百度·微信小程序·小程序·uni-app·个人开发
寰宇软件1 天前
PHP预约咨询小程序
小程序·uni-app·vue·php