13. 带你实现购物车功能

180 字约 1 分钟读完2461 次阅读更新于 2026/5/3

SQL

CREATE TABLE `cart` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `goods_id` int DEFAULT NULL COMMENT '商品ID',
  `num` int DEFAULT NULL COMMENT '数量',
  `user_id` int DEFAULT NULL COMMENT '用户ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='购物车信息';

开发后端接口

Cart.java

CartMapper.xml

详情页 addCart

const addCart = () => {
  request.post('/cart/add', { goodsId: data.id, num: data.num, userId: data.user.id }).then(res => {
    if (res.code === '200') {
      ElMessage.success('加入购物车成功')
    } else {
      ElMessage.error(res.msg)
    }
  })
}

删除或者下架商品需要删除对应购物车的商品

/**
 * 删除
 */
@Transactional
public void deleteById(Integer id) {
    goodsMapper.deleteById(id);
    // 删除购物车的对应的商品
    cartMapper.deleteByGoodsId(id);
}

/**
 * 修改
 */
public void updateById(Goods goods) {
    goodsMapper.updateById(goods);
    if (goods.getStatus().equals("下架")) {
        // 删除购物车的对应的商品
        cartMapper.deleteByGoodsId(goods.getId());
    }
}

前端页面

Cart.vue

我们只查询上架的商品