diff --git a/pages/cart/cart/cart.js b/pages/cart/cart/cart.js index c268d71..141d56c 100644 --- a/pages/cart/cart/cart.js +++ b/pages/cart/cart/cart.js @@ -3157,9 +3157,9 @@ Page({ } //-- 如果是商品的结算 -- if (check_is_goods_selected) { - var glist = ""; //用逗号隔开的 - var map = new Map(); //使用map值键进行运算 - var map_limit = new Map(); //使用map值键进行存储限购 + var glist = []; //用逗号隔开的 + var map = new Map(); //使用map值键进行运算。值计算商品ID + var map_limit = new Map(); //使用map值键进行存储限购,特定的活动的数量 var g_arr = new Array(); //已选的商品列表 var user_id = getApp().globalData.user_id; var th = this; @@ -3167,22 +3167,22 @@ Page({ var normal_arr = {}; var ab = 0; //选中 wx.showLoading(); - let checkArr7 = []; //组合购选中的数据 + let checkArr7 = []; //组合购选中的数据 let checkObj3 = {}; //优惠促销次数判断 var zh_buyed_m={}; var zh_limit_m={} var zh_all_ck={}; - // let checkOff=false for (var i = 0; i < this.data.requestData.length; i++) { + //-- 循环每一个活动 -- var i_arr = this.data.requestData[i].goods; - for (var j = 0; j < i_arr.length; j++) { + for (var j = 0; j < i_arr.length; j++){ if (i_arr[j].selected && i_arr[j].is_gift != 1) { if (i_arr[j].is_pd_normal || i_arr[j].prom_type == 0 || i_arr[j].prom_type == 3) { - normal_arr[i_arr[j].goods_id] = 1; + normal_arr[i_arr[j].id] = 1; } //检查活动是不是满足了条件,或者要取满足条件的活动 @@ -3243,6 +3243,16 @@ Page({ checkObj3[i_arr[j].prom_id] = [i]; } } + + //如果是普通购买的时候。 + if(i_arr[j].is_integral_normal || i_arr[j].is_pd_normal ){ + //-- 四大促销 -- + if([3,5,7,10].indexOf(i_arr[j].prom_tyoe)==-1){ + i_arr[j].prom_id=0; + i_arr[j].prom_type=0; + } + } + //map 的key是不会重复,会覆盖,, var ie = { goods_id: i_arr[j].goods_id, @@ -3251,6 +3261,7 @@ Page({ prom_id: i_arr[j].prom_id, prom_type: i_arr[j].prom_type, }; + //判断是不是线下取价 if (i_arr[j].is_offline) { ie.is_offline = i_arr[j].is_offline; @@ -3266,7 +3277,14 @@ Page({ } else { map.set(i_arr[j].goods_id + "", i_arr[j].goods_num); } - glist += i_arr[j].goods_id + ","; + //glist += i_arr[j].goods_id + ","; + + if(!i_arr[j].is_gift){ + var et= {"prom_type":i_arr[j].prom_type,"prom_id":i_arr[j].prom_id,"goods_id":i_arr[j].goods_id}; + glist.push(et); + } + + //判断有没有选择商品 ab = 1; //-- 获取促销活动是不是有参与 -- @@ -3301,7 +3319,6 @@ Page({ } - //--普通商品,如果有开启线下库存的功能,要调用线下库存进行计算,赠品不要进行调用线下库存--- if ((i_arr[j].prom_type == 0 || i_arr[j].prom_type == 3 || i_arr[j].prom_type == 5 || i_arr[j].prom_type == 7 || i_arr[j].prom_type == 10 || i_arr[j].need_downlow_num) && th.data.sales_rules >= 2 && i_arr[j].is_gift != 1 && !i_arr[j].whsle_id) { @@ -3437,6 +3454,9 @@ Page({ } + //glist = glist.substring(0, glist.length - 1); + //--取一下商品的限购 以及活动的限购,redis数量- + //-- 组合购的控制 --- if (checkArr7.length > 0) { let checkStr = [] checkArr7.map(item => { @@ -3472,173 +3492,9 @@ Page({ wx.hideLoading(); return false; } + //购买商品的下一步 + this.cart_goods_buy_next(glist,map_limit,map,g_arr) - glist = glist.substring(0, glist.length - 1); - //--取一下商品的限购 以及活动的限购,redis数量-- - rq.get("/api/weshop/goods/getGoodsListNum", { - data: { - goodsidlist: glist, - store_id: oo.stoid - }, - async success(ee) { - console.log(ee); - if (ee.data.code == 0) { - var ddata = ee.data.data, - isok = 1, - gname = "", - err = ""; - //--组装-- - for (var ij = 0; ij < ddata.length; ij++) { - var val = ddata[ij]; - var obj = map_limit.get(val.goods_id + ""); - if (obj) continue; - - var promgoodsbuynum = 0; - var goodsbuynum = 0; - - //--要获得商品,该用户买了多少件,同步应用-- - await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", { - data: { - store_id: oo.stoid, - user_id: user_id, - goods_id: val.goods_id, - prom_type: val.prom_type, - prom_id: val.prom_id - }, - }).then(res => { - var buy_num_data = res.data.data; - if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum; - goodsbuynum = buy_num_data.goodsbuynum; - }) - var ie = { - promgoodsbuynum: promgoodsbuynum, - goodsbuynum: goodsbuynum - }; - map_limit.set(val.goods_id + "", ie); - } - - try { - for (var ind in ddata) { - var val = ddata[ind]; - var num = map.get(val.goods_id + ""); - if (num <= 0) { - isok = 0; - gname = val.goods_name; - throw "购买数量不能为0"; - return false; - } - - if (val.prom_type == 1 || val.prom_type == 6) { - if (num > val.store_count) { - isok = 0; - gname = val.goods_name; - throw "超出库存"; - return false; - } - } - - if (th.data.sales_rules == 1) { - if (num > val.store_count) { - isok = 0; - gname = val.goods_name; - throw "超出库存"; - return false; - } - } - if (num > val.redisnum && val.redisnum && !normal_arr[val.goods_id]) { - isok = 0; - gname = val.goods_name; - throw "超出活动库存"; - return false; - } - if (num > val.goods_num - val.buy_num && val.goods_num && !normal_arr[val.goods_id]) { - isok = 0; - gname = val.goods_name; - throw "超出活动库存"; - return false; - } - - var buyed = map_limit.get(val.goods_id + ""); - if (num + buyed.goodsbuynum > val.viplimited && val.viplimited > 0) { - isok = 0; - gname = val.goods_name; - throw "超出商品限购"; - return false; - } - - if (num + buyed.promgoodsbuynum > val.buy_limit && val.buy_limit > 0 && !normal_arr[val.goods_id]) { - isok = 0; - gname = val.goods_name; - throw "超出活动限购"; - return false; - } - - var card_field = th.data.card_field; - for (var i = 0; i < g_arr.length; i++) { - - if (g_arr[i].goods_id == val.goods_id) { - - //如果会员是等级会员,商品有等级价,且不是活动商品 - if (card_field && val[card_field] > 0 && - ((val.prom_type == 0 && g_arr[i].prom_type == 0) || val.prom_type == 3 || val.prom_type == 4 || val.prom_type == 5 || val.prom_type == 7 || val.prom_type == 10 || normal_arr[val.goods_id])) { - if (g_arr[i].goods_price != val[card_field]) { - isok = 0; - gname = val.goods_name; - throw "商品价格已经变化"; - } - } else { - if (g_arr[i].goods_price != val.shop_price && g_arr[i].goods_price != val.prom_price && val.prom_price > 0) { - isok = 0; - gname = val.goods_name; - throw "商品价格已经变化"; - } - } - - //-- 数据的更新 -- - var data = { - id: g_arr[i].id, - selected: 1, - store_id: oo.stoid, - prom_type: g_arr[i].prom_type, - prom_id: g_arr[i].prom_id, - }; - let gitem = checkArr7.find(item => item.goods_id == g_arr[i].goods_id) - if (gitem) { - data.prom_type = 0 - data.prom_id = 0 - } - //-- 如果有线下取价的时候 -- - if (g_arr[i].is_offline) { - data.pricing_type = g_arr[i].pricing_type; - data.offline_price = g_arr[i].offline_price; - } - rq.put("/api/weshop/cart/update", { - data: data, - success: function (ee) { - console.log(ee); - } - }); - } - } - - } - } catch (e) { - err = e; - } - if (isok == 0) { - t.confirmBox(gname + ":" + err); - wx.hideLoading(); - return false; - } - - - wx.hideLoading(); - wx.navigateTo({ - url: "/packageE/pages/cart/cart2/cart2" - }); - } - } - }); } else if (res.cancel) { wx.hideLoading(); console.log('用户点击取消') @@ -3667,167 +3523,12 @@ Page({ return false; } - glist = glist.substring(0, glist.length - 1); - //--取一下商品的限购 以及活动的限购,redis数量-- - rq.get("/api/weshop/goods/getGoodsListNum", { - data: { - goodsidlist: glist, - store_id: oo.stoid - }, - async success(ee) { - console.log(ee); - if (ee.data.code == 0) { - var ddata = ee.data.data, - isok = 1, - gname = "", - err = ""; - //--组装-- - for (var ij = 0; ij < ddata.length; ij++) { - var val = ddata[ij]; - var obj = map_limit.get(val.goods_id + ""); - if (obj) continue; - - var promgoodsbuynum = 0; - var goodsbuynum = 0; - - //--要获得商品,该用户买了多少件,同步应用-- - await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", { - data: { - store_id: oo.stoid, - user_id: user_id, - goods_id: val.goods_id, - prom_type: val.prom_type, - prom_id: val.prom_id - }, - }).then(res => { - var buy_num_data = res.data.data; - if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum; - goodsbuynum = buy_num_data.goodsbuynum; - }) - var ie = { - promgoodsbuynum: promgoodsbuynum, - goodsbuynum: goodsbuynum - }; - map_limit.set(val.goods_id + "", ie); - } - - try { - for (var ind in ddata) { - var val = ddata[ind]; - var num = map.get(val.goods_id + ""); - if (num <= 0) { - isok = 0; - gname = val.goods_name; - throw "购买数量不能为0"; - return false; - } - - if (val.prom_type == 1 || val.prom_type == 6) { - if (num > val.store_count) { - isok = 0; - gname = val.goods_name; - throw "超出库存"; - return false; - } - } - - if (th.data.sales_rules == 1) { - if (num > val.store_count) { - isok = 0; - gname = val.goods_name; - throw "超出库存"; - return false; - } - } - if (num > val.redisnum && val.redisnum && !normal_arr[val.goods_id]) { - isok = 0; - gname = val.goods_name; - throw "超出活动库存"; - return false; - } - if (num > val.goods_num - val.buy_num && val.goods_num && !normal_arr[val.goods_id]) { - isok = 0; - gname = val.goods_name; - throw "超出活动库存"; - return false; - } - - var buyed = map_limit.get(val.goods_id + ""); - if (num + buyed.goodsbuynum > val.viplimited && val.viplimited > 0) { - isok = 0; - gname = val.goods_name; - throw "超出商品限购"; - return false; - } + //购买商品的下一步 + this.cart_goods_buy_next(glist,map_limit,map,g_arr) + } - if (num + buyed.promgoodsbuynum > val.buy_limit && val.buy_limit > 0 && !normal_arr[val.goods_id]) { - isok = 0; - gname = val.goods_name; - throw "超出活动限购"; - return false; - } - var card_field = th.data.card_field; - for (var i = 0; i < g_arr.length; i++) { - - if (g_arr[i].goods_id == val.goods_id) { - - //如果会员是等级会员,商品有等级价,且不是活动商品 - if (card_field && val[card_field] > 0 && - ((val.prom_type == 0 && g_arr[i].prom_type == 0) || val.prom_type == 3 || val.prom_type == 4 || val.prom_type == 5 || val.prom_type == 7 || val.prom_type == 10 || normal_arr[val.goods_id])) { - if (g_arr[i].goods_price != val[card_field]) { - isok = 0; - gname = val.goods_name; - throw "商品价格已经变化"; - } - } else { - if (g_arr[i].goods_price != val.shop_price && g_arr[i].goods_price != val.prom_price && val.prom_price > 0) { - isok = 0; - gname = val.goods_name; - throw "商品价格已经变化"; - } - } - - //-- 数据的更新 -- - var data = { - id: g_arr[i].id, - selected: 1, - store_id: oo.stoid, - prom_type: g_arr[i].prom_type, - prom_id: g_arr[i].prom_id, - }; - - //-- 如果有线下取价的时候 -- - if (g_arr[i].is_offline) { - data.pricing_type = g_arr[i].pricing_type; - data.offline_price = g_arr[i].offline_price; - } - rq.put("/api/weshop/cart/update", { - data: data, - success: function (ee) { - console.log(ee); - } - }); - } - } - } - } catch (e) { - err = e; - } - if (isok == 0) { - t.confirmBox(gname + ":" + err); - wx.hideLoading(); - return false; - } - wx.hideLoading(); - wx.navigateTo({ - url: "/packageE/pages/cart/cart2/cart2" - }); - } - } - }); - } } else { //-- 开始服务卡的购物车购买 -- @@ -3862,6 +3563,179 @@ Page({ } }, + //map_limit 是包含活动prom_type prom_id + + cart_goods_buy_next(glist,map_limit,map,g_arr){ + //判断活动的限购,和readis数量 + getApp().request.promisePost("/api/weshop/goods/listGoodsListNumNew", { + is_json:1, + data: { + listNumNewDtos: glist, + store_id: oo.stoid + }, + }).then( async ee=>{ + console.log(ee); + if (ee.data.code == 0) { + var ddata = ee.data.data, + isok = 1, + gname = "", + err = ""; + //--组装-- + for (var ij = 0; ij < ddata.length; ij++) { + + var val = ddata[ij]; + var ky=val.goods_id + "-"+val.prom_type+'-'+val.prom_id; + var obj = map_limit.get(ky); + if (obj) continue; + + var promgoodsbuynum = 0; + var goodsbuynum = 0; + + //--要获得商品,该用户买了多少件,同步应用-- + await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", { + data: { + store_id: oo.stoid, + user_id: getApp().globalData.user_id, + goods_id: val.goods_id, + prom_type: val.prom_type, + prom_id: val.prom_id + }, + }).then(res => { + var buy_num_data = res.data.data; + if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum; + goodsbuynum = buy_num_data.goodsbuynum; + }) + var ie = { + promgoodsbuynum: promgoodsbuynum, + goodsbuynum: goodsbuynum + }; + map_limit.set(ky, ie); + } + + try { + for (var ind in ddata) { + var val = ddata[ind]; + var ky=val.goods_id + "-"+val.prom_type+'-'+val.prom_id; + + var num = map.get(val.goods_id+""); + if (num <= 0) { + isok = 0; + gname = val.goods_name; + throw "购买数量不能为0"; + return false; + } + + if (val.prom_type == 1 || val.prom_type == 2) { + if (num > val.store_count) { + isok = 0; + gname = val.goods_name; + throw "超出库存"; + return false; + } + + if (num > val.redisnum && val.redisnum) { + isok = 0; + gname = val.goods_name; + throw "超出活动库存"; + return false; + } + + + } + + if (th.data.sales_rules == 1) { + if (num > val.store_count) { + isok = 0; + gname = val.goods_name; + throw "超出库存"; + return false; + } + } + + if (num > val.goods_num - val.buy_num && val.goods_num) { + isok = 0; + gname = val.goods_name; + throw "超出活动库存"; + return false; + } + + var buyed = map_limit.get(ky); + if (num + buyed.goodsbuynum > val.viplimited && val.viplimited > 0) { + isok = 0; + gname = val.goods_name; + throw "超出商品限购"; + return false; + } + + if (num + buyed.promgoodsbuynum > val.buy_limit && val.buy_limit > 0) { + isok = 0; + gname = val.goods_name; + throw "超出活动限购"; + return false; + } + + var card_field = th.data.card_field; + for (var i = 0; i < g_arr.length; i++) { + + if (g_arr[i].goods_id == val.goods_id && g_arr[i].prom_type==val.prom_type && g_arr[i].prom_id==val.id ) { + + //如果会员是等级会员,商品有等级价,且不是活动商品 + if (card_field && val[card_field] > 0 && + ((val.prom_type == 0 && g_arr[i].prom_type == 0) || val.prom_type == 3 || val.prom_type == 5 || val.prom_type == 7 || val.prom_type == 10)) { + if (g_arr[i].goods_price != val[card_field]) { + isok = 0; + gname = val.goods_name; + throw "商品价格已经变化"; + } + } else { + if (g_arr[i].goods_price != val.shop_price && g_arr[i].goods_price != val.prom_price && val.prom_price > 0) { + isok = 0; + gname = val.goods_name; + throw "商品价格已经变化"; + } + } + + //-- 数据的更新 -- + var data = { + id: g_arr[i].id, + selected: 1, + store_id: oo.stoid, + prom_type: g_arr[i].prom_type, + prom_id: g_arr[i].prom_id, + }; + + //-- 如果有线下取价的时候 -- + if (g_arr[i].is_offline) { + data.pricing_type = g_arr[i].pricing_type; + data.offline_price = g_arr[i].offline_price; + } + rq.put("/api/weshop/cart/update", { + data: data, + success: function (ee) { + console.log(ee); + } + }); + } + } + + } + } catch (e) { + err = e; + } + if (isok == 0) { + t.confirmBox(gname + ":" + err); + wx.hideLoading(); + return false; + } + wx.hideLoading(); + wx.navigateTo({ + url: "/packageE/pages/cart/cart2/cart2" + }); + } + }) + }, + + //结算到最后一个商品 set_last: function (ab, isok, gname) { if (isok == 0) { @@ -4679,21 +4553,34 @@ Page({ return false; } - var url = "/api/weshop/activitylist/getGoodActInfo"; - var req_data = { - store_id: os.stoid, - goodsidlist: gd, - is_detail: 1, - user_id: user_id - }; + // var url = "/api/weshop/activitylist/getGoodActInfo"; + // var req_data = { + // store_id: os.stoid, + // goodsidlist: gd, + // is_detail: 1, + // user_id: user_id + // }; + var url = '/api/weshop/activitylist/listGoodActInfo2New'; + var req_d = { + "store_id": os.stoid, + "goods_id": gd, + "user_id": user_id, + } //获取秒杀的多规格 getApp().request.promiseGet(url, { - data: req_data + data: req_d }).then(res => { if (res.data.code == 0 && res.data.data) { - if (res.data.data.length == 1) { - var item = res.data.data[0]; + + var arr = res.data.data; + //-- 预热也要计算 -- + var arr2 = arr.filter(function (e) { + return e.s_time < ut.gettimestamp() || (e.warm_uptime && e.warm_uptime < ut.gettimestamp()) + }) + + if (arr2.length == 1) { + var item =arr2[0]; switch (item.prom_type) { case 9: good_url = '/packageC/pages/luckyGo/luckyGo_goodsInfo/luckyGo_goodsInfo?goods_id=' + gd + '&group_id=' + item.act_id;