Commit b9aff81ccd938cdf46b453042acfc9eebf8dd66e

Authored by yvan.ni
1 parent dbe8c91e

多促销的优化

packageE/pages/cart/cart2/cart2.js
@@ -7122,7 +7122,6 @@ Page({ @@ -7122,7 +7122,6 @@ Page({
7122 7122
7123 //-- 判读一下促销分组的问题 -- 7123 //-- 判读一下促销分组的问题 --
7124 async cart_cx_group(goods,car_item,func){ 7124 async cart_cx_group(goods,car_item,func){
7125 -  
7126 //更改活动的时候,就不能再重新计算活动,只有再加减数量和选择商品的时候,就要重新计算活动 7125 //更改活动的时候,就不能再重新计算活动,只有再加减数量和选择商品的时候,就要重新计算活动
7127 if(this.data.change_act){ 7126 if(this.data.change_act){
7128 var show_can_cx=car_item.show_can_cx; 7127 var show_can_cx=car_item.show_can_cx;
@@ -7165,6 +7164,30 @@ Page({ @@ -7165,6 +7164,30 @@ Page({
7165 7164
7166 k_item.sele_prom_type=ck_prom_type.prom_type; 7165 k_item.sele_prom_type=ck_prom_type.prom_type;
7167 7166
  7167 + //-- 如果是要控制数量的时候,也就是全选的时候,或者加减号的时候 --
  7168 + if(is_need_ck_num){
  7169 + var t_pid=ck_prom_type.prom_id;
  7170 + switch (ck_prom_type.prom_type){
  7171 + case 3:
  7172 + if(!th.data.in_yhact_new[t_pid]) th.data.in_yhact_new[t_pid]=0;
  7173 + th.data.in_yhact_new[t_pid]++;
  7174 + break;
  7175 + case 7:
  7176 + if(!th.data.in_zhact_new[t_pid]) th.data.in_zhact_new[t_pid]=0;
  7177 + th.data.in_zhact_new[t_pid]+=ck_prom_type.act_num;
  7178 + //-- 数组的优化 --
  7179 + var nei_gd_map=ck_prom_type.in_zhact_gdmap;
  7180 + if(nei_gd_map){
  7181 + for (var vg in nei_gd_map) {
  7182 + if (!th.data.in_zhact_gdmap_new[vg]) th.data.in_zhact_gdmap_new[vg] = 0;
  7183 + th.datain_zhact_gdmap_new[vg] += nei_gd_map[vg];
  7184 + }
  7185 + }
  7186 + break;
  7187 + }
  7188 + }
  7189 +
  7190 +
7168 //-- 此时要把购物车中的商品确定活动 -- 7191 //-- 此时要把购物车中的商品确定活动 --
7169 for (var b=0; b<ck_prom_type.goods.length;b++){ 7192 for (var b=0; b<ck_prom_type.goods.length;b++){
7170 //-- 开始查找 -- 7193 //-- 开始查找 --
@@ -7205,7 +7228,7 @@ Page({ @@ -7205,7 +7228,7 @@ Page({
7205 }else{ 7228 }else{
7206 var p_item={key:key,prom_type:n_item.prom_type,prom_id:n_item.prom_id,goods:[],act:n_item}; 7229 var p_item={key:key,prom_type:n_item.prom_type,prom_id:n_item.prom_id,goods:[],act:n_item};
7207 if(n_item.prom_type==7){ 7230 if(n_item.prom_type==7){
7208 - p_item.zh_act=n_item.zh_pro; 7231 + p_item.zh_pro=n_item.zh_pro;
7209 } 7232 }
7210 p_item.goods.push(c_item); 7233 p_item.goods.push(c_item);
7211 cx_act_map.push(p_item); 7234 cx_act_map.push(p_item);
@@ -7224,6 +7247,9 @@ Page({ @@ -7224,6 +7247,9 @@ Page({
7224 } 7247 }
7225 cx_act_map.sort(compare); 7248 cx_act_map.sort(compare);
7226 } 7249 }
  7250 +
  7251 + //-- 在确认订单的页面强行要用数量的控制
  7252 + var is_need_ck_num=1;
7227 //-- 能够进行最后计算的活动(包含切换) -- 7253 //-- 能够进行最后计算的活动(包含切换) --
7228 var can_calc_cx=[]; 7254 var can_calc_cx=[];
7229 //-- 此时对数组的活动进行判断,看能不能达到购买数量的条件 -- 7255 //-- 此时对数组的活动进行判断,看能不能达到购买数量的条件 --
@@ -7238,6 +7264,35 @@ Page({ @@ -7238,6 +7264,35 @@ Page({
7238 } 7264 }
7239 switch(item_act_map.prom_type){ 7265 switch(item_act_map.prom_type){
7240 case 3: 7266 case 3:
  7267 +
  7268 + //活动ID
  7269 + var aid=item_act_map.prom_id;
  7270 + var need_num=0;
  7271 + //-- 这个时候要判断是不是要判断优惠促销多门店的时候的限购 --
  7272 + if(is_need_ck_num){
  7273 + need_num=th.data.in_yhact_new[aid]?th.data.in_yhact_new[aid]:0;
  7274 + }
  7275 + //-- 判断优惠促销要不要限购 --
  7276 + var fd=null;
  7277 + var fd_res = await getApp().request.promiseGet('/api/weshop/promgoods/get/'+os.stoid+'/'+ky0,{})
  7278 + if(fd_res && fd_res.data.code==0 ){
  7279 + fd=fd_res.data.data;
  7280 + }
  7281 + //如果有限购的时候,也要计算一下
  7282 + if (fd && fd['limit_num'] > 0){
  7283 + //-- 获取已经购买了多少件 --
  7284 + var url = "/api/weshop/ordergoods/getUserBuyPromNum?store_id="+os.stoid+"&user_id="
  7285 + +getApp().globalData.user_id+"&prom_type=3&prom_id="+zh_pro0.id;
  7286 + await getApp().request.promiseGet(url, {}).then(rh => {
  7287 + if(rh.data.code==0){
  7288 + item_act_map.buyed=rh.data.data.userbuynum;
  7289 + }
  7290 + })
  7291 + if(item_act_map.buyed+need_num>=fd['limit_num']){
  7292 + continue; //-- 进行下一个循环 --
  7293 + }
  7294 + }
  7295 +
7241 var fir_act=item_act_map.act.fir_act; 7296 var fir_act=item_act_map.act.fir_act;
7242 var t_goods=item_act_map.goods; 7297 var t_goods=item_act_map.goods;
7243 var all_num=0; 7298 var all_num=0;
@@ -7295,16 +7350,19 @@ Page({ @@ -7295,16 +7350,19 @@ Page({
7295 if(!car_item.zh_prom_goods) car_item.zh_prom_goods={}; 7350 if(!car_item.zh_prom_goods) car_item.zh_prom_goods={};
7296 car_item.zh_prom_goods[item_act_map.prom_id] = zhact_gdlist; 7351 car_item.zh_prom_goods[item_act_map.prom_id] = zhact_gdlist;
7297 7352
7298 - var zh_pro0 = null; 7353 + var zh_pro0 = th.data.zhhe_act_map[item_act_map.prom_id];
7299 //-- 获取活动信息 -- 7354 //-- 获取活动信息 --
7300 - var url = "/api/weshop/prom/zhbuy/get/" + os.stoid + "/" + item_act_map.prom_id + "/" + getApp().globalData.user_id; 7355 + var url = "/api/weshop/ordergoods/getUserBuyPromNum?store_id="+os.stoid+"&user_id="
  7356 + +getApp().globalData.user_id+"&prom_type=7&prom_id="+zh_pro0.id;
7301 await getApp().request.promiseGet(url, {}).then(rh => { 7357 await getApp().request.promiseGet(url, {}).then(rh => {
7302 - zh_pro0 = rh.data.data; 7358 + if(rh.data.code==0){
  7359 + item_act_map.buyed=rh.data.data.userbuynum;
  7360 + }
7303 }) 7361 })
7304 - if(!zh_pro0) break; 7362 +
7305 //当满足组合的要求:总数要满足,起购数要满足 7363 //当满足组合的要求:总数要满足,起购数要满足
7306 - if(zh_calc.ch_zh_ok(zh_pro0,zhact_gdlist,zh_goods,th)){  
7307 - can_calc_cx.push(item_act_map) 7364 + if(zh_calc.ch_zh_ok(zh_pro0,zhact_gdlist,zh_goods,th,item_act_map,is_need_ck_num)){
  7365 + can_calc_cx.push(item_act_map)
7308 } 7366 }
7309 break; 7367 break;
7310 default: 7368 default:
@@ -7385,6 +7443,30 @@ Page({ @@ -7385,6 +7443,30 @@ Page({
7385 7443
7386 k_item.sele_prom_type=ck_prom_type.prom_type; 7444 k_item.sele_prom_type=ck_prom_type.prom_type;
7387 7445
  7446 + //-- 如果是要控制数量的时候,也就是全选的时候,或者加减号的时候 --
  7447 + if(is_need_ck_num){
  7448 + var t_pid=ck_prom_type.prom_id;
  7449 + switch (ck_prom_type.prom_type){
  7450 + case 3:
  7451 + if(!th.data.in_yhact_new[t_pid]) th.data.in_yhact_new[t_pid]=0;
  7452 + th.data.in_yhact_new[t_pid]++;
  7453 + break;
  7454 + case 7:
  7455 + if(!th.data.in_zhact_new[t_pid]) th.data.in_zhact_new[t_pid]=0;
  7456 + th.data.in_zhact_new[t_pid]+=ck_prom_type.act_num;
  7457 + //-- 数组的优化 --
  7458 + var nei_gd_map=ck_prom_type.in_zhact_gdmap;
  7459 + if(nei_gd_map){
  7460 + for (var vg in nei_gd_map) {
  7461 + if (!th.data.in_zhact_gdmap_new[vg]) th.data.in_zhact_gdmap_new[vg] = 0;
  7462 + th.data.in_zhact_gdmap_new[vg] += nei_gd_map[vg];
  7463 + }
  7464 + }
  7465 + break;
  7466 + }
  7467 + }
  7468 +
  7469 +
7388 //-- 此时要把购物车中的商品确定活动 -- 7470 //-- 此时要把购物车中的商品确定活动 --
7389 for (var b=0; b<ck_prom_type.goods.length;b++){ 7471 for (var b=0; b<ck_prom_type.goods.length;b++){
7390 //-- 开始查找 -- 7472 //-- 开始查找 --
@@ -7463,6 +7545,7 @@ Page({ @@ -7463,6 +7545,7 @@ Page({
7463 7545
7464 //--- 选择回来时候的选择 --- 7546 //--- 选择回来时候的选择 ---
7465 sure_cx_group:function(e){ 7547 sure_cx_group:function(e){
  7548 + var th=this;
7466 var sele_idx=e.detail.sele_idx; 7549 var sele_idx=e.detail.sele_idx;
7467 var idx=this.data.sele_cx_group_cidx; 7550 var idx=this.data.sele_cx_group_cidx;
7468 var gd_key= this.data.cx_group_gd_key; 7551 var gd_key= this.data.cx_group_gd_key;
@@ -7470,7 +7553,9 @@ Page({ @@ -7470,7 +7553,9 @@ Page({
7470 var cx_prom_group=this.data.cartlist[idx].show_can_cx[gd_key].act_arr; 7553 var cx_prom_group=this.data.cartlist[idx].show_can_cx[gd_key].act_arr;
7471 var pk=this.data.cartlist[idx].pickup_id; 7554 var pk=this.data.cartlist[idx].pickup_id;
7472 7555
  7556 + var fir_sele=0;
7473 for(var dx=0;dx<cx_prom_group.length;dx++){ 7557 for(var dx=0;dx<cx_prom_group.length;dx++){
  7558 + if(cx_prom_group[dx].sele) fir_sele=dx;
7474 if(dx!=sele_idx) cx_prom_group[dx].sele=0; 7559 if(dx!=sele_idx) cx_prom_group[dx].sele=0;
7475 else cx_prom_group[dx].sele=1; 7560 else cx_prom_group[dx].sele=1;
7476 } 7561 }
@@ -7480,29 +7565,154 @@ Page({ @@ -7480,29 +7565,154 @@ Page({
7480 return el.sele; 7565 return el.sele;
7481 }) 7566 })
7482 7567
7483 - this.data.cartlist[idx].show_can_cx[gd_key].sele_prom_type=ck_prom_type.prom_type;  
7484 - var goods= this.data.cartlist_y  
7485 - //-- 此时要把购物车中的商品确定活动 --  
7486 - for (var b=0; b<ck_prom_type.goods.length;b++){  
7487 - //-- 开始查找 --  
7488 - var fg=goods.findIndex(function (g_item){  
7489 - return g_item.goods_id==ck_prom_type.goods[b].goods_id  
7490 - && [0,3,5,7,10].indexOf(g_item.prom_type)>-1  
7491 - && g_item.pick_id==pk  
7492 - })  
7493 - if(fg>-1){  
7494 - goods[fg].prom_type=ck_prom_type.prom_type;  
7495 - goods[fg].prom_id=ck_prom_type.prom_id; 7568 +
  7569 + this.cx_check_ok2(function (ck_res){
  7570 +
  7571 + if(ck_res.code==0){
  7572 + th.data.cartlist[idx].show_can_cx[gd_key].sele_prom_type=ck_prom_type.prom_type;
  7573 + var goods= th.data.cartlist_y
  7574 + //-- 此时要把购物车中的商品确定活动 --
  7575 + for (var b=0; b<ck_prom_type.goods.length;b++){
  7576 + //-- 开始查找 --
  7577 + var fg=goods.findIndex(function (g_item){
  7578 + return g_item.goods_id==ck_prom_type.goods[b].goods_id
  7579 + && [0,3,5,7,10].indexOf(g_item.prom_type)>-1
  7580 + && g_item.pick_id==pk
  7581 + })
  7582 + if(fg>-1){
  7583 + goods[fg].prom_type=ck_prom_type.prom_type;
  7584 + goods[fg].prom_id=ck_prom_type.prom_id;
  7585 + }
  7586 + }
  7587 +
  7588 + wx.showLoading({
  7589 + title: "处理中.",
  7590 + mask: true
  7591 + })
  7592 + //-- 重新计算一下价格 --
  7593 + th.get_cart_next(null,1);
  7594 + }else{
  7595 + wx.showToast({
  7596 + title: ck_res.msg,
  7597 + icon: 'none',
  7598 + duration:2500
  7599 + });
  7600 +
  7601 + for(var dx=0;dx<cx_prom_group.length;dx++){
  7602 + if(dx!=fir_sele) cx_prom_group[dx].sele=0;
  7603 + else cx_prom_group[dx].sele=1;
  7604 + }
7496 } 7605 }
  7606 + })
  7607 +
  7608 + },
  7609 +
  7610 +
  7611 + //--- 在点击商品和或者门店的时候调用,这个可以在活动切换的时候调用,也可以被单个选择调用---
  7612 + async cx_check_ok2(func,car) {
  7613 + //如果购物车没有带入,要进行赋值
  7614 + if(!car) {
  7615 + car = JSON.parse(JSON.stringify(this.data.cartlist));
7497 } 7616 }
7498 7617
7499 - wx.showLoading({  
7500 - title: "处理中.",  
7501 - mask: true  
7502 - })  
7503 - //-- 重新计算一下价格 --  
7504 - this.get_cart_next(null,1); 7618 + var nei_in_zhact_gdmap = {};
  7619 + var nei_in_zhact = {};
  7620 + var nei_in_yhact = {};
  7621 + for (var i = 0; i < car.length; i++) {
  7622 + var show_can_cx = car[i].show_can_cx;
  7623 + for (var j in show_can_cx) {
  7624 + var sele_act = show_can_cx[j].act_arr.find(function (m) {
  7625 + return m.sele == 1;
  7626 + })
  7627 +
  7628 + if (!sele_act) continue;
  7629 + var pid = sele_act['prom_id'];
  7630 + if (sele_act['prom_type'] == 3) {
  7631 + if(!nei_in_yhact[pid]) nei_in_yhact[pid] = 0;
  7632 + nei_in_yhact[pid]++;
  7633 + }
  7634 + if (sele_act['prom_type'] == 7) {
  7635 + if(!nei_in_zhact[pid]) nei_in_zhact[pid] = 0;
  7636 + nei_in_zhact[pid] += sele_act['act_num'];
  7637 + }
  7638 + var in_zhact_gdmap1 = sele_act['in_zhact_gdmap'];
  7639 + for (var vg in in_zhact_gdmap1) {
  7640 + if (!nei_in_zhact_gdmap[vg]) nei_in_zhact_gdmap[vg] = 0;
  7641 + nei_in_zhact_gdmap[vg] += in_zhact_gdmap1[vg];
  7642 + }
  7643 + }
  7644 + }
  7645 +
  7646 + //-- 判断优惠促销是不是超出限购 --
  7647 + if (nei_in_yhact && Object.keys(nei_in_yhact).length) {
  7648 + for (var ky0 in nei_in_yhact) {
  7649 + var num = nei_in_yhact[ky0];
  7650 +
  7651 + var fd=null;
  7652 + var fd_res = await getApp().request.promiseGet('/api/weshop/promgoods/get/'+os.stoid+'/'+ky0,{})
  7653 + if(fd_res && fd_res.data.code==0 ){
  7654 + fd=fd_res.data.data;
  7655 + }
  7656 + if (fd && fd['limit_num'] > 0 && num > fd['limit_num']) {
  7657 + func({'code': -1, 'msg': '超出优惠促销活动的限购'});
  7658 + return false;
  7659 + }
  7660 + }
  7661 + }
  7662 +
  7663 + //-- 判断组合促销是不是超出活动总数量 --
  7664 + if (nei_in_zhact && Object.keys(nei_in_zhact).length) {
  7665 + for (var ky in nei_in_zhact) {
  7666 +
  7667 + var num0 = nei_in_zhact[ky];
  7668 + var zh = this.data.zhhe_act_map[ky];
  7669 + var buyed=0;
  7670 +
  7671 + //获取已经购买了多少件
  7672 + var z_url = "/api/weshop/ordergoods/getUserBuyPromNum?store_id="+os.stoid+"user_id="+getApp().globalData.user_id+"prom_type=7&prom_id="+ky;
  7673 + var zbuy=await getApp().request.promiseGet(z_url,{});
  7674 + if(zbuy && zbuy.data.code==0){
  7675 + buyed=zbuy.data.data.userbuynum;
  7676 + }
  7677 + if (zh['zh_num'] > 0 && zh['zh_buy_num'] + num0 > zh['zh_num']) {
  7678 + func({'code': -1, 'msg': '超出组合购活动总数量'});
  7679 + return false;
  7680 + }
  7681 + }
  7682 + }
7505 7683
  7684 + //-- 判断组合促销是不是超出活动总数量 --
  7685 + if (nei_in_zhact_gdmap && Object.keys(nei_in_zhact_gdmap).length) {
  7686 + for (var key in nei_in_zhact_gdmap) {
  7687 +
  7688 + var num1 = nei_in_zhact_gdmap[key];
  7689 + var key_a = key.split('.');
  7690 + var gid = key_a[0];
  7691 + var pid = key_a[1];
  7692 +
  7693 + //-- 商品的限购 --
  7694 + var promgoodsbuynum = 0;
  7695 + var rq = {
  7696 + 'store_id': os.stoid, 'user_id': getApp().globalData.user_id, 'goods_id': gid,
  7697 + 'prom_type': 7, 'prom_id': pid
  7698 + };
  7699 +
  7700 + var res = await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", {data: rq});
  7701 + if (res && res.data.code == 0) {
  7702 + promgoodsbuynum = res.data.data.promgoodsbuynum;
  7703 + }
  7704 +
  7705 + var gdlist_arr = this.data.zuhe_map_good[pid];
  7706 + var gdlist = gdlist_arr.find(function (e) {
  7707 + return e.goods_id == gid;
  7708 + })
  7709 + if (gdlist['buyqty'] > 0 && num1 + promgoodsbuynum > gdlist['buyqty']) {
  7710 + func({'code': -1, 'msg': '超出组合购商品的限购'});
  7711 + return false;
  7712 + }
  7713 + }
  7714 + }
  7715 + func({'code': 0, 'msg': '成功'})
7506 } 7716 }
7507 7717
7508 7718
packageE/pages/cart/cart2/zh_calculate.js
@@ -155,7 +155,7 @@ module.exports = { @@ -155,7 +155,7 @@ module.exports = {
155 var delete_num=0; 155 var delete_num=0;
156 156
157 //看一下是几倍 157 //看一下是几倍
158 - let be1 = parseInt(no_in_arr.length / act.zhbuyqty); 158 + let be = parseInt(no_in_arr.length / act.zhbuyqty);
159 //如果有总数控制的时候 159 //如果有总数控制的时候
160 if(act.zh_num){ 160 if(act.zh_num){
161 var be1=act.zh_num-act.zh_buy_num-1; 161 var be1=act.zh_num-act.zh_buy_num-1;
@@ -188,7 +188,7 @@ module.exports = { @@ -188,7 +188,7 @@ module.exports = {
188 let new_arr = zhqty_bz_arr.filter(ii => { 188 let new_arr = zhqty_bz_arr.filter(ii => {
189 return ii['be'] == min_bz_num; 189 return ii['be'] == min_bz_num;
190 }) 190 })
191 - var be = new_arr[0].be; 191 + be = new_arr[0].be;
192 192
193 for (let i = 0; i < zhqty_bz.length; i++) { 193 for (let i = 0; i < zhqty_bz.length; i++) {
194 let item1 = zhqty_bz[i]; 194 let item1 = zhqty_bz[i];
@@ -506,8 +506,9 @@ module.exports = { @@ -506,8 +506,9 @@ module.exports = {
506 return zhqty_bz_flag; 506 return zhqty_bz_flag;
507 }, 507 },
508 508
509 - //-- 判断组合购有没有满足 ---  
510 - ch_zh_ok(act,gdlist,c_goods,th){ 509 + //-- 判断组合购有没有满足,只有在检查的时候,要用新的 ---
  510 + ch_zh_ok(act,gdlist,c_goods,th,item_act_map,is_need_ck_num){
  511 +
511 //-- 寻找一下 -- 512 //-- 寻找一下 --
512 function get_num(ite) { 513 function get_num(ite) {
513 for (let v1 in c_goods) { 514 for (let v1 in c_goods) {
@@ -529,19 +530,39 @@ module.exports = { @@ -529,19 +530,39 @@ module.exports = {
529 let no_in_arr = []; //剩余的未加入组合购 530 let no_in_arr = []; //剩余的未加入组合购
530 let out_arr = []; //超出活动限购的商品放入 531 let out_arr = []; //超出活动限购的商品放入
531 532
532 - //-- 判断组合购的数量是不是到了 -- 533 + //-- 判断组合购的数量是不是到了 --
533 if(act.zh_num>0){ 534 if(act.zh_num>0){
534 - if(th.data.in_zhact_new[aid] && th.data.in_zhact_new[aid]+act.zh_buy_num>=act.zh_num ){  
535 - return false;  
536 - }else{  
537 - min_can_buy= act.zh_num-act.zh_buy_num-th.data.in_zhact_new[aid];  
538 - } 535 + //如果是在全选的情况下,那么就需要in_zhact_new来控制数量
  536 + var need_ck=0;
  537 + if(is_need_ck_num){
  538 + need_ck=th.data.in_zhact_new[aid]?th.data.in_zhact_new[aid]:0;
  539 + }
  540 + if(need_ck+act.zh_buy_num>=act.zh_num ){
  541 + return false;
  542 + }else{
  543 + min_can_buy= act.zh_num-act.zh_buy_num-need_ck;
  544 + }
539 } 545 }
540 - if(act.buy_limit>0){  
541 546
  547 + //-- 判断组合购的限购是不是到了 --
  548 + if(act.buy_limit>0){
  549 + var need_ck0=0;
  550 + if(is_need_ck_num){
  551 + need_ck0=th.data.in_zhact_new[aid]?th.data.in_zhact_new[aid]:0;
  552 + }
  553 + var min_can_buy0=0;
  554 + if(need_ck+item_act_map.buyed>=act.buy_limit ){
  555 + return false;
  556 + }else{
  557 + min_can_buy0=act.buy_limit-item_act_map.buyed-need_ck;
  558 + }
  559 + if(min_can_buy>0){
  560 + if(min_can_buy0<min_can_buy) min_can_buy=min_can_buy0;
  561 + }else{
  562 + min_can_buy=min_can_buy0;
  563 + }
542 } 564 }
543 565
544 -  
545 for (var i in goods) { 566 for (var i in goods) {
546 var item = goods[i]; 567 var item = goods[i];
547 var cart_num = get_num(item).goods_num; 568 var cart_num = get_num(item).goods_num;
@@ -558,7 +579,7 @@ module.exports = { @@ -558,7 +579,7 @@ module.exports = {
558 if (item.buyqty > 0) { 579 if (item.buyqty > 0) {
559 var cbuy = item.buyqty - zh_b_num; 580 var cbuy = item.buyqty - zh_b_num;
560 var key = item.goods_id + "." + act.id; 581 var key = item.goods_id + "." + act.id;
561 - if (th.data.in_zhact_gdmap[key]) { 582 + if (is_need_ck_num && th.data.in_zhact_gdmap_new[key]) {
562 var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap_new[key]; 583 var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap_new[key];
563 } 584 }
564 //当可买的数量为0 585 //当可买的数量为0
@@ -614,6 +635,8 @@ module.exports = { @@ -614,6 +635,8 @@ module.exports = {
614 635
615 //当满足组合的要求:总数要满足,起购数要满足 636 //当满足组合的要求:总数要满足,起购数要满足
616 if (all_num >= act.zhbuyqty && !need_to_buy) { 637 if (all_num >= act.zhbuyqty && !need_to_buy) {
  638 + //默认数量是1
  639 + var act_num=1;
617 function sortData(a, b) { 640 function sortData(a, b) {
618 return a.price - b.price 641 return a.price - b.price
619 } 642 }
@@ -626,15 +649,15 @@ module.exports = { @@ -626,15 +649,15 @@ module.exports = {
626 649
627 //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增 650 //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增
628 if (act.is_bz && no_in_arr.length >= act.zhbuyqty) { 651 if (act.is_bz && no_in_arr.length >= act.zhbuyqty) {
629 - var act_num=1; 652 +
630 var bz_num_ok = 0; //超量倍增是否满足 653 var bz_num_ok = 0; //超量倍增是否满足
631 var zhqty_len = 0; //几个超量倍增 654 var zhqty_len = 0; //几个超量倍增
632 var delete_num = 0; 655 var delete_num = 0;
633 //看一下是几倍 656 //看一下是几倍
634 let be = parseInt(no_in_arr.length / act.zhbuyqty); 657 let be = parseInt(no_in_arr.length / act.zhbuyqty);
635 //如果有总数控制的时候 658 //如果有总数控制的时候
636 - if (act.zh_num) {  
637 - var be1 = act.zh_num - act.zh_buy_num - 1; 659 + if (min_can_buy>0) {
  660 + var be1 = min_can_buy - 1;
638 if (be1 < be) be = be1; 661 if (be1 < be) be = be1;
639 } 662 }
640 if(be) { 663 if(be) {
@@ -663,9 +686,13 @@ module.exports = { @@ -663,9 +686,13 @@ module.exports = {
663 let new_arr = zhqty_bz_arr.filter(ii => { 686 let new_arr = zhqty_bz_arr.filter(ii => {
664 return ii['be'] == min_bz_num; 687 return ii['be'] == min_bz_num;
665 }) 688 })
666 -  
667 //-- 要看一下倍数还有没有 --- 689 //-- 要看一下倍数还有没有 ---
668 be = new_arr[0].be; 690 be = new_arr[0].be;
  691 + //如果有总数控制的时候
  692 + if (min_can_buy>0) {
  693 + var be1 = min_can_buy - 1;
  694 + if (be1 < be) be = be1;
  695 + }
669 if(be){ 696 if(be){
670 for (let i = 0; i < zhqty_bz.length; i++) { 697 for (let i = 0; i < zhqty_bz.length; i++) {
671 let item1 = zhqty_bz[i]; 698 let item1 = zhqty_bz[i];
@@ -692,6 +719,8 @@ module.exports = { @@ -692,6 +719,8 @@ module.exports = {
692 } 719 }
693 } 720 }
694 721
  722 + //-- 参与活动的金额要返回回去 --
  723 + item_act_map.act_num=act_num;
695 let goods_map = {}; 724 let goods_map = {};
696 //算一下剩余的商品 725 //算一下剩余的商品
697 if (no_in_arr.length) { 726 if (no_in_arr.length) {
@@ -718,25 +747,29 @@ module.exports = { @@ -718,25 +747,29 @@ module.exports = {
718 } 747 }
719 } 748 }
720 749
721 - 750 + //-- 组合购的商品限购的数组控制 --
  751 + var in_zhact_gdmap={};
722 //商品的列表 752 //商品的列表
723 for (var u in goods) { 753 for (var u in goods) {
724 var ite = goods[u]; 754 var ite = goods[u];
725 var cart_num = get_num(ite).goods_num; 755 var cart_num = get_num(ite).goods_num;
726 756
727 - if (ite.buyqty > 0 && ite.cart_num > 0) { 757 + if (ite.buyqty > 0 && cart_num > 0) {
728 var key = ite.goods_id + "." + act.id; 758 var key = ite.goods_id + "." + act.id;
729 -  
730 - if(goods_map[ite.goods_id]){}  
731 -  
732 -  
733 - if (th.data.in_zhact_gdmap_new[key]) {  
734 - th.data.in_zhact_gdmap_new[key] += ite.num;  
735 - } else {  
736 - th.data.in_zhact_gdmap_new[key] = ite.num; 759 + if(goods_map[ite.goods_id]){
  760 + cart_num-=goods_map[ite.goods_id];
737 } 761 }
  762 + if(cart_num>0){
  763 + if (in_zhact_gdmap[key]) {
  764 + in_zhact_gdmap[key] += ite.num;
  765 + } else {
  766 + in_zhact_gdmap[key] = ite.num;
  767 + }
  768 + }
  769 +
738 } 770 }
739 } 771 }
  772 + item_act_map.in_zhact_gdmap=in_zhact_gdmap;
740 return true; 773 return true;
741 } 774 }
742 return false; 775 return false;
pages/cart/cart/cart.js
@@ -49,9 +49,11 @@ Page({ @@ -49,9 +49,11 @@ Page({
49 ladder_map: {}, //阶梯促销需要的map 49 ladder_map: {}, //阶梯促销需要的map
50 50
51 promgoods_map: {}, 51 promgoods_map: {},
52 - promgoods_list: {}  
53 - 52 + promgoods_list: {},
54 53
  54 + in_zhact_gdmap_new: {}, //不同门店参与同一活动的限购,这些都是map表,是多促销互动专用,不能和in_zhact_gdmap重叠
  55 + in_zhact_new:{}, //组合购活动在列表中的显示 是多促销互动专用,不能和in_zhact重叠
  56 + in_yhact_new:{}, //组合购活动在列表中的显示 是多促销互动专用,不能和in_yhact重叠
55 57
56 }, 58 },
57 59
@@ -109,7 +111,6 @@ Page({ @@ -109,7 +111,6 @@ Page({
109 wx.setNavigationBarTitle({ 111 wx.setNavigationBarTitle({
110 title: "购物车", 112 title: "购物车",
111 }) 113 })
112 -  
113 //判断是否有登录 114 //判断是否有登录
114 t.auth.hadAuth() && t.getUserInfo(function () { 115 t.auth.hadAuth() && t.getUserInfo(function () {
115 //a.getCardList(); 116 //a.getCardList();
@@ -499,12 +500,10 @@ Page({ @@ -499,12 +500,10 @@ Page({
499 //按门店分类的数组 500 //按门店分类的数组
500 var arr = new Array(), carr = su.data.data.pageData; 501 var arr = new Array(), carr = su.data.data.pageData;
501 var all_num = 0; 502 var all_num = 0;
502 -  
503 - 503 +
504 if (carr && carr.length > 0) { 504 if (carr && carr.length > 0) {
505 var g_arr = []; 505 var g_arr = [];
506 for (var i = 0; i < carr.length; i++) { 506 for (var i = 0; i < carr.length; i++) {
507 -  
508 //-- 清理购物车的选中状态 -- 507 //-- 清理购物车的选中状态 --
509 var url = '/api/weshop/cart/update'; 508 var url = '/api/weshop/cart/update';
510 getApp().request.put(url, { 509 getApp().request.put(url, {
@@ -1100,7 +1099,6 @@ Page({ @@ -1100,7 +1099,6 @@ Page({
1100 } 1099 }
1101 }, 1100 },
1102 1101
1103 -  
1104 //删除商品 1102 //删除商品
1105 delete_th_item: function (t) { 1103 delete_th_item: function (t) {
1106 var e = this; 1104 var e = this;
@@ -1148,7 +1146,7 @@ Page({ @@ -1148,7 +1146,7 @@ Page({
1148 } 1146 }
1149 }, 1147 },
1150 1148
1151 - //-------------加数量--------------------- 1149 + //-------------加数量-------------
1152 addNum: function (t) { 1150 addNum: function (t) {
1153 if (!this.data.is_load) return false; 1151 if (!this.data.is_load) return false;
1154 if (this.data.up_dating == 1) return false; 1152 if (this.data.up_dating == 1) return false;
@@ -1206,8 +1204,6 @@ Page({ @@ -1206,8 +1204,6 @@ Page({
1206 return false; 1204 return false;
1207 } 1205 }
1208 1206
1209 -  
1210 -  
1211 if (1 != a.goods_num) { 1207 if (1 != a.goods_num) {
1212 var e = { 1208 var e = {
1213 goods_num: a.goods_num - 1, 1209 goods_num: a.goods_num - 1,
@@ -1342,16 +1338,19 @@ Page({ @@ -1342,16 +1338,19 @@ Page({
1342 1338
1343 this.data.btn_click = 1; 1339 this.data.btn_click = 1;
1344 1340
1345 -  
1346 -  
1347 var offline_price = 0; 1341 var offline_price = 0;
1348 var offline_num = 0; 1342 var offline_num = 0;
1349 - th.data.in_zhact_gdmap = {};  
1350 1343
  1344 + th.data.in_zhact_gdmap = {};
1351 1345
1352 if (dda && dda.length > 0) { 1346 if (dda && dda.length > 0) {
1353 for (var i = 0; i < dda.length; i++) { 1347 for (var i = 0; i < dda.length; i++) {
1354 var item = dda[i].goods; 1348 var item = dda[i].goods;
  1349 + var txt0 = "requestData[" + i + "].show_can_cx";
  1350 + e.setData({
  1351 + [txt0]: {},
  1352 + });
  1353 +
1355 1354
1356 if (e.data.checkAllToggle) { 1355 if (e.data.checkAllToggle) {
1357 var txt = "requestData[" + i + "].selected"; 1356 var txt = "requestData[" + i + "].selected";
@@ -1362,14 +1361,13 @@ Page({ @@ -1362,14 +1361,13 @@ Page({
1362 var fir = 0; 1361 var fir = 0;
1363 for (var j = 0; j < item.length; j++) { 1362 for (var j = 0; j < item.length; j++) {
1364 if (item[j].is_gift) continue; 1363 if (item[j].is_gift) continue;
1365 -  
1366 var obj = JSON.parse(JSON.stringify(item[j])); 1364 var obj = JSON.parse(JSON.stringify(item[j]));
1367 - //计算之前先移除组合购的计算  
1368 - if (obj.prom_type == 7)  
1369 - zh_calc.remove_zhprom(dda, i, obj);  
1370 - //计算之前先移除阶梯购的计算  
1371 - if (obj.prom_type == 10)  
1372 - ladder_calc.remove_ladder_prom(dda, i, obj); 1365 + // //计算之前先移除组合购的计算
  1366 + // if (obj.prom_type == 7)
  1367 + // zh_calc.remove_zhprom(dda, i, obj);
  1368 + // //计算之前先移除阶梯购的计算
  1369 + // if (obj.prom_type == 10)
  1370 + // ladder_calc.remove_ladder_prom(dda, i, obj);
1373 1371
1374 1372
1375 if (fir == 0) { 1373 if (fir == 0) {
@@ -1385,28 +1383,26 @@ Page({ @@ -1385,28 +1383,26 @@ Page({
1385 1383
1386 if (e.data.checkAllToggle) obj.goods_num = 0; 1384 if (e.data.checkAllToggle) obj.goods_num = 0;
1387 1385
1388 - //加入组合购计算  
1389 - if (obj.prom_type == 7) zh_calc.add_zhprom(dda, i, obj);  
1390 - //加入阶梯促销计算  
1391 - if (obj.prom_type == 10) ladder_calc.add_ladder_prom(dda, i, obj); 1386 + // //加入组合购计算
  1387 + // if (obj.prom_type == 7) zh_calc.add_zhprom(dda, i, obj);
  1388 + // //加入阶梯促销计算
  1389 + // if (obj.prom_type == 10) ladder_calc.add_ladder_prom(dda, i, obj);
1392 1390
1393 e.setData({ 1391 e.setData({
1394 -  
1395 [txt]: !e.data.checkAllToggle, 1392 [txt]: !e.data.checkAllToggle,
1396 }) 1393 })
1397 -  
1398 - if (!e.data.checkAllToggle) {  
1399 - //组合购的金额要另外算  
1400 - if (item[j].prom_type != 7 && item[j].prom_type != 10)  
1401 - tfeel += item[j].goods_num * item[j].goods_price;  
1402 - t_num += item[j].goods_num;  
1403 - }  
1404 -  
1405 - //-- 如果这个商品是线下取价的时候 --  
1406 - if (item[j].is_offline && item[j].prom_type != 7) {  
1407 - offline_price += (item[j].goods_price - item[j].offline_price) * item[j].goods_num;  
1408 - offline_num += item[j].goods_num;  
1409 - } 1394 + // if (!e.data.checkAllToggle) {
  1395 + // //组合购的金额要另外算
  1396 + // if (item[j].prom_type != 7 && item[j].prom_type != 10)
  1397 + // tfeel += item[j].goods_num * item[j].goods_price;
  1398 + // t_num += item[j].goods_num;
  1399 + // }
  1400 + //
  1401 + // //-- 如果这个商品是线下取价的时候 --
  1402 + // if (item[j].is_offline && item[j].prom_type != 7) {
  1403 + // offline_price += (item[j].goods_price - item[j].offline_price) * item[j].goods_num;
  1404 + // offline_num += item[j].goods_num;
  1405 + // }
1410 1406
1411 } 1407 }
1412 } 1408 }
@@ -1430,44 +1426,46 @@ Page({ @@ -1430,44 +1426,46 @@ Page({
1430 } 1426 }
1431 1427
1432 //总的价格,把组合商品的价格拿出来 1428 //总的价格,把组合商品的价格拿出来
1433 - var zh_calc_res = zh_calc.calculate_zh(dda, i, this);  
1434 - tfeel += zh_calc_res.tfeel;  
1435 - offline_price += zh_calc_res.offline_price;  
1436 - offline_num += zh_calc_res.offline_num;  
1437 -  
1438 - //总的价格,把阶梯促销的商品的价格拿出来  
1439 - var ladder_calc_res = ladder_calc.calculate_ladder(dda, i, this);  
1440 - tfeel += ladder_calc_res.tfeel;  
1441 - offline_price += ladder_calc_res.offline_price;  
1442 - offline_num += ladder_calc_res.offline_num;  
1443 -  
1444 - //当有线下取价的时候  
1445 - if (offline_price) {  
1446 - var txt1 = "requestData[" + i + "].offline_price";  
1447 - var txt2 = "requestData[" + i + "].offline_num";  
1448 - th.setData({  
1449 - [txt1]: offline_price.toFixed(2),  
1450 - [txt2]: offline_num,  
1451 - });  
1452 - } else {  
1453 - if (dda[i].offline_price > 0) {  
1454 - var txt1 = "requestData[" + i + "].offline_price";  
1455 - var txt2 = "requestData[" + i + "].offline_num";  
1456 - th.setData({  
1457 - [txt1]: 0,  
1458 - [txt2]: 0  
1459 - });  
1460 - }  
1461 - } 1429 + // var zh_calc_res = zh_calc.calculate_zh(dda, i, this);
  1430 + // tfeel += zh_calc_res.tfeel;
  1431 + // offline_price += zh_calc_res.offline_price;
  1432 + // offline_num += zh_calc_res.offline_num;
  1433 + //
  1434 + // //总的价格,把阶梯促销的商品的价格拿出来
  1435 + // var ladder_calc_res = ladder_calc.calculate_ladder(dda, i, this);
  1436 + // tfeel += ladder_calc_res.tfeel;
  1437 + // offline_price += ladder_calc_res.offline_price;
  1438 + // offline_num += ladder_calc_res.offline_num;
  1439 + //
  1440 + // //当有线下取价的时候
  1441 + // if (offline_price) {
  1442 + // var txt1 = "requestData[" + i + "].offline_price";
  1443 + // var txt2 = "requestData[" + i + "].offline_num";
  1444 + // th.setData({
  1445 + // [txt1]: offline_price.toFixed(2),
  1446 + // [txt2]: offline_num,
  1447 + // });
  1448 + // } else {
  1449 + // if (dda[i].offline_price > 0) {
  1450 + // var txt1 = "requestData[" + i + "].offline_price";
  1451 + // var txt2 = "requestData[" + i + "].offline_num";
  1452 + // th.setData({
  1453 + // [txt1]: 0,
  1454 + // [txt2]: 0
  1455 + // });
  1456 + // }
  1457 + // }
1462 } 1458 }
1463 1459
1464 e.setData({ 1460 e.setData({
1465 checkAllToggle: !e.data.checkAllToggle, 1461 checkAllToggle: !e.data.checkAllToggle,
1466 - total_fee: tfeel.toFixed(2),  
1467 - total_num: t_num, 1462 + // total_fee: tfeel.toFixed(2),
  1463 + // total_num: t_num,
1468 }); 1464 });
1469 1465
1470 - e.all_check_prom_activity(); 1466 + this.doCheckAll(function (){
  1467 + e.all_check_prom_activity();
  1468 + });
1471 1469
1472 } 1470 }
1473 } 1471 }
@@ -1595,34 +1593,60 @@ Page({ @@ -1595,34 +1593,60 @@ Page({
1595 title: '购买数量超出商品库存', 1593 title: '购买数量超出商品库存',
1596 icon: 'none', 1594 icon: 'none',
1597 }); 1595 });
1598 -  
1599 return false; 1596 return false;
1600 } 1597 }
1601 } 1598 }
1602 } 1599 }
1603 -  
1604 } 1600 }
1605 1601
1606 -  
1607 -  
1608 - e.setData({  
1609 - [txt]: Number(!sele),  
1610 - });  
1611 } 1602 }
1612 - var txt = "requestData[" + pitems + "].selected";  
1613 - e.setData({  
1614 - [txt]: Number(!sele),  
1615 - });  
1616 1603
1617 - e.data.duo_zp_num_arr = {};  
1618 - if (sele) {  
1619 - await e.check_prom_activity(pitems);  
1620 - }  
1621 - for (var i in e.data.requestData) {  
1622 - if (sele && i == pitems) continue;  
1623 - await e.check_prom_activity(i); 1604 + //-- 选择了什么商品,就用什么商品来判断 --
  1605 + var sele_arr={};
  1606 + for (var i = 0; i < item.length; i++) {
  1607 + sele_arr[i] = !sele;
1624 } 1608 }
1625 - this.doCheckAll(); 1609 +
  1610 + //-- 回调判断活动有没有冲突 --
  1611 + this.cx_check_ok(pitems,sele_arr,function (the_res) {
  1612 + if(the_res.code==0) {
  1613 +
  1614 +
  1615 + //-- 门店是所有的商品都要选择 --
  1616 + for (var i = 0; i < item.length; i++) {
  1617 + var txt0 = "requestData[" + pitems + "].goods[" + i + "].selected";
  1618 + e.setData({
  1619 + [txt0]: Number(!sele),
  1620 + });
  1621 + }
  1622 +
  1623 + //-- 门店按钮的选择 --
  1624 + var txt = "requestData[" + pitems + "].selected";
  1625 + e.setData({
  1626 + [txt]: Number(!sele),
  1627 + });
  1628 +
  1629 + th.doCheckAll(async function () {
  1630 +
  1631 +
  1632 +
  1633 + e.data.duo_zp_num_arr = {};
  1634 + if (sele) {
  1635 + await e.check_prom_activity(pitems);
  1636 + }
  1637 + for (var i in e.data.requestData) {
  1638 + if (sele && i == pitems) continue;
  1639 + await e.check_prom_activity(i);
  1640 + }
  1641 + });
  1642 + }else{
  1643 + wx.showToast({
  1644 + title: the_res.msg,
  1645 + icon: 'none',
  1646 + });
  1647 + }
  1648 + })
  1649 +
1626 }, 1650 },
1627 //---------------单选,也要判断门店的配送方式是否一致-------------- 1651 //---------------单选,也要判断门店的配送方式是否一致--------------
1628 check_th_item: async function (t) { 1652 check_th_item: async function (t) {
@@ -1721,26 +1745,45 @@ Page({ @@ -1721,26 +1745,45 @@ Page({
1721 } 1745 }
1722 } 1746 }
1723 } 1747 }
1724 -  
1725 - }  
1726 -  
1727 - if (a.prom_type == 3) {  
1728 - e.data.duo_zp_num_arr = {};  
1729 - if (!a.selected) {  
1730 - await e.check_prom_activity(pitems);  
1731 - }  
1732 - //判断商品是不是优惠活动  
1733 - for (var i in e.data.requestData) {  
1734 - if (!a.selected && i == pitems) continue;  
1735 - await e.check_prom_activity(i);  
1736 - }  
1737 } 1748 }
1738 1749
  1750 + var txt0 = "requestData[" + pitems + "].show_can_cx";
1739 e.setData({ 1751 e.setData({
1740 - [txt]: Number(!a.selected), 1752 + [txt0]: {},
1741 }); 1753 });
1742 1754
1743 - this.doCheckAll(); 1755 + //-- 选择了什么商品,就用什么商品来判断 --
  1756 + var sele_arr={};
  1757 + sele_arr[item]=!a.selected;
  1758 + //回调判断活动有没有冲突
  1759 + this.cx_check_ok(pitems,sele_arr,function (the_res){
  1760 + if(the_res.code==0){
  1761 + th.setData({
  1762 + [txt]: Number(!a.selected),
  1763 + });
  1764 + //要先处理了,再来判断要不要显示凑单
  1765 + th.doCheckAll(async function (){
  1766 + if (a.prom_type == 3) {
  1767 + e.data.duo_zp_num_arr = {};
  1768 + if (!a.selected) {
  1769 + await e.check_prom_activity(pitems);
  1770 + }
  1771 + //判断商品是不是优惠活动
  1772 + for (var i in e.data.requestData) {
  1773 + if (!a.selected && i == pitems) continue;
  1774 + await e.check_prom_activity(i);
  1775 + }
  1776 + }
  1777 +
  1778 + });
  1779 + }else{
  1780 + wx.showToast({
  1781 + title: the_res.msg,
  1782 + icon: 'none',
  1783 + });
  1784 + }
  1785 + })
  1786 +
1744 } 1787 }
1745 }, 1788 },
1746 1789
@@ -1831,7 +1874,7 @@ Page({ @@ -1831,7 +1874,7 @@ Page({
1831 }, 1874 },
1832 1875
1833 //----------检查是否全选--------- 1876 //----------检查是否全选---------
1834 - doCheckAll:async function () { 1877 + doCheckAll:async function (func) {
1835 var th = this, 1878 var th = this,
1836 tfeel = 0, 1879 tfeel = 0,
1837 t_num = 0, 1880 t_num = 0,
@@ -1841,6 +1884,11 @@ Page({ @@ -1841,6 +1884,11 @@ Page({
1841 all_num = 0; 1884 all_num = 0;
1842 1885
1843 1886
  1887 + //-- 如果是全部的时候,就要把它清理掉 --
  1888 + this.data.in_zhact_gdmap_new={};
  1889 + this.data.in_zhact_new={};
  1890 + this.data.in_yhact_new={};
  1891 +
1844 //-- 购物车 -- 1892 //-- 购物车 --
1845 if (car && car.length > 0) { 1893 if (car && car.length > 0) {
1846 th.data.in_zhact_gdmap = {}; 1894 th.data.in_zhact_gdmap = {};
@@ -1848,7 +1896,7 @@ Page({ @@ -1848,7 +1896,7 @@ Page({
1848 1896
1849 var item = car[a].goods, is_s_sele = 1; 1897 var item = car[a].goods, is_s_sele = 1;
1850 //-- 先批量判断一下活动的类型,同时要同步跟新 -- 1898 //-- 先批量判断一下活动的类型,同时要同步跟新 --
1851 - await th.cart_cx_group(item,car[a],(show_can_cx)=>{ 1899 + await th.cart_cx_group(item,car[a],1,(show_can_cx)=>{
1852 var offline_price = 0; 1900 var offline_price = 0;
1853 var offline_num = 0; 1901 var offline_num = 0;
1854 for (var c = 0; c < item.length; c++) { 1902 for (var c = 0; c < item.length; c++) {
@@ -1949,11 +1997,10 @@ Page({ @@ -1949,11 +1997,10 @@ Page({
1949 } 1997 }
1950 } 1998 }
1951 }); 1999 });
1952 -  
1953 -  
1954 } 2000 }
1955 //-- 切换活动的按钮要把他返回 -- 2001 //-- 切换活动的按钮要把他返回 --
1956 this.data.change_act=0; 2002 this.data.change_act=0;
  2003 + if(func) func();
1957 } 2004 }
1958 2005
1959 //-- 服务卡 -- 2006 //-- 服务卡 --
@@ -1975,14 +2022,10 @@ Page({ @@ -1975,14 +2022,10 @@ Page({
1975 } 2022 }
1976 2023
1977 } 2024 }
1978 -  
1979 var txt = "service_data[" + a + "].selected"; 2025 var txt = "service_data[" + a + "].selected";
1980 th.setData({ 2026 th.setData({
1981 [txt]: Number(is_s_sele) 2027 [txt]: Number(is_s_sele)
1982 }); 2028 });
1983 -  
1984 -  
1985 -  
1986 } 2029 }
1987 } 2030 }
1988 2031
@@ -2016,7 +2059,9 @@ Page({ @@ -2016,7 +2059,9 @@ Page({
2016 e.setData({ 2059 e.setData({
2017 [txt]: store_count 2060 [txt]: store_count
2018 }); 2061 });
  2062 +
2019 e.doCheckAll(); 2063 e.doCheckAll();
  2064 +
2020 t.goods_num = store_count; 2065 t.goods_num = store_count;
2021 } 2066 }
2022 e.update_cart(t, pitem, item); 2067 e.update_cart(t, pitem, item);
@@ -2547,8 +2592,6 @@ Page({ @@ -2547,8 +2592,6 @@ Page({
2547 }; 2592 };
2548 }, 2593 },
2549 2594
2550 -  
2551 -  
2552 //---检验线下库存的数量--- 2595 //---检验线下库存的数量---
2553 async check_down_line(t, pitem, item, erpwareid) { 2596 async check_down_line(t, pitem, item, erpwareid) {
2554 var ob = {}, 2597 var ob = {},
@@ -4162,10 +4205,9 @@ Page({ @@ -4162,10 +4205,9 @@ Page({
4162 }, 4205 },
4163 4206
4164 //-- 判读一下促销分组的问题 -- 4207 //-- 判读一下促销分组的问题 --
4165 - async cart_cx_group(goods,car_item,func){  
4166 - 4208 + async cart_cx_group(goods,car_item,is_need_ck_num,func){
4167 //更改活动的时候,就不能再重新计算活动,只有再加减数量和选择商品的时候,就要重新计算活动 4209 //更改活动的时候,就不能再重新计算活动,只有再加减数量和选择商品的时候,就要重新计算活动
4168 - if(this.data.change_act){ 4210 + if(this.data.change_act || (car_item.show_can_cx && Object.keys(car_item.show_can_cx).length>0)){
4169 var show_can_cx=car_item.show_can_cx; 4211 var show_can_cx=car_item.show_can_cx;
4170 for(var k in show_can_cx){ 4212 for(var k in show_can_cx){
4171 var k_item=show_can_cx[k]; 4213 var k_item=show_can_cx[k];
@@ -4244,7 +4286,7 @@ Page({ @@ -4244,7 +4286,7 @@ Page({
4244 }else{ 4286 }else{
4245 var p_item={key:key,prom_type:n_item.prom_type,prom_id:n_item.prom_id,goods:[],act:n_item}; 4287 var p_item={key:key,prom_type:n_item.prom_type,prom_id:n_item.prom_id,goods:[],act:n_item};
4246 if(n_item.prom_type==7){ 4288 if(n_item.prom_type==7){
4247 - p_item.zh_act=n_item.zh_pro; 4289 + p_item.zh_pro=n_item.zh_pro;
4248 } 4290 }
4249 p_item.goods.push(c_item); 4291 p_item.goods.push(c_item);
4250 cx_act_map.push(p_item); 4292 cx_act_map.push(p_item);
@@ -4277,6 +4319,34 @@ Page({ @@ -4277,6 +4319,34 @@ Page({
4277 } 4319 }
4278 switch(item_act_map.prom_type){ 4320 switch(item_act_map.prom_type){
4279 case 3: 4321 case 3:
  4322 + //活动ID
  4323 + var aid=item_act_map.prom_id;
  4324 + var need_num=0;
  4325 + //-- 这个时候要判断是不是要判断优惠促销多门店的时候的限购 --
  4326 + if(is_need_ck_num){
  4327 + need_num=th.data.in_yhact_new[aid]?th.data.in_yhact_new[aid]:0;
  4328 + }
  4329 + //-- 判断优惠促销要不要限购 --
  4330 + var fd=null;
  4331 + var fd_res = await getApp().request.promiseGet('/api/weshop/promgoods/get/'+os.stoid+'/'+ky0,{})
  4332 + if(fd_res && fd_res.data.code==0 ){
  4333 + fd=fd_res.data.data;
  4334 + }
  4335 + //如果有限购的时候,也要计算一下
  4336 + if (fd && fd['limit_num'] > 0){
  4337 + //-- 获取已经购买了多少件 --
  4338 + var url = "/api/weshop/ordergoods/getUserBuyPromNum?store_id="+os.stoid+"&user_id="
  4339 + +getApp().globalData.user_id+"&prom_type=3&prom_id="+zh_pro0.id;
  4340 + await getApp().request.promiseGet(url, {}).then(rh => {
  4341 + if(rh.data.code==0){
  4342 + item_act_map.buyed=rh.data.data.userbuynum;
  4343 + }
  4344 + })
  4345 + if(item_act_map.buyed+need_num>=fd['limit_num']){
  4346 + continue; //-- 进行下一个循环 --
  4347 + }
  4348 + }
  4349 +
4280 var fir_act=item_act_map.act.fir_act; 4350 var fir_act=item_act_map.act.fir_act;
4281 var t_goods=item_act_map.goods; 4351 var t_goods=item_act_map.goods;
4282 var all_num=0; 4352 var all_num=0;
@@ -4285,7 +4355,6 @@ Page({ @@ -4285,7 +4355,6 @@ Page({
4285 all_num+=t_goods[f].goods_num; 4355 all_num+=t_goods[f].goods_num;
4286 all_pri+=t_goods[f].goods_num*t_goods[f].goods_price; 4356 all_pri+=t_goods[f].goods_num*t_goods[f].goods_price;
4287 } 4357 }
4288 -  
4289 var yh_ok=1; 4358 var yh_ok=1;
4290 switch (fir_act.prom_type){ 4359 switch (fir_act.prom_type){
4291 case 0: 4360 case 0:
@@ -4299,7 +4368,6 @@ Page({ @@ -4299,7 +4368,6 @@ Page({
4299 } 4368 }
4300 break; 4369 break;
4301 } 4370 }
4302 -  
4303 //-- 如果有满足优惠条件的时候 -- 4371 //-- 如果有满足优惠条件的时候 --
4304 if(yh_ok){ 4372 if(yh_ok){
4305 can_calc_cx.push(item_act_map) 4373 can_calc_cx.push(item_act_map)
@@ -4310,7 +4378,6 @@ Page({ @@ -4310,7 +4378,6 @@ Page({
4310 //-- 活动列表 -- 4378 //-- 活动列表 --
4311 var zhact_gdlist=item_act_map.act.gdlist; 4379 var zhact_gdlist=item_act_map.act.gdlist;
4312 var zh_goods=item_act_map.goods; 4380 var zh_goods=item_act_map.goods;
4313 -  
4314 //--- 要循环计算一下商品的已购数量 --- 4381 //--- 要循环计算一下商品的已购数量 ---
4315 for(var h=0;h<zh_goods.length;h++){ 4382 for(var h=0;h<zh_goods.length;h++){
4316 //-- 商品的限购 -- 4383 //-- 商品的限购 --
@@ -4329,20 +4396,23 @@ Page({ @@ -4329,20 +4396,23 @@ Page({
4329 } 4396 }
4330 zh_goods[h].zh_b_num=promgoodsbuynum; 4397 zh_goods[h].zh_b_num=promgoodsbuynum;
4331 } 4398 }
4332 - //-- 放到map中 -- 4399 + //-- 放到参与组合优惠促销的map中 --
4333 th.data.zuhe_map_good[item_act_map.prom_id] = zhact_gdlist; 4400 th.data.zuhe_map_good[item_act_map.prom_id] = zhact_gdlist;
4334 if(!car_item.zh_prom_goods) car_item.zh_prom_goods={}; 4401 if(!car_item.zh_prom_goods) car_item.zh_prom_goods={};
4335 car_item.zh_prom_goods[item_act_map.prom_id] = zhact_gdlist; 4402 car_item.zh_prom_goods[item_act_map.prom_id] = zhact_gdlist;
4336 4403
4337 - var zh_pro0 = null; 4404 + var zh_pro0 = th.data.zuhe_map[item_act_map.prom_id];
  4405 +
4338 //-- 获取活动信息 -- 4406 //-- 获取活动信息 --
4339 - var url = "/api/weshop/prom/zhbuy/get/" + os.stoid + "/" + item_act_map.prom_id + "/" + getApp().globalData.user_id; 4407 + var url = "/api/weshop/ordergoods/getUserBuyPromNum?store_id="+os.stoid+"&user_id="
  4408 + +getApp().globalData.user_id+"&prom_type=7&prom_id="+zh_pro0.id;
4340 await getApp().request.promiseGet(url, {}).then(rh => { 4409 await getApp().request.promiseGet(url, {}).then(rh => {
4341 - zh_pro0 = rh.data.data; 4410 + if(rh.data.code==0){
  4411 + item_act_map.buyed=rh.data.data.userbuynum;
  4412 + }
4342 }) 4413 })
4343 - if(!zh_pro0) break;  
4344 //当满足组合的要求:总数要满足,起购数要满足 4414 //当满足组合的要求:总数要满足,起购数要满足
4345 - if(zh_calc.ch_zh_ok(zh_pro0,zhact_gdlist,zh_goods,th)){ 4415 + if(zh_calc.ch_zh_ok(zh_pro0,zhact_gdlist,zh_goods,th,item_act_map,is_need_ck_num)){
4346 can_calc_cx.push(item_act_map) 4416 can_calc_cx.push(item_act_map)
4347 } 4417 }
4348 break; 4418 break;
@@ -4355,8 +4425,8 @@ Page({ @@ -4355,8 +4425,8 @@ Page({
4355 //-- 此时来给满足条件的活动进行分组~~相同参与商品和数量的归纳再一起, -- 4425 //-- 此时来给满足条件的活动进行分组~~相同参与商品和数量的归纳再一起, --
4356 //-- 同时相同商品数量的活动,还要看取那一个来进行计算金额。 默认的时候是按照后台的顺序。-- 4426 //-- 同时相同商品数量的活动,还要看取那一个来进行计算金额。 默认的时候是按照后台的顺序。--
4357 //-- 有选择的时候,就按照切换选择了什么就按照什么来计算 -- 4427 //-- 有选择的时候,就按照切换选择了什么就按照什么来计算 --
  4428 + //-- can_calc_cx的元素(item_act_map)最后是放到act_arr里面去了 --
4358 var show_can_cx={}; 4429 var show_can_cx={};
4359 -  
4360 if(can_calc_cx.length){ 4430 if(can_calc_cx.length){
4361 for(var p=0;p<can_calc_cx.length;p++){ 4431 for(var p=0;p<can_calc_cx.length;p++){
4362 var ch_map=[]; 4432 var ch_map=[];
@@ -4415,7 +4485,33 @@ Page({ @@ -4415,7 +4485,33 @@ Page({
4415 4485
4416 } 4486 }
4417 //-- 此时已经确定了商品的活动是什么类型的,可以确定购物车中商品的具体活动进行金额的计算 -- 4487 //-- 此时已经确定了商品的活动是什么类型的,可以确定购物车中商品的具体活动进行金额的计算 --
4418 - if(!ck_prom_type) ck_prom_type=k_item.act_arr[0]; 4488 + if(!ck_prom_type){
  4489 + ck_prom_type=k_item.act_arr[0];
  4490 + k_item.act_arr[0].sele=1;
  4491 + }
  4492 +
  4493 + //-- 如果是要控制数量的时候,也就是全选的时候,或者加减号的时候 --
  4494 + if(is_need_ck_num){
  4495 + var t_pid=ck_prom_type.prom_id;
  4496 + switch (ck_prom_type.prom_type){
  4497 + case 3:
  4498 + if(!th.data.in_yhact_new[t_pid]) th.data.in_yhact_new[t_pid]=0;
  4499 + th.data.in_yhact_new[t_pid]++;
  4500 + break;
  4501 + case 7:
  4502 + if(!th.data.in_zhact_new[t_pid]) th.data.in_zhact_new[t_pid]=0;
  4503 + th.data.in_zhact_new[t_pid]+=ck_prom_type.act_num;
  4504 + //-- 数组的优化 --
  4505 + var nei_gd_map=ck_prom_type.in_zhact_gdmap;
  4506 + if(nei_gd_map){
  4507 + for (var vg in nei_gd_map) {
  4508 + if (!th.data.in_zhact_gdmap_new[vg]) th.data.in_zhact_gdmap_new[vg] = 0;
  4509 + th.data.in_zhact_gdmap_new[vg] += nei_gd_map[vg];
  4510 + }
  4511 + }
  4512 + break;
  4513 + }
  4514 + }
4419 //-- 此时要把购物车中的商品确定活动 -- 4515 //-- 此时要把购物车中的商品确定活动 --
4420 for (var b=0; b<ck_prom_type.goods.length;b++){ 4516 for (var b=0; b<ck_prom_type.goods.length;b++){
4421 //-- 开始查找 -- 4517 //-- 开始查找 --
@@ -4428,11 +4524,11 @@ Page({ @@ -4428,11 +4524,11 @@ Page({
4428 } 4524 }
4429 } 4525 }
4430 } 4526 }
4431 -  
4432 //-- 显示到前端,并切换 -- 4527 //-- 显示到前端,并切换 --
4433 //th.setData({show_can_cx}) 4528 //th.setData({show_can_cx})
4434 //--- 调用回调函数 --- 4529 //--- 调用回调函数 ---
4435 func(show_can_cx); 4530 func(show_can_cx);
  4531 +
4436 }, 4532 },
4437 //-- 查看活动参与的商品是不是有重复交集的地方,是不是一样的商品数量,can_calc_cx这个数组也是按照商品的数量降序排列的-- 4533 //-- 查看活动参与的商品是不是有重复交集的地方,是不是一样的商品数量,can_calc_cx这个数组也是按照商品的数量降序排列的--
4438 check_ok_cx_pro(item_act_map,can_calc_cx){ 4534 check_ok_cx_pro(item_act_map,can_calc_cx){
@@ -4496,20 +4592,183 @@ Page({ @@ -4496,20 +4592,183 @@ Page({
4496 4592
4497 //--- 选择回来时候的选择 --- 4593 //--- 选择回来时候的选择 ---
4498 sure_cx_group:function(e){ 4594 sure_cx_group:function(e){
  4595 + var th=this;
4499 var sele_idx=e.detail.sele_idx; 4596 var sele_idx=e.detail.sele_idx;
4500 var idx=this.data.sele_cx_group_cidx; 4597 var idx=this.data.sele_cx_group_cidx;
4501 var gd_key= this.data.cx_group_gd_key; 4598 var gd_key= this.data.cx_group_gd_key;
4502 //-- 获取到-- 4599 //-- 获取到--
4503 var cx_prom_group=this.data.requestData[idx].show_can_cx[gd_key].act_arr; 4600 var cx_prom_group=this.data.requestData[idx].show_can_cx[gd_key].act_arr;
4504 4601
  4602 + var fir_sele=0;
  4603 +
4505 for(var dx=0;dx<cx_prom_group.length;dx++){ 4604 for(var dx=0;dx<cx_prom_group.length;dx++){
  4605 + if(cx_prom_group[dx].sele) fir_sele=dx;
4506 if(dx!=sele_idx) cx_prom_group[dx].sele=0; 4606 if(dx!=sele_idx) cx_prom_group[dx].sele=0;
4507 else cx_prom_group[dx].sele=1; 4607 else cx_prom_group[dx].sele=1;
4508 } 4608 }
4509 4609
4510 - this.data.change_act=1;  
4511 - this.doCheckAll(); 4610 + this.cx_check_ok2(function (the_rs){
  4611 + if(the_rs.code==0){
  4612 + th.data.change_act=1;
  4613 + th.doCheckAll();
  4614 + }else{
  4615 + wx.showToast({
  4616 + title: the_rs.msg,
  4617 + icon: 'none',
  4618 + duration:2500
  4619 + });
  4620 +
  4621 + for(var dx=0;dx<cx_prom_group.length;dx++){
  4622 + if(dx!=fir_sele) cx_prom_group[dx].sele=0;
  4623 + else cx_prom_group[dx].sele=1;
  4624 + }
  4625 +
  4626 + }
  4627 + })
4512 4628
  4629 + },
  4630 +
  4631 + //--- 在点击商品和或者门店的时候调用,c_idx是购物车下标序号---
  4632 + async cx_check_ok(c_idx,sele_arr,func){
  4633 +
  4634 + var th=this;
  4635 + var car =JSON.parse(JSON.stringify(this.data.requestData));
  4636 + var item = car[c_idx].goods, is_s_sele = 1;
  4637 +
  4638 + var is_has_other=0;
  4639 + for(var ii=0;ii<car.length;ii++){
  4640 + if(c_idx==ii) continue;
  4641 + if(car[ii].show_can_cx && Object.keys(car[ii].show_can_cx).length){
  4642 + is_has_other=1; break;
  4643 + }
  4644 + }
  4645 +
  4646 + //其他门店并没有选择
  4647 + if(!is_has_other){
  4648 + func({'code': 0, 'msg': '成功'});
  4649 + return false;
  4650 + }
  4651 + //-- 让选择进入对应 --
  4652 + for(var i=0;i<item.length;i++){
  4653 + if(sele_arr.hasOwnProperty(i)){
  4654 + item[i].selected=sele_arr[i];
  4655 + }
  4656 + }
  4657 + //-- 先批量判断一下活动的类型,同时要同步跟新 --
  4658 + this.cart_cx_group(item,car[c_idx],0,(show_can_cx)=>{
  4659 + car[c_idx].show_can_cx=show_can_cx;
  4660 + th.cx_check_ok2(func,car);
  4661 + });
  4662 +
  4663 +
  4664 + },
  4665 +
  4666 + //--- 在点击商品和或者门店的时候调用,这个可以在活动切换的时候调用,也可以被单个选择调用---
  4667 + async cx_check_ok2(func,car) {
  4668 +
  4669 + //如果购物车没有带入,要进行赋值
  4670 + if(!car) {
  4671 + car = JSON.parse(JSON.stringify(this.data.requestData));
  4672 + }
  4673 +
  4674 + var nei_in_zhact_gdmap = {};
  4675 + var nei_in_zhact = {};
  4676 + var nei_in_yhact = {};
  4677 + for (var i = 0; i < car.length; i++) {
  4678 + var show_can_cx = car[i].show_can_cx;
  4679 + for (var j in show_can_cx) {
  4680 + var sele_act = show_can_cx[j].act_arr.find(function (m) {
  4681 + return m.sele == 1;
  4682 + })
  4683 +
  4684 + if (!sele_act) continue;
  4685 + var pid = sele_act['prom_id'];
  4686 + if (sele_act['prom_type'] == 3) {
  4687 + if(!nei_in_yhact[pid]) nei_in_yhact[pid] = 0;
  4688 + nei_in_yhact[pid]++;
  4689 + }
  4690 + if (sele_act['prom_type'] == 7) {
  4691 + if(!nei_in_zhact[pid]) nei_in_zhact[pid] = 0;
  4692 + nei_in_zhact[pid] += sele_act['act_num'];
  4693 + }
  4694 + var in_zhact_gdmap1 = sele_act['in_zhact_gdmap'];
  4695 + for (var vg in in_zhact_gdmap1) {
  4696 + if (!nei_in_zhact_gdmap[vg]) nei_in_zhact_gdmap[vg] = 0;
  4697 + nei_in_zhact_gdmap[vg] += in_zhact_gdmap1[vg];
  4698 + }
  4699 + }
  4700 + }
  4701 +
  4702 + //-- 判断优惠促销是不是超出限购 --
  4703 + if (nei_in_yhact && Object.keys(nei_in_yhact).length) {
  4704 + for (var ky0 in nei_in_yhact) {
  4705 + var num = nei_in_yhact[ky0];
  4706 +
  4707 + var fd=null;
  4708 + var fd_res = await getApp().request.promiseGet('/api/weshop/promgoods/get/'+os.stoid+'/'+ky0,{})
  4709 + if(fd_res && fd_res.data.code==0 ){
  4710 + fd=fd_res.data.data;
  4711 + }
  4712 + if (fd && fd['limit_num'] > 0 && num > fd['limit_num']) {
  4713 + func({'code': -1, 'msg': '超出优惠促销活动的限购'});
  4714 + return false;
  4715 + }
  4716 + }
  4717 + }
  4718 +
  4719 + //-- 判断组合促销是不是超出活动总数量 --
  4720 + if (nei_in_zhact && Object.keys(nei_in_zhact).length) {
  4721 + for (var ky in nei_in_zhact) {
  4722 +
  4723 + var num0 = nei_in_zhact[ky];
  4724 + var zh = this.data.zuhe_map[ky];
  4725 + var buyed=0;
  4726 +
  4727 + //获取已经购买了多少件
  4728 + var z_url = "/api/weshop/ordergoods/getUserBuyPromNum?store_id="+os.stoid+"user_id="+getApp().globalData.user_id+"prom_type=7&prom_id="+ky;
  4729 + var zbuy=await getApp().request.promiseGet(z_url,{});
  4730 + if(zbuy && zbuy.data.code==0){
  4731 + buyed=zbuy.data.data.userbuynum;
  4732 + }
  4733 + if (zh['zh_num'] > 0 && zh['zh_buy_num'] + num0 > zh['zh_num']) {
  4734 + func({'code': -1, 'msg': '超出组合购活动总数量'});
  4735 + return false;
  4736 + }
  4737 + }
  4738 + }
  4739 +
  4740 + //-- 判断组合促销是不是超出活动总数量 --
  4741 + if (nei_in_zhact_gdmap && Object.keys(nei_in_zhact_gdmap).length) {
  4742 + for (var key in nei_in_zhact_gdmap) {
  4743 +
  4744 + var num1 = nei_in_zhact_gdmap[key];
  4745 + var key_a = key.split('.');
  4746 + var gid = key_a[0];
  4747 + var pid = key_a[1];
  4748 +
  4749 + //-- 商品的限购 --
  4750 + var promgoodsbuynum = 0;
  4751 + var rq = {
  4752 + 'store_id': os.stoid, 'user_id': getApp().globalData.user_id, 'goods_id': gid,
  4753 + 'prom_type': 7, 'prom_id': pid
  4754 + };
  4755 +
  4756 + var res = await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", {data: rq});
  4757 + if (res && res.data.code == 0) {
  4758 + promgoodsbuynum = res.data.data.promgoodsbuynum;
  4759 + }
  4760 +
  4761 + var gdlist_arr = this.data.zuhe_map_good[pid];
  4762 + var gdlist = gdlist_arr.find(function (e) {
  4763 + return e.goods_id == gid;
  4764 + })
  4765 + if (gdlist['buyqty'] > 0 && num1 + promgoodsbuynum > gdlist['buyqty']) {
  4766 + func({'code': -1, 'msg': '超出组合购商品的限购'});
  4767 + return false;
  4768 + }
  4769 + }
  4770 + }
  4771 + func({'code': 0, 'msg': '成功'})
4513 } 4772 }
4514 4773
4515 4774
pages/cart/cart/zh_calculate.js
@@ -522,7 +522,8 @@ module.exports = { @@ -522,7 +522,8 @@ module.exports = {
522 }, 522 },
523 523
524 //-- 判断组合购有没有满足,只有在检查的时候,要用新的 --- 524 //-- 判断组合购有没有满足,只有在检查的时候,要用新的 ---
525 - ch_zh_ok(act,gdlist,c_goods,th){ 525 + ch_zh_ok(act,gdlist,c_goods,th,item_act_map,is_need_ck_num){
  526 +
526 //-- 寻找一下 -- 527 //-- 寻找一下 --
527 function get_num(ite) { 528 function get_num(ite) {
528 for (let v1 in c_goods) { 529 for (let v1 in c_goods) {
@@ -536,6 +537,47 @@ module.exports = { @@ -536,6 +537,47 @@ module.exports = {
536 var goods =gdlist; 537 var goods =gdlist;
537 var all_num=0; 538 var all_num=0;
538 var need_to_buy=0; 539 var need_to_buy=0;
  540 + var all_zhqty=0;
  541 + //-- 是综合考虑到组合购的总数量和限购数量 --
  542 + var min_can_buy=-1;
  543 + var aid=act.id;
  544 +
  545 + let no_in_arr = []; //剩余的未加入组合购
  546 + let out_arr = []; //超出活动限购的商品放入
  547 +
  548 + //-- 判断组合购的总数量是不是到了 --
  549 + if(act.zh_num>0){
  550 + //如果是在全选的情况下,那么就需要in_zhact_new来控制数量
  551 + var need_ck=0;
  552 + if(is_need_ck_num){
  553 + need_ck=th.data.in_zhact_new[aid]?th.data.in_zhact_new[aid]:0;
  554 + }
  555 + if(need_ck+act.zh_buy_num>=act.zh_num ){
  556 + return false;
  557 + }else{
  558 + min_can_buy= act.zh_num-act.zh_buy_num-need_ck;
  559 + }
  560 + }
  561 +
  562 + //-- 判断组合购的限购是不是到了 --
  563 + if(act.buy_limit>0){
  564 + var need_ck0=0;
  565 + if(is_need_ck_num){
  566 + need_ck0=th.data.in_zhact_new[aid]?th.data.in_zhact_new[aid]:0;
  567 + }
  568 + var min_can_buy0=0;
  569 + if(need_ck+item_act_map.buyed>=act.buy_limit ){
  570 + return false;
  571 + }else{
  572 + min_can_buy0=act.buy_limit-item_act_map.buyed-need_ck;
  573 + }
  574 + if(min_can_buy>0){
  575 + if(min_can_buy0<min_can_buy) min_can_buy=min_can_buy0;
  576 + }else{
  577 + min_can_buy=min_can_buy0;
  578 + }
  579 + }
  580 +
539 for (var i in goods) { 581 for (var i in goods) {
540 var item = goods[i]; 582 var item = goods[i];
541 var cart_num = get_num(item).goods_num; 583 var cart_num = get_num(item).goods_num;
@@ -552,16 +594,24 @@ module.exports = { @@ -552,16 +594,24 @@ module.exports = {
552 if (item.buyqty > 0) { 594 if (item.buyqty > 0) {
553 var cbuy = item.buyqty - zh_b_num; 595 var cbuy = item.buyqty - zh_b_num;
554 var key = item.goods_id + "." + act.id; 596 var key = item.goods_id + "." + act.id;
555 - if (th.data.in_zhact_gdmap[key]) {  
556 - var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap[key]; 597 + if (is_need_ck_num && th.data.in_zhact_gdmap_new[key]) {
  598 + var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap_new[key];
557 } 599 }
558 //当可买的数量为0 600 //当可买的数量为0
559 if (cbuy <= 0) { 601 if (cbuy <= 0) {
560 item.num = 0; 602 item.num = 0;
  603 + out_arr.push({
  604 + goods_id: item.goods_id,
  605 + num: cart_num
  606 + })
561 } else { 607 } else {
562 if (cbuy >= cart_num) item.num = cart_num; 608 if (cbuy >= cart_num) item.num = cart_num;
563 else { 609 else {
564 item.num = cbuy; 610 item.num = cbuy;
  611 + out_arr.push({
  612 + goods_id: item.goods_id,
  613 + num: cart_num - cbuy
  614 + })
565 } 615 }
566 } 616 }
567 } else { 617 } else {
@@ -572,9 +622,24 @@ module.exports = { @@ -572,9 +622,24 @@ module.exports = {
572 all_num += item.num; 622 all_num += item.num;
573 //当有起购数的控制的时候 623 //当有起购数的控制的时候
574 if (item.zhqty) { 624 if (item.zhqty) {
  625 + all_zhqty += item.zhqty;
575 if (item.num < item.zhqty) { 626 if (item.num < item.zhqty) {
576 need_to_buy += item.zhqty - item.num; 627 need_to_buy += item.zhqty - item.num;
577 } 628 }
  629 + if (item.num > item.zhqty) {
  630 + for (let i = 0; i < item.num - item.zhqty; i++) {
  631 + no_in_arr.push({
  632 + goods_id: item.goods_id,
  633 + })
  634 + }
  635 + }
  636 + }
  637 + else {
  638 + for (let j = 0; j < item.num; j++) {
  639 + no_in_arr.push({
  640 + goods_id: item.goods_id,
  641 + })
  642 + }
578 } 643 }
579 } else { 644 } else {
580 if (item.zhqty) { 645 if (item.zhqty) {
@@ -585,19 +650,141 @@ module.exports = { @@ -585,19 +650,141 @@ module.exports = {
585 650
586 //当满足组合的要求:总数要满足,起购数要满足 651 //当满足组合的要求:总数要满足,起购数要满足
587 if (all_num >= act.zhbuyqty && !need_to_buy) { 652 if (all_num >= act.zhbuyqty && !need_to_buy) {
  653 + //默认数量是1
  654 + var act_num=1;
  655 + function sortData(a, b) {
  656 + return a.price - b.price
  657 + }
  658 + if (no_in_arr.length > 0) no_in_arr.sort(sortData);
  659 + if (act.zhbuyqty > all_zhqty) {
  660 + for (let n = 0; n < act.zhbuyqty - all_zhqty; n++) {
  661 + no_in_arr.pop();
  662 + }
  663 + }
  664 +
  665 + //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增
  666 + if (act.is_bz && no_in_arr.length >= act.zhbuyqty) {
  667 +
  668 + var bz_num_ok = 0; //超量倍增是否满足
  669 + var zhqty_len = 0; //几个超量倍增
  670 + var delete_num = 0;
  671 + //看一下是几倍
  672 + let be = parseInt(no_in_arr.length / act.zhbuyqty);
  673 + //如果有总数控制的时候
  674 + if (min_can_buy>0) {
  675 + var be1 = min_can_buy - 1;
  676 + if (be1 < be) be = be1;
  677 + }
  678 + if(be) {
  679 + if (act.is_bzyh && zhqty_bz.length > 0) {
  680 +
  681 + let zhqty_bz_arr = [];
  682 + let zhqty_bz_flag = this.zhqty_bz_fun(zhqty_bz, be, zhqty_bz_arr);
  683 + if (zhqty_bz_flag) {
  684 + for (let i = 0; i < zhqty_bz.length; i++) {
  685 + var vv = zhqty_bz[i];
  686 + for (let j = 0; j < be * vv['zhqty']; j++) {
  687 + let index = no_in_arr.findIndex(i => {
  688 + return vv.goods_id === i.goods_id
  689 + })
  690 + if (index > -1) {
  691 + delete_num++
  692 + no_in_arr.splice(index, 1)
  693 + }
  694 + }
  695 + }
  696 + } else {
  697 + zhqty_len = 1;
  698 + let min_bz_num = Math.min.apply(Math, zhqty_bz_arr.map(function (o) {
  699 + return o['be'];
  700 + }));
  701 + let new_arr = zhqty_bz_arr.filter(ii => {
  702 + return ii['be'] == min_bz_num;
  703 + })
  704 + //-- 要看一下倍数还有没有 ---
  705 + be = new_arr[0].be;
  706 + //如果有总数控制的时候
  707 + if (min_can_buy>0) {
  708 + var be1 = min_can_buy - 1;
  709 + if (be1 < be) be = be1;
  710 + }
  711 + if(be){
  712 + for (let i = 0; i < zhqty_bz.length; i++) {
  713 + let item1 = zhqty_bz[i];
  714 + for (let j = 0; j < be * item1['zhqty']; j++) {
  715 + let index = no_in_arr.findIndex(i => {
  716 + return item1.goods_id === i.goods_id
  717 + })
  718 + if (index > -1) {
  719 + no_in_arr.splice(index, 1)
  720 + }
  721 + }
  722 + }
  723 + act_num+=be;
  724 + }
  725 + }
  726 + }
  727 + if (!zhqty_len) {
  728 + let pop_num = be * act.zhbuyqty - delete_num;
  729 + for (var m = 0; m < pop_num; m++) {
  730 + no_in_arr.pop();
  731 + }
  732 + act_num+=be;
  733 + }
  734 + }
  735 + }
  736 +
  737 + //-- 参与活动的金额要返回回去 --
  738 + item_act_map.act_num=act_num;
  739 + let goods_map = {};
  740 + //算一下剩余的商品
  741 + if (no_in_arr.length) {
  742 + for (let ii in no_in_arr) {
  743 + let item = no_in_arr[ii];
  744 + if (goods_map[item.goods_id]) {
  745 + var num = goods_map[item.goods_id];
  746 + goods_map[item.goods_id] = ++num;
  747 + } else {
  748 + goods_map[item.goods_id] = 1;
  749 + }
  750 + }
  751 + }
  752 + //超量的部分也要计算一下
  753 + if (out_arr.length) {
  754 + for (var m in out_arr) {
  755 + if (goods_map[item.goods_id]) {
  756 + var num = goods_map[item.goods_id];
  757 + num += item.num
  758 + goods_map[item.goods_id] = num;
  759 + } else {
  760 + goods_map[item.goods_id] = item.num;
  761 + }
  762 + }
  763 + }
  764 +
  765 + //-- 组合购的商品限购的数组控制 --
  766 + var in_zhact_gdmap={};
588 //商品的列表 767 //商品的列表
589 for (var u in goods) { 768 for (var u in goods) {
590 var ite = goods[u]; 769 var ite = goods[u];
591 - if (ite.buyqty > 0 && ite.num > 0) {  
592 - console.log(222, th.data.in_zhact_gdmap_gp); 770 + var cart_num = get_num(ite).goods_num;
  771 +
  772 + if (ite.buyqty > 0 && cart_num > 0) {
593 var key = ite.goods_id + "." + act.id; 773 var key = ite.goods_id + "." + act.id;
594 - if (th.data.in_zhact_gdmap[key]) {  
595 - th.data.in_zhact_gdmap[key] += ite.num;  
596 - } else {  
597 - th.data.in_zhact_gdmap[key] = ite.num; 774 + if(goods_map[ite.goods_id]){
  775 + cart_num-=goods_map[ite.goods_id];
  776 + }
  777 + if(cart_num>0){
  778 + if (in_zhact_gdmap[key]) {
  779 + in_zhact_gdmap[key] += ite.num;
  780 + } else {
  781 + in_zhact_gdmap[key] = ite.num;
  782 + }
598 } 783 }
  784 +
599 } 785 }
600 } 786 }
  787 + item_act_map.in_zhact_gdmap=in_zhact_gdmap;
601 return true; 788 return true;
602 } 789 }
603 return false; 790 return false;
@@ -605,5 +792,4 @@ module.exports = { @@ -605,5 +792,4 @@ module.exports = {
605 792
606 793
607 794
608 -  
609 } 795 }
610 \ No newline at end of file 796 \ No newline at end of file