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,6 +2133,8 @@ Page({ | ||
2133 | success: async function (tt) { | 2133 | success: async function (tt) { |
2134 | if (tt.data.code == 0) { | 2134 | if (tt.data.code == 0) { |
2135 | //t.data.data.shop_price = tt.data.data.prom_price; | 2135 | //t.data.data.shop_price = tt.data.data.prom_price; |
2136 | + | ||
2137 | + gd.shop_price_y=gd.shop_price; | ||
2136 | gd.shop_price=t.data.data.shop_price = tt.data.data.prom_user_price; | 2138 | gd.shop_price=t.data.data.shop_price = tt.data.data.prom_user_price; |
2137 | th.data.ckeck_quan_price = 0; | 2139 | th.data.ckeck_quan_price = 0; |
2138 | 2140 | ||
@@ -2181,6 +2183,9 @@ Page({ | @@ -2181,6 +2183,9 @@ Page({ | ||
2181 | } | 2183 | } |
2182 | 2184 | ||
2183 | 2185 | ||
2186 | + //用深拷贝把商品缓存起来,方便后面使用 | ||
2187 | + th.data.old_bn_goods=ut.deep_cp(gd); | ||
2188 | + | ||
2184 | th.setData({ | 2189 | th.setData({ |
2185 | bn_goods: gd, | 2190 | bn_goods: gd, |
2186 | bn_pickname: gg.pick_name, | 2191 | bn_pickname: gg.pick_name, |
@@ -2209,6 +2214,7 @@ Page({ | @@ -2209,6 +2214,7 @@ Page({ | ||
2209 | ut.get_active_info(2,gd.prom_id,os.stoid,function(e){ | 2214 | ut.get_active_info(2,gd.prom_id,os.stoid,function(e){ |
2210 | 2215 | ||
2211 | //t.data.data.shop_price = tt.data.data.prom_price; | 2216 | //t.data.data.shop_price = tt.data.data.prom_price; |
2217 | + gd.shop_price_y=gd.shop_price; | ||
2212 | gd.shop_price=t.data.data.shop_price = tt.data.data.price; | 2218 | gd.shop_price=t.data.data.shop_price = tt.data.data.price; |
2213 | 2219 | ||
2214 | t.data.data.fir_rate = tt.data.data.fir_rate; | 2220 | t.data.data.fir_rate = tt.data.data.fir_rate; |
@@ -2248,6 +2254,10 @@ Page({ | @@ -2248,6 +2254,10 @@ Page({ | ||
2248 | gd.is_xz_yh = 1; | 2254 | gd.is_xz_yh = 1; |
2249 | } | 2255 | } |
2250 | 2256 | ||
2257 | + | ||
2258 | + //用深拷贝把商品缓存起来,方便后面使用 | ||
2259 | + th.data.old_bn_goods=ut.deep_cp(gd); | ||
2260 | + | ||
2251 | th.setData({ | 2261 | th.setData({ |
2252 | bn_goods: gd, | 2262 | bn_goods: gd, |
2253 | bn_pickname: gg.pick_name, | 2263 | bn_pickname: gg.pick_name, |
@@ -3147,22 +3157,17 @@ Page({ | @@ -3147,22 +3157,17 @@ Page({ | ||
3147 | 3157 | ||
3148 | 3158 | ||
3149 | var whsle_goods_price = 0; | 3159 | var whsle_goods_price = 0; |
3150 | - var whsle_shop_price = 0; | ||
3151 | - var whsle_market_price = 0; | ||
3152 | - | ||
3153 | var no_zh_all_quan_num=0; //不是组合购商品的使用的优惠券综合 | 3160 | var no_zh_all_quan_num=0; //不是组合购商品的使用的优惠券综合 |
3154 | 3161 | ||
3155 | //--------循环计算总价----------- | 3162 | //--------循环计算总价----------- |
3156 | for (var jc = 0; jc < item.length; jc++) { | 3163 | for (var jc = 0; jc < item.length; jc++) { |
3157 | 3164 | ||
3158 | if (item[jc].prom_type == 0) { //如果item的prom_type==0,没有如果活动的时候 | 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 | if (item[jc].whsle_id > 0) { | 3169 | if (item[jc].whsle_id > 0) { |
3163 | whsle_goods_price += item[jc].goods_price * item[jc].goods_num; | 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 | var is_no_zh = 0; | 3173 | var is_no_zh = 0; |
@@ -4047,15 +4052,22 @@ Page({ | @@ -4047,15 +4052,22 @@ Page({ | ||
4047 | var ord_prom = null; | 4052 | var ord_prom = null; |
4048 | var is_ord_prom_post = 0; | 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 | if (ord_prom && ord_prom.is_post_temp) { | 4071 | if (ord_prom && ord_prom.is_post_temp) { |
4060 | is_ord_prom_post = 1; | 4072 | is_ord_prom_post = 1; |
4061 | } | 4073 | } |
@@ -8492,10 +8504,13 @@ Page({ | @@ -8492,10 +8504,13 @@ Page({ | ||
8492 | 8504 | ||
8493 | var cx_prom_group=this.data.cartlist[idx].show_can_cx[gd_key].act_arr; | 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 | th.setData({ | 8509 | th.setData({ |
8496 | send_lb:{}, | 8510 | send_lb:{}, |
8497 | month_lb:{}, | 8511 | month_lb:{}, |
8498 | - send_gf:{} | 8512 | + send_gf:{}, |
8513 | + [tt_wd]:0 | ||
8499 | }) | 8514 | }) |
8500 | 8515 | ||
8501 | th.data.prom_goods_map={}; | 8516 | th.data.prom_goods_map={}; |
@@ -8704,6 +8719,9 @@ Page({ | @@ -8704,6 +8719,9 @@ Page({ | ||
8704 | 8719 | ||
8705 | //--- 不参与优惠促销的开关 --- | 8720 | //--- 不参与优惠促销的开关 --- |
8706 | no_cj_prom: function (e) { | 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 | this.setData({ | 8726 | this.setData({ |
8709 | send_lb:{}, | 8727 | send_lb:{}, |
@@ -8798,6 +8816,9 @@ Page({ | @@ -8798,6 +8816,9 @@ Page({ | ||
8798 | //---订单促销累计的数据结构的构建,购物车计算流程的那一部分 | 8816 | //---订单促销累计的数据结构的构建,购物车计算流程的那一部分 |
8799 | get_order_prom_map_ck(item,pickid) { | 8817 | get_order_prom_map_ck(item,pickid) { |
8800 | 8818 | ||
8819 | + //赠品不计算 | ||
8820 | + if(item.is_gift) return false; | ||
8821 | + | ||
8801 | var order_prom_map_ck= this.data.order_prom_map_ck; | 8822 | var order_prom_map_ck= this.data.order_prom_map_ck; |
8802 | if(!order_prom_map_ck[pickid]){ | 8823 | if(!order_prom_map_ck[pickid]){ |
8803 | order_prom_map_ck[pickid]={ | 8824 | order_prom_map_ck[pickid]={ |
@@ -8822,6 +8843,25 @@ Page({ | @@ -8822,6 +8843,25 @@ Page({ | ||
8822 | pk_ord_map.goodsList.push(ite); | 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 | re_set_order_prom_map_ck() { | 8866 | re_set_order_prom_map_ck() { |
8827 | this.data.order_prom_map_ck = {} | 8867 | this.data.order_prom_map_ck = {} |
@@ -8855,6 +8895,11 @@ Page({ | @@ -8855,6 +8895,11 @@ Page({ | ||
8855 | switch (ord_prom.discount_field) { | 8895 | switch (ord_prom.discount_field) { |
8856 | //实收价的时候 | 8896 | //实收价的时候 |
8857 | case 0: | 8897 | case 0: |
8898 | + //要先还原 | ||
8899 | + this.setData({ | ||
8900 | + [txt1]: 0 | ||
8901 | + }); | ||
8902 | + | ||
8858 | if (ord_prom.money > order_prom_map_ck.goods_price_all){ | 8903 | if (ord_prom.money > order_prom_map_ck.goods_price_all){ |
8859 | return null; | 8904 | return null; |
8860 | } | 8905 | } |
@@ -8862,6 +8907,10 @@ Page({ | @@ -8862,6 +8907,10 @@ Page({ | ||
8862 | //手店价的时候 | 8907 | //手店价的时候 |
8863 | case 1: | 8908 | case 1: |
8864 | if (ord_prom.money > order_prom_map_ck.shop_price_all){ | 8909 | if (ord_prom.money > order_prom_map_ck.shop_price_all){ |
8910 | + //要先还原 | ||
8911 | + this.setData({ | ||
8912 | + [txt1]: 0 | ||
8913 | + }); | ||
8865 | return null; | 8914 | return null; |
8866 | } | 8915 | } |
8867 | //要显示订单促销使用的按钮 | 8916 | //要显示订单促销使用的按钮 |
@@ -8872,6 +8921,10 @@ Page({ | @@ -8872,6 +8921,10 @@ Page({ | ||
8872 | //市场价的时候 | 8921 | //市场价的时候 |
8873 | case 2: | 8922 | case 2: |
8874 | if (ord_prom.money > order_prom_map_ck.market_price_all){ | 8923 | if (ord_prom.money > order_prom_map_ck.market_price_all){ |
8924 | + //要先还原 | ||
8925 | + this.setData({ | ||
8926 | + [txt1]: 0 | ||
8927 | + }); | ||
8875 | return null; | 8928 | return null; |
8876 | } | 8929 | } |
8877 | //要显示订单促销使用的按钮 | 8930 | //要显示订单促销使用的按钮 |
@@ -8889,6 +8942,10 @@ Page({ | @@ -8889,6 +8942,10 @@ Page({ | ||
8889 | 8942 | ||
8890 | //设置能够参与订单促销 | 8943 | //设置能够参与订单促销 |
8891 | set_can_use_ord_prom: function (e) { | 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 | let pickid = e.currentTarget.dataset.pd; | 8949 | let pickid = e.currentTarget.dataset.pd; |
8893 | let txt = 'can_use_ord_prom[' + pickid + ']'; | 8950 | let txt = 'can_use_ord_prom[' + pickid + ']'; |
8894 | let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0; | 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,7 +8954,6 @@ Page({ | ||
8897 | }) | 8954 | }) |
8898 | 8955 | ||
8899 | //购物车进行还原,一下数据的清理的必须的 | 8956 | //购物车进行还原,一下数据的清理的必须的 |
8900 | - let carr = ut.deep_cp(this.data.cartlist_old); | ||
8901 | this.setData({ | 8957 | this.setData({ |
8902 | send_lb: {}, | 8958 | send_lb: {}, |
8903 | month_lb: {}, | 8959 | month_lb: {}, |
@@ -8918,8 +8974,54 @@ Page({ | @@ -8918,8 +8974,54 @@ Page({ | ||
8918 | 8974 | ||
8919 | //原始数据要有深拷贝不能有地址的牵连 | 8975 | //原始数据要有深拷贝不能有地址的牵连 |
8920 | this.data.cartlist_y = JSON.parse(JSON.stringify(goods)) | 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 | this.get_cart_next(null, 1, {prom_type: 0, prom_id: 0}); | 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,6 +693,14 @@ | ||
693 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} | 693 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} |
694 | </view> | 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 | <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)}}"> | 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 | <view class="work-frame flex-space-between"> | 705 | <view class="work-frame flex-space-between"> |
698 | <view class="work"> | 706 | <view class="work"> |