Commit f51f020edc5e02f97a3dee1ebcc2f856a624514b

Authored by yvan.ni
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;