Commit 37406bb518caf04b0369a3b943a08d0fd372b9ca

Authored by yvan.ni
1 parent 4ebe2a58

立即购买的时候,秒杀和团购参与订单促销取价的优化

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">