Commit 37406bb518caf04b0369a3b943a08d0fd372b9ca

Authored by yvan.ni
1 parent 4ebe2a58

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

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