Commit cd2a6c7b63f745f754dd6fad88944a4296f0a426

Authored by yvan.ni
1 parent 73dd8c11

卡顿的bug优化

packageE/pages/cart/cart2/cart2.js
@@ -176,6 +176,9 @@ Page({ @@ -176,6 +176,9 @@ Page({
176 show_can_cx_map:{}, 176 show_can_cx_map:{},
177 //优惠促销活动的集合 177 //优惠促销活动的集合
178 yhcx_act_map: {}, 178 yhcx_act_map: {},
  179 +
  180 + //优惠促销购买次数
  181 + yhcx_buy_map:{}
179 }, 182 },
180 183
181 184
@@ -1364,7 +1367,10 @@ Page({ @@ -1364,7 +1367,10 @@ Page({
1364 // item1.prom_id='' 1367 // item1.prom_id=''
1365 // item1.prom_type='' 1368 // item1.prom_type=''
1366 } else { 1369 } else {
  1370 +
1367 let user_pre_buynum = await th.getUserBuyPromNum_pre(item1.prom_id) //用户已经参与次数 1371 let user_pre_buynum = await th.getUserBuyPromNum_pre(item1.prom_id) //用户已经参与次数
  1372 +
  1373 +
1368 if (user_pre_buynum < limit_num) { 1374 if (user_pre_buynum < limit_num) {
1369 await th.add_prom_goods_map(item1); 1375 await th.add_prom_goods_map(item1);
1370 } else { 1376 } else {
@@ -1606,12 +1612,12 @@ Page({ @@ -1606,12 +1612,12 @@ Page({
1606 let req_d1 = { 1612 let req_d1 = {
1607 user_id: getApp().globalData.user_id, goods_ids: [hr], store_id: os.stoid 1613 user_id: getApp().globalData.user_id, goods_ids: [hr], store_id: os.stoid
1608 } 1614 }
1609 -  
1610 await getApp().request.promisePost("/api/weshop/order/getrebateSum", { 1615 await getApp().request.promisePost("/api/weshop/order/getrebateSum", {
1611 is_json: 1, data: req_d1 1616 is_json: 1, data: req_d1
1612 }).then(grs => { 1617 }).then(grs => {
1613 if (grs.data.code == 0) item[c].use_commission = grs.data.data; 1618 if (grs.data.code == 0) item[c].use_commission = grs.data.data;
1614 }); 1619 });
  1620 +
1615 commission_gds.push(hr); 1621 commission_gds.push(hr);
1616 } 1622 }
1617 } 1623 }
@@ -6968,6 +6974,12 @@ Page({ @@ -6968,6 +6974,12 @@ Page({
6968 }, 6974 },
6969 //优惠促销用户参与次数 6975 //优惠促销用户参与次数
6970 async getUserBuyPromNum_pre(prom_id){ 6976 async getUserBuyPromNum_pre(prom_id){
  6977 +
  6978 + //如果有缓存的数据,就用缓存的数据
  6979 + if(this.data.in_yhact[prom_id] && this.data.in_yhact[prom_id].buyed!=undefined){
  6980 + let user_pre_buynum=this.data.in_yhact[prom_id].buyed;
  6981 + return user_pre_buynum;
  6982 + }
6971 var userInfo = getApp().globalData.userInfo; 6983 var userInfo = getApp().globalData.userInfo;
6972 var url = `/api/weshop/ordergoods/getUserBuyPromNum?is_all=1&store_id=${os.stoid}&user_id=${userInfo.user_id}&prom_type=3&prom_id=${prom_id}`; 6984 var url = `/api/weshop/ordergoods/getUserBuyPromNum?is_all=1&store_id=${os.stoid}&user_id=${userInfo.user_id}&prom_type=3&prom_id=${prom_id}`;
6973 let res = await getApp().request.promiseGet(url, { 6985 let res = await getApp().request.promiseGet(url, {
pages/cart/cart/cart.js
@@ -62,11 +62,13 @@ Page({ @@ -62,11 +62,13 @@ Page({
62 //送赠品的优化 62 //送赠品的优化
63 cart_zp:{}, 63 cart_zp:{},
64 //-- dp_cart深拷贝的缓存 -- 64 //-- dp_cart深拷贝的缓存 --
65 - dp_cart:null 65 + dp_cart:null,
66 66
  67 + //优惠促销活动的集合
  68 + yhcx_act_map: {},
67 }, 69 },
68 70
69 - 71 +
70 onLoad: function () { 72 onLoad: function () {
71 var a = this, 73 var a = this,
72 ee = a; 74 ee = a;
@@ -559,9 +561,15 @@ Page({ @@ -559,9 +561,15 @@ Page({
559 i_fd=i_fd.goodsPromInfoRespDto; 561 i_fd=i_fd.goodsPromInfoRespDto;
560 //-- 赋值多促销活动的优化-- 562 //-- 赋值多促销活动的优化--
561 carr[ia].more_cx=i_fd.more_cx; 563 carr[ia].more_cx=i_fd.more_cx;
  564 + //商品优惠促销的缓存
  565 + if (i_fd.yhcx_pro) {
  566 + th.data.yhcx_act_map[i_fd.yhcx_pro.id] = i_fd.yhcx_pro;
  567 + }
  568 + //商品组合促销的缓存
562 if (i_fd.zh_pro) { 569 if (i_fd.zh_pro) {
563 th.data.zuhe_map[i_fd.zh_pro.id] = i_fd.zh_pro; 570 th.data.zuhe_map[i_fd.zh_pro.id] = i_fd.zh_pro;
564 } 571 }
  572 + //商品阶梯促销的缓存
565 if (i_fd.ladder_pro) { 573 if (i_fd.ladder_pro) {
566 var ladder_pro = i_fd.ladder_pro; 574 var ladder_pro = i_fd.ladder_pro;
567 th.data.ladder_map[ladder_pro.id] = ladder_pro; 575 th.data.ladder_map[ladder_pro.id] = ladder_pro;
@@ -699,7 +707,6 @@ Page({ @@ -699,7 +707,6 @@ Page({
699 th.disInvalid(item); 707 th.disInvalid(item);
700 continue; 708 continue;
701 } 709 }
702 -  
703 } 710 }
704 711
705 } 712 }
@@ -1593,7 +1600,6 @@ Page({ @@ -1593,7 +1600,6 @@ Page({
1593 } 1600 }
1594 1601
1595 1602
1596 -  
1597 //-- 判断起购数量 -- 1603 //-- 判断起购数量 --
1598 if (!e.data.checkAllToggle) { 1604 if (!e.data.checkAllToggle) {
1599 //判断是不是有促销活动 1605 //判断是不是有促销活动
@@ -1634,31 +1640,29 @@ Page({ @@ -1634,31 +1640,29 @@ Page({
1634 // if (obj.prom_type == 10) ladder_calc.add_ladder_prom(dda, i, obj); 1640 // if (obj.prom_type == 10) ladder_calc.add_ladder_prom(dda, i, obj);
1635 1641
1636 //多门店,多优惠次数控制 1642 //多门店,多优惠次数控制
1637 - let pro_off1 = false  
1638 - if (!e.data.checkAllToggle) {  
1639 - //判断多店优惠促销次数控制  
1640 - if (th.data.requestData.length > 1) {  
1641 - if (obj.prom_type == 3) {  
1642 -  
1643 - pro_off1 = await th.multiple_stores_pro(i, j)  
1644 - }  
1645 - }  
1646 - }  
1647 -  
1648 - if (pro_off1) {  
1649 - pro_off = true  
1650 - let txt1 = "requestData[" + i + "].pro_off";  
1651 - e.setData({  
1652 - [txt1]: true,  
1653 - [txt]: 0,  
1654 - });  
1655 -  
1656 - wx.showToast({  
1657 - title: '已超出优惠促销次数',  
1658 - icon: 'none',  
1659 - }); 1643 + // let pro_off1 = false
  1644 + // if (!e.data.checkAllToggle) {
  1645 + // //判断多店优惠促销次数控制
  1646 + // if (th.data.requestData.length > 1) {
  1647 + // if (obj.prom_type == 3) {
  1648 + // pro_off1 = await th.multiple_stores_pro(i, j)
  1649 + // }
  1650 + // }
  1651 + // }
  1652 + // if (pro_off1) {
  1653 + // pro_off = true
  1654 + // let txt1 = "requestData[" + i + "].pro_off";
  1655 + // e.setData({
  1656 + // [txt1]: true,
  1657 + // [txt]: 0,
  1658 + // });
  1659 + //
  1660 + // wx.showToast({
  1661 + // title: '已超出优惠促销次数',
  1662 + // icon: 'none',
  1663 + // });
1660 1664
1661 - } else { 1665 + // } else {
1662 1666
1663 if (!e.data.checkAllToggle) { 1667 if (!e.data.checkAllToggle) {
1664 //组合购的金额要另外算 1668 //组合购的金额要另外算
@@ -1672,11 +1676,16 @@ Page({ @@ -1672,11 +1676,16 @@ Page({
1672 offline_price += (item[j].goods_price - item[j].offline_price) * item[j].goods_num; 1676 offline_price += (item[j].goods_price - item[j].offline_price) * item[j].goods_num;
1673 offline_num += item[j].goods_num; 1677 offline_num += item[j].goods_num;
1674 } 1678 }
1675 - }  
1676 1679
1677 - e.setData({  
1678 - [txt]: !e.data.checkAllToggle,  
1679 - }) 1680 + e.setData({
  1681 + [txt]: !e.data.checkAllToggle,
  1682 + })
  1683 +
  1684 + //}
  1685 +
  1686 +
  1687 +
  1688 +
1680 // if (!e.data.checkAllToggle) { 1689 // if (!e.data.checkAllToggle) {
1681 // //组合购的金额要另外算 1690 // //组合购的金额要另外算
1682 // if (item[j].prom_type != 7 && item[j].prom_type != 10) 1691 // if (item[j].prom_type != 7 && item[j].prom_type != 10)
@@ -1952,36 +1961,44 @@ Page({ @@ -1952,36 +1961,44 @@ Page({
1952 } 1961 }
1953 1962
1954 //判断多店优惠促销次数控制 1963 //判断多店优惠促销次数控制
1955 - if (th.data.requestData.length > 1) {  
1956 - if (gd_info.prom_type == 3) {  
1957 - pro_off1 = await th.multiple_stores_pro(pitems, i)  
1958 - }  
1959 - }  
1960 - if (pro_off1) {  
1961 - pro_off = true  
1962 - e.setData({  
1963 - [txt]: 0,  
1964 - });  
1965 - } else {  
1966 - e.setData({  
1967 - [txt]: Number(!sele),  
1968 - });  
1969 - }  
1970 - }  
1971 - var txt = "requestData[" + pitems + "].selected";  
1972 - if (pro_off) {  
1973 - wx.showToast({  
1974 - title: '已超出优惠促销次数',  
1975 - icon: 'none',  
1976 - });  
1977 - e.setData({  
1978 - [txt]: 0,  
1979 - });  
1980 - } else { 1964 + // if (th.data.requestData.length > 1) {
  1965 + // if (gd_info.prom_type == 3) {
  1966 + // pro_off1 = await th.multiple_stores_pro(pitems, i)
  1967 + // }
  1968 + // }
  1969 + // if (pro_off1) {
  1970 + // pro_off = true
  1971 + // e.setData({
  1972 + // [txt]: 0,
  1973 + // });
  1974 + // } else {
  1975 + // e.setData({
  1976 + // [txt]: Number(!sele),
  1977 + // });
  1978 + // }
1981 e.setData({ 1979 e.setData({
1982 [txt]: Number(!sele), 1980 [txt]: Number(!sele),
1983 }); 1981 });
  1982 +
1984 } 1983 }
  1984 + var txt = "requestData[" + pitems + "].selected";
  1985 + // if (pro_off) {
  1986 + // wx.showToast({
  1987 + // title: '已超出优惠促销次数',
  1988 + // icon: 'none',
  1989 + // });
  1990 + // e.setData({
  1991 + // [txt]: 0,
  1992 + // });
  1993 + // } else {
  1994 + // e.setData({
  1995 + // [txt]: Number(!sele),
  1996 + // });
  1997 + // }
  1998 +
  1999 + e.setData({
  2000 + [txt]: Number(!sele),
  2001 + });
1985 2002
1986 //-- 选择了什么商品,就用什么商品来判断 -- 2003 //-- 选择了什么商品,就用什么商品来判断 --
1987 var sele_arr = {}; 2004 var sele_arr = {};
@@ -2040,6 +2057,7 @@ Page({ @@ -2040,6 +2057,7 @@ Page({
2040 2057
2041 //判断多门店,优惠促销次数的控制 2058 //判断多门店,优惠促销次数的控制
2042 async multiple_stores_pro(pitems, item) { 2059 async multiple_stores_pro(pitems, item) {
  2060 +
2043 let a = this.data.requestData[pitems].goods[item]; 2061 let a = this.data.requestData[pitems].goods[item];
2044 let th = this 2062 let th = this
2045 let arr_pro = [] 2063 let arr_pro = []
@@ -2049,21 +2067,31 @@ Page({ @@ -2049,21 +2067,31 @@ Page({
2049 } 2067 }
2050 }) 2068 })
2051 let prom = null 2069 let prom = null
2052 - await getApp().request.promiseGet("/api/weshop/promgoods/get/" + os.stoid + "/" + a.prom_id, {}).then(res => {  
2053 - if (res.data.code == 0) {  
2054 - prom = res.data.data;  
2055 - }  
2056 - })  
2057 - let user_pre_buynum = await this.getUserBuyPromNum_pre(a.prom_id) 2070 + //使用缓存,不在调用接口
  2071 + if(!prom && th.data.yhcx_act_map && th.data.yhcx_act_map[a.prom_id] ){
  2072 + prom=th.data.yhcx_act_map[a.prom_id];
  2073 + }
  2074 + if(!prom) {
  2075 + await getApp().request.promiseGet("/api/weshop/promgoods/get/" + os.stoid + "/" + a.prom_id, {}).then(res => {
  2076 + if (res.data.code == 0) {
  2077 + prom = res.data.data;
  2078 + }
  2079 + })
  2080 + }
2058 2081
  2082 + let user_pre_buynum = await this.getUserBuyPromNum_pre(a.prom_id);
2059 if (user_pre_buynum >= prom.limit_num) { 2083 if (user_pre_buynum >= prom.limit_num) {
2060 return false 2084 return false
2061 } else { 2085 } else {
  2086 +
2062 let action_num = user_pre_buynum + 1; 2087 let action_num = user_pre_buynum + 1;
2063 arr_pro.map(item => { 2088 arr_pro.map(item => {
  2089 + let found = false;
2064 item.goods.map(ite => { 2090 item.goods.map(ite => {
  2091 + if(found) return;
2065 if (ite.prom_type == 3 && ite.prom_id == a.prom_id && !ite.is_gift && ite.selected) { 2092 if (ite.prom_type == 3 && ite.prom_id == a.prom_id && !ite.is_gift && ite.selected) {
2066 action_num += 1; 2093 action_num += 1;
  2094 + found=true;
2067 } 2095 }
2068 }) 2096 })
2069 }) 2097 })
@@ -2226,23 +2254,22 @@ Page({ @@ -2226,23 +2254,22 @@ Page({
2226 } 2254 }
2227 } 2255 }
2228 2256
2229 -  
2230 - let pro_off = false  
2231 - //判断多店优惠促销次数控制  
2232 - if (th.data.requestData.length > 1) {  
2233 - if (a.prom_type == 3 && !a.selected) {  
2234 - //pro_off = await th.multiple_stores_pro(pitems, item)  
2235 - }  
2236 - }  
2237 -  
2238 - if (pro_off) {  
2239 - wx.showToast({  
2240 - title: '已超出优惠促销次数',  
2241 - icon: 'none',  
2242 - });  
2243 - th.clear_clicking();  
2244 - return false;  
2245 - } 2257 + // let pro_off = false
  2258 + // //判断多店优惠促销次数控制
  2259 + // if (th.data.requestData.length > 1) {
  2260 + // if (a.prom_type == 3 && !a.selected) {
  2261 + // pro_off = await th.multiple_stores_pro(pitems, item)
  2262 + // }
  2263 + // }
  2264 + //
  2265 + // if (pro_off) {
  2266 + // wx.showToast({
  2267 + // title: '已超出优惠促销次数',
  2268 + // icon: 'none',
  2269 + // });
  2270 + // th.clear_clicking();
  2271 + // return false;
  2272 + // }
2246 2273
2247 var txt0 = "requestData[" + pitems + "].show_can_cx"; 2274 var txt0 = "requestData[" + pitems + "].show_can_cx";
2248 e.setData({ 2275 e.setData({
@@ -2492,6 +2519,9 @@ Page({ @@ -2492,6 +2519,9 @@ Page({
2492 //-- 先批量判断一下活动的类型,同时要同步跟新 -- 2519 //-- 先批量判断一下活动的类型,同时要同步跟新 --
2493 var offline_price = 0; 2520 var offline_price = 0;
2494 var offline_num = 0; 2521 var offline_num = 0;
  2522 +
  2523 + //-- 优惠促销活动限购次数的优化 --
  2524 + var ch_yc_map={};
2495 for (var c = 0; c < item.length; c++) { 2525 for (var c = 0; c < item.length; c++) {
2496 //清理一下赠品 2526 //清理一下赠品
2497 if (item[c].is_gift) { 2527 if (item[c].is_gift) {
@@ -2504,6 +2534,20 @@ Page({ @@ -2504,6 +2534,20 @@ Page({
2504 continue; 2534 continue;
2505 } 2535 }
2506 2536
  2537 + let pro_off1 = false;
  2538 + //-- 判断活动超出限购,要有选中的情况 --
  2539 + if (item[c].prom_type == 3 && item[c].selected && !ch_yc_map[a.prom_id]) {
  2540 + //一个门店一个优惠促销就判断一次
  2541 + ch_yc_map[a.prom_id]=1;
  2542 + pro_off1 = await th.multiple_stores_pro(a, c)
  2543 + }
  2544 + if (pro_off1) {
  2545 + wx.showToast({
  2546 + title: '已超出优惠促销次数',
  2547 + icon: 'none',
  2548 + });
  2549 + }
  2550 +
2507 all_num += item[c].goods_num; 2551 all_num += item[c].goods_num;
2508 2552
2509 if (item[c].prom_type == 7) { 2553 if (item[c].prom_type == 7) {
@@ -2608,6 +2652,13 @@ Page({ @@ -2608,6 +2652,13 @@ Page({
2608 } 2652 }
2609 } 2653 }
2610 2654
  2655 +
  2656 +
  2657 +
  2658 +
  2659 +
  2660 +
  2661 +
2611 //总的价格,把组合商品的价格拿出来 2662 //总的价格,把组合商品的价格拿出来
2612 var zh_calc_res = zh_calc.calculate_zh(car, a, th); 2663 var zh_calc_res = zh_calc.calculate_zh(car, a, th);
2613 console.log('.组合价-----------') 2664 console.log('.组合价-----------')
@@ -4766,6 +4817,11 @@ Page({ @@ -4766,6 +4817,11 @@ Page({
4766 4817
4767 async all_check_prom_activity() { 4818 async all_check_prom_activity() {
4768 this.data.duo_zp_num_arr = {}; 4819 this.data.duo_zp_num_arr = {};
  4820 + //用来存销赠品的--2024-2-1
  4821 + let cart_zp=this.data.cart_zp;
  4822 + //要清空一下赠品数组
  4823 + cart_zp={};
  4824 +
4769 for (var i in this.data.requestData) { 4825 for (var i in this.data.requestData) {
4770 var cindex = i; 4826 var cindex = i;
4771 var make_up_arr = new Array(); 4827 var make_up_arr = new Array();
@@ -4781,11 +4837,6 @@ Page({ @@ -4781,11 +4837,6 @@ Page({
4781 4837
4782 var no_gift_arr = []; 4838 var no_gift_arr = [];
4783 4839
4784 - //用来存销赠品的--2024-2-1  
4785 - let cart_zp=this.data.cart_zp;  
4786 - //要清空一下赠品数组  
4787 - cart_zp={};  
4788 -  
4789 //主要判断有没有促销活动 4840 //主要判断有没有促销活动
4790 var is_sele_prom = 0; 4841 var is_sele_prom = 0;
4791 var is_gift_del = 0; 4842 var is_gift_del = 0;
@@ -4857,11 +4908,20 @@ Page({ @@ -4857,11 +4908,20 @@ Page({
4857 if (th.data.promgoods_map[p_item[0]]) { 4908 if (th.data.promgoods_map[p_item[0]]) {
4858 prom = th.data.promgoods_map[p_item[0]]; 4909 prom = th.data.promgoods_map[p_item[0]];
4859 } else { 4910 } else {
4860 - await getApp().request.promiseGet("/api/weshop/promgoods/get/" + os.stoid + "/" + p_item[0], {}).then(res => {  
4861 - if (res.data.code == 0) {  
4862 - prom = res.data.data;  
4863 - }  
4864 - }) 4911 +
  4912 + //使用缓存,不在调用接口
  4913 + if(!prom && th.data.yhcx_act_map && th.data.yhcx_act_map[p_item[0]] ){
  4914 + prom=th.data.yhcx_act_map[p_item[0]];
  4915 + }
  4916 + if(!prom){
  4917 + await getApp().request.promiseGet("/api/weshop/promgoods/get/" + os.stoid + "/" + p_item[0], {}).then(res => {
  4918 + if (res.data.code == 0) {
  4919 + prom = res.data.data;
  4920 + }
  4921 + })
  4922 + }
  4923 +
  4924 +
4865 } 4925 }
4866 let limit_num = 0 4926 let limit_num = 0
4867 let user_pre_buynum = 0 4927 let user_pre_buynum = 0
@@ -4910,6 +4970,7 @@ Page({ @@ -4910,6 +4970,7 @@ Page({
4910 if (!promgoods_list) continue; 4970 if (!promgoods_list) continue;
4911 th.data.promgoods_list[p_item[0]] = promgoods_list; 4971 th.data.promgoods_list[p_item[0]] = promgoods_list;
4912 } 4972 }
  4973 +
4913 if (!limit_num || user_pre_buynum < limit_num) { 4974 if (!limit_num || user_pre_buynum < limit_num) {
4914 for (var i in promgoods_list) { 4975 for (var i in promgoods_list) {
4915 var item = promgoods_list[i]; 4976 var item = promgoods_list[i];