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 | 121 | wx.setNavigationBarTitle({ |
122 | 122 | title: "购物车", |
123 | 123 | }) |
124 | + | |
124 | 125 | //判断是否有登录 |
125 | 126 | t.auth.hadAuth() && t.getUserInfo(function () { |
126 | 127 | //a.getCardList(); |
... | ... | @@ -3518,7 +3519,7 @@ Page({ |
3518 | 3519 | title: "计算中" |
3519 | 3520 | }) |
3520 | 3521 | } |
3521 | - | |
3522 | + //--- 避免重复点击 --- | |
3522 | 3523 | if(this.data.checkouting) return false; |
3523 | 3524 | this.data.checkouting=1; |
3524 | 3525 | |
... | ... | @@ -3563,14 +3564,14 @@ Page({ |
3563 | 3564 | |
3564 | 3565 | var pid=this.data.requestData[i].pid; |
3565 | 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 | 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 | 3576 | await th.check_can_yh_pro(i_arr); |
3576 | 3577 | |
... | ... | @@ -3685,6 +3686,7 @@ Page({ |
3685 | 3686 | goods_price: i_arr[j].goods_price, |
3686 | 3687 | prom_id: i_arr[j].prom_id, |
3687 | 3688 | prom_type: i_arr[j].prom_type, |
3689 | + g_num:i_arr[j].goods_num //新增 | |
3688 | 3690 | }; |
3689 | 3691 | //判断是不是线下取价 |
3690 | 3692 | if (i_arr[j].is_offline) { |
... | ... | @@ -3694,12 +3696,15 @@ Page({ |
3694 | 3696 | } |
3695 | 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 | 3709 | //glist += i_arr[j].goods_id + ","; |
3705 | 3710 | |
... | ... | @@ -4041,8 +4046,23 @@ Page({ |
4041 | 4046 | |
4042 | 4047 | cart_buy_next(glist,map,g_arr,checkArr7){ |
4043 | 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 | 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 | 4066 | //--取一下商品的限购 以及活动的限购,redis数量-- |
4047 | 4067 | getApp().request.promisePost("/api/weshop/goods/listGoodsListNumNew", { |
4048 | 4068 | is_json:1, |
... | ... | @@ -4056,20 +4076,21 @@ Page({ |
4056 | 4076 | isok = 1, |
4057 | 4077 | gname = "", |
4058 | 4078 | err = ""; |
4059 | - //--组装-- | |
4079 | + | |
4080 | + //--组装活动购买的限购-- | |
4060 | 4081 | for (var ij = 0; ij < ddata.length; ij++) { |
4061 | 4082 | var val = ddata[ij]; |
4062 | - | |
4063 | 4083 | var ky=val.goods_id + "-"+val.prom_type + "-"+val.prom_id; |
4064 | 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 | 4089 | var promgoodsbuynum =val.promgoodsbuynum || 0; |
4068 | 4090 | var goodsbuynum =val.goodsbuynum || 0; |
4069 | - | |
4070 | 4091 | var ie = { |
4071 | 4092 | promgoodsbuynum: promgoodsbuynum, |
4072 | - goodsbuynum: goodsbuynum | |
4093 | + goodsbuynum:goodsbuynum | |
4073 | 4094 | }; |
4074 | 4095 | map_limit.set(ky, ie); |
4075 | 4096 | } |
... | ... | @@ -4081,6 +4102,7 @@ Page({ |
4081 | 4102 | |
4082 | 4103 | var ky=val.goods_id + "-"+val.prom_type + "-"+val.prom_id; |
4083 | 4104 | var buyed = map_limit.get(ky); |
4105 | + var cur_buyed=act_buyed_map[ky] | |
4084 | 4106 | |
4085 | 4107 | if (num <= 0) { |
4086 | 4108 | isok = 0; |
... | ... | @@ -4090,7 +4112,6 @@ Page({ |
4090 | 4112 | } |
4091 | 4113 | |
4092 | 4114 | if (val.prom_type == 1 || val.prom_type == 2) { |
4093 | - | |
4094 | 4115 | var s_num=num; |
4095 | 4116 | if(th.data.sales_rules> 1) s_num=buyed; |
4096 | 4117 | if (s_num > val.store_count) { |
... | ... | @@ -4100,13 +4121,14 @@ Page({ |
4100 | 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 | 4125 | isok = 0; |
4105 | 4126 | gname = val.goods_name; |
4106 | 4127 | err="超出活动库存"; |
4107 | 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 | 4132 | isok = 0; |
4111 | 4133 | gname = val.goods_name; |
4112 | 4134 | err="超出活动库存"; |
... | ... | @@ -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 | 4140 | if (num > val.store_count) { |
4119 | 4141 | isok = 0; |
4120 | 4142 | gname = val.goods_name; | ... | ... |