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; | ... | ... |