实现加入购物车,减少库存数功能

目录

1.效果图

 2.vue代码

3.后端代码


1.效果图

 2.vue代码

<div style="margin-top: 20px; padding: 10px 0">
              <el-input-number v-model="num" :min="1" :max="1000" label="购买数量" style="width: 100px"></el-input-number>
              <el-button style="margin-left: 10px; background-color: orangered; color: white; position: relative"
                         @click="addCart">
                <span style="margin-left: 20px">加入购物车</span>
              </el-button>
              <el-button style="margin-left: 10px; background-color: orangered; color: white" @click="buyNow">立即购买
              </el-button>
            </div>
buyNow() {
      if ((this.goods.store - this.num) < 0) {
        this.$message({
          type: 'warning',
          message: '商品库存不足!'
        })
        return
      }
      API.post("/api/order", {id: this.goods.id, store: this.num}).then(res => {
        // if (res.code === '0') {
        if (res) {
          this.$message({
            type: 'success',
            message: '购买成功!'
          })
        } else {
          this.$message({
            type: 'error',
            message: res.msg
          })
        }
      })
    },

addCart() {
      if (!this.user.id) {
        this.$message({
          type: 'warning',
          message: '请登录!'
        })
        return
      }
      if ((this.goods.store - this.num) < 0) {
        this.$message({
          type: 'warning',
          message: '商品库存不足!'
        })
        return
      }
      API.post("/api/cart", {goodsId: this.goods.id, count: this.num, userId: this.user.id}).then(res => {
        if (res) {
          this.$message({
            type: 'success',
            message: '加入成功!'
          })
        } else {
          this.$message({
            type: 'error',
            message: res.msg
          })
        }
      })
    },

3.后端代码

@PostMapping("/api/order")//减库存接口
    public Result save(@RequestBody Goods goods) {
        // 库存改变,减去商品数量
        Goods userGoods = goodsService.getOne(Wrappers.<Goods>lambdaQuery().eq(Goods::getId, goods.getId()).eq(Goods::getId, goods.getId()));
        if (userGoods != null) {
            userGoods.setStore(userGoods.getStore()-goods.getStore());
            goodsService.updateById(userGoods);
        } else {
            // 不同商品添加新的购物车记录
            goodsService.save(goods);
        }
        
        return Result.success();
    }
@PostMapping("/api/cart")//加购物车
    public Result save(@RequestBody Cart cart) {
        cart.setCreateTime(DateUtil.now());
        // 加入购物车,相同的商品累加
        Cart userCart = cartService.getOne(Wrappers.<Cart>lambdaQuery().eq(Cart::getGoodsId, cart.getGoodsId()).eq(Cart::getUserId, cart.getUserId()));
        if (userCart != null) {
            userCart.setCount(cart.getCount() + userCart.getCount());
            cartService.updateById(userCart);
        } else {
            // 不同商品添加新的购物车记录
            cartService.save(cart);
        }
        return Result.success();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值