Commit ba3d4e4e6762fd6b23339c3bcfd921edd33bc5a3
1 parent
5eb61220
订单促销的优化
Showing
11 changed files
with
462 additions
and
41 deletions
packageC/pages/luckyGo/luckyGo_cart_ct/luckyGo_cart_ct.js
| @@ -80,6 +80,13 @@ Page({ | @@ -80,6 +80,13 @@ Page({ | ||
| 80 | bconfig: null, | 80 | bconfig: null, |
| 81 | showFold:true, | 81 | showFold:true, |
| 82 | template_id:[], | 82 | template_id:[], |
| 83 | + | ||
| 84 | + //-- 订单促销判断积累 ---2024-2-20 | ||
| 85 | + order_prom_map_ck: {}, | ||
| 86 | + //能不能使用订单促销 | ||
| 87 | + can_use_ord_prom:{}, | ||
| 88 | + //存储订单促销的取价,按照门店进行索引 | ||
| 89 | + show_ord_prom:{}, | ||
| 83 | }, | 90 | }, |
| 84 | 91 | ||
| 85 | 92 | ||
| @@ -513,6 +520,7 @@ Page({ | @@ -513,6 +520,7 @@ Page({ | ||
| 513 | } | 520 | } |
| 514 | 521 | ||
| 515 | 522 | ||
| 523 | + t.data.data.shop_price_y = t.data.data.shop_price; | ||
| 516 | t.data.data.shop_price = gg.goods_price; | 524 | t.data.data.shop_price = gg.goods_price; |
| 517 | //--如果是普通购买的时候-- | 525 | //--如果是普通购买的时候-- |
| 518 | if (gg.is_normal == 1) { | 526 | if (gg.is_normal == 1) { |
| @@ -569,7 +577,10 @@ Page({ | @@ -569,7 +577,10 @@ Page({ | ||
| 569 | } | 577 | } |
| 570 | 578 | ||
| 571 | 579 | ||
| 580 | + t.data.data.goods_price=th.data.param.goods_price; | ||
| 572 | 581 | ||
| 582 | + //用深拷贝把商品缓存起来,方便后面使用 | ||
| 583 | + th.data.old_bn_goods=ut.deep_cp(t.data.data); | ||
| 573 | 584 | ||
| 574 | th.setData({ | 585 | th.setData({ |
| 575 | bn_goods: t.data.data, | 586 | bn_goods: t.data.data, |
| @@ -642,6 +653,9 @@ Page({ | @@ -642,6 +653,9 @@ Page({ | ||
| 642 | 653 | ||
| 643 | } | 654 | } |
| 644 | 655 | ||
| 656 | + t.data.data.goods_price=th.data.param.goods_price; | ||
| 657 | + //用深拷贝把商品缓存起来,方便后面使用 | ||
| 658 | + th.data.old_bn_goods=ut.deep_cp(t.data.data); | ||
| 645 | 659 | ||
| 646 | th.setData({ | 660 | th.setData({ |
| 647 | bn_goods: t.data.data, | 661 | bn_goods: t.data.data, |
| @@ -651,7 +665,6 @@ Page({ | @@ -651,7 +665,6 @@ Page({ | ||
| 651 | bn_exp_type: et | 665 | bn_exp_type: et |
| 652 | }); | 666 | }); |
| 653 | 667 | ||
| 654 | - | ||
| 655 | //计算价格 | 668 | //计算价格 |
| 656 | th.calculatePrice2(); | 669 | th.calculatePrice2(); |
| 657 | } | 670 | } |
| @@ -842,7 +855,9 @@ Page({ | @@ -842,7 +855,9 @@ Page({ | ||
| 842 | //-----------计算商品总价-------------- | 855 | //-----------计算商品总价-------------- |
| 843 | //var allpice = th.data.param.goods_price; | 856 | //var allpice = th.data.param.goods_price; |
| 844 | var allpice = (th.data.act.group_price/100).toFixed(2); | 857 | var allpice = (th.data.act.group_price/100).toFixed(2); |
| 845 | - | 858 | + if(th.data.can_use_ord_prom[th.data.bn_pick]){ |
| 859 | + allpice=th.data.param.goods_price*th.data.bn_goods.buynum; | ||
| 860 | + } | ||
| 846 | 861 | ||
| 847 | allpice = parseFloat(allpice).toFixed(2); | 862 | allpice = parseFloat(allpice).toFixed(2); |
| 848 | var txt = "formData.all_price"; | 863 | var txt = "formData.all_price"; |
| @@ -868,14 +883,18 @@ Page({ | @@ -868,14 +883,18 @@ Page({ | ||
| 868 | var ord_prom=null; | 883 | var ord_prom=null; |
| 869 | var o_condition=allpice; | 884 | var o_condition=allpice; |
| 870 | if(th.data.act.is_order_yh){ | 885 | if(th.data.act.is_order_yh){ |
| 886 | + // await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | ||
| 887 | + // data: { store_id: os.stoid, orderAmount: o_condition, user_id: getApp().globalData.user_id } | ||
| 888 | + // }).then(res => { | ||
| 889 | + // if (res.data.code == 0) { | ||
| 890 | + // ord_prom = res.data.data; | ||
| 891 | + // } | ||
| 892 | + // }) | ||
| 893 | + | ||
| 894 | + th.set_by_now_ord_prom(th.data.bn_goods); | ||
| 895 | + th.data.order_prom_map_ck[th.data.bn_pick].goods_price_all=o_condition; | ||
| 896 | + ord_prom=await th.get_cur_ord_prom(th.data.bn_pick); | ||
| 871 | 897 | ||
| 872 | - await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | ||
| 873 | - data: { store_id: os.stoid, orderAmount: o_condition, user_id: getApp().globalData.user_id } | ||
| 874 | - }).then(res => { | ||
| 875 | - if (res.data.code == 0) { | ||
| 876 | - ord_prom = res.data.data; | ||
| 877 | - } | ||
| 878 | - }) | ||
| 879 | } | 898 | } |
| 880 | 899 | ||
| 881 | 900 | ||
| @@ -964,7 +983,7 @@ Page({ | @@ -964,7 +983,7 @@ Page({ | ||
| 964 | title: "物流配置未启用物流公司", icon: 'none', duration: 2000 | 983 | title: "物流配置未启用物流公司", icon: 'none', duration: 2000 |
| 965 | }) | 984 | }) |
| 966 | //th.setData({ show_submit:0, }); | 985 | //th.setData({ show_submit:0, }); |
| 967 | - th.setData({show_submit:1, submit: 0,same_ok:0 }) | 986 | + th.setData({show_submit:1, submit: 0,same_ok:0,sub:0 }) |
| 968 | return false; | 987 | return false; |
| 969 | } | 988 | } |
| 970 | 989 | ||
| @@ -996,7 +1015,7 @@ Page({ | @@ -996,7 +1015,7 @@ Page({ | ||
| 996 | wx.showToast({ | 1015 | wx.showToast({ |
| 997 | title: "计算物流错误", icon: 'none', duration: 2000 | 1016 | title: "计算物流错误", icon: 'none', duration: 2000 |
| 998 | }) | 1017 | }) |
| 999 | - th.setData({show_submit:1, submit: 0,same_ok:0 }) | 1018 | + th.setData({show_submit:1, submit: 0,same_ok:0,sub:0 }) |
| 1000 | return false; | 1019 | return false; |
| 1001 | } | 1020 | } |
| 1002 | 1021 | ||
| @@ -1289,7 +1308,7 @@ Page({ | @@ -1289,7 +1308,7 @@ Page({ | ||
| 1289 | // 提交订单前弹出确认对话框 | 1308 | // 提交订单前弹出确认对话框 |
| 1290 | submitConfirm(e) { | 1309 | submitConfirm(e) { |
| 1291 | // is_show为0不显示温馨提示,为1显示温馨提示 | 1310 | // is_show为0不显示温馨提示,为1显示温馨提示 |
| 1292 | - if (this.data.param.is_show == 1) { | 1311 | + if (this.data.param.is_show == 1 && !this.data.can_use_ord_prom[this.data.bn_pick]) { |
| 1293 | wx.showModal({ | 1312 | wx.showModal({ |
| 1294 | title: '温馨提示', | 1313 | title: '温馨提示', |
| 1295 | content: this.data.param.alert, | 1314 | content: this.data.param.alert, |
| @@ -1451,6 +1470,18 @@ Page({ | @@ -1451,6 +1470,18 @@ Page({ | ||
| 1451 | 'prom_id': th.data.param.group_id, //促销活动id | 1470 | 'prom_id': th.data.param.group_id, //促销活动id |
| 1452 | }; | 1471 | }; |
| 1453 | 1472 | ||
| 1473 | + | ||
| 1474 | + if(th.data.bn_goods.discount_field){ | ||
| 1475 | + goods.discount_field=th.data.bn_goods.discount_field; | ||
| 1476 | + } | ||
| 1477 | + | ||
| 1478 | + //如果有参与非实收的订单促销,那么就相当于是普通购买 | ||
| 1479 | + if(th.data.can_use_ord_prom[th.data.bn_pick]){ | ||
| 1480 | + goods.is_integral_normal=1; | ||
| 1481 | + goods.prom_type=0; | ||
| 1482 | + goods.prom_id=0; | ||
| 1483 | + } | ||
| 1484 | + | ||
| 1454 | if (getApp().globalData.skinface_id) { | 1485 | if (getApp().globalData.skinface_id) { |
| 1455 | goods.skinface_id = getApp().globalData.skinface_id; | 1486 | goods.skinface_id = getApp().globalData.skinface_id; |
| 1456 | } | 1487 | } |
| @@ -2085,9 +2116,146 @@ Page({ | @@ -2085,9 +2116,146 @@ Page({ | ||
| 2085 | th.calculatePrice2(); | 2116 | th.calculatePrice2(); |
| 2086 | }, | 2117 | }, |
| 2087 | 2118 | ||
| 2119 | + //-- 获取订单促销的判断结构 -- | ||
| 2120 | + set_by_now_ord_prom(item){ | ||
| 2121 | + let pickid=this.data.bn_pick; | ||
| 2122 | + let order_prom_map_ck= this.data.order_prom_map_ck; | ||
| 2123 | + order_prom_map_ck[pickid]={ | ||
| 2124 | + shop_price_all:0, //手店价的累计 | ||
| 2125 | + market_price_all:0, //市场价的累计 | ||
| 2126 | + goods_price_all:0, //实收价的累计 | ||
| 2127 | + no_ord_price:0, //要累计上不参与订单促销的金额 | ||
| 2128 | + goodsList:[], | ||
| 2129 | + } | ||
| 2130 | + | ||
| 2131 | + let pk_ord_map=order_prom_map_ck[pickid]; | ||
| 2132 | + pk_ord_map.shop_price_all += item.shop_price_y * item.buynum; | ||
| 2133 | + pk_ord_map.market_price_all += item.goods_market_price * item.buynum; | ||
| 2134 | + | ||
| 2135 | + }, | ||
| 2136 | + | ||
| 2137 | + //获取当前进行中订单促销,同时带入相应的金额判断订单促销是不是运行,同时订单促销的条件不是实收价判断的话,默认的时候,订单促销是不参与运算的 | ||
| 2138 | + async get_cur_ord_prom(pickid) { | ||
| 2139 | + let ord_prom = null; | ||
| 2140 | + let order_prom_map_ck = this.data.order_prom_map_ck[pickid]; | ||
| 2141 | + if(!order_prom_map_ck) return null; | ||
| 2142 | + | ||
| 2143 | + //获取当前进行中的优惠促销 | ||
| 2144 | + await getApp().request.promiseGet("/api/weshop/promorder/getPromOrder", { | ||
| 2145 | + data: { | ||
| 2146 | + store_id: os.stoid, | ||
| 2147 | + orderAmount: -1, //-1为不判断金额条件 | ||
| 2148 | + user_id: getApp().globalData.user_id | ||
| 2149 | + } | ||
| 2150 | + }).then(res => { | ||
| 2151 | + if (res.data.code == 0) { | ||
| 2152 | + ord_prom = res.data.data; | ||
| 2153 | + } | ||
| 2154 | + }) | ||
| 2155 | + | ||
| 2156 | + if (!ord_prom) return null; | ||
| 2157 | + //用于计算订单促销的金额 | ||
| 2158 | + let calculate_price=0; | ||
| 2159 | + | ||
| 2160 | + let txt1='show_ord_prom['+pickid+']'; | ||
| 2161 | + //-- 此时判断活动的金额满足与否 -- | ||
| 2162 | + switch (ord_prom.discount_field) { | ||
| 2163 | + //实收价的时候 | ||
| 2164 | + case 0: | ||
| 2165 | + //要先还原 | ||
| 2166 | + this.setData({ | ||
| 2167 | + [txt1]: 0 | ||
| 2168 | + }); | ||
| 2169 | + | ||
| 2170 | + if (ord_prom.money > order_prom_map_ck.goods_price_all){ | ||
| 2171 | + return null; | ||
| 2172 | + } | ||
| 2173 | + break; | ||
| 2174 | + //手店价的时候 | ||
| 2175 | + case 1: | ||
| 2176 | + if (ord_prom.money > order_prom_map_ck.shop_price_all){ | ||
| 2177 | + //要先还原 | ||
| 2178 | + this.setData({ | ||
| 2179 | + [txt1]: 0 | ||
| 2180 | + }); | ||
| 2181 | + return null; | ||
| 2182 | + } | ||
| 2183 | + //要显示订单促销使用的按钮 | ||
| 2184 | + this.setData({ | ||
| 2185 | + [txt1]: 1 | ||
| 2186 | + }); | ||
| 2187 | + break; | ||
| 2188 | + //市场价的时候 | ||
| 2189 | + case 2: | ||
| 2190 | + if (ord_prom.money > order_prom_map_ck.market_price_all){ | ||
| 2191 | + //要先还原 | ||
| 2192 | + this.setData({ | ||
| 2193 | + [txt1]: 0 | ||
| 2194 | + }); | ||
| 2195 | + return null; | ||
| 2196 | + } | ||
| 2197 | + //要显示订单促销使用的按钮 | ||
| 2198 | + this.setData({ | ||
| 2199 | + [txt1]: 2 | ||
| 2200 | + }); | ||
| 2201 | + break; | ||
| 2202 | + } | ||
| 2203 | + //如果订单促销是不参与订单促销的,那么就直接返回null(订单促销不是实收价的时候) | ||
| 2204 | + if(ord_prom.discount_field>0 && !this.data.can_use_ord_prom[pickid]){ | ||
| 2205 | + return null; | ||
| 2206 | + } | ||
| 2207 | + return ord_prom; | ||
| 2208 | + }, | ||
| 2209 | + | ||
| 2210 | + //立即购买的时候,点击订单促销的参与 | ||
| 2211 | + set_can_use_ord_prom_now:function (e){ | ||
| 2212 | + | ||
| 2213 | + if(this.data.sub) return false; | ||
| 2214 | + this.setData({ sub: 1,same_ok:1 }); | ||
| 2088 | 2215 | ||
| 2216 | + let pickid=this.data.bn_pick; | ||
| 2217 | + let txt = 'can_use_ord_prom[' + pickid + ']'; | ||
| 2218 | + let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0; | ||
| 2219 | + this.setData({ | ||
| 2220 | + [txt]: !can_use | ||
| 2221 | + }) | ||
| 2089 | 2222 | ||
| 2223 | + let th=this; | ||
| 2224 | + let good=th.data.bn_goods; | ||
| 2225 | + let param=th.data.param; | ||
| 2090 | 2226 | ||
| 2227 | + //如果有要参与订单促销的按钮点击后,要修改商品的价格 | ||
| 2228 | + if(th.data.can_use_ord_prom[pickid]){ | ||
| 2229 | + let discount_field=th.data.show_ord_prom[pickid]; | ||
| 2230 | + switch (discount_field){ | ||
| 2231 | + case 1: | ||
| 2232 | + good.shop_price=good.shop_price_y; | ||
| 2233 | + param.goods_price=good.shop_price_y; | ||
| 2234 | + break; | ||
| 2235 | + case 2: | ||
| 2236 | + good.shop_price=good.market_price; | ||
| 2237 | + param.goods_price=good.market_price; | ||
| 2238 | + break; | ||
| 2239 | + } | ||
| 2240 | + //-- 转成普通商品 --- | ||
| 2241 | + good.prom_type=0; | ||
| 2242 | + good.prom_id=0; | ||
| 2243 | + good.discount_field=discount_field; | ||
| 2244 | + }else{ | ||
| 2245 | + good=ut.deep_cp(th.data.old_bn_goods); | ||
| 2246 | + param.goods_price=good.goods_price; | ||
| 2247 | + } | ||
| 2248 | + | ||
| 2249 | + th.setData({ | ||
| 2250 | + bn_goods:good, | ||
| 2251 | + param | ||
| 2252 | + }) | ||
| 2253 | + wx.showLoading({ | ||
| 2254 | + title: "处理中.", | ||
| 2255 | + mark:true | ||
| 2256 | + }) | ||
| 2257 | + th.calculatePrice2() | ||
| 2258 | + } | ||
| 2091 | 2259 | ||
| 2092 | 2260 | ||
| 2093 | }); | 2261 | }); |
packageC/pages/luckyGo/luckyGo_cart_ct/luckyGo_cart_ct.wxml
| @@ -100,6 +100,14 @@ | @@ -100,6 +100,14 @@ | ||
| 100 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} | 100 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} |
| 101 | </view> | 101 | </view> |
| 102 | 102 | ||
| 103 | + <!-- 订单促销取价规则的优化 --> | ||
| 104 | + <view class="set-mes" wx:if="{{show_ord_prom[bn_pick]}}"> | ||
| 105 | + <view class="use-item" > | ||
| 106 | + <icon bindtap='set_can_use_ord_prom_now' color="{{can_use_ord_prom[bn_pick]?'red':'gray'}}" size="16" type="success"></icon> | ||
| 107 | + <view bindtap='set_can_use_ord_prom_now' class="yu_er">参与订单促销</view> | ||
| 108 | + </view> | ||
| 109 | + </view> | ||
| 110 | + | ||
| 103 | <!--阶梯团是不显示的--> | 111 | <!--阶梯团是不显示的--> |
| 104 | <block wx:if="{{bn_exp_type==0 && !is_default_logistics}}"> | 112 | <block wx:if="{{bn_exp_type==0 && !is_default_logistics}}"> |
| 105 | <view class="use-item flex-space-between" wx:if="{{kt_type!=3 || is_normal==1}}"> | 113 | <view class="use-item flex-space-between" wx:if="{{kt_type!=3 || is_normal==1}}"> |
packageC/pages/presell/cart/cart.js
| @@ -2198,6 +2198,9 @@ Page({ | @@ -2198,6 +2198,9 @@ Page({ | ||
| 2198 | }).then(res => { | 2198 | }).then(res => { |
| 2199 | if (res.data.code == 0) { | 2199 | if (res.data.code == 0) { |
| 2200 | prom_ord = res.data.data; | 2200 | prom_ord = res.data.data; |
| 2201 | + | ||
| 2202 | + //如果订单促销的取价不是实收,清空订单促销 | ||
| 2203 | + if(prom_ord && prom_ord.discount_field>0) prom_ord=null; | ||
| 2201 | } | 2204 | } |
| 2202 | 2205 | ||
| 2203 | }) | 2206 | }) |
packageC/pages/presell/cart/cart2.js
| @@ -134,7 +134,14 @@ Page({ | @@ -134,7 +134,14 @@ Page({ | ||
| 134 | bconfig:null, | 134 | bconfig:null, |
| 135 | showFold:true, | 135 | showFold:true, |
| 136 | 136 | ||
| 137 | - is_fwk:0 //-- 判断是不是服务卡项订单 -- | 137 | + is_fwk:0, //-- 判断是不是服务卡项订单 -- |
| 138 | + | ||
| 139 | + //-- 订单促销判断积累 ---2024-2-20 | ||
| 140 | + order_prom_map_ck: {}, | ||
| 141 | + //能不能使用订单促销 | ||
| 142 | + can_use_ord_prom:{}, | ||
| 143 | + //存储订单促销的取价,按照门店进行索引 | ||
| 144 | + show_ord_prom:{}, | ||
| 138 | }, | 145 | }, |
| 139 | 146 | ||
| 140 | 147 | ||
| @@ -595,7 +602,7 @@ Page({ | @@ -595,7 +602,7 @@ Page({ | ||
| 595 | }); | 602 | }); |
| 596 | }, | 603 | }, |
| 597 | 604 | ||
| 598 | - //-- 获取到服务卡项的详情 -- | 605 | + //-- 获取到商品的详情 -- |
| 599 | get_goods_detail(act, prelist,gg){ | 606 | get_goods_detail(act, prelist,gg){ |
| 600 | var th = this; | 607 | var th = this; |
| 601 | //--------如果goods_id一样,就是要立即购买----- | 608 | //--------如果goods_id一样,就是要立即购买----- |
| @@ -728,7 +735,10 @@ Page({ | @@ -728,7 +735,10 @@ Page({ | ||
| 728 | } | 735 | } |
| 729 | 736 | ||
| 730 | //这个位置要拿活动的预售价 | 737 | //这个位置要拿活动的预售价 |
| 738 | + t.data.data.shop_price_y = t.data.data.shop_price; | ||
| 731 | t.data.data.shop_price = prelist.presell_money; | 739 | t.data.data.shop_price = prelist.presell_money; |
| 740 | + th.data.old_bn_goods=ut.deep_cp(t.data.data); | ||
| 741 | + | ||
| 732 | th.setData({ | 742 | th.setData({ |
| 733 | bn_goods: t.data.data, | 743 | bn_goods: t.data.data, |
| 734 | bn_pickname: gg.pick_name, | 744 | bn_pickname: gg.pick_name, |
| @@ -832,6 +842,7 @@ Page({ | @@ -832,6 +842,7 @@ Page({ | ||
| 832 | // } | 842 | // } |
| 833 | 843 | ||
| 834 | th.setData({dis_btn:1}) | 844 | th.setData({dis_btn:1}) |
| 845 | + this.data.submit=0; | ||
| 835 | 846 | ||
| 836 | wx.showLoading({ | 847 | wx.showLoading({ |
| 837 | title: "处理中.",mask:true | 848 | title: "处理中.",mask:true |
| @@ -901,14 +912,18 @@ Page({ | @@ -901,14 +912,18 @@ Page({ | ||
| 901 | //-- 判断订单优惠的叠加 -- | 912 | //-- 判断订单优惠的叠加 -- |
| 902 | var ord_prom=null; | 913 | var ord_prom=null; |
| 903 | var o_condition=allpice; | 914 | var o_condition=allpice; |
| 904 | - if (o_condition > 0 && th.data.act.is_useorderyh) { | ||
| 905 | - await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | ||
| 906 | - data: { store_id: os.stoid, orderAmount: o_condition, user_id: getApp().globalData.user_id } | ||
| 907 | - }).then(res => { | ||
| 908 | - if (res.data.code == 0) { | ||
| 909 | - ord_prom = res.data.data; | ||
| 910 | - } | ||
| 911 | - }) | 915 | + if (th.data.act.is_useorderyh) { |
| 916 | + // await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | ||
| 917 | + // data: { store_id: os.stoid, orderAmount: o_condition, user_id: getApp().globalData.user_id } | ||
| 918 | + // }).then(res => { | ||
| 919 | + // if (res.data.code == 0) { | ||
| 920 | + // ord_prom = res.data.data; | ||
| 921 | + // } | ||
| 922 | + // }) | ||
| 923 | + | ||
| 924 | + th.set_by_now_ord_prom(th.data.bn_goods); | ||
| 925 | + th.data.order_prom_map_ck[bn_pick].goods_price_all=o_condition; | ||
| 926 | + ord_prom=await th.get_cur_ord_prom(bn_pick); | ||
| 912 | } | 927 | } |
| 913 | 928 | ||
| 914 | //-----------当地址不为空,且是物流时,计算物流费用,并同时商品不是优惠活动的包邮,同时商品购买时候,服务卡项购买不计算运费---------- | 929 | //-----------当地址不为空,且是物流时,计算物流费用,并同时商品不是优惠活动的包邮,同时商品购买时候,服务卡项购买不计算运费---------- |
| @@ -1568,6 +1583,17 @@ Page({ | @@ -1568,6 +1583,17 @@ Page({ | ||
| 1568 | 'prom_id': th.data.bn_goods.prom_id, //促销活动id | 1583 | 'prom_id': th.data.bn_goods.prom_id, //促销活动id |
| 1569 | }; | 1584 | }; |
| 1570 | 1585 | ||
| 1586 | + if(th.data.bn_goods.discount_field){ | ||
| 1587 | + goods.discount_field=th.data.bn_goods.discount_field; | ||
| 1588 | + } | ||
| 1589 | + | ||
| 1590 | + //如果有参与非实收的订单促销,那么就相当于是普通购买 | ||
| 1591 | + if(th.data.can_use_ord_prom[th.data.bn_pick]){ | ||
| 1592 | + goods.is_integral_normal=1; | ||
| 1593 | + } | ||
| 1594 | + | ||
| 1595 | + | ||
| 1596 | + | ||
| 1571 | if(getApp().globalData.skinface_id){ | 1597 | if(getApp().globalData.skinface_id){ |
| 1572 | goods.skinface_id=getApp().globalData.skinface_id; | 1598 | goods.skinface_id=getApp().globalData.skinface_id; |
| 1573 | } | 1599 | } |
| @@ -3179,8 +3205,148 @@ Page({ | @@ -3179,8 +3205,148 @@ Page({ | ||
| 3179 | url= "/pages/goods/goodsInfo/goodsInfo?goods_id="+gid; | 3205 | url= "/pages/goods/goodsInfo/goodsInfo?goods_id="+gid; |
| 3180 | } | 3206 | } |
| 3181 | getApp().goto(url); | 3207 | getApp().goto(url); |
| 3208 | + }, | ||
| 3209 | + | ||
| 3210 | + | ||
| 3211 | + //-- 获取订单促销的判断结构 -- | ||
| 3212 | + set_by_now_ord_prom(item){ | ||
| 3213 | + let pickid=this.data.bn_pick; | ||
| 3214 | + let order_prom_map_ck= this.data.order_prom_map_ck; | ||
| 3215 | + order_prom_map_ck[pickid]={ | ||
| 3216 | + shop_price_all:0, //手店价的累计 | ||
| 3217 | + market_price_all:0, //市场价的累计 | ||
| 3218 | + goods_price_all:0, //实收价的累计 | ||
| 3219 | + no_ord_price:0, //要累计上不参与订单促销的金额 | ||
| 3220 | + goodsList:[], | ||
| 3221 | + } | ||
| 3222 | + | ||
| 3223 | + let pk_ord_map=order_prom_map_ck[pickid]; | ||
| 3224 | + pk_ord_map.shop_price_all += item.shop_price_y * item.buynum; | ||
| 3225 | + pk_ord_map.market_price_all += item.goods_market_price * item.buynum; | ||
| 3226 | + | ||
| 3227 | + }, | ||
| 3228 | + | ||
| 3229 | + //获取当前进行中订单促销,同时带入相应的金额判断订单促销是不是运行,同时订单促销的条件不是实收价判断的话,默认的时候,订单促销是不参与运算的 | ||
| 3230 | + async get_cur_ord_prom(pickid) { | ||
| 3231 | + let ord_prom = null; | ||
| 3232 | + let order_prom_map_ck = this.data.order_prom_map_ck[pickid]; | ||
| 3233 | + if(!order_prom_map_ck) return null; | ||
| 3234 | + | ||
| 3235 | + //获取当前进行中的优惠促销 | ||
| 3236 | + await getApp().request.promiseGet("/api/weshop/promorder/getPromOrder", { | ||
| 3237 | + data: { | ||
| 3238 | + store_id: os.stoid, | ||
| 3239 | + orderAmount: -1, //-1为不判断金额条件 | ||
| 3240 | + user_id: getApp().globalData.user_id | ||
| 3241 | + } | ||
| 3242 | + }).then(res => { | ||
| 3243 | + if (res.data.code == 0) { | ||
| 3244 | + ord_prom = res.data.data; | ||
| 3245 | + } | ||
| 3246 | + }) | ||
| 3247 | + | ||
| 3248 | + if (!ord_prom) return null; | ||
| 3249 | + //用于计算订单促销的金额 | ||
| 3250 | + let calculate_price=0; | ||
| 3251 | + | ||
| 3252 | + let txt1='show_ord_prom['+pickid+']'; | ||
| 3253 | + //-- 此时判断活动的金额满足与否 -- | ||
| 3254 | + switch (ord_prom.discount_field) { | ||
| 3255 | + //实收价的时候 | ||
| 3256 | + case 0: | ||
| 3257 | + //要先还原 | ||
| 3258 | + this.setData({ | ||
| 3259 | + [txt1]: 0 | ||
| 3260 | + }); | ||
| 3261 | + | ||
| 3262 | + if (ord_prom.money > order_prom_map_ck.goods_price_all){ | ||
| 3263 | + return null; | ||
| 3264 | + } | ||
| 3265 | + break; | ||
| 3266 | + //手店价的时候 | ||
| 3267 | + case 1: | ||
| 3268 | + if (ord_prom.money > order_prom_map_ck.shop_price_all){ | ||
| 3269 | + //要先还原 | ||
| 3270 | + this.setData({ | ||
| 3271 | + [txt1]: 0 | ||
| 3272 | + }); | ||
| 3273 | + return null; | ||
| 3274 | + } | ||
| 3275 | + //要显示订单促销使用的按钮 | ||
| 3276 | + this.setData({ | ||
| 3277 | + [txt1]: 1 | ||
| 3278 | + }); | ||
| 3279 | + break; | ||
| 3280 | + //市场价的时候 | ||
| 3281 | + case 2: | ||
| 3282 | + if (ord_prom.money > order_prom_map_ck.market_price_all){ | ||
| 3283 | + //要先还原 | ||
| 3284 | + this.setData({ | ||
| 3285 | + [txt1]: 0 | ||
| 3286 | + }); | ||
| 3287 | + return null; | ||
| 3288 | + } | ||
| 3289 | + //要显示订单促销使用的按钮 | ||
| 3290 | + this.setData({ | ||
| 3291 | + [txt1]: 2 | ||
| 3292 | + }); | ||
| 3293 | + break; | ||
| 3294 | + } | ||
| 3295 | + //如果订单促销是不参与订单促销的,那么就直接返回null(订单促销不是实收价的时候) | ||
| 3296 | + if(ord_prom.discount_field>0 && !this.data.can_use_ord_prom[pickid]){ | ||
| 3297 | + return null; | ||
| 3298 | + } | ||
| 3299 | + return ord_prom; | ||
| 3300 | + }, | ||
| 3301 | + | ||
| 3302 | + //立即购买的时候,点击订单促销的参与 | ||
| 3303 | + set_can_use_ord_prom_now:function (e){ | ||
| 3304 | + | ||
| 3305 | + if(this.data.submit || this.data.dis_btn) return false; | ||
| 3306 | + this.data.submit=1; | ||
| 3307 | + | ||
| 3308 | + let pickid=this.data.bn_pick; | ||
| 3309 | + let txt = 'can_use_ord_prom[' + pickid + ']'; | ||
| 3310 | + let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0; | ||
| 3311 | + this.setData({ | ||
| 3312 | + [txt]: !can_use | ||
| 3313 | + }) | ||
| 3314 | + | ||
| 3315 | + let th=this; | ||
| 3316 | + let good=th.data.bn_goods; | ||
| 3317 | + | ||
| 3318 | + //如果有要参与订单促销的按钮点击后,要修改商品的价格 | ||
| 3319 | + if(th.data.can_use_ord_prom[pickid]){ | ||
| 3320 | + let discount_field=th.data.show_ord_prom[pickid]; | ||
| 3321 | + switch (discount_field){ | ||
| 3322 | + case 1: | ||
| 3323 | + good.shop_price=good.shop_price_y; | ||
| 3324 | + break; | ||
| 3325 | + case 2: | ||
| 3326 | + good.shop_price=good.market_price; | ||
| 3327 | + break; | ||
| 3328 | + } | ||
| 3329 | + //-- 转成普通商品 --- | ||
| 3330 | + good.prom_type=0; | ||
| 3331 | + good.prom_id=0; | ||
| 3332 | + good.integral=0; | ||
| 3333 | + good.discount_field=discount_field; | ||
| 3334 | + | ||
| 3335 | + }else{ | ||
| 3336 | + good=ut.deep_cp(th.data.old_bn_goods); | ||
| 3337 | + } | ||
| 3338 | + | ||
| 3339 | + th.setData({ | ||
| 3340 | + bn_goods:good | ||
| 3341 | + }) | ||
| 3342 | + wx.showLoading({ | ||
| 3343 | + title: "处理中.", | ||
| 3344 | + mark:true | ||
| 3345 | + }) | ||
| 3346 | + th.calculatePrice2() | ||
| 3182 | } | 3347 | } |
| 3183 | 3348 | ||
| 3184 | 3349 | ||
| 3185 | 3350 | ||
| 3351 | + | ||
| 3186 | }); | 3352 | }); |
packageC/pages/presell/cart/cart2.wxml
| @@ -150,6 +150,15 @@ | @@ -150,6 +150,15 @@ | ||
| 150 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} | 150 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} |
| 151 | </view> | 151 | </view> |
| 152 | 152 | ||
| 153 | + <!-- 订单促销取价规则的优化 --> | ||
| 154 | + <view class="set-mes" wx:if="{{show_ord_prom[bn_pick]}}"> | ||
| 155 | + <view class="use-item" > | ||
| 156 | + <icon bindtap='set_can_use_ord_prom_now' color="{{can_use_ord_prom[bn_pick]?'red':'gray'}}" size="16" type="success"></icon> | ||
| 157 | + <view bindtap='set_can_use_ord_prom_now' class="yu_er">参与订单促销</view> | ||
| 158 | + </view> | ||
| 159 | + </view> | ||
| 160 | + | ||
| 161 | + | ||
| 153 | <view class="xc-coupon-frame flex-center" data-bn="1" bindtap="open_coupon_list" data-pickid="{{bn_pick}}" hidden="{{is_fwk}}" | 162 | <view class="xc-coupon-frame flex-center" data-bn="1" bindtap="open_coupon_list" data-pickid="{{bn_pick}}" hidden="{{is_fwk}}" |
| 154 | wx:if="{{(selected_quan_list && selected_quan_list.length>0) || get_by_quan_list!=null}}"> | 163 | wx:if="{{(selected_quan_list && selected_quan_list.length>0) || get_by_quan_list!=null}}"> |
| 155 | <view class="work-frame flex-space-between"> | 164 | <view class="work-frame flex-space-between"> |
packageE/pages/cart/cart2/cart2.js
| @@ -1085,16 +1085,16 @@ Page({ | @@ -1085,16 +1085,16 @@ Page({ | ||
| 1085 | if (gdlist && gdlist.length) { | 1085 | if (gdlist && gdlist.length) { |
| 1086 | //查找商品item1有没有在gdlist中,就要把商品的prom_type清理0 | 1086 | //查找商品item1有没有在gdlist中,就要把商品的prom_type清理0 |
| 1087 | let f_idx = gdlist.findIndex(function (ele) { | 1087 | let f_idx = gdlist.findIndex(function (ele) { |
| 1088 | - return ele.id == item1.id | 1088 | + return ele.id == item.id |
| 1089 | }); | 1089 | }); |
| 1090 | if (f_idx != -1) { | 1090 | if (f_idx != -1) { |
| 1091 | //开始变换商品的价格显示 | 1091 | //开始变换商品的价格显示 |
| 1092 | - switch (th.data.show_ord_prom[item1.pick_id]) { | 1092 | + switch (th.data.show_ord_prom[item.pick_id]) { |
| 1093 | case 1: | 1093 | case 1: |
| 1094 | - carr[i].goods_price = item1.shop_price; | 1094 | + carr[i].goods_price = item.shop_price; |
| 1095 | break; | 1095 | break; |
| 1096 | case 2: | 1096 | case 2: |
| 1097 | - carr[i].goods_price = item1.goods_market_price; | 1097 | + carr[i].goods_price = item.goods_market_price; |
| 1098 | break; | 1098 | break; |
| 1099 | } | 1099 | } |
| 1100 | 1100 | ||
| @@ -1108,7 +1108,7 @@ Page({ | @@ -1108,7 +1108,7 @@ Page({ | ||
| 1108 | break; | 1108 | break; |
| 1109 | } | 1109 | } |
| 1110 | carr[i].prom_type = 0; | 1110 | carr[i].prom_type = 0; |
| 1111 | - carr[i].discount_field = th.data.show_ord_prom[item1.pick_id]; | 1111 | + carr[i].discount_field = th.data.show_ord_prom[item.pick_id]; |
| 1112 | } | 1112 | } |
| 1113 | } | 1113 | } |
| 1114 | } | 1114 | } |
packageE/pages/cart/cart2_inte/cart2_inte.js
| @@ -757,7 +757,7 @@ Page({ | @@ -757,7 +757,7 @@ Page({ | ||
| 757 | //---如果有选择优惠券的情况下--- | 757 | //---如果有选择优惠券的情况下--- |
| 758 | var quan_price = 0, bn_pick = th.data.bn_pick; | 758 | var quan_price = 0, bn_pick = th.data.bn_pick; |
| 759 | 759 | ||
| 760 | - if (condition > 0 && th.data.bn_is_order_yh && !th.data.bn_goods.whsle_id) { | 760 | + if (th.data.bn_is_order_yh && !th.data.bn_goods.whsle_id) { |
| 761 | // await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | 761 | // await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { |
| 762 | // data: { store_id: os.stoid, orderAmount: condition, user_id: getApp().globalData.user_id } | 762 | // data: { store_id: os.stoid, orderAmount: condition, user_id: getApp().globalData.user_id } |
| 763 | // }).then(res => { | 763 | // }).then(res => { |
packageE/pages/cart/cart2_pt/cart2_pt.js
| @@ -855,7 +855,7 @@ Page({ | @@ -855,7 +855,7 @@ Page({ | ||
| 855 | // }) | 855 | // }) |
| 856 | 856 | ||
| 857 | th.set_by_now_ord_prom(th.data.bn_goods); | 857 | th.set_by_now_ord_prom(th.data.bn_goods); |
| 858 | - th.data.order_prom_map_ck[bn_pick].goods_price_all=condition; | 858 | + th.data.order_prom_map_ck[bn_pick].goods_price_all=o_condition; |
| 859 | ord_prom=await th.get_cur_ord_prom(bn_pick); | 859 | ord_prom=await th.get_cur_ord_prom(bn_pick); |
| 860 | } | 860 | } |
| 861 | 861 | ||
| @@ -1484,6 +1484,15 @@ Page({ | @@ -1484,6 +1484,15 @@ Page({ | ||
| 1484 | 'prom_id': th.data.bn_goods.prom_id, //促销活动id | 1484 | 'prom_id': th.data.bn_goods.prom_id, //促销活动id |
| 1485 | }; | 1485 | }; |
| 1486 | 1486 | ||
| 1487 | + if(th.data.bn_goods.discount_field){ | ||
| 1488 | + goods.discount_field=th.data.bn_goods.discount_field; | ||
| 1489 | + } | ||
| 1490 | + | ||
| 1491 | + //如果有参与非实收的订单促销,那么就相当于是普通购买 | ||
| 1492 | + if(th.data.can_use_ord_prom[th.data.bn_pick]){ | ||
| 1493 | + goods.is_integral_normal=1; | ||
| 1494 | + } | ||
| 1495 | + | ||
| 1487 | if (getApp().globalData.skinface_id) { | 1496 | if (getApp().globalData.skinface_id) { |
| 1488 | goods.skinface_id = getApp().globalData.skinface_id; | 1497 | goods.skinface_id = getApp().globalData.skinface_id; |
| 1489 | } | 1498 | } |
packageE/pages/cart/cart_wk/cart_wk.js
| @@ -539,6 +539,9 @@ Page({ | @@ -539,6 +539,9 @@ Page({ | ||
| 539 | }).then(res => { | 539 | }).then(res => { |
| 540 | if (res.data.code == 0) { | 540 | if (res.data.code == 0) { |
| 541 | ord_prom = res.data.data; | 541 | ord_prom = res.data.data; |
| 542 | + | ||
| 543 | + //如果订单促销的取价不是实收,清空订单促销 | ||
| 544 | + if(prom_ord && prom_ord.discount_field>0) prom_ord=null; | ||
| 542 | } | 545 | } |
| 543 | }) | 546 | }) |
| 544 | } | 547 | } |
packageG/pages/user/order_detail/order_detail.js
| @@ -1157,13 +1157,39 @@ Page({ | @@ -1157,13 +1157,39 @@ Page({ | ||
| 1157 | //-- 优惠促销的时候控制取价规则 -- | 1157 | //-- 优惠促销的时候控制取价规则 -- |
| 1158 | // gg.prom_type!=3 && gg.prom_type!=10 同时商品不是普通购买的时候,又参与优惠促销,阶梯促销 | 1158 | // gg.prom_type!=3 && gg.prom_type!=10 同时商品不是普通购买的时候,又参与优惠促销,阶梯促销 |
| 1159 | if((gg.prom_type!=3 && gg.prom_type!=10) || gg.discount_field==undefined || gg.discount_field==0 ) { | 1159 | if((gg.prom_type!=3 && gg.prom_type!=10) || gg.discount_field==undefined || gg.discount_field==0 ) { |
| 1160 | - if (card_field && gg[card_field] > 0) { | ||
| 1161 | - if (good.goods_price != gg[card_field] && good.offline_cut <= 0) isok = 0; | ||
| 1162 | - if (good.goods_price > gg[card_field] && good.offline_cut > 0) isok = 0; //如果线下价格比较贵,则不通过 | ||
| 1163 | 1160 | ||
| 1164 | - } else { | ||
| 1165 | - if (good.goods_price != gg.shop_price && good.offline_cut <= 0) isok = 0; | ||
| 1166 | - if (good.goods_price > gg.shop_price && good.offline_cut > 0) isok = 0; //如果线下价格比较贵,则不通过 | 1161 | + |
| 1162 | + //判断一下活动是不是有参与订单促销,并且订单促销的活动是不是实收取价,2024-2-23 | ||
| 1163 | + let ordprom_price_type=0; | ||
| 1164 | + if(order.order_prom_id && good.prom_type==0){ | ||
| 1165 | + let p_rs= await getApp().request.promiseGet("/api/weshop/promorder/get/"+os.stoid+"/"+order.order_prom_id, {}); | ||
| 1166 | + if(p_rs && p_rs.data.code==0 && p_rs.data.data){ | ||
| 1167 | + let ord_p=p_rs.data.data; | ||
| 1168 | + if(ord_p && ord_p.discount_field>0){ | ||
| 1169 | + ordprom_price_type=ord_p.discount_field | ||
| 1170 | + } | ||
| 1171 | + } | ||
| 1172 | + } | ||
| 1173 | + if(ordprom_price_type>0){ | ||
| 1174 | + //-- 看一下订单促销的取价规则 -- | ||
| 1175 | + switch (ordprom_price_type){ | ||
| 1176 | + case 1: | ||
| 1177 | + if (good.goods_price != gg.shop_price) isok = 0; | ||
| 1178 | + break; | ||
| 1179 | + case 2: | ||
| 1180 | + if (good.goods_price != gg.market_price) isok = 0; | ||
| 1181 | + break; | ||
| 1182 | + } | ||
| 1183 | + | ||
| 1184 | + }else { | ||
| 1185 | + if (card_field && gg[card_field] > 0) { | ||
| 1186 | + if (good.goods_price != gg[card_field] && good.offline_cut <= 0) isok = 0; | ||
| 1187 | + if (good.goods_price > gg[card_field] && good.offline_cut > 0) isok = 0; //如果线下价格比较贵,则不通过 | ||
| 1188 | + | ||
| 1189 | + } else { | ||
| 1190 | + if (good.goods_price != gg.shop_price && good.offline_cut <= 0) isok = 0; | ||
| 1191 | + if (good.goods_price > gg.shop_price && good.offline_cut > 0) isok = 0; //如果线下价格比较贵,则不通过 | ||
| 1192 | + } | ||
| 1167 | } | 1193 | } |
| 1168 | }else{ | 1194 | }else{ |
| 1169 | if(good.prom_type==3 && good.prom_type==10){ | 1195 | if(good.prom_type==3 && good.prom_type==10){ |
pages/user/order_list/order_list.js
| @@ -1446,14 +1446,43 @@ Page({ | @@ -1446,14 +1446,43 @@ Page({ | ||
| 1446 | //-- 优惠促销的时候控制取价规则 -- | 1446 | //-- 优惠促销的时候控制取价规则 -- |
| 1447 | // gg.prom_type!=3 && gg.prom_type!=10 同时商品不是普通购买的时候,又参与优惠促销,阶梯促销 | 1447 | // gg.prom_type!=3 && gg.prom_type!=10 同时商品不是普通购买的时候,又参与优惠促销,阶梯促销 |
| 1448 | if((gg.prom_type!=3 && gg.prom_type!=10) || gg.discount_field==undefined || gg.discount_field==0 ){ | 1448 | if((gg.prom_type!=3 && gg.prom_type!=10) || gg.discount_field==undefined || gg.discount_field==0 ){ |
| 1449 | - if (card_field && gg[card_field] > 0) { | ||
| 1450 | - if (good.goods_price != gg[card_field] && good.offline_cut <= 0) isok = 0; | ||
| 1451 | - if (good.goods_price > gg[card_field] && good.offline_cut > 0) isok = 0; //如果线下价格比较贵,则不通过 | ||
| 1452 | 1449 | ||
| 1453 | - } else { | ||
| 1454 | - if (good.goods_price != gg.shop_price && good.offline_cut <= 0) isok = 0; | ||
| 1455 | - if (good.goods_price > gg.shop_price && good.offline_cut > 0) isok = 0; //如果线下价格比较贵,则不通过 | 1450 | + //判断一下活动是不是有参与订单促销,并且订单促销的活动是不是实收取价,2024-2-23 |
| 1451 | + let ordprom_price_type=0; | ||
| 1452 | + if(order.order_prom_id && good.prom_type==0){ | ||
| 1453 | + let p_rs= await getApp().request.promiseGet("/api/weshop/promorder/get/"+os.stoid+"/"+order.order_prom_id, {}); | ||
| 1454 | + if(p_rs && p_rs.data.code==0 && p_rs.data.data){ | ||
| 1455 | + let ord_p=p_rs.data.data; | ||
| 1456 | + if(ord_p && ord_p.discount_field>0){ | ||
| 1457 | + ordprom_price_type=ord_p.discount_field | ||
| 1458 | + } | ||
| 1459 | + } | ||
| 1460 | + } | ||
| 1461 | + if(ordprom_price_type>0){ | ||
| 1462 | + //-- 看一下订单促销的取价规则 -- | ||
| 1463 | + switch (ordprom_price_type){ | ||
| 1464 | + case 1: | ||
| 1465 | + if (good.goods_price != gg.shop_price) isok = 0; | ||
| 1466 | + break; | ||
| 1467 | + case 2: | ||
| 1468 | + if (good.goods_price != gg.market_price) isok = 0; | ||
| 1469 | + break; | ||
| 1470 | + } | ||
| 1471 | + | ||
| 1472 | + }else{ | ||
| 1473 | + if (card_field && gg[card_field] > 0) { | ||
| 1474 | + if (good.goods_price != gg[card_field] && good.offline_cut <= 0) isok = 0; | ||
| 1475 | + if (good.goods_price > gg[card_field] && good.offline_cut > 0) isok = 0; //如果线下价格比较贵,则不通过 | ||
| 1476 | + | ||
| 1477 | + } else { | ||
| 1478 | + if (good.goods_price != gg.shop_price && good.offline_cut <= 0) isok = 0; | ||
| 1479 | + if (good.goods_price > gg.shop_price && good.offline_cut > 0) isok = 0; //如果线下价格比较贵,则不通过 | ||
| 1480 | + } | ||
| 1456 | } | 1481 | } |
| 1482 | + | ||
| 1483 | + | ||
| 1484 | + | ||
| 1485 | + | ||
| 1457 | }else{ | 1486 | }else{ |
| 1458 | 1487 | ||
| 1459 | if(good.prom_type==3 || good.prom_type==10 ){ | 1488 | if(good.prom_type==3 || good.prom_type==10 ){ |