diff --git a/packageA/pages/goodsInfo/goodsInfo.js b/packageA/pages/goodsInfo/goodsInfo.js index 6eaec01..5294c44 100644 --- a/packageA/pages/goodsInfo/goodsInfo.js +++ b/packageA/pages/goodsInfo/goodsInfo.js @@ -859,16 +859,16 @@ Page({ return false; }; - + // 秒杀活动 if(this.data.prom_type == 1) { this.data.sele_g.viplimited = this.data.sele_g.buy_limit; - // 每人限购数 + // 每人最大限购数 th.data.sele_g.viplimited = th.data.sele_g.buy_limit; //----获取用户活动购买数---- - // 已经付款的单数 + // 已经付款的单数,已经成功购买的数量 var gd_buy_num = 0; await getApp().request.promiseGet("/api/weshop/rechargeServicelist/getUserBuyGoodsNum?store_id="+os.stoid+"&user_id="+getApp().globalData.user_id+"&card_id="+th.data.options.goods_id+"&prom_type="+th.data.options.prom_type+"&prom_id="+th.data.options.prom_id, { }).then(res => { @@ -884,51 +884,64 @@ Page({ }; }); - // 获取购物车同款数量 判断是否超库存 - var cartGoodsNum = 0; - await getApp().request.promiseGet("/api/weshop/cartService/page?store_id="+os.stoid+"&user_id="+oo.user_id+"&service_id="+th.data.data.id+"&pick_id="+th.data.sto_sele_id, - { }).then(res => { - if (res.data.data.pageData.length > 0) { - const tmpObj = res.data.data.pageData[0]; - cartGoodsNum = !tmpObj.goods_num ? 0 : tmpObj.goods_num; - } - - }); - - // 有库存的情况下,走秒杀活动流程 否则 走正常购买流程 - // 没有库存,已抢光的情况下,走正常购买流程 + // 没有库存,已抢光的情况下,走正常购买流程 if(redisNum > 0 && !this.data.is_normal) { // 输入的数量 var t = th.data.goodsInputNum; + // 获取购物车同款数量 + var cartGoodsNum = 0; + + // 购物车 + if (action != "buy") { + await getApp().request.promiseGet("/api/weshop/cartService/page?store_id="+os.stoid+"&user_id="+oo.user_id+"&service_id="+th.data.data.id, + { }).then(res => { + if (res.data.data.pageData.length > 0) { + const tmpObj = res.data.data.pageData; + + tmpObj.forEach(v => { + cartGoodsNum += parseInt(v.goods_num); + }); + + } + + }); + + // 输入的数量 + 购物车同款商品的数量 + t = parseInt(t) + parseInt(cartGoodsNum); + } + + // 剩余购买数量 + let num = th.data.sele_g.viplimited - gd_buy_num; + num = num < 0 ? 0 : num; if (t > redisNum) { wx.showToast({ - title: '超出活动库存' + redisNum, + title: '超出活动库存', icon: 'none' }); // 开启限购 if (th.data.sele_g.viplimited > 0) { - let num = th.data.sele_g.viplimited - gd_buy_num; - if (action !="buy") { - // 购物车 - if (num > redisNum) { - th.setData({goodsInputNum: redisNum}); - } else { - th.setData({goodsInputNum: num}); + if (action != "buy") { + if (t > num) { + th.setData({goodsInputNum: num - cartGoodsNum < 0 ? 0 : num - cartGoodsNum}); } - } else { - // 立即购买 - if (num > redisNum) { - th.setData({goodsInputNum: redisNum}); - } else { - th.setData({goodsInputNum: num}); + if (redisNum < num) { + th.setData({goodsInputNum: redisNum - cartGoodsNum < 0 ? 0 : redisNum - cartGoodsNum}); } + } else { + if (num > redisNum) { + th.setData({goodsInputNum: redisNum}); + } else { + th.setData({goodsInputNum: num}); + } } + + } else { th.setData({goodsInputNum: redisNum}); @@ -937,64 +950,27 @@ Page({ return false; } - - - // 跳过<立即购买> 购物车 - if (action !="buy") { - - // 输入的数量 + 购物车同款商品的数量 - var maxNum = parseInt(t) + parseInt(cartGoodsNum); - // 是否开启个人限购 - if (th.data.sele_g.viplimited > 0) { - if (maxNum + gd_buy_num > th.data.sele_g.buy_limit) { - wx.showToast({ - title: '超出活动限购数量', - icon: 'none' - }); - - // 可购买数量 - let num = th.data.sele_g.viplimited - gd_buy_num - cartGoodsNum; - th.setData({goodsInputNum: num < 0 ? 0 : num}); - return false; - } - - } - - if (maxNum > redisNum) { - wx.showToast({ - title: '超出活动库存', - icon: 'none' - }); - // 可购买数量 - let num = redisNum - cartGoodsNum; - th.setData({goodsInputNum: num}); - return false; - } - - } else { - // 以下为立即购买 - // 是否开启个人限购 + // 以下小于等于库存 + if (t <= redisNum) { if (th.data.sele_g.viplimited > 0) { - if (t + gd_buy_num > th.data.sele_g.viplimited) { + if (t > num) { wx.showToast({ title: '超出活动限购数量', icon: 'none' }); - - let num = th.data.sele_g.viplimited - gd_buy_num; + if (num > redisNum) { th.setData({goodsInputNum: redisNum}); } else { th.setData({goodsInputNum: num}); } return false; - } - - - }; - + } + + } } + }; }; @@ -1042,7 +1018,13 @@ Page({ // console.log('newd++++++++', newd); th.buyNow(newd); } else { // 购物车 - + + // 购买数量大于0的才能加入到购物车 + if (th.data.goodsInputNum <= 0) { + th.closeSpecModal(); + return false; + } + var newd = { service_id: th.data.data.id, service_sn:th.data.data.service_sn, diff --git a/pages/cart/cart/cart.js b/pages/cart/cart/cart.js index bc32976..a39b752 100644 --- a/pages/cart/cart/cart.js +++ b/pages/cart/cart/cart.js @@ -1079,9 +1079,10 @@ Page({ if (a = isNaN(t.detail.value) || t.detail.value < 1 ? 1 : parseInt(t.detail.value)) { var s = { goods_num: a, - goods_id: e.goods_id, + goods_id: e.service_id, id: e.id, store_id: oo.stoid, + is_pd_normal: e.is_pd_normal }; if(e.prom_type) { s.prom_type = e.prom_type; @@ -1113,6 +1114,7 @@ Page({ id: a.id, goods_id: a.service_id, store_id: oo.stoid, + is_pd_normal: a.is_pd_normal }; if(a.prom_type) { e.prom_type = a.prom_type; @@ -1150,9 +1152,11 @@ Page({ var e = { goods_num: a.goods_num - 1, id: a.id, - goods_id: a.goods_id, - store_id: oo.stoid + goods_id: a.service_id, + store_id: oo.stoid, + is_pd_normal: a.is_pd_normal }; + this.postCardList_ser(e, t.currentTarget.dataset.item, t.currentTarget.dataset.pitems); } }, @@ -2025,102 +2029,127 @@ Page({ e.setData({ [txt]: t.goods_num }); - - - if(t.prom_type == 1) { - var txt = "service_data[" + pitem + "].goods[" + item + "].goods_num"; - var redis_num = 0; - - //------判断活动是否抢光----- - await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" + - t.store_id + "/" + t.prom_type + "/" + t.prom_id, { - 1: 1 - }).then(res => { - redis_num = res.data.data; - }); - - // 检测库存 - if(redis_num == 0) { - wx.showToast({ - title: '超出活动库存', - icon: 'none', - }); - th.setData({[txt]: redis_num}); - await e.doCheckAll(); - return false; - }; - var buylimit = 0 - await getApp().request.promiseGet("/api/ms/flash_sale/getNew/" + t.store_id + "/" + getApp().globalData.user_id + "/" + t.prom_id, { + // 1.秒杀活动 + // 2.活动开始 + if(t.prom_type == 1 && t.is_pd_normal == 0) { + var txt = "service_data[" + pitem + "].goods[" + item + "].goods_num"; + var redis_num = 0; + + // 获取其他门店,同类商品的数量 + var cartGoodsNum = 0; + await getApp().request.promiseGet("/api/weshop/cartService/page?store_id="+t.store_id+"&user_id="+getApp().globalData.user_id+"&service_id="+t.goods_id, + { }).then(res => { + if (res.data.data.pageData.length > 0) { + const tmpObj = res.data.data.pageData; + tmpObj.forEach(v => { + if (t.id != v.id) { + cartGoodsNum += parseInt(v.goods_num); + } - }).then(res => { - if(res.data.code == 0) { - - th.data.sele_g = res.data.data; - th.data.sele_g.viplimited = res.data.data.buy_limit; - buylimit = !res.data.data.buy_limit ? 0 : res.data.data.buy_limit; - }; }); + } + }); + // 当前商品数量包括其他门店 + var totalNum = 0 + if (cartGoodsNum > 0) { + totalNum = t.goods_num + cartGoodsNum; + } else { + totalNum = t.goods_num; + } - //----获取用户活动购买数---- - var gd_buy_num = 0; - await getApp().request.promiseGet("/api/weshop/rechargeServicelist/getUserBuyGoodsNum?store_id="+t.store_id+"&user_id="+getApp().globalData.user_id+"&card_id="+t.card_id+"&prom_type="+t.prom_type+"&prom_id="+t.prom_id, { - }).then(tt => { - if (tt.data.code == 0) { - gd_buy_num = !tt.data.data.promcardbuynum ? 0 : tt.data.data.promcardbuynum; - th.setData({ - promcardbuynum: !tt.data.data.promcardbuynum ? 0 : tt.data.data.promcardbuynum, - cardbuynum: tt.data.data.cardbuynum, - }); - }; + //获取当前商品活动库存 + await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" + + t.store_id + "/" + t.prom_type + "/" + t.prom_id, { + 1: 1 + }).then(res => { + redis_num = res.data.data; + }); + + // 检测库存 + if(redis_num == 0) { + wx.showToast({ + title: '超出活动库存', + icon: 'none', + }); + th.setData({[txt]: redis_num}); + await e.doCheckAll(); + return false; + }; + + // 限购数量 + var buylimit = 0 + await getApp().request.promiseGet("/api/ms/flash_sale/getNew/" + t.store_id + "/" + getApp().globalData.user_id + "/" + t.prom_id, { + + }).then(res => { + if(res.data.code == 0) { + th.data.sele_g = res.data.data; + th.data.sele_g.viplimited = res.data.data.buy_limit; + buylimit = !res.data.data.buy_limit ? 0 : res.data.data.buy_limit; + }; + }); + + //用户已经成功付款购买的数量 + var gd_buy_num = 0; + await getApp().request.promiseGet("/api/weshop/rechargeServicelist/getUserBuyGoodsNum?store_id="+t.store_id+"&user_id="+getApp().globalData.user_id+"&card_id="+t.card_id+"&prom_type="+t.prom_type+"&prom_id="+t.prom_id, { + }).then(tt => { + if (tt.data.code == 0) { + gd_buy_num = !tt.data.data.promcardbuynum ? 0 : tt.data.data.promcardbuynum; + th.setData({ + promcardbuynum: !tt.data.data.promcardbuynum ? 0 : tt.data.data.promcardbuynum, + cardbuynum: tt.data.data.cardbuynum, }); + }; + }); + // 剩余购买数 + let num = buylimit - gd_buy_num; - if(t.goods_num > redis_num) { - wx.showToast({ - title: '超出活动库存', - icon: 'none', - }); - // 开启限购 - if (buylimit > 0) { - let num = buylimit - gd_buy_num; - if (num > redis_num) { - th.setData({[txt]: redis_num}); - } else { - th.setData({[txt]: num}); - } - } else { - th.setData({[txt]: redis_num}); - } + if(totalNum > redis_num) { + wx.showToast({ + title: '超出活动库存', + icon: 'none', + }); + // 开启限购 + if (buylimit > 0) { + if (num > redis_num) { + th.setData({[txt]: redis_num-cartGoodsNum}); + } else { + th.setData({[txt]: num - cartGoodsNum}); + } + } else { + th.setData({[txt]: redis_num - cartGoodsNum}); + } - await e.doCheckAll(); - return false; - }; + await e.doCheckAll(); + return false; + }; + + //--秒杀:判断商品是否超出活动限购-- + if (buylimit > 0) { + + // 如果限购数量<=活动库存数量,增加数量时会先超过限购数量,此时应提示“超出活动限购数量” + if(totalNum > num) { + // 计算还可以购买的数量:库存量 - 已购数 + wx.showToast({ + title: '超出活动限购', + icon: 'none', + }); + if (num <= 0) num = 1; + th.setData({[txt]: num - cartGoodsNum}); + await e.doCheckAll(); + return false; + }; - //--秒杀:判断商品是否超出活动限购-- - if (buylimit > 0) { - - // 如果限购数量<=活动库存数量,增加数量时会先超过限购数量,此时应提示“超出活动限购数量” - if(t.goods_num + gd_buy_num > buylimit) { - // 计算还可以购买的数量:库存量 - 已购数 - wx.showToast({ - title: '超出活动限购', - icon: 'none', - }); - let num = buylimit - gd_buy_num; - if (num <= 0) num = 1; - th.setData({[txt]: num}); - await e.doCheckAll(); - return false; - }; - - } - - - } - await e.doCheckAll(); - await e.update_cart_ser(t, pitem, item); + } + + + } + + + await e.doCheckAll(); + await e.update_cart_ser(t, pitem, item); }, @@ -2334,7 +2363,6 @@ Page({ update_cart_ser: function (t, pitem, item) { var e = this; - console.log('t===>', t); getApp().request.put("/api/weshop/cartService/update", { data: t, success: async function (ee) {