Commit 37406bb518caf04b0369a3b943a08d0fd372b9ca
1 parent
4ebe2a58
立即购买的时候,秒杀和团购参与订单促销取价的优化
Showing
2 changed files
with
127 additions
and
17 deletions
packageE/pages/cart/cart2/cart2.js
| ... | ... | @@ -2133,6 +2133,8 @@ Page({ |
| 2133 | 2133 | success: async function (tt) { |
| 2134 | 2134 | if (tt.data.code == 0) { |
| 2135 | 2135 | //t.data.data.shop_price = tt.data.data.prom_price; |
| 2136 | + | |
| 2137 | + gd.shop_price_y=gd.shop_price; | |
| 2136 | 2138 | gd.shop_price=t.data.data.shop_price = tt.data.data.prom_user_price; |
| 2137 | 2139 | th.data.ckeck_quan_price = 0; |
| 2138 | 2140 | |
| ... | ... | @@ -2181,6 +2183,9 @@ Page({ |
| 2181 | 2183 | } |
| 2182 | 2184 | |
| 2183 | 2185 | |
| 2186 | + //用深拷贝把商品缓存起来,方便后面使用 | |
| 2187 | + th.data.old_bn_goods=ut.deep_cp(gd); | |
| 2188 | + | |
| 2184 | 2189 | th.setData({ |
| 2185 | 2190 | bn_goods: gd, |
| 2186 | 2191 | bn_pickname: gg.pick_name, |
| ... | ... | @@ -2209,6 +2214,7 @@ Page({ |
| 2209 | 2214 | ut.get_active_info(2,gd.prom_id,os.stoid,function(e){ |
| 2210 | 2215 | |
| 2211 | 2216 | //t.data.data.shop_price = tt.data.data.prom_price; |
| 2217 | + gd.shop_price_y=gd.shop_price; | |
| 2212 | 2218 | gd.shop_price=t.data.data.shop_price = tt.data.data.price; |
| 2213 | 2219 | |
| 2214 | 2220 | t.data.data.fir_rate = tt.data.data.fir_rate; |
| ... | ... | @@ -2248,6 +2254,10 @@ Page({ |
| 2248 | 2254 | gd.is_xz_yh = 1; |
| 2249 | 2255 | } |
| 2250 | 2256 | |
| 2257 | + | |
| 2258 | + //用深拷贝把商品缓存起来,方便后面使用 | |
| 2259 | + th.data.old_bn_goods=ut.deep_cp(gd); | |
| 2260 | + | |
| 2251 | 2261 | th.setData({ |
| 2252 | 2262 | bn_goods: gd, |
| 2253 | 2263 | bn_pickname: gg.pick_name, |
| ... | ... | @@ -3147,22 +3157,17 @@ Page({ |
| 3147 | 3157 | |
| 3148 | 3158 | |
| 3149 | 3159 | var whsle_goods_price = 0; |
| 3150 | - var whsle_shop_price = 0; | |
| 3151 | - var whsle_market_price = 0; | |
| 3152 | - | |
| 3153 | 3160 | var no_zh_all_quan_num=0; //不是组合购商品的使用的优惠券综合 |
| 3154 | 3161 | |
| 3155 | 3162 | //--------循环计算总价----------- |
| 3156 | 3163 | for (var jc = 0; jc < item.length; jc++) { |
| 3157 | 3164 | |
| 3158 | 3165 | if (item[jc].prom_type == 0) { //如果item的prom_type==0,没有如果活动的时候 |
| 3159 | - th.get_order_prom_map_ck(item,pickid); | |
| 3166 | + th.get_order_prom_map_ck(item[jc],pickid); | |
| 3160 | 3167 | } |
| 3161 | 3168 | |
| 3162 | 3169 | if (item[jc].whsle_id > 0) { |
| 3163 | 3170 | whsle_goods_price += item[jc].goods_price * item[jc].goods_num; |
| 3164 | - whsle_shop_price += item[jc].shop_price * item[jc].goods_num; | |
| 3165 | - whsle_market_price += item[jc].goods_market_price * item[jc].goods_num; | |
| 3166 | 3171 | } |
| 3167 | 3172 | |
| 3168 | 3173 | var is_no_zh = 0; |
| ... | ... | @@ -4047,15 +4052,22 @@ Page({ |
| 4047 | 4052 | var ord_prom = null; |
| 4048 | 4053 | var is_ord_prom_post = 0; |
| 4049 | 4054 | |
| 4050 | - if (condition > 0 && th.data.bn_is_order_yh && !th.data.bn_goods.whsle_id) { | |
| 4051 | - await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | |
| 4052 | - data: { store_id: os.stoid, orderAmount: condition, user_id: getApp().globalData.user_id } | |
| 4053 | - }).then(res => { | |
| 4054 | - if (res.data.code == 0) { | |
| 4055 | - var data = res.data.data; | |
| 4056 | - ord_prom = data; | |
| 4057 | - } | |
| 4058 | - }) | |
| 4055 | + //一件代发商品不参与订单优惠, 本身商品的活动也有要不要参与优惠促销的设置bn_is_order_yh | |
| 4056 | + if (th.data.bn_is_order_yh && !th.data.bn_goods.whsle_id) { | |
| 4057 | + | |
| 4058 | + th.set_by_now_ord_prom(th.data.bn_goods); | |
| 4059 | + th.data.order_prom_map_ck[bn_pick].goods_price_all=condition; | |
| 4060 | + | |
| 4061 | + // await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | |
| 4062 | + // data: { store_id: os.stoid, orderAmount: condition, user_id: getApp().globalData.user_id } | |
| 4063 | + // }).then(res => { | |
| 4064 | + // if (res.data.code == 0) { | |
| 4065 | + // var data = res.data.data; | |
| 4066 | + // ord_prom = data; | |
| 4067 | + // } | |
| 4068 | + // }) | |
| 4069 | + ord_prom=await th.get_cur_ord_prom(bn_pick); | |
| 4070 | + | |
| 4059 | 4071 | if (ord_prom && ord_prom.is_post_temp) { |
| 4060 | 4072 | is_ord_prom_post = 1; |
| 4061 | 4073 | } |
| ... | ... | @@ -8492,10 +8504,13 @@ Page({ |
| 8492 | 8504 | |
| 8493 | 8505 | var cx_prom_group=this.data.cartlist[idx].show_can_cx[gd_key].act_arr; |
| 8494 | 8506 | |
| 8507 | + //-- 切换活动的时候,让订单促销参与不选中 -- | |
| 8508 | + let tt_wd="can_use_ord_prom["+pk+"]"; | |
| 8495 | 8509 | th.setData({ |
| 8496 | 8510 | send_lb:{}, |
| 8497 | 8511 | month_lb:{}, |
| 8498 | - send_gf:{} | |
| 8512 | + send_gf:{}, | |
| 8513 | + [tt_wd]:0 | |
| 8499 | 8514 | }) |
| 8500 | 8515 | |
| 8501 | 8516 | th.data.prom_goods_map={}; |
| ... | ... | @@ -8704,6 +8719,9 @@ Page({ |
| 8704 | 8719 | |
| 8705 | 8720 | //--- 不参与优惠促销的开关 --- |
| 8706 | 8721 | no_cj_prom: function (e) { |
| 8722 | + //避免重复点击 | |
| 8723 | + if(this.data.submit) return false; | |
| 8724 | + this.setData({ submit: 1,same_ok:1 }); | |
| 8707 | 8725 | |
| 8708 | 8726 | this.setData({ |
| 8709 | 8727 | send_lb:{}, |
| ... | ... | @@ -8798,6 +8816,9 @@ Page({ |
| 8798 | 8816 | //---订单促销累计的数据结构的构建,购物车计算流程的那一部分 |
| 8799 | 8817 | get_order_prom_map_ck(item,pickid) { |
| 8800 | 8818 | |
| 8819 | + //赠品不计算 | |
| 8820 | + if(item.is_gift) return false; | |
| 8821 | + | |
| 8801 | 8822 | var order_prom_map_ck= this.data.order_prom_map_ck; |
| 8802 | 8823 | if(!order_prom_map_ck[pickid]){ |
| 8803 | 8824 | order_prom_map_ck[pickid]={ |
| ... | ... | @@ -8822,6 +8843,25 @@ Page({ |
| 8822 | 8843 | pk_ord_map.goodsList.push(ite); |
| 8823 | 8844 | }, |
| 8824 | 8845 | |
| 8846 | + | |
| 8847 | + //-- 秒杀和团购使用 -- | |
| 8848 | + set_by_now_ord_prom(item){ | |
| 8849 | + let pickid=this.data.bn_pick; | |
| 8850 | + let order_prom_map_ck= this.data.order_prom_map_ck; | |
| 8851 | + order_prom_map_ck[pickid]={ | |
| 8852 | + shop_price_all:0, //手店价的累计 | |
| 8853 | + market_price_all:0, //市场价的累计 | |
| 8854 | + goods_price_all:0, //实收价的累计 | |
| 8855 | + no_ord_price:0, //要累计上不参与订单促销的金额 | |
| 8856 | + goodsList:[], | |
| 8857 | + } | |
| 8858 | + | |
| 8859 | + let pk_ord_map=order_prom_map_ck[pickid]; | |
| 8860 | + pk_ord_map.shop_price_all += item.shop_price_y * item.buynum; | |
| 8861 | + pk_ord_map.market_price_all += item.goods_market_price * item.buynum; | |
| 8862 | + | |
| 8863 | + }, | |
| 8864 | + | |
| 8825 | 8865 | //重置订单促销判断累计 |
| 8826 | 8866 | re_set_order_prom_map_ck() { |
| 8827 | 8867 | this.data.order_prom_map_ck = {} |
| ... | ... | @@ -8855,6 +8895,11 @@ Page({ |
| 8855 | 8895 | switch (ord_prom.discount_field) { |
| 8856 | 8896 | //实收价的时候 |
| 8857 | 8897 | case 0: |
| 8898 | + //要先还原 | |
| 8899 | + this.setData({ | |
| 8900 | + [txt1]: 0 | |
| 8901 | + }); | |
| 8902 | + | |
| 8858 | 8903 | if (ord_prom.money > order_prom_map_ck.goods_price_all){ |
| 8859 | 8904 | return null; |
| 8860 | 8905 | } |
| ... | ... | @@ -8862,6 +8907,10 @@ Page({ |
| 8862 | 8907 | //手店价的时候 |
| 8863 | 8908 | case 1: |
| 8864 | 8909 | if (ord_prom.money > order_prom_map_ck.shop_price_all){ |
| 8910 | + //要先还原 | |
| 8911 | + this.setData({ | |
| 8912 | + [txt1]: 0 | |
| 8913 | + }); | |
| 8865 | 8914 | return null; |
| 8866 | 8915 | } |
| 8867 | 8916 | //要显示订单促销使用的按钮 |
| ... | ... | @@ -8872,6 +8921,10 @@ Page({ |
| 8872 | 8921 | //市场价的时候 |
| 8873 | 8922 | case 2: |
| 8874 | 8923 | if (ord_prom.money > order_prom_map_ck.market_price_all){ |
| 8924 | + //要先还原 | |
| 8925 | + this.setData({ | |
| 8926 | + [txt1]: 0 | |
| 8927 | + }); | |
| 8875 | 8928 | return null; |
| 8876 | 8929 | } |
| 8877 | 8930 | //要显示订单促销使用的按钮 |
| ... | ... | @@ -8889,6 +8942,10 @@ Page({ |
| 8889 | 8942 | |
| 8890 | 8943 | //设置能够参与订单促销 |
| 8891 | 8944 | set_can_use_ord_prom: function (e) { |
| 8945 | + | |
| 8946 | + if(this.data.submit) return false; | |
| 8947 | + this.setData({ submit: 1,same_ok:1 }); | |
| 8948 | + | |
| 8892 | 8949 | let pickid = e.currentTarget.dataset.pd; |
| 8893 | 8950 | let txt = 'can_use_ord_prom[' + pickid + ']'; |
| 8894 | 8951 | let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0; |
| ... | ... | @@ -8897,7 +8954,6 @@ Page({ |
| 8897 | 8954 | }) |
| 8898 | 8955 | |
| 8899 | 8956 | //购物车进行还原,一下数据的清理的必须的 |
| 8900 | - let carr = ut.deep_cp(this.data.cartlist_old); | |
| 8901 | 8957 | this.setData({ |
| 8902 | 8958 | send_lb: {}, |
| 8903 | 8959 | month_lb: {}, |
| ... | ... | @@ -8918,8 +8974,54 @@ Page({ |
| 8918 | 8974 | |
| 8919 | 8975 | //原始数据要有深拷贝不能有地址的牵连 |
| 8920 | 8976 | this.data.cartlist_y = JSON.parse(JSON.stringify(goods)) |
| 8977 | + //重新调用cart_next,进行下一步计算 | |
| 8978 | + wx.showLoading({ | |
| 8979 | + title: "处理中.", | |
| 8980 | + mark:true | |
| 8981 | + }) | |
| 8921 | 8982 | //-- 重新计算一下价格 -- |
| 8922 | 8983 | this.get_cart_next(null, 1, {prom_type: 0, prom_id: 0}); |
| 8984 | + }, | |
| 8985 | + | |
| 8986 | + //立即购买的时候,点击订单促销的参与 | |
| 8987 | + set_can_use_ord_prom_now:function (e){ | |
| 8988 | + | |
| 8989 | + if(this.data.submit) return false; | |
| 8990 | + this.setData({ submit: 1,same_ok:1 }); | |
| 8991 | + | |
| 8992 | + let pickid=this.data.bn_pick; | |
| 8993 | + let txt = 'can_use_ord_prom[' + pickid + ']'; | |
| 8994 | + let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0; | |
| 8995 | + this.setData({ | |
| 8996 | + [txt]: !can_use | |
| 8997 | + }) | |
| 8998 | + | |
| 8999 | + let th=this; | |
| 9000 | + let good=th.data.bn_goods; | |
| 9001 | + | |
| 9002 | + //如果有要参与订单促销的按钮点击后,要修改商品的价格 | |
| 9003 | + if(th.data.can_use_ord_prom[pickid]){ | |
| 9004 | + let discount_field=th.data.show_ord_prom[pickid]; | |
| 9005 | + switch (discount_field){ | |
| 9006 | + case 1: | |
| 9007 | + good.shop_price=good.shop_price_y; | |
| 9008 | + break; | |
| 9009 | + case 2: | |
| 9010 | + good.shop_price=good.market_price; | |
| 9011 | + break; | |
| 9012 | + } | |
| 9013 | + }else{ | |
| 9014 | + good=ut.deep_cp(th.data.old_bn_goods); | |
| 9015 | + } | |
| 9016 | + | |
| 9017 | + th.setData({ | |
| 9018 | + bn_goods:good | |
| 9019 | + }) | |
| 9020 | + wx.showLoading({ | |
| 9021 | + title: "处理中.", | |
| 9022 | + mark:true | |
| 9023 | + }) | |
| 9024 | + th.calculatePrice2() | |
| 8923 | 9025 | } |
| 8924 | 9026 | |
| 8925 | 9027 | ... | ... |
packageE/pages/cart/cart2/cart2.wxml
| ... | ... | @@ -693,6 +693,14 @@ |
| 693 | 693 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} |
| 694 | 694 | </view> |
| 695 | 695 | |
| 696 | + <!-- 订单促销取价规则的优化 --> | |
| 697 | + <view class="set-mes" wx:if="{{show_ord_prom[bn_pick]}}"> | |
| 698 | + <view class="use-item" bindtap='set_can_use_ord_prom_now'> | |
| 699 | + <icon color="{{can_use_ord_prom[bn_pick]?'red':'gray'}}" size="16" type="success"></icon> | |
| 700 | + <view class="yu_er">参与订单促销</view> | |
| 701 | + </view> | |
| 702 | + </view> | |
| 703 | + | |
| 696 | 704 | <view class="xc-coupon-frame flex-center" data-bn="1" bindtap="open_coupon_list" data-pickid="{{bn_pick}}" hidden="{{(selected_quan_list?selected_quan_list.length:0)+ (get_by_quan_list && bn_exp_type==0?get_by_quan_list.length:0)<=0}}" wx:if="{{is_coupon > 0 && ((selected_quan_list && selected_quan_list.length>0) || get_by_quan_list!=null)}}"> |
| 697 | 705 | <view class="work-frame flex-space-between"> |
| 698 | 706 | <view class="work"> | ... | ... |