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