Commit f3f92c41744f7d23ff8d252e436e98cfcc5349f3
1 parent
6c0e604b
多促销活动的优化
Showing
3 changed files
with
105 additions
and
50 deletions
packageE/pages/cart/cart2/cart2.js
@@ -133,6 +133,8 @@ Page({ | @@ -133,6 +133,8 @@ Page({ | ||
133 | in_zhact:{}, //组合购活动在列表中的显示 | 133 | in_zhact:{}, //组合购活动在列表中的显示 |
134 | in_yhact:{}, //优惠活动在列表中的显示 | 134 | in_yhact:{}, //优惠活动在列表中的显示 |
135 | 135 | ||
136 | + in_zh_gd_buy_map:{}, //就是商品在组合购中的 | ||
137 | + | ||
136 | in_zhact_gdmap_new: {}, //不同门店参与同一活动的限购,这些都是map表,是多促销互动专用,不能和in_zhact_gdmap重叠 | 138 | in_zhact_gdmap_new: {}, //不同门店参与同一活动的限购,这些都是map表,是多促销互动专用,不能和in_zhact_gdmap重叠 |
137 | in_zhact_new:{}, //组合购活动在列表中的显示 是多促销互动专用,不能和in_zhact重叠 | 139 | in_zhact_new:{}, //组合购活动在列表中的显示 是多促销互动专用,不能和in_zhact重叠 |
138 | in_yhact_new:{}, //组合购活动在列表中的显示 是多促销互动专用,不能和in_yhact重叠 | 140 | in_yhact_new:{}, //组合购活动在列表中的显示 是多促销互动专用,不能和in_yhact重叠 |
pages/cart/cart/cart.js
@@ -46,6 +46,7 @@ Page({ | @@ -46,6 +46,7 @@ Page({ | ||
46 | in_zhact_gdmap: {}, //不同门店参与同一活动的限购 | 46 | in_zhact_gdmap: {}, //不同门店参与同一活动的限购 |
47 | in_zhact:{}, //组合购活动在列表中的显示 | 47 | in_zhact:{}, //组合购活动在列表中的显示 |
48 | in_yhact:{}, //优惠活动在列表中的显示 | 48 | in_yhact:{}, //优惠活动在列表中的显示 |
49 | + in_zh_gd_buy_map:{}, //就是商品在组合购中的 | ||
49 | 50 | ||
50 | ladder_map: {}, //阶梯促销需要的map | 51 | ladder_map: {}, //阶梯促销需要的map |
51 | 52 | ||
@@ -1908,7 +1909,6 @@ Page({ | @@ -1908,7 +1909,6 @@ Page({ | ||
1908 | if (car && car.length > 0) { | 1909 | if (car && car.length > 0) { |
1909 | th.data.in_zhact_gdmap = {}; | 1910 | th.data.in_zhact_gdmap = {}; |
1910 | 1911 | ||
1911 | - | ||
1912 | //-- 第一次过滤,show_can_cx的还要遍历一遍,确保数据的正确性 -- | 1912 | //-- 第一次过滤,show_can_cx的还要遍历一遍,确保数据的正确性 -- |
1913 | var rd_arr=[]; | 1913 | var rd_arr=[]; |
1914 | for (var a = 0; a < car.length; a++) { | 1914 | for (var a = 0; a < car.length; a++) { |
@@ -1917,22 +1917,52 @@ Page({ | @@ -1917,22 +1917,52 @@ Page({ | ||
1917 | rd_arr.push(show_can_cx) | 1917 | rd_arr.push(show_can_cx) |
1918 | }) | 1918 | }) |
1919 | } | 1919 | } |
1920 | + | ||
1920 | //--- 第二次过滤 --- | 1921 | //--- 第二次过滤 --- |
1921 | for(var ui=0;ui<rd_arr.length;ui++){ | 1922 | for(var ui=0;ui<rd_arr.length;ui++){ |
1923 | + var is_has_no_ok=0; | ||
1924 | + var show_can_cx_item=rd_arr[ui]; | ||
1925 | + for (const per_sh_cx in show_can_cx_item) { | ||
1926 | + var cx_cur_act=show_can_cx_item[per_sh_cx].cur_act; //每一种活动切换的时候的当前活动 | ||
1927 | + var aid=cx_cur_act.prom_id; | ||
1928 | + //-- 就是那些活动未到达条件的时候,才需要重新过滤一遍 -- | ||
1929 | + if(cx_cur_act.is_no_ok) { | ||
1930 | + switch (cx_cur_act.prom_type){ | ||
1931 | + case 3: | ||
1932 | + if(th.data.in_yhact_new[aid]){ | ||
1933 | + is_has_no_ok=1; | ||
1934 | + } | ||
1935 | + break; | ||
1936 | + case 7: | ||
1937 | + if(th.data.in_zhact_new[aid]){ | ||
1938 | + is_has_no_ok=1; | ||
1939 | + } | ||
1940 | + break; | ||
1941 | + } | ||
1942 | + } | ||
1943 | + } | ||
1922 | 1944 | ||
1945 | + //如果有重复就要重新计算一遍 | ||
1946 | + if(is_has_no_ok){ | ||
1947 | + await m_cx.cart_cx_group(th,car[ui].goods,car[ui],1,n_ok,(show_can_cx)=>{ | ||
1948 | + rd_arr[ui]=show_can_cx; | ||
1949 | + }) | ||
1950 | + } | ||
1923 | } | 1951 | } |
1924 | 1952 | ||
1925 | 1953 | ||
1926 | 1954 | ||
1927 | for (var a = 0; a < car.length; a++) { | 1955 | for (var a = 0; a < car.length; a++) { |
1956 | + //-- 把活动组装进去 --- | ||
1957 | + var show_can_cx=rd_arr[a]; | ||
1958 | + | ||
1959 | + car[a].zh_map=null; | ||
1960 | + car[a].ladder_map=null; | ||
1928 | 1961 | ||
1929 | - car[a].zh_map=null; | ||
1930 | - car[a].ladder_map=null; | ||
1931 | 1962 | ||
1963 | + var item = car[a].goods, is_s_sele = 1; | ||
1964 | + //-- 先批量判断一下活动的类型,同时要同步跟新 -- | ||
1932 | 1965 | ||
1933 | - var item = car[a].goods, is_s_sele = 1; | ||
1934 | - //-- 先批量判断一下活动的类型,同时要同步跟新 -- | ||
1935 | - await m_cx.cart_cx_group(th,item,car[a],1,n_ok,(show_can_cx)=>{ | ||
1936 | var offline_price = 0; | 1966 | var offline_price = 0; |
1937 | var offline_num = 0; | 1967 | var offline_num = 0; |
1938 | for (var c = 0; c < item.length; c++) { | 1968 | for (var c = 0; c < item.length; c++) { |
@@ -2012,13 +2042,13 @@ Page({ | @@ -2012,13 +2042,13 @@ Page({ | ||
2012 | [txt]: Number(is_s_sele) | 2042 | [txt]: Number(is_s_sele) |
2013 | }); | 2043 | }); |
2014 | 2044 | ||
2015 | - // var txt1 = "requestData[" + a + "].show_can_cx"; | ||
2016 | - // th.setData({ | ||
2017 | - // [txt1]: show_can_cx | ||
2018 | - // }); | 2045 | + var txt1 = "requestData[" + a + "].show_can_cx"; |
2046 | + th.setData({ | ||
2047 | + [txt1]: show_can_cx | ||
2048 | + }); | ||
2019 | 2049 | ||
2020 | - var et={show_can_cx:show_can_cx}; | ||
2021 | - rd_arr.push(et); | 2050 | + //-- var et={show_can_cx:show_can_cx}; |
2051 | + //-- rd_arr.push(et); | ||
2022 | 2052 | ||
2023 | //当有线下取价的时候 | 2053 | //当有线下取价的时候 |
2024 | if (offline_price) { | 2054 | if (offline_price) { |
@@ -2038,11 +2068,9 @@ Page({ | @@ -2038,11 +2068,9 @@ Page({ | ||
2038 | }); | 2068 | }); |
2039 | } | 2069 | } |
2040 | } | 2070 | } |
2041 | - }); | ||
2042 | - | ||
2043 | } | 2071 | } |
2044 | 2072 | ||
2045 | - var gb=1; | 2073 | + |
2046 | //-- 切换活动的按钮要把他返回 -- | 2074 | //-- 切换活动的按钮要把他返回 -- |
2047 | this.data.change_act=0; | 2075 | this.data.change_act=0; |
2048 | if(func) func(); | 2076 | if(func) func(); |
utils/more_cx.js
@@ -440,21 +440,33 @@ module.exports = { | @@ -440,21 +440,33 @@ module.exports = { | ||
440 | need_num=th.data.in_yhact_new[aid]?th.data.in_yhact_new[aid]:0; | 440 | need_num=th.data.in_yhact_new[aid]?th.data.in_yhact_new[aid]:0; |
441 | } | 441 | } |
442 | //-- 判断优惠促销要不要限购 -- | 442 | //-- 判断优惠促销要不要限购 -- |
443 | - var fd=null; | ||
444 | - var fd_res = await getApp().request.promiseGet('/api/weshop/promgoods/get/'+os.stoid+'/'+ky0,{}) | ||
445 | - if(fd_res && fd_res.data.code==0 ){ | ||
446 | - fd=fd_res.data.data; | 443 | + var fd=th.data.in_yhact[aid]; |
444 | + if(!fd) { | ||
445 | + var fd_res = await getApp().request.promiseGet('/api/weshop/promgoods/get/' + os.stoid + '/' + aid, {}) | ||
446 | + if (fd_res && fd_res.data.code == 0) { | ||
447 | + fd = fd_res.data.data; | ||
448 | + th.data.in_yhact[aid]=fd; | ||
449 | + } | ||
447 | } | 450 | } |
448 | //如果有限购的时候,也要计算一下 | 451 | //如果有限购的时候,也要计算一下 |
449 | if (fd && fd['limit_num'] > 0){ | 452 | if (fd && fd['limit_num'] > 0){ |
450 | - //-- 获取已经购买了多少件 -- | ||
451 | - var url = "/api/weshop/ordergoods/getUserBuyPromNum?store_id="+os.stoid+"&user_id=" | ||
452 | - +getApp().globalData.user_id+"&prom_type=3&prom_id="+zh_pro0.id; | ||
453 | - await getApp().request.promiseGet(url, {}).then(rh => { | ||
454 | - if(rh.data.code==0){ | ||
455 | - item_act_map.buyed=rh.data.data.userbuynum; | ||
456 | - } | ||
457 | - }) | 453 | + // 优惠的促销的限购要反写进去不和 |
454 | + item_act_map.limit_num=fd['limit_num']; | ||
455 | + if(fd.hasOwnProperty('buyed')){ | ||
456 | + item_act_map.buyed= fd.buyed; | ||
457 | + }else{ | ||
458 | + //-- 获取已经购买了多少件 -- | ||
459 | + var url = "/api/weshop/ordergoods/getUserBuyPromNum?store_id="+os.stoid+"&user_id=" | ||
460 | + +getApp().globalData.user_id+"&prom_type=3&prom_id="+zh_pro0.id; | ||
461 | + await getApp().request.promiseGet(url, {}).then(rh => { | ||
462 | + if(rh.data.code==0){ | ||
463 | + item_act_map.buyed=rh.data.data.userbuynum; | ||
464 | + fd.buyed=rh.data.data.userbuynum; | ||
465 | + th.data.in_yhact[aid].buyed=rh.data.data.userbuynum; | ||
466 | + } | ||
467 | + }) | ||
468 | + } | ||
469 | + | ||
458 | if(item_act_map.buyed+need_num>=fd['limit_num']){ | 470 | if(item_act_map.buyed+need_num>=fd['limit_num']){ |
459 | continue; //-- 进行下一个循环 -- | 471 | continue; //-- 进行下一个循环 -- |
460 | } | 472 | } |
@@ -500,21 +512,30 @@ module.exports = { | @@ -500,21 +512,30 @@ module.exports = { | ||
500 | var zh_goods=item_act_map.goods; | 512 | var zh_goods=item_act_map.goods; |
501 | //--- 要循环计算一下商品的已购数量 --- | 513 | //--- 要循环计算一下商品的已购数量 --- |
502 | for(var h=0;h<zh_goods.length;h++){ | 514 | for(var h=0;h<zh_goods.length;h++){ |
503 | - //-- 商品的限购 -- | ||
504 | - var promgoodsbuynum = 0; | ||
505 | - var res=await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", { | ||
506 | - data: { | ||
507 | - store_id: os.stoid, | ||
508 | - user_id: getApp().globalData.user_id, | ||
509 | - goods_id: zh_goods[h].goods_id, | ||
510 | - prom_type: 7, | ||
511 | - prom_id: item_act_map.prom_id | ||
512 | - }, | ||
513 | - }) | ||
514 | - if(res.data.code==0 && res.data.data && res.data.data.promgoodsbuynum){ | ||
515 | - promgoodsbuynum = res.data.data.promgoodsbuynum; | 515 | + if(zh_goods[h].zh_b_num) continue; |
516 | + var ky=item_act_map.prom_id+"."+zh_goods[h].goods_id; | ||
517 | + if(th.data.in_zh_gd_buy_map[ky]){ | ||
518 | + zh_goods[h].zh_b_num=th.data.in_zh_gd_buy_map[ky]; | ||
519 | + }else{ | ||
520 | + //-- 商品的限购 -- | ||
521 | + var promgoodsbuynum = 0; | ||
522 | + var res=await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", { | ||
523 | + data: { | ||
524 | + store_id: os.stoid, | ||
525 | + user_id: getApp().globalData.user_id, | ||
526 | + goods_id: zh_goods[h].goods_id, | ||
527 | + prom_type: 7, | ||
528 | + prom_id: item_act_map.prom_id | ||
529 | + }, | ||
530 | + }) | ||
531 | + if(res.data.code==0 && res.data.data && res.data.data.promgoodsbuynum){ | ||
532 | + promgoodsbuynum = res.data.data.promgoodsbuynum; | ||
533 | + } | ||
534 | + zh_goods[h].zh_b_num=promgoodsbuynum; | ||
535 | + th.data.in_zh_gd_buy_map[ky]=promgoodsbuynum; | ||
516 | } | 536 | } |
517 | - zh_goods[h].zh_b_num=promgoodsbuynum; | 537 | + |
538 | + | ||
518 | } | 539 | } |
519 | //-- 放到参与组合优惠促销的map中 -- | 540 | //-- 放到参与组合优惠促销的map中 -- |
520 | th.data.zuhe_map_good[item_act_map.prom_id] = zhact_gdlist; | 541 | th.data.zuhe_map_good[item_act_map.prom_id] = zhact_gdlist; |
@@ -526,18 +547,22 @@ module.exports = { | @@ -526,18 +547,22 @@ module.exports = { | ||
526 | if(!ob) ob=th.data.zhhe_act_map; | 547 | if(!ob) ob=th.data.zhhe_act_map; |
527 | 548 | ||
528 | var zh_pro0 = ob[item_act_map.prom_id]; | 549 | var zh_pro0 = ob[item_act_map.prom_id]; |
550 | + if(zh_pro0.hasOwnProperty('buyed')){ | ||
551 | + item_act_map.buyed=zh_pro0.buyed; | ||
552 | + }else { | ||
553 | + //-- 获取活动信息 -- | ||
554 | + var url = "/api/weshop/ordergoods/getUserBuyPromNum?store_id="+os.stoid+"&user_id=" | ||
555 | + +getApp().globalData.user_id+"&prom_type=7&prom_id="+zh_pro0.id; | ||
556 | + await getApp().request.promiseGet(url, {}).then(rh => { | ||
557 | + if(rh.data.code==0){ | ||
558 | + item_act_map.buyed=rh.data.data.userbuynum; | ||
559 | + zh_pro0.buyed=rh.data.data.userbuynum; | ||
560 | + } | ||
561 | + }) | ||
562 | + } | ||
529 | 563 | ||
530 | - //-- 获取活动信息 -- | ||
531 | - var url = "/api/weshop/ordergoods/getUserBuyPromNum?store_id="+os.stoid+"&user_id=" | ||
532 | - +getApp().globalData.user_id+"&prom_type=7&prom_id="+zh_pro0.id; | ||
533 | - await getApp().request.promiseGet(url, {}).then(rh => { | ||
534 | - if(rh.data.code==0){ | ||
535 | - item_act_map.buyed=rh.data.data.userbuynum; | ||
536 | - } | ||
537 | - }) | ||
538 | //当满足组合的要求:总数要满足,起购数要满足 | 564 | //当满足组合的要求:总数要满足,起购数要满足 |
539 | if(this.ch_zh_ok(zh_pro0,zhact_gdlist,zh_goods,th,item_act_map,is_need_ck_num,need_ok)){ | 565 | if(this.ch_zh_ok(zh_pro0,zhact_gdlist,zh_goods,th,item_act_map,is_need_ck_num,need_ok)){ |
540 | - | ||
541 | can_calc_cx.push(item_act_map) | 566 | can_calc_cx.push(item_act_map) |
542 | } | 567 | } |
543 | break; | 568 | break; |