Commit 63c20f6408e28284b61ebc286ecaac5f4edabc6f

Authored by yvan.ni
1 parent 8dd423ba

订单促销的bug优化

packageE/pages/cart/cart2/cart2.js
@@ -182,11 +182,10 @@ Page({ @@ -182,11 +182,10 @@ Page({
182 182
183 //-- 订单促销判断积累 ---2024-2-20 183 //-- 订单促销判断积累 ---2024-2-20
184 order_prom_map_ck: {}, 184 order_prom_map_ck: {},
185 -  
186 //能不能使用订单促销 185 //能不能使用订单促销
187 can_use_ord_prom:{}, 186 can_use_ord_prom:{},
  187 + //存储订单促销的取价,按照门店进行索引
188 show_ord_prom:{}, 188 show_ord_prom:{},
189 - join_ord_prom_goodslist:{}  
190 189
191 }, 190 },
192 191
@@ -954,7 +953,8 @@ Page({ @@ -954,7 +953,8 @@ Page({
954 // } 953 // }
955 // }) 954 // })
956 955
957 - th.data.cartlist_y =JSON.parse(JSON.stringify(carr)); //存储原始购物车列表 956 + th.data.cartlist_y =JSON.parse(JSON.stringify(carr)); //存储原始购物车列表,这个数据还会收到污染
  957 + th.data.cartlist_old =JSON.parse(JSON.stringify(carr)); //存储原始购物车列表
958 wx.showLoading(); 958 wx.showLoading();
959 959
960 th.get_cart_next(carr); 960 th.get_cart_next(carr);
@@ -1043,16 +1043,25 @@ Page({ @@ -1043,16 +1043,25 @@ Page({
1043 1043
1044 let item1 = carr[i]; 1044 let item1 = carr[i];
1045 1045
1046 - //如果有户有点击参与订单促销的话,那么可以参与订单促销的商品的活动都要清理成0  
1047 - if(this.data.can_use_ord_prom[item.pick_id]){ 1046 + //如果有户有点击参与订单促销的话,那么可以参与订单促销的商品的活动都要清理成0,订单促销在使用过程中的重要方法
  1047 + if(this.data.can_use_ord_prom[item1.pick_id]){
1048 //从订单促销的order_prom_map_ck数据结构中获取到可以参与的商品列表 1048 //从订单促销的order_prom_map_ck数据结构中获取到可以参与的商品列表
1049 - let gdlist=this.data.order_prom_map_ck[item.pick_id]?this.data.order_prom_map_ck[item.pick_id].goodsList:null; 1049 + let gdlist=this.data.order_prom_map_ck[item1.pick_id]?this.data.order_prom_map_ck[item1.pick_id].goodsList:null;
1050 if(gdlist && gdlist.length){ 1050 if(gdlist && gdlist.length){
1051 //查找商品item1有没有在gdlist中,就要把商品的prom_type清理0 1051 //查找商品item1有没有在gdlist中,就要把商品的prom_type清理0
1052 let f_idx=gdlist.findIndex(function (ele) { 1052 let f_idx=gdlist.findIndex(function (ele) {
1053 return ele.id == item1.id 1053 return ele.id == item1.id
1054 }); 1054 });
1055 if (f_idx!=-1){ 1055 if (f_idx!=-1){
  1056 + //开始变换商品的价格显示
  1057 + switch (th.data.show_ord_prom[item1.pick_id]){
  1058 + case 1:
  1059 + carr[i].goods_price=item1.shop_price;
  1060 + break;
  1061 + case 2:
  1062 + carr[i].goods_price=item1.goods_market_price;
  1063 + break;
  1064 + }
1056 carr[i].prom_type=0; 1065 carr[i].prom_type=0;
1057 continue; //要跳过 1066 continue; //要跳过
1058 } 1067 }
@@ -1313,11 +1322,8 @@ Page({ @@ -1313,11 +1322,8 @@ Page({
1313 if (ie.exp_type == 0 || ie.exp_type == 2) is_a_zt= 0; 1322 if (ie.exp_type == 0 || ie.exp_type == 2) is_a_zt= 0;
1314 } 1323 }
1315 th.setData({ is_all_zt: is_a_zt}); 1324 th.setData({ is_all_zt: is_a_zt});
1316 -  
1317 } 1325 }
1318 1326
1319 -  
1320 -  
1321 var cart_commission = 0; 1327 var cart_commission = 0;
1322 //-- 循环计算一下线下取价 -- 1328 //-- 循环计算一下线下取价 --
1323 for (var k = 0; k < arr.length; k++) { 1329 for (var k = 0; k < arr.length; k++) {
@@ -3197,8 +3203,6 @@ Page({ @@ -3197,8 +3203,6 @@ Page({
3197 } 3203 }
3198 } 3204 }
3199 3205
3200 - //-- 商品是不是没有参与优惠促销的话 --  
3201 - th.ch_no_order_prom_map_ck(item[jc],pickid)  
3202 } 3206 }
3203 3207
3204 3208
@@ -3575,11 +3579,7 @@ Page({ @@ -3575,11 +3579,7 @@ Page({
3575 var order_m = 0; 3579 var order_m = 0;
3576 //么有使用券,或者活动没有限制使用优惠券 3580 //么有使用券,或者活动没有限制使用优惠券
3577 if (ord_prom && (quan_price <= 0 || !ord_prom.is_xz_yh)) { 3581 if (ord_prom && (quan_price <= 0 || !ord_prom.is_xz_yh)) {
3578 - order_prom_id = ord_prom['id'];  
3579 -  
3580 - if(ord_prom.discount_field>0){  
3581 -  
3582 - }else{ 3582 + order_prom_id = ord_prom['id'];
3583 //-- 订单促销是按照实收价格进行计算的时候 -- 3583 //-- 订单促销是按照实收价格进行计算的时候 --
3584 switch (ord_prom['type']) { 3584 switch (ord_prom['type']) {
3585 case 0: 3585 case 0:
@@ -3595,7 +3595,7 @@ Page({ @@ -3595,7 +3595,7 @@ Page({
3595 order_prom_amount = ord_prom['expression']; 3595 order_prom_amount = ord_prom['expression'];
3596 break; 3596 break;
3597 } 3597 }
3598 - } 3598 +
3599 } 3599 }
3600 3600
3601 cart_item.order_prom_amount = 0; 3601 cart_item.order_prom_amount = 0;
@@ -6606,6 +6606,7 @@ Page({ @@ -6606,6 +6606,7 @@ Page({
6606 get_cart_quan: async function (order_prom_list_cart) { 6606 get_cart_quan: async function (order_prom_list_cart) {
6607 var th = this; 6607 var th = this;
6608 var user_id = getApp().globalData.user_id; 6608 var user_id = getApp().globalData.user_id;
  6609 +
6609 //等待值的出现 6610 //等待值的出现
6610 //getApp().waitfor2(this,"g_cart_q_time","order_prom_list_cart",async function () { 6611 //getApp().waitfor2(this,"g_cart_q_time","order_prom_list_cart",async function () {
6611 //var arr=th.data.order_prom_list_cart; 6612 //var arr=th.data.order_prom_list_cart;
@@ -6617,6 +6618,12 @@ Page({ @@ -6617,6 +6618,12 @@ Page({
6617 //------------开始计算使用优惠券相关------------ 6618 //------------开始计算使用优惠券相关------------
6618 for (var ind in arr) { 6619 for (var ind in arr) {
6619 var ep = arr[ind]; 6620 var ep = arr[ind];
  6621 +
  6622 + //如果门店订单使用订单促销(此订单促销取价规则不是实收价的时候)
  6623 + if(th.data.can_use_ord_prom[ep.pickup_id]){
  6624 + continue;
  6625 + }
  6626 +
6620 var goodlist = ep.goods; 6627 var goodlist = ep.goods;
6621 var pickup_id = ep.pickup_id; 6628 var pickup_id = ep.pickup_id;
6622 //--更优惠券抵用有关,立即购买的,如果是购物车,如果有等级价还有考虑等级价的东西 6629 //--更优惠券抵用有关,立即购买的,如果是购物车,如果有等级价还有考虑等级价的东西
@@ -8796,33 +8803,6 @@ Page({ @@ -8796,33 +8803,6 @@ Page({
8796 prom_type: item.prom_type 8803 prom_type: item.prom_type
8797 } 8804 }
8798 pk_ord_map.goodsList.push(ite); 8805 pk_ord_map.goodsList.push(ite);
8799 -  
8800 - console.log('pk_ord_map');  
8801 - console.log(pk_ord_map);  
8802 -  
8803 - },  
8804 -  
8805 - //寻找一下商品有没有参与订单促销  
8806 - ch_no_order_prom_map_ck(item,pickid){  
8807 - var order_prom_map_ck= this.data.order_prom_map_ck;  
8808 - if(!order_prom_map_ck[pickid]){  
8809 - order_prom_map_ck[pickid]={  
8810 - shop_price_all:0, //手店价的累计  
8811 - market_price_all:0, //市场价的累计  
8812 - goods_price_all:0, //实收价的累计  
8813 - no_ord_price:0, //要累计上不参与订单促销的金额  
8814 - goodsList:[],  
8815 - }  
8816 - }  
8817 - let pk_ord_map=order_prom_map_ck[pickid];  
8818 -  
8819 - //快速查找item有没有在goodsList中  
8820 - var fg = pk_ord_map.goodsList.findIndex(function (ite){  
8821 - return ite.id==item.id  
8822 - })  
8823 - if(fg==-1){  
8824 - pk_ord_map.no_ord_price= item.goods_price * item.goods_num;  
8825 - }  
8826 }, 8806 },
8827 8807
8828 //重置订单促销判断累计 8808 //重置订单促销判断累计
@@ -8853,10 +8833,7 @@ Page({ @@ -8853,10 +8833,7 @@ Page({
8853 //用于计算订单促销的金额 8833 //用于计算订单促销的金额
8854 let calculate_price=0; 8834 let calculate_price=0;
8855 8835
8856 -  
8857 let txt1='show_ord_prom['+pickid+']'; 8836 let txt1='show_ord_prom['+pickid+']';
8858 - let txt2='join_ord_prom_goodslist['+pickid+']';  
8859 -  
8860 //-- 此时判断活动的金额满足与否 -- 8837 //-- 此时判断活动的金额满足与否 --
8861 switch (ord_prom.discount_field) { 8838 switch (ord_prom.discount_field) {
8862 //实收价的时候 8839 //实收价的时候
@@ -8872,79 +8849,54 @@ Page({ @@ -8872,79 +8849,54 @@ Page({
8872 } 8849 }
8873 //要显示订单促销使用的按钮 8850 //要显示订单促销使用的按钮
8874 this.setData({ 8851 this.setData({
8875 - [txt1]: 1,  
8876 - [txt2]:order_prom_map_ck.goodsList //用于筛选商品的价格选手 8852 + [txt1]: 1
8877 }); 8853 });
8878 - //要用户点击了同意使用订单优惠的按钮后,才允许使用订单优惠  
8879 - if (!this.data.can_use_ord_prom) {  
8880 - return null;  
8881 - }  
8882 -  
8883 - //计算金额是参与订单促销的金额+不参与订单促销的金额  
8884 - calculate_price=order_prom_map_ck.shop_price_all+order_prom_map_ck.no_ord_price;  
8885 -  
8886 break; 8854 break;
8887 //市场价的时候 8855 //市场价的时候
8888 case 2: 8856 case 2:
8889 if (ord_prom.money > order_prom_map_ck.market_price_all){ 8857 if (ord_prom.money > order_prom_map_ck.market_price_all){
8890 return null; 8858 return null;
8891 } 8859 }
8892 -  
8893 - console.log('aaa');  
8894 - console.log(order_prom_map_ck.goodsList);  
8895 -  
8896 //要显示订单促销使用的按钮 8860 //要显示订单促销使用的按钮
8897 this.setData({ 8861 this.setData({
8898 - [txt1]: 2,  
8899 - [txt2]:order_prom_map_ck.goodsList //用于筛选商品的价格选手 8862 + [txt1]: 2
8900 }); 8863 });
8901 - //要用户点击了同意使用订单优惠的按钮后,才允许使用订单优惠  
8902 - if (!this.data.can_use_ord_prom) {  
8903 - return null;  
8904 - }  
8905 - //计算金额是参与订单促销的金额+不参与订单促销的金额  
8906 - calculate_price = order_prom_map_ck.market_price_all+order_prom_map_ck.no_ord_price;  
8907 break; 8864 break;
8908 } 8865 }
8909 -  
8910 - let order_prom_amount=0;  
8911 - //如果用户有点击按钮要参与订单促销的时候  
8912 - if (calculate_price > 0 && this.data.can_use_ord_prom[pickid]) {  
8913 - //-- 订单促销是按照实收价格进行计算的时候 --  
8914 - switch (ord_prom['type']) {  
8915 - case 0:  
8916 - let order_m = Math.round(calculate_price * ord_prom['expression']) / 100;//满额打折  
8917 - order_prom_amount = (calculate_price - order_m).toFixed(2);  
8918 - break;  
8919 - case 1:  
8920 - //order_m = o_condition - ord_prom['expression'];//满额优惠金额  
8921 - var bs = 1;  
8922 - if (ord_prom.is_bz) {  
8923 - bs = Math.floor(calculate_price / ord_prom.money);  
8924 - }  
8925 - order_prom_amount = ord_prom['expression'];  
8926 - break;  
8927 - }  
8928 - //保存到订单促销中,订单促销的金额  
8929 - ord_prom.real_order_prom_amount = order_prom_amount;  
8930 - ord_prom.real_condition_price = calculate_price; 8866 + //如果订单促销是不参与订单促销的,那么就直接返回null(订单促销不是实收价的时候)
  8867 + if(ord_prom.discount_field>0 && !this.data.can_use_ord_prom[pickid]){
  8868 + return null;
8931 } 8869 }
8932 return ord_prom; 8870 return ord_prom;
8933 -  
8934 }, 8871 },
8935 8872
8936 //设置能够参与订单促销 8873 //设置能够参与订单促销
8937 - set_can_use_ord_prom:function (e){  
8938 - let pickid=e.currentTarget.dataset.pd;  
8939 - let txt='can_use_ord_prom['+pickid+']';  
8940 - let can_use=this.data.can_use_ord_prom[pickid]?this.data.can_use_ord_prom[pickid]:0;  
8941 - this.setData({  
8942 - [txt]:!can_use  
8943 - }) 8874 + set_can_use_ord_prom: function (e) {
  8875 + let pickid = e.currentTarget.dataset.pd;
  8876 + let txt = 'can_use_ord_prom[' + pickid + ']';
  8877 + let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0;
  8878 + this.setData({
  8879 + [txt]: !can_use
  8880 + })
8944 8881
8945 - let carr=ut.deep_cp(th.data.cartlist_y);  
8946 - //-- 重新计算一下价格 --  
8947 - this.get_cart_next(carr); 8882 + //购物车进行还原,一下数据的清理的必须的
  8883 + let carr = ut.deep_cp(this.data.cartlist_old);
  8884 + this.setData({
  8885 + send_lb: {},
  8886 + month_lb: {},
  8887 + send_gf: {}
  8888 + })
  8889 + //清空优惠促销的内容
  8890 + this.data.prom_goods_map = {};
  8891 + //-- 过滤掉赠品 --
  8892 + let n_carr=[];
  8893 + for (var i = 0; i < carr.length; i++) {
  8894 + if (!carr[i].is_gift) {
  8895 + n_carr.push(carr[i]);
  8896 + }
  8897 + }
  8898 + //-- 重新计算一下价格 --
  8899 + this.get_cart_next(n_carr);
8948 } 8900 }
8949 8901
8950 8902
packageE/pages/cart/cart2/cart2.wxml
@@ -104,12 +104,10 @@ @@ -104,12 +104,10 @@
104 <block><text>{{filters.show_gui_ge(items.goods_spec,items.goods_color)}}</text></block> 104 <block><text>{{filters.show_gui_ge(items.goods_spec,items.goods_color)}}</text></block>
105 </view> 105 </view>
106 </view> 106 </view>
107 -  
108 <!-----商品名称规格------> 107 <!-----商品名称规格------>
109 <view class="order-num flex-space-between"> 108 <view class="order-num flex-space-between">
110 <!-- 动态显示商品的价格 --> 109 <!-- 动态显示商品的价格 -->
111 - <view wx:if="{{can_use_ord_prom[item.pickup_id]}}" class="co-red">¥<text class="fs36">{{util.fm_join_ord_prom_price(items,join_ord_prom_goodslist[item.pickup_id],show_ord_prom[item.pickup_id],2)}}</text></view>  
112 - <view wx:elif="{{items.prom_type==10}}" class="co-red">¥<text class="fs36">{{filters.toFix(items.goods_price,2)}}</text><text>({{items.discount}}折)</text></view> 110 + <view wx:if="{{items.prom_type==10}}" class="co-red">¥<text class="fs36">{{filters.toFix(items.goods_price,2)}}</text><text>({{items.discount}}折)</text></view>
113 <view wx:else class="co-red">¥<text class="fs36">{{filters.toFix(items.goods_price,2)}}</text></view> 111 <view wx:else class="co-red">¥<text class="fs36">{{filters.toFix(items.goods_price,2)}}</text></view>
114 <view style="color: red;" wx:if="{{items.use_commission && items.use_commission*1>0}}">佣金:{{filters.toFix(items.use_commission/items.goods_num,2)}}*{{items.goods_num}}</view> 112 <view style="color: red;" wx:if="{{items.use_commission && items.use_commission*1>0}}">佣金:{{filters.toFix(items.use_commission/items.goods_num,2)}}*{{items.goods_num}}</view>
115 <view class="goods-num">x{{items.goods_num}}</view> 113 <view class="goods-num">x{{items.goods_num}}</view>
packageE/pages/cart/cart2/filter.wxs
@@ -51,48 +51,9 @@ function check_is_last(index,goods_id){ @@ -51,48 +51,9 @@ function check_is_last(index,goods_id){
51 return false; 51 return false;
52 } 52 }
53 53
54 -//-- 用于筛选商品的价格显示 --  
55 -function fm_join_ord_prom_price(gd,join_gd_list,show_ord_prom,count){  
56 - var price=gd.goods_price;  
57 -  
58 - console.log('1111');  
59 - console.log(gd.id);  
60 -  
61 - //在join_gd_list中查找是否已经存在gd商品,靠购物车的id来判断  
62 - for(var i=0;i<join_gd_list.length;i++){  
63 - var jgd=join_gd_list[i];  
64 -  
65 - console.log(jgd.id);  
66 -  
67 -  
68 - if(jgd.id==gd.id){  
69 -  
70 - console.log('yyy');  
71 -  
72 -  
73 - switch (show_ord_prom){  
74 - case 1:  
75 - price=gd.shop_price;  
76 - break;  
77 - case 2:  
78 - price=gd.goods_market_price;  
79 - break;  
80 - }  
81 - break;  
82 - }  
83 - }  
84 - if (!price) {  
85 - return parseFloat(0).toFixed(count);  
86 - }  
87 - price = parseFloat(price);  
88 - return price.toFixed(count);  
89 -}  
90 -  
91 -  
92 module.exports = { 54 module.exports = {
93 format: format, 55 format: format,
94 is_more_act:is_more_act, 56 is_more_act:is_more_act,
95 check_show:check_show, 57 check_show:check_show,
96 check_is_last:check_is_last, 58 check_is_last:check_is_last,
97 - fm_join_ord_prom_price:fm_join_ord_prom_price,  
98 } 59 }