Commit f3f92c41744f7d23ff8d252e436e98cfcc5349f3

Authored by yvan.ni
1 parent 6c0e604b

多促销活动的优化

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;