Commit f51f020edc5e02f97a3dee1ebcc2f856a624514b
1 parent
2274049b
秒杀和团购在结算的时候,判断库存
Showing
1 changed file
with
46 additions
and
24 deletions
pages/cart/cart/cart.js
@@ -121,6 +121,7 @@ Page({ | @@ -121,6 +121,7 @@ Page({ | ||
121 | wx.setNavigationBarTitle({ | 121 | wx.setNavigationBarTitle({ |
122 | title: "购物车", | 122 | title: "购物车", |
123 | }) | 123 | }) |
124 | + | ||
124 | //判断是否有登录 | 125 | //判断是否有登录 |
125 | t.auth.hadAuth() && t.getUserInfo(function () { | 126 | t.auth.hadAuth() && t.getUserInfo(function () { |
126 | //a.getCardList(); | 127 | //a.getCardList(); |
@@ -3518,7 +3519,7 @@ Page({ | @@ -3518,7 +3519,7 @@ Page({ | ||
3518 | title: "计算中" | 3519 | title: "计算中" |
3519 | }) | 3520 | }) |
3520 | } | 3521 | } |
3521 | - | 3522 | + //--- 避免重复点击 --- |
3522 | if(this.data.checkouting) return false; | 3523 | if(this.data.checkouting) return false; |
3523 | this.data.checkouting=1; | 3524 | this.data.checkouting=1; |
3524 | 3525 | ||
@@ -3563,14 +3564,14 @@ Page({ | @@ -3563,14 +3564,14 @@ Page({ | ||
3563 | 3564 | ||
3564 | var pid=this.data.requestData[i].pid; | 3565 | var pid=this.data.requestData[i].pid; |
3565 | var _pick=null; | 3566 | var _pick=null; |
3566 | - //获取商品信息,包含线下商品ID,指定门店销售的信息 | ||
3567 | - var rh=await getApp().request.promiseGet("/api/weshop/pickup/get/"+os.stoid+"/"+pid, {}); | ||
3568 | - if(rh && rh.data.code==0){ | ||
3569 | - _pick=rh.data.data; | ||
3570 | - } | ||
3571 | - | ||
3572 | var i_arr = this.data.requestData[i].goods; | 3567 | var i_arr = this.data.requestData[i].goods; |
3573 | 3568 | ||
3569 | + //-- 优化不用调用接口 -- | ||
3570 | + _pick={ | ||
3571 | + pickup_id:pid, | ||
3572 | + distr_type:i_arr[0].pickup_distr_type | ||
3573 | + }; | ||
3574 | + | ||
3574 | //判断一下商品能不能满足优惠促销的条件 | 3575 | //判断一下商品能不能满足优惠促销的条件 |
3575 | await th.check_can_yh_pro(i_arr); | 3576 | await th.check_can_yh_pro(i_arr); |
3576 | 3577 | ||
@@ -3685,6 +3686,7 @@ Page({ | @@ -3685,6 +3686,7 @@ Page({ | ||
3685 | goods_price: i_arr[j].goods_price, | 3686 | goods_price: i_arr[j].goods_price, |
3686 | prom_id: i_arr[j].prom_id, | 3687 | prom_id: i_arr[j].prom_id, |
3687 | prom_type: i_arr[j].prom_type, | 3688 | prom_type: i_arr[j].prom_type, |
3689 | + g_num:i_arr[j].goods_num //新增 | ||
3688 | }; | 3690 | }; |
3689 | //判断是不是线下取价 | 3691 | //判断是不是线下取价 |
3690 | if (i_arr[j].is_offline) { | 3692 | if (i_arr[j].is_offline) { |
@@ -3694,12 +3696,15 @@ Page({ | @@ -3694,12 +3696,15 @@ Page({ | ||
3694 | } | 3696 | } |
3695 | g_arr.push(ie); | 3697 | g_arr.push(ie); |
3696 | 3698 | ||
3697 | - if (map.has(i_arr[j].goods_id + "")) { | ||
3698 | - var num11 = map.get(i_arr[j].goods_id + ""); | ||
3699 | - var num22 = parseInt(i_arr[j].goods_num) + parseInt(num11); | ||
3700 | - map.set(i_arr[j].goods_id + "", num22); | ||
3701 | - } else { | ||
3702 | - map.set(i_arr[j].goods_id + "", i_arr[j].goods_num); | 3699 | + //赠品不拿来计算库存 |
3700 | + if(!i_arr[j].is_gift) { | ||
3701 | + if (map.has(i_arr[j].goods_id + "")) { | ||
3702 | + var num11 = map.get(i_arr[j].goods_id + ""); | ||
3703 | + var num22 = parseInt(i_arr[j].goods_num) + parseInt(num11); | ||
3704 | + map.set(i_arr[j].goods_id + "", num22); | ||
3705 | + } else { | ||
3706 | + map.set(i_arr[j].goods_id + "", i_arr[j].goods_num); | ||
3707 | + } | ||
3703 | } | 3708 | } |
3704 | //glist += i_arr[j].goods_id + ","; | 3709 | //glist += i_arr[j].goods_id + ","; |
3705 | 3710 | ||
@@ -4041,8 +4046,23 @@ Page({ | @@ -4041,8 +4046,23 @@ Page({ | ||
4041 | 4046 | ||
4042 | cart_buy_next(glist,map,g_arr,checkArr7){ | 4047 | cart_buy_next(glist,map,g_arr,checkArr7){ |
4043 | var th=this; | 4048 | var th=this; |
4044 | - var map_limit = new Map(); //使用map值键进行存储限购 | 4049 | + var map_limit = new Map(); //使用map值键进行存储限购,这里存的是活动的 |
4050 | + var act_buyed_map={}; //活动当前购买数量的map | ||
4045 | var up_cart_data=[]; | 4051 | var up_cart_data=[]; |
4052 | + | ||
4053 | + //获取活动的购买的数量 | ||
4054 | + for (let ig = 0; ig <g_arr.length ; ig++) { | ||
4055 | + var t_iter = g_arr[ig]; | ||
4056 | + var ky=t_iter.goods_id + "-"+t_iter.prom_type + "-"+t_iter.prom_id; | ||
4057 | + var obj = act_buyed_map[ky]; | ||
4058 | + if (obj){ | ||
4059 | + obj.g_num+=t_iter.g_num; | ||
4060 | + continue; | ||
4061 | + } | ||
4062 | + var ie = { g_num:t_iter.g_num}; | ||
4063 | + act_buyed_map[ky]= ie; | ||
4064 | + } | ||
4065 | + | ||
4046 | //--取一下商品的限购 以及活动的限购,redis数量-- | 4066 | //--取一下商品的限购 以及活动的限购,redis数量-- |
4047 | getApp().request.promisePost("/api/weshop/goods/listGoodsListNumNew", { | 4067 | getApp().request.promisePost("/api/weshop/goods/listGoodsListNumNew", { |
4048 | is_json:1, | 4068 | is_json:1, |
@@ -4056,20 +4076,21 @@ Page({ | @@ -4056,20 +4076,21 @@ Page({ | ||
4056 | isok = 1, | 4076 | isok = 1, |
4057 | gname = "", | 4077 | gname = "", |
4058 | err = ""; | 4078 | err = ""; |
4059 | - //--组装-- | 4079 | + |
4080 | + //--组装活动购买的限购-- | ||
4060 | for (var ij = 0; ij < ddata.length; ij++) { | 4081 | for (var ij = 0; ij < ddata.length; ij++) { |
4061 | var val = ddata[ij]; | 4082 | var val = ddata[ij]; |
4062 | - | ||
4063 | var ky=val.goods_id + "-"+val.prom_type + "-"+val.prom_id; | 4083 | var ky=val.goods_id + "-"+val.prom_type + "-"+val.prom_id; |
4064 | var obj = map_limit.get(ky); | 4084 | var obj = map_limit.get(ky); |
4065 | - if (obj) continue; | ||
4066 | - | 4085 | + if (obj){ |
4086 | + obj.g_num+=val.goods_num; | ||
4087 | + continue; | ||
4088 | + } | ||
4067 | var promgoodsbuynum =val.promgoodsbuynum || 0; | 4089 | var promgoodsbuynum =val.promgoodsbuynum || 0; |
4068 | var goodsbuynum =val.goodsbuynum || 0; | 4090 | var goodsbuynum =val.goodsbuynum || 0; |
4069 | - | ||
4070 | var ie = { | 4091 | var ie = { |
4071 | promgoodsbuynum: promgoodsbuynum, | 4092 | promgoodsbuynum: promgoodsbuynum, |
4072 | - goodsbuynum: goodsbuynum | 4093 | + goodsbuynum:goodsbuynum |
4073 | }; | 4094 | }; |
4074 | map_limit.set(ky, ie); | 4095 | map_limit.set(ky, ie); |
4075 | } | 4096 | } |
@@ -4081,6 +4102,7 @@ Page({ | @@ -4081,6 +4102,7 @@ Page({ | ||
4081 | 4102 | ||
4082 | var ky=val.goods_id + "-"+val.prom_type + "-"+val.prom_id; | 4103 | var ky=val.goods_id + "-"+val.prom_type + "-"+val.prom_id; |
4083 | var buyed = map_limit.get(ky); | 4104 | var buyed = map_limit.get(ky); |
4105 | + var cur_buyed=act_buyed_map[ky] | ||
4084 | 4106 | ||
4085 | if (num <= 0) { | 4107 | if (num <= 0) { |
4086 | isok = 0; | 4108 | isok = 0; |
@@ -4090,7 +4112,6 @@ Page({ | @@ -4090,7 +4112,6 @@ Page({ | ||
4090 | } | 4112 | } |
4091 | 4113 | ||
4092 | if (val.prom_type == 1 || val.prom_type == 2) { | 4114 | if (val.prom_type == 1 || val.prom_type == 2) { |
4093 | - | ||
4094 | var s_num=num; | 4115 | var s_num=num; |
4095 | if(th.data.sales_rules> 1) s_num=buyed; | 4116 | if(th.data.sales_rules> 1) s_num=buyed; |
4096 | if (s_num > val.store_count) { | 4117 | if (s_num > val.store_count) { |
@@ -4100,13 +4121,14 @@ Page({ | @@ -4100,13 +4121,14 @@ Page({ | ||
4100 | return false; | 4121 | return false; |
4101 | } | 4122 | } |
4102 | 4123 | ||
4103 | - if (buyed > val.redisnum && val.redisnum) { | 4124 | + if(cur_buyed && cur_buyed.g_num > val.redisnum && val.redisnum) { |
4104 | isok = 0; | 4125 | isok = 0; |
4105 | gname = val.goods_name; | 4126 | gname = val.goods_name; |
4106 | err="超出活动库存"; | 4127 | err="超出活动库存"; |
4107 | break; | 4128 | break; |
4108 | } | 4129 | } |
4109 | - if (buyed > val.goods_num - val.buy_num && val.goods_num) { | 4130 | + |
4131 | + if(cur_buyed && buyed.g_num > val.goods_num - val.buy_num && val.goods_num) { | ||
4110 | isok = 0; | 4132 | isok = 0; |
4111 | gname = val.goods_name; | 4133 | gname = val.goods_name; |
4112 | err="超出活动库存"; | 4134 | err="超出活动库存"; |
@@ -4114,7 +4136,7 @@ Page({ | @@ -4114,7 +4136,7 @@ Page({ | ||
4114 | } | 4136 | } |
4115 | } | 4137 | } |
4116 | 4138 | ||
4117 | - if (th.data.sales_rules == 1) { | 4139 | + if (th.data.sales_rules == 1 || val.prom_type == 1 || val.prom_type == 2) { |
4118 | if (num > val.store_count) { | 4140 | if (num > val.store_count) { |
4119 | isok = 0; | 4141 | isok = 0; |
4120 | gname = val.goods_name; | 4142 | gname = val.goods_name; |