Commit dbe8c91e152a8af7177e357f26e10acbe78d4609

Authored by yvan.ni
1 parent 51b91a71

多促销优化

packageE/pages/cart/cart2/cart2.js
... ... @@ -126,7 +126,14 @@ Page({
126 126 tabs: ['门店自提', '快递邮寄'],
127 127 currentTabIndex: 1,
128 128  
129   - in_zhact_gdmap: {}, //不同门店参与同一活动的限购
  129 + in_zhact_gdmap: {}, //不同门店参与同一活动的限购,这些都是map表,很
  130 + in_zhact:{}, //组合购活动在列表中的显示
  131 + in_yhact:{}, //优惠活动在列表中的显示
  132 +
  133 + in_zhact_gdmap_new: {}, //不同门店参与同一活动的限购,这些都是map表,是多促销互动专用,不能和in_zhact_gdmap重叠
  134 + in_zhact_new:{}, //组合购活动在列表中的显示 是多促销互动专用,不能和in_zhact重叠
  135 + in_yhact_new:{}, //组合购活动在列表中的显示 是多促销互动专用,不能和in_yhact重叠
  136 +
130 137 hid_inp: 1,
131 138 user_note: "",
132 139 zhhe_act_map: {}, //组合活动的map表
... ... @@ -7197,6 +7204,9 @@ Page({
7197 7204 fd.goods.push(c_item);
7198 7205 }else{
7199 7206 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){
  7208 + p_item.zh_act=n_item.zh_pro;
  7209 + }
7200 7210 p_item.goods.push(c_item);
7201 7211 cx_act_map.push(p_item);
7202 7212 }
... ...
packageE/pages/cart/cart2/zh_calculate.js
... ... @@ -58,13 +58,12 @@ module.exports = {
58 58 var zh_b_num = item_j.promgoodsbuynum;
59 59 if (item.buyqty > 0) {
60 60  
61   - var key = item.goods_id + "" + act.id;
  61 + var key = item.goods_id + "." + act.id;
62 62 var cbuy = item.buyqty - zh_b_num;
63 63 if (th.data.in_zhact_gdmap[key]) {
64 64 var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap[key];
65 65 }
66 66  
67   -
68 67 //当可买的数量为0
69 68 if (cbuy <= 0) {
70 69 item.num = 0;
... ... @@ -129,7 +128,7 @@ module.exports = {
129 128 for (var u in act_goos) {
130 129 var ite = act_goos[u];
131 130 if (ite.buyqty > 0 && ite.num > 0) {
132   - var key = ite.goods_id + "" + act.id;
  131 + var key = ite.goods_id + "." + act.id;
133 132 if (th.data.in_zhact_gdmap[key]) {
134 133 th.data.in_zhact_gdmap[key] += ite.num;
135 134 } else {
... ... @@ -156,7 +155,7 @@ module.exports = {
156 155 var delete_num=0;
157 156  
158 157 //看一下是几倍
159   - let be = parseInt(no_in_arr.length / act.zhbuyqty);
  158 + let be1 = parseInt(no_in_arr.length / act.zhbuyqty);
160 159 //如果有总数控制的时候
161 160 if(act.zh_num){
162 161 var be1=act.zh_num-act.zh_buy_num-1;
... ... @@ -165,7 +164,7 @@ module.exports = {
165 164  
166 165 if(be) {
167 166 if (act.is_bzyh && zhqty_bz.length > 0) {
168   - if (zhqty_bz.length > 1) {
  167 +
169 168 let zhqty_bz_arr = [];
170 169 let zhqty_bz_flag = this.zhqty_bz_fun(zhqty_bz, be, zhqty_bz_arr);
171 170 if (zhqty_bz_flag) {
... ... @@ -184,28 +183,12 @@ module.exports = {
184 183 } else {
185 184 zhqty_len = 1;
186 185 let min_bz_num = Math.min.apply(Math, zhqty_bz_arr.map(function (o) {
187   - return o['num'];
  186 + return o['be'];
188 187 }));
189 188 let new_arr = zhqty_bz_arr.filter(ii => {
190   - return ii['num'] == min_bz_num;
  189 + return ii['be'] == min_bz_num;
191 190 })
192   - var vv = new_arr[0];
193   - var bz_num = be * new_arr[0].zhqty; //超量倍增
194   - var num = min_bz_num - new_arr[0].zhqty; //购买数量减去超量
195   - bz_num_ok = bz_num - num;
196   - if (bz_num_ok <= 0) {
197   - //超量倍增满足,超量倍增就等于倍数
198   - bz_num_ok = bz_num;
199   - } else {
200   - //超量倍增不满足,倍数要减去多出得
201   - // be=be-bz_num_ok;
202   - if (num % vv.zhqty == 0) {
203   - be = num / vv.zhqty;
204   - } else {
205   - be = Math.floor(num / vv.zhqty)
206   - }
207   - bz_num_ok = be * vv.zhqty;
208   - }
  191 + var be = new_arr[0].be;
209 192  
210 193 for (let i = 0; i < zhqty_bz.length; i++) {
211 194 let item1 = zhqty_bz[i];
... ... @@ -221,42 +204,11 @@ module.exports = {
221 204 }
222 205 aprice += be * aprice;
223 206 }
224   - } else {
225   - var vv = zhqty_bz[0];
226   - var bz_num = be * vv.zhqty; //超量倍增
227   - var num = vv['num'] - vv.zhqty; //购买数量减去超量
228   - if (num > 0) {
229   - bz_num_ok = bz_num - num;
230   - if (bz_num_ok <= 0) {
231   - //超量倍增满足,超量倍增就等于倍数
232   - bz_num_ok = bz_num;
233   - } else {
234   - //超量倍增不满足,倍数要减去多出得
235   - // be=be-bz_num_ok;
236   - if (num % vv.zhqty == 0) {
237   - be = num / vv.zhqty;
238   - } else {
239   - be = Math.floor(num / vv.zhqty)
240   - }
241   - bz_num_ok = be * vv.zhqty;
242   - }
243   - for (let j = 0; j < bz_num_ok; j++) {
244   - let index = no_in_arr.findIndex(i => {
245   - return vv.goods_id === i.goods_id
246   - })
247   - if (index > -1) {
248   - delete_num++
249   - no_in_arr.splice(index, 1)
250   - }
251   - }
252   - } else {
253   - zhqty_len = 1;
254   - }
255   - }
  207 +
256 208 }
257 209 if (!zhqty_len) {
258   - aprice += be * act.zhprice;
259   - let pop_num = be * act.zhbuyqty - delete_num;
  210 + aprice += be1 * act.zhprice;
  211 + let pop_num = be1 * act.zhbuyqty - delete_num;
260 212 for (var m = 0; m < pop_num; m++) {
261 213 no_in_arr.pop();
262 214 }
... ... @@ -538,6 +490,15 @@ module.exports = {
538 490 let num = item['num'] - item['zhqty']; //购买数量减去超量
539 491 if (bz_num > num) {
540 492 zhqty_bz_flag=false;
  493 +
  494 + var be=0;
  495 + if (num % vv.zhqty == 0) {
  496 + be = num / vv.zhqty;
  497 + } else {
  498 + be = Math.floor(num / vv.zhqty)
  499 + }
  500 + item.be=item;
  501 +
541 502 zhqty_bz_arr.push(item);
542 503 // zhqty_bz.splice(i,1)
543 504 }
... ... @@ -560,6 +521,27 @@ module.exports = {
560 521 var goods =gdlist;
561 522 var all_num=0;
562 523 var need_to_buy=0;
  524 + var all_zhqty=0;
  525 + //-- 是综合考虑到组合购的总数量和限购数量 --
  526 + var min_can_buy=-1;
  527 + var aid=act.id;
  528 +
  529 + let no_in_arr = []; //剩余的未加入组合购
  530 + let out_arr = []; //超出活动限购的商品放入
  531 +
  532 + //-- 判断组合购的数量是不是到了 --
  533 + 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 + }
  539 + }
  540 + if(act.buy_limit>0){
  541 +
  542 + }
  543 +
  544 +
563 545 for (var i in goods) {
564 546 var item = goods[i];
565 547 var cart_num = get_num(item).goods_num;
... ... @@ -575,17 +557,25 @@ module.exports = {
575 557 //-- 当商品有购买的时候,以及有限购的时候 --
576 558 if (item.buyqty > 0) {
577 559 var cbuy = item.buyqty - zh_b_num;
578   - var key = item.goods_id + "" + act.id;
579   - if (th.data.in_zhact_gdmap_gp[key]) {
580   - var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap_gp[key];
  560 + var key = item.goods_id + "." + act.id;
  561 + if (th.data.in_zhact_gdmap[key]) {
  562 + var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap_new[key];
581 563 }
582 564 //当可买的数量为0
583 565 if (cbuy <= 0) {
584 566 item.num = 0;
  567 + out_arr.push({
  568 + goods_id: item.goods_id,
  569 + num: cart_num
  570 + })
585 571 } else {
586 572 if (cbuy >= cart_num) item.num = cart_num;
587 573 else {
588 574 item.num = cbuy;
  575 + out_arr.push({
  576 + goods_id: item.goods_id,
  577 + num: cart_num - cbuy
  578 + })
589 579 }
590 580 }
591 581 } else {
... ... @@ -596,9 +586,24 @@ module.exports = {
596 586 all_num += item.num;
597 587 //当有起购数的控制的时候
598 588 if (item.zhqty) {
  589 + all_zhqty += item.zhqty;
599 590 if (item.num < item.zhqty) {
600 591 need_to_buy += item.zhqty - item.num;
601 592 }
  593 + if (item.num > item.zhqty) {
  594 + for (let i = 0; i < item.num - item.zhqty; i++) {
  595 + no_in_arr.push({
  596 + goods_id: item.goods_id,
  597 + })
  598 + }
  599 + }
  600 + }
  601 + else {
  602 + for (let j = 0; j < item.num; j++) {
  603 + no_in_arr.push({
  604 + goods_id: item.goods_id,
  605 + })
  606 + }
602 607 }
603 608 } else {
604 609 if (item.zhqty) {
... ... @@ -609,16 +614,126 @@ module.exports = {
609 614  
610 615 //当满足组合的要求:总数要满足,起购数要满足
611 616 if (all_num >= act.zhbuyqty && !need_to_buy) {
  617 + function sortData(a, b) {
  618 + return a.price - b.price
  619 + }
  620 + if (no_in_arr.length > 0) no_in_arr.sort(sortData);
  621 + if (act.zhbuyqty > all_zhqty) {
  622 + for (let n = 0; n < act.zhbuyqty - all_zhqty; n++) {
  623 + no_in_arr.pop();
  624 + }
  625 + }
  626 +
  627 + //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增
  628 + if (act.is_bz && no_in_arr.length >= act.zhbuyqty) {
  629 + var act_num=1;
  630 + var bz_num_ok = 0; //超量倍增是否满足
  631 + var zhqty_len = 0; //几个超量倍增
  632 + var delete_num = 0;
  633 + //看一下是几倍
  634 + let be = parseInt(no_in_arr.length / act.zhbuyqty);
  635 + //如果有总数控制的时候
  636 + if (act.zh_num) {
  637 + var be1 = act.zh_num - act.zh_buy_num - 1;
  638 + if (be1 < be) be = be1;
  639 + }
  640 + if(be) {
  641 + if (act.is_bzyh && zhqty_bz.length > 0) {
  642 +
  643 + let zhqty_bz_arr = [];
  644 + let zhqty_bz_flag = this.zhqty_bz_fun(zhqty_bz, be, zhqty_bz_arr);
  645 + if (zhqty_bz_flag) {
  646 + for (let i = 0; i < zhqty_bz.length; i++) {
  647 + var vv = zhqty_bz[i];
  648 + for (let j = 0; j < be * vv['zhqty']; j++) {
  649 + let index = no_in_arr.findIndex(i => {
  650 + return vv.goods_id === i.goods_id
  651 + })
  652 + if (index > -1) {
  653 + delete_num++
  654 + no_in_arr.splice(index, 1)
  655 + }
  656 + }
  657 + }
  658 + } else {
  659 + zhqty_len = 1;
  660 + let min_bz_num = Math.min.apply(Math, zhqty_bz_arr.map(function (o) {
  661 + return o['be'];
  662 + }));
  663 + let new_arr = zhqty_bz_arr.filter(ii => {
  664 + return ii['be'] == min_bz_num;
  665 + })
  666 +
  667 + //-- 要看一下倍数还有没有 ---
  668 + be = new_arr[0].be;
  669 + if(be){
  670 + for (let i = 0; i < zhqty_bz.length; i++) {
  671 + let item1 = zhqty_bz[i];
  672 + for (let j = 0; j < be * item1['zhqty']; j++) {
  673 + let index = no_in_arr.findIndex(i => {
  674 + return item1.goods_id === i.goods_id
  675 + })
  676 + if (index > -1) {
  677 + no_in_arr.splice(index, 1)
  678 + }
  679 + }
  680 + }
  681 + act_num+=be;
  682 + }
  683 + }
  684 + }
  685 + if (!zhqty_len) {
  686 + let pop_num = be * act.zhbuyqty - delete_num;
  687 + for (var m = 0; m < pop_num; m++) {
  688 + no_in_arr.pop();
  689 + }
  690 + act_num+=be;
  691 + }
  692 + }
  693 + }
  694 +
  695 + let goods_map = {};
  696 + //算一下剩余的商品
  697 + if (no_in_arr.length) {
  698 + for (let ii in no_in_arr) {
  699 + let item = no_in_arr[ii];
  700 + if (goods_map[item.goods_id]) {
  701 + var num = goods_map[item.goods_id];
  702 + goods_map[item.goods_id] = ++num;
  703 + } else {
  704 + goods_map[item.goods_id] = 1;
  705 + }
  706 + }
  707 + }
  708 + //超量的部分也要计算一下
  709 + if (out_arr.length) {
  710 + for (var m in out_arr) {
  711 + if (goods_map[item.goods_id]) {
  712 + var num = goods_map[item.goods_id];
  713 + num += item.num
  714 + goods_map[item.goods_id] = num;
  715 + } else {
  716 + goods_map[item.goods_id] = item.num;
  717 + }
  718 + }
  719 + }
  720 +
  721 +
612 722 //商品的列表
613 723 for (var u in goods) {
614 724 var ite = goods[u];
615   - if (ite.buyqty > 0 && ite.num > 0) {
616   - console.log(222, th.data.in_zhact_gdmap_gp);
617   - var key = ite.goods_id + "" + act.id;
618   - if (th.data.in_zhact_gdmap_gp[key]) {
619   - th.data.in_zhact_gdmap_gp[key] += ite.num;
  725 + var cart_num = get_num(ite).goods_num;
  726 +
  727 + if (ite.buyqty > 0 && ite.cart_num > 0) {
  728 + 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;
620 735 } else {
621   - th.data.in_zhact_gdmap_gp[key] = ite.num;
  736 + th.data.in_zhact_gdmap_new[key] = ite.num;
622 737 }
623 738 }
624 739 }
... ...
pages/cart/cart/cart.js
... ... @@ -41,14 +41,18 @@ Page({
41 41 zhhe_prom: [], //组合活动需要显示差多少件
42 42 zuhe_map: {},
43 43 zuhe_map_good: {},
  44 +
44 45 in_zhact_gdmap: {}, //不同门店参与同一活动的限购
45   - in_zhact_gdmap_gp: {}, //不同门店参与同一活动的限购,新版判断的时候
  46 + in_zhact:{}, //组合购活动在列表中的显示
  47 + in_yhact:{}, //优惠活动在列表中的显示
46 48  
47 49 ladder_map: {}, //阶梯促销需要的map
48 50  
49 51 promgoods_map: {},
50 52 promgoods_list: {}
51 53  
  54 +
  55 +
52 56 },
53 57  
54 58 //-- 立即购买的时候,获取商品优惠活动,is_state判断是不是单个商品购买,
... ... @@ -4239,6 +4243,9 @@ Page({
4239 4243 fd.goods.push(c_item);
4240 4244 }else{
4241 4245 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){
  4247 + p_item.zh_act=n_item.zh_pro;
  4248 + }
4242 4249 p_item.goods.push(c_item);
4243 4250 cx_act_map.push(p_item);
4244 4251 }
... ...
pages/cart/cart/cart.wxml
... ... @@ -132,7 +132,7 @@
132 132 <!-- 验证活动是不是多个,要不要显示切换 -->
133 133 <!-- 新增促销多活动的排版 -->
134 134 <block wx:if="{{g_filter.is_more_act(items,item.show_can_cx) && item.show_can_cx[items.goods_id] && item.show_can_cx[items.goods_id].act_arr.length>1}}">
135   - <view class="bdb16" wx:if="{{util.check_show(items,item.show_can_cx[items.goods_id].sele_prom_type)}}">
  135 + <view class="bdb16">
136 136 <view bindtap="switch_cx_group"
137 137 data-index="{{pidx}}"
138 138 data-gd_key="{{items.goods_id}}"
... ...
pages/cart/cart/g_filter.wxs
... ... @@ -35,13 +35,8 @@ var g_filters = {
35 35 if([1,2,4,6,8,9].indexOf(items.prom_type)>-1) return false;
36 36 if(!show_can_cx) return false;
37 37 return true;
38   - },
39   - check_show:function(items,sele_prom_type){
40   - if([7,10].indexOf(sele_prom_type)>-1){
41   - if(!items.is_act_last) return false;
42   - }
43   - return true;
44 38 }
  39 +
45 40 }
46 41 module.exports = {
47 42 has_char: g_filters.has_char,
... ...
pages/cart/cart/zh_calculate.js
... ... @@ -134,7 +134,7 @@ module.exports = {
134 134 if (item.buyqty > 0) {
135 135 console.log(111, th.data.in_zhact_gdmap);
136 136 var cbuy = item.buyqty - zh_b_num;
137   - var key = item.goods_id + "" + act.id;
  137 + var key = item.goods_id + "." + act.id;
138 138 if (th.data.in_zhact_gdmap[key]) {
139 139 var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap[key];
140 140 }
... ... @@ -213,7 +213,7 @@ module.exports = {
213 213  
214 214 console.log(222, th.data.in_zhact_gdmap);
215 215  
216   - var key = ite.goods_id + "" + act.id;
  216 + var key = ite.goods_id + "." + act.id;
217 217 if (th.data.in_zhact_gdmap[key]) {
218 218 th.data.in_zhact_gdmap[key] += ite.num;
219 219 } else {
... ... @@ -521,7 +521,7 @@ module.exports = {
521 521 return zhqty_bz_flag;
522 522 },
523 523  
524   - //-- 判断组合购有没有满足 ---
  524 + //-- 判断组合购有没有满足,只有在检查的时候,要用新的 ---
525 525 ch_zh_ok(act,gdlist,c_goods,th){
526 526 //-- 寻找一下 --
527 527 function get_num(ite) {
... ... @@ -551,9 +551,9 @@ module.exports = {
551 551 //-- 当商品有购买的时候,以及有限购的时候 --
552 552 if (item.buyqty > 0) {
553 553 var cbuy = item.buyqty - zh_b_num;
554   - var key = item.goods_id + "" + act.id;
555   - if (th.data.in_zhact_gdmap_gp[key]) {
556   - var cbuy = item.buyqty - zh_b_num - th.data.in_zhact_gdmap_gp[key];
  554 + 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];
557 557 }
558 558 //当可买的数量为0
559 559 if (cbuy <= 0) {
... ... @@ -590,11 +590,11 @@ module.exports = {
590 590 var ite = goods[u];
591 591 if (ite.buyqty > 0 && ite.num > 0) {
592 592 console.log(222, th.data.in_zhact_gdmap_gp);
593   - var key = ite.goods_id + "" + act.id;
594   - if (th.data.in_zhact_gdmap_gp[key]) {
595   - th.data.in_zhact_gdmap_gp[key] += ite.num;
  593 + 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 596 } else {
597   - th.data.in_zhact_gdmap_gp[key] = ite.num;
  597 + th.data.in_zhact_gdmap[key] = ite.num;
598 598 }
599 599 }
600 600 }
... ...