Commit 5eb612205b83da421b6870207e6900f735a7b152
1 parent
87f42fd5
订单促销的取价规则
Showing
6 changed files
with
414 additions
and
56 deletions
packageE/pages/cart/cart2/cart2.js
| ... | ... | @@ -1042,35 +1042,9 @@ Page({ |
| 1042 | 1042 | //-- 多促销活动调用接口需要的参数,和商品的购买数量和活动的购买数量的请求参数 -- |
| 1043 | 1043 | var dug_cx_arr = []; |
| 1044 | 1044 | //获取 限购 和 多活动的促销---2024-2-1 |
| 1045 | - for (var i = 0; i < carr.length; i++) { | |
| 1046 | - | |
| 1047 | - let item1 = carr[i]; | |
| 1048 | - | |
| 1049 | - //如果有户有点击参与订单促销的话,那么可以参与订单促销的商品的活动都要清理成0,订单促销在使用过程中的重要方法 | |
| 1050 | - if (this.data.can_use_ord_prom[item1.pick_id]) { | |
| 1051 | - //从订单促销的order_prom_map_ck数据结构中获取到可以参与的商品列表 | |
| 1052 | - let gdlist = this.data.order_prom_map_ck[item1.pick_id] ? this.data.order_prom_map_ck[item1.pick_id].goodsList : null; | |
| 1053 | - if (gdlist && gdlist.length) { | |
| 1054 | - //查找商品item1有没有在gdlist中,就要把商品的prom_type清理0 | |
| 1055 | - let f_idx = gdlist.findIndex(function (ele) { | |
| 1056 | - return ele.id == item1.id | |
| 1057 | - }); | |
| 1058 | - if (f_idx != -1) { | |
| 1059 | - //开始变换商品的价格显示 | |
| 1060 | - switch (th.data.show_ord_prom[item1.pick_id]) { | |
| 1061 | - case 1: | |
| 1062 | - carr[i].goods_price = item1.shop_price; | |
| 1063 | - break; | |
| 1064 | - case 2: | |
| 1065 | - carr[i].goods_price = item1.goods_market_price; | |
| 1066 | - break; | |
| 1067 | - } | |
| 1068 | - carr[i].prom_type = 0; | |
| 1069 | - continue; //要跳过 | |
| 1070 | - } | |
| 1071 | - } | |
| 1072 | - } | |
| 1045 | + for (var iv = 0; iv < carr.length; iv++) { | |
| 1073 | 1046 | |
| 1047 | + let item1 = carr[iv]; | |
| 1074 | 1048 | //如果不是活动的时候,不是代发商品的时候,不是赠品的时候,不是阶梯商品拆分的,不是组合购拆分的 |
| 1075 | 1049 | if ([1, 2, 4, 6, 8, 9].indexOf(item1.prom_type) == -1 && !item1.whsle_id |
| 1076 | 1050 | && !item1.is_gift && !item1.is_ld_split && !item1.is_zh_split) { |
| ... | ... | @@ -1080,7 +1054,7 @@ Page({ |
| 1080 | 1054 | }); |
| 1081 | 1055 | if (f_idx == -1) { |
| 1082 | 1056 | let gd_ite = { |
| 1083 | - goods_id: carr[i].goods_id, | |
| 1057 | + goods_id: carr[iv].goods_id, | |
| 1084 | 1058 | goods_num: 1, |
| 1085 | 1059 | is_limit_show: 1, |
| 1086 | 1060 | is_state: 0 |
| ... | ... | @@ -1091,7 +1065,7 @@ Page({ |
| 1091 | 1065 | } |
| 1092 | 1066 | |
| 1093 | 1067 | if (is_change) { |
| 1094 | - carr[i].collocationList = null; | |
| 1068 | + carr[iv].collocationList = null; | |
| 1095 | 1069 | } |
| 1096 | 1070 | } |
| 1097 | 1071 | //-- 对商品的多促销进行判断 ---2024-2-1-- |
| ... | ... | @@ -1099,9 +1073,46 @@ Page({ |
| 1099 | 1073 | await th.buy_pro_group(dug_cx_arr,carr); |
| 1100 | 1074 | } |
| 1101 | 1075 | } |
| 1076 | + | |
| 1102 | 1077 | //在分组的时候,就不要再调用接口,await |
| 1103 | 1078 | for (var i = 0; i < carr.length; i++) { |
| 1104 | 1079 | var item = carr[i]; |
| 1080 | + | |
| 1081 | + //如果有户有点击参与订单促销的话,那么可以参与订单促销的商品的活动都要清理成0,订单促销在使用过程中的重要方法 | |
| 1082 | + if (this.data.can_use_ord_prom[item.pick_id]) { | |
| 1083 | + //从订单促销的order_prom_map_ck数据结构中获取到可以参与的商品列表 | |
| 1084 | + let gdlist = this.data.order_prom_map_ck[item.pick_id] ? this.data.order_prom_map_ck[item.pick_id].goodsList : null; | |
| 1085 | + if (gdlist && gdlist.length) { | |
| 1086 | + //查找商品item1有没有在gdlist中,就要把商品的prom_type清理0 | |
| 1087 | + let f_idx = gdlist.findIndex(function (ele) { | |
| 1088 | + return ele.id == item1.id | |
| 1089 | + }); | |
| 1090 | + if (f_idx != -1) { | |
| 1091 | + //开始变换商品的价格显示 | |
| 1092 | + switch (th.data.show_ord_prom[item1.pick_id]) { | |
| 1093 | + case 1: | |
| 1094 | + carr[i].goods_price = item1.shop_price; | |
| 1095 | + break; | |
| 1096 | + case 2: | |
| 1097 | + carr[i].goods_price = item1.goods_market_price; | |
| 1098 | + break; | |
| 1099 | + } | |
| 1100 | + | |
| 1101 | + if(!carr[i].prom_type) carr[i].prom_type=0; | |
| 1102 | + switch (parseInt(carr[i].prom_type)){ | |
| 1103 | + case 4: | |
| 1104 | + carr[i].is_integral_normal = 1; | |
| 1105 | + break; | |
| 1106 | + default: | |
| 1107 | + carr[i].is_pd_normal = 1; | |
| 1108 | + break; | |
| 1109 | + } | |
| 1110 | + carr[i].prom_type = 0; | |
| 1111 | + carr[i].discount_field = th.data.show_ord_prom[item1.pick_id]; | |
| 1112 | + } | |
| 1113 | + } | |
| 1114 | + } | |
| 1115 | + | |
| 1105 | 1116 | //-- 如果是等级会员注册返回 -- |
| 1106 | 1117 | if (is_card_back) { |
| 1107 | 1118 | th.data.card_name = th.data.userinfo.card_field; |
| ... | ... | @@ -4950,6 +4961,12 @@ Page({ |
| 4950 | 4961 | 'prom_id': th.data.bn_goods.prom_id, //促销活动id |
| 4951 | 4962 | }; |
| 4952 | 4963 | |
| 4964 | + //如果有参与非实收的订单促销,那么就相当于是普通购买 | |
| 4965 | + if(th.data.can_use_ord_prom[th.data.bn_pick]){ | |
| 4966 | + goods.is_pd_normal=1; | |
| 4967 | + goods.discount_field= th.data.show_ord_prom[th.data.bn_pick]; | |
| 4968 | + } | |
| 4969 | + | |
| 4953 | 4970 | if (th.data.bn_goods.whsle_id) { |
| 4954 | 4971 | item.is_whsle = 1; |
| 4955 | 4972 | item.whsle_id = th.data.bn_goods.whsle_id; |
| ... | ... | @@ -5343,6 +5360,11 @@ Page({ |
| 5343 | 5360 | 'store_id': oo.stoid, |
| 5344 | 5361 | }; |
| 5345 | 5362 | |
| 5363 | + //订单促销取价规则使用 | |
| 5364 | + if (g_item.discount_field) { | |
| 5365 | + goods.discount_field =g_item.discount_field; | |
| 5366 | + } | |
| 5367 | + | |
| 5346 | 5368 | if (g_item.is_pd_normal) { |
| 5347 | 5369 | goods.is_pd_normal = 1; |
| 5348 | 5370 | } |
| ... | ... | @@ -9012,6 +9034,10 @@ Page({ |
| 9012 | 9034 | good.shop_price=good.market_price; |
| 9013 | 9035 | break; |
| 9014 | 9036 | } |
| 9037 | + | |
| 9038 | + //-- 转成普通商品 --- | |
| 9039 | + good.prom_type=0; | |
| 9040 | + good.prom_id=0; | |
| 9015 | 9041 | }else{ |
| 9016 | 9042 | good=ut.deep_cp(th.data.old_bn_goods); |
| 9017 | 9043 | } | ... | ... |
packageE/pages/cart/cart2/cart2.wxml
| ... | ... | @@ -355,9 +355,9 @@ |
| 355 | 355 | |
| 356 | 356 | <!-- 订单促销取价规则的优化 --> |
| 357 | 357 | <view class="set-mes" wx:if="{{show_ord_prom[item.pickup_id]}}"> |
| 358 | - <view class="use-item" data-pd="{{item.pickup_id}}" bindtap='set_can_use_ord_prom'> | |
| 359 | - <icon color="{{can_use_ord_prom[item.pickup_id]?'red':'gray'}}" size="16" type="success"></icon> | |
| 360 | - <view class="yu_er">参与订单促销</view> | |
| 358 | + <view class="use-item" > | |
| 359 | + <icon data-pd="{{item.pickup_id}}" bindtap='set_can_use_ord_prom' color="{{can_use_ord_prom[item.pickup_id]?'red':'gray'}}" size="16" type="success"></icon> | |
| 360 | + <view data-pd="{{item.pickup_id}}" bindtap='set_can_use_ord_prom' class="yu_er">参与订单促销</view> | |
| 361 | 361 | </view> |
| 362 | 362 | </view> |
| 363 | 363 | |
| ... | ... | @@ -695,9 +695,9 @@ |
| 695 | 695 | |
| 696 | 696 | <!-- 订单促销取价规则的优化 --> |
| 697 | 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> | |
| 698 | + <view class="use-item" > | |
| 699 | + <icon bindtap='set_can_use_ord_prom_now' color="{{can_use_ord_prom[bn_pick]?'red':'gray'}}" size="16" type="success"></icon> | |
| 700 | + <view bindtap='set_can_use_ord_prom_now' class="yu_er">参与订单促销</view> | |
| 701 | 701 | </view> |
| 702 | 702 | </view> |
| 703 | 703 | ... | ... |
packageE/pages/cart/cart2_inte/cart2_inte.js
| ... | ... | @@ -85,7 +85,14 @@ Page({ |
| 85 | 85 | same_ok:1, //同城配送的控制,默认ok |
| 86 | 86 | bconfig: null, |
| 87 | 87 | showFold:true, |
| 88 | - template_id:[] | |
| 88 | + template_id:[], | |
| 89 | + | |
| 90 | + //-- 订单促销判断积累 ---2024-2-20 | |
| 91 | + order_prom_map_ck: {}, | |
| 92 | + //能不能使用订单促销 | |
| 93 | + can_use_ord_prom:{}, | |
| 94 | + //存储订单促销的取价,按照门店进行索引 | |
| 95 | + show_ord_prom:{}, | |
| 89 | 96 | }, |
| 90 | 97 | |
| 91 | 98 | |
| ... | ... | @@ -632,6 +639,8 @@ Page({ |
| 632 | 639 | success: async function (tt) { |
| 633 | 640 | if (tt.data.code == 0 && tt.data.data && tt.data.data.pageData) { |
| 634 | 641 | var inte_data = tt.data.data.pageData[0]; |
| 642 | + | |
| 643 | + gd.shop_price_y=gd.shop_price; | |
| 635 | 644 | t.data.data.shop_price = inte_data.addmoney; |
| 636 | 645 | t.data.data.integral = inte_data.integral; |
| 637 | 646 | |
| ... | ... | @@ -658,6 +667,9 @@ Page({ |
| 658 | 667 | |
| 659 | 668 | |
| 660 | 669 | |
| 670 | + //用深拷贝把商品缓存起来,方便后面使用 | |
| 671 | + th.data.old_bn_goods=ut.deep_cp(t.data.data); | |
| 672 | + | |
| 661 | 673 | th.setData({ |
| 662 | 674 | bn_goods: t.data.data, bn_pickname: gg.pick_name, bn_exp_type: et, index: m_wind, |
| 663 | 675 | bn_pick: gg.pick_id, bn_t_exp_t: distr_t, bn_exp_type: et,inv_is_post:inte_data.is_post |
| ... | ... | @@ -742,16 +754,23 @@ Page({ |
| 742 | 754 | var condition = parseFloat(allpice-cut_price).toFixed(2); |
| 743 | 755 | var ord_prom = null; |
| 744 | 756 | var is_ord_prom_post = 0; |
| 757 | + //---如果有选择优惠券的情况下--- | |
| 758 | + var quan_price = 0, bn_pick = th.data.bn_pick; | |
| 745 | 759 | |
| 746 | 760 | if (condition > 0 && th.data.bn_is_order_yh && !th.data.bn_goods.whsle_id) { |
| 747 | - await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | |
| 748 | - data: { store_id: os.stoid, orderAmount: condition, user_id: getApp().globalData.user_id } | |
| 749 | - }).then(res => { | |
| 750 | - if (res.data.code == 0) { | |
| 751 | - var data = res.data.data; | |
| 752 | - ord_prom = data; | |
| 753 | - } | |
| 754 | - }) | |
| 761 | + // await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | |
| 762 | + // data: { store_id: os.stoid, orderAmount: condition, user_id: getApp().globalData.user_id } | |
| 763 | + // }).then(res => { | |
| 764 | + // if (res.data.code == 0) { | |
| 765 | + // var data = res.data.data; | |
| 766 | + // ord_prom = data; | |
| 767 | + // } | |
| 768 | + // }) | |
| 769 | + | |
| 770 | + th.set_by_now_ord_prom(th.data.bn_goods); | |
| 771 | + th.data.order_prom_map_ck[bn_pick].goods_price_all=condition; | |
| 772 | + ord_prom=await th.get_cur_ord_prom(bn_pick); | |
| 773 | + | |
| 755 | 774 | if (ord_prom && ord_prom.is_post_temp) { |
| 756 | 775 | is_ord_prom_post = 1; |
| 757 | 776 | } |
| ... | ... | @@ -894,8 +913,7 @@ Page({ |
| 894 | 913 | var wl_txt = "formData.shipping_price"; |
| 895 | 914 | th.setData({ [wl_txt]: 0, }) |
| 896 | 915 | } |
| 897 | - //---如果有选择优惠券的情况下--- | |
| 898 | - var quan_price = 0, bn_pick = th.data.bn_pick; | |
| 916 | + | |
| 899 | 917 | |
| 900 | 918 | //-----------------支付价,优惠券不减物流----------------- |
| 901 | 919 | var total_m = (parseFloat(allpice)).toFixed(2); |
| ... | ... | @@ -1281,7 +1299,6 @@ Page({ |
| 1281 | 1299 | item.samecity_order_amount=th.data.bn_samecity_order_amount; |
| 1282 | 1300 | } |
| 1283 | 1301 | |
| 1284 | - | |
| 1285 | 1302 | //获取立即购买的商品的信息 |
| 1286 | 1303 | var gg = to.get_b_now(); |
| 1287 | 1304 | //--商品的房间号-- |
| ... | ... | @@ -1319,6 +1336,15 @@ Page({ |
| 1319 | 1336 | 'prom_id': th.data.bn_goods.prom_id, //促销活动id |
| 1320 | 1337 | }; |
| 1321 | 1338 | |
| 1339 | + if(th.data.bn_goods.discount_field){ | |
| 1340 | + goods.discount_field=th.data.bn_goods.discount_field; | |
| 1341 | + } | |
| 1342 | + | |
| 1343 | + //如果有参与非实收的订单促销,那么就相当于是普通购买 | |
| 1344 | + if(th.data.can_use_ord_prom[th.data.bn_pick]){ | |
| 1345 | + goods.is_integral_normal=1; | |
| 1346 | + } | |
| 1347 | + | |
| 1322 | 1348 | if(getApp().globalData.skinface_id){ |
| 1323 | 1349 | goods.skinface_id=getApp().globalData.skinface_id; |
| 1324 | 1350 | } |
| ... | ... | @@ -1757,7 +1783,146 @@ Page({ |
| 1757 | 1783 | var th = this; |
| 1758 | 1784 | th.setData({bn_use_commission: !th.data.bn_use_commission}); |
| 1759 | 1785 | th.calculatePrice2(); |
| 1786 | + }, | |
| 1787 | + | |
| 1788 | + //-- 获取订单促销的判断结构 -- | |
| 1789 | + set_by_now_ord_prom(item){ | |
| 1790 | + let pickid=this.data.bn_pick; | |
| 1791 | + let order_prom_map_ck= this.data.order_prom_map_ck; | |
| 1792 | + order_prom_map_ck[pickid]={ | |
| 1793 | + shop_price_all:0, //手店价的累计 | |
| 1794 | + market_price_all:0, //市场价的累计 | |
| 1795 | + goods_price_all:0, //实收价的累计 | |
| 1796 | + no_ord_price:0, //要累计上不参与订单促销的金额 | |
| 1797 | + goodsList:[], | |
| 1798 | + } | |
| 1799 | + | |
| 1800 | + let pk_ord_map=order_prom_map_ck[pickid]; | |
| 1801 | + pk_ord_map.shop_price_all += item.shop_price_y * item.buynum; | |
| 1802 | + pk_ord_map.market_price_all += item.goods_market_price * item.buynum; | |
| 1803 | + | |
| 1804 | + }, | |
| 1805 | + | |
| 1806 | + //获取当前进行中订单促销,同时带入相应的金额判断订单促销是不是运行,同时订单促销的条件不是实收价判断的话,默认的时候,订单促销是不参与运算的 | |
| 1807 | + async get_cur_ord_prom(pickid) { | |
| 1808 | + let ord_prom = null; | |
| 1809 | + let order_prom_map_ck = this.data.order_prom_map_ck[pickid]; | |
| 1810 | + if(!order_prom_map_ck) return null; | |
| 1811 | + | |
| 1812 | + //获取当前进行中的优惠促销 | |
| 1813 | + await getApp().request.promiseGet("/api/weshop/promorder/getPromOrder", { | |
| 1814 | + data: { | |
| 1815 | + store_id: os.stoid, | |
| 1816 | + orderAmount: -1, //-1为不判断金额条件 | |
| 1817 | + user_id: getApp().globalData.user_id | |
| 1818 | + } | |
| 1819 | + }).then(res => { | |
| 1820 | + if (res.data.code == 0) { | |
| 1821 | + ord_prom = res.data.data; | |
| 1822 | + } | |
| 1823 | + }) | |
| 1824 | + | |
| 1825 | + if (!ord_prom) return null; | |
| 1826 | + //用于计算订单促销的金额 | |
| 1827 | + let calculate_price=0; | |
| 1828 | + | |
| 1829 | + let txt1='show_ord_prom['+pickid+']'; | |
| 1830 | + //-- 此时判断活动的金额满足与否 -- | |
| 1831 | + switch (ord_prom.discount_field) { | |
| 1832 | + //实收价的时候 | |
| 1833 | + case 0: | |
| 1834 | + //要先还原 | |
| 1835 | + this.setData({ | |
| 1836 | + [txt1]: 0 | |
| 1837 | + }); | |
| 1838 | + | |
| 1839 | + if (ord_prom.money > order_prom_map_ck.goods_price_all){ | |
| 1840 | + return null; | |
| 1841 | + } | |
| 1842 | + break; | |
| 1843 | + //手店价的时候 | |
| 1844 | + case 1: | |
| 1845 | + if (ord_prom.money > order_prom_map_ck.shop_price_all){ | |
| 1846 | + //要先还原 | |
| 1847 | + this.setData({ | |
| 1848 | + [txt1]: 0 | |
| 1849 | + }); | |
| 1850 | + return null; | |
| 1851 | + } | |
| 1852 | + //要显示订单促销使用的按钮 | |
| 1853 | + this.setData({ | |
| 1854 | + [txt1]: 1 | |
| 1855 | + }); | |
| 1856 | + break; | |
| 1857 | + //市场价的时候 | |
| 1858 | + case 2: | |
| 1859 | + if (ord_prom.money > order_prom_map_ck.market_price_all){ | |
| 1860 | + //要先还原 | |
| 1861 | + this.setData({ | |
| 1862 | + [txt1]: 0 | |
| 1863 | + }); | |
| 1864 | + return null; | |
| 1865 | + } | |
| 1866 | + //要显示订单促销使用的按钮 | |
| 1867 | + this.setData({ | |
| 1868 | + [txt1]: 2 | |
| 1869 | + }); | |
| 1870 | + break; | |
| 1871 | + } | |
| 1872 | + //如果订单促销是不参与订单促销的,那么就直接返回null(订单促销不是实收价的时候) | |
| 1873 | + if(ord_prom.discount_field>0 && !this.data.can_use_ord_prom[pickid]){ | |
| 1874 | + return null; | |
| 1875 | + } | |
| 1876 | + return ord_prom; | |
| 1877 | + }, | |
| 1878 | + | |
| 1879 | + //立即购买的时候,点击订单促销的参与 | |
| 1880 | + set_can_use_ord_prom_now:function (e){ | |
| 1881 | + | |
| 1882 | + if(this.data.submit) return false; | |
| 1883 | + this.setData({ submit: 1,same_ok:1 }); | |
| 1884 | + | |
| 1885 | + let pickid=this.data.bn_pick; | |
| 1886 | + let txt = 'can_use_ord_prom[' + pickid + ']'; | |
| 1887 | + let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0; | |
| 1888 | + this.setData({ | |
| 1889 | + [txt]: !can_use | |
| 1890 | + }) | |
| 1891 | + | |
| 1892 | + let th=this; | |
| 1893 | + let good=th.data.bn_goods; | |
| 1894 | + | |
| 1895 | + //如果有要参与订单促销的按钮点击后,要修改商品的价格 | |
| 1896 | + if(th.data.can_use_ord_prom[pickid]){ | |
| 1897 | + let discount_field=th.data.show_ord_prom[pickid]; | |
| 1898 | + switch (discount_field){ | |
| 1899 | + case 1: | |
| 1900 | + good.shop_price=good.shop_price_y; | |
| 1901 | + break; | |
| 1902 | + case 2: | |
| 1903 | + good.shop_price=good.market_price; | |
| 1904 | + break; | |
| 1905 | + } | |
| 1906 | + //-- 转成普通商品 --- | |
| 1907 | + good.prom_type=0; | |
| 1908 | + good.prom_id=0; | |
| 1909 | + good.integral=0; | |
| 1910 | + good.discount_field=discount_field; | |
| 1911 | + | |
| 1912 | + }else{ | |
| 1913 | + good=ut.deep_cp(th.data.old_bn_goods); | |
| 1914 | + } | |
| 1915 | + | |
| 1916 | + th.setData({ | |
| 1917 | + bn_goods:good | |
| 1918 | + }) | |
| 1919 | + wx.showLoading({ | |
| 1920 | + title: "处理中.", | |
| 1921 | + mark:true | |
| 1922 | + }) | |
| 1923 | + th.calculatePrice2() | |
| 1760 | 1924 | } |
| 1761 | 1925 | |
| 1762 | 1926 | |
| 1927 | + | |
| 1763 | 1928 | }); | ... | ... |
packageE/pages/cart/cart2_inte/cart2_inte.wxml
| ... | ... | @@ -94,6 +94,14 @@ |
| 94 | 94 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} |
| 95 | 95 | </view> |
| 96 | 96 | |
| 97 | + <!-- 订单促销取价规则的优化 --> | |
| 98 | + <view class="set-mes" wx:if="{{show_ord_prom[bn_pick]}}"> | |
| 99 | + <view class="use-item" > | |
| 100 | + <icon bindtap='set_can_use_ord_prom_now' color="{{can_use_ord_prom[bn_pick]?'red':'gray'}}" size="16" type="success"></icon> | |
| 101 | + <view bindtap='set_can_use_ord_prom_now' class="yu_er">参与订单促销</view> | |
| 102 | + </view> | |
| 103 | + </view> | |
| 104 | + | |
| 97 | 105 | <view class="xc-coupon-frame flex-center" data-bn="1" bindtap="open_coupon_list" data-pickid="{{bn_pick}}" wx:if="{{(selected_quan_list && selected_quan_list.length>0) || get_by_quan_list!=null}}"> |
| 98 | 106 | <view class="work-frame flex-space-between"> |
| 99 | 107 | <view class="work"> | ... | ... |
packageE/pages/cart/cart2_pt/cart2_pt.js
| ... | ... | @@ -90,6 +90,13 @@ Page({ |
| 90 | 90 | is_no_by: {}, |
| 91 | 91 | is_by: {}, |
| 92 | 92 | is_quan_by: {}, |
| 93 | + | |
| 94 | + //-- 订单促销判断积累 ---2024-2-20 | |
| 95 | + order_prom_map_ck: {}, | |
| 96 | + //能不能使用订单促销 | |
| 97 | + can_use_ord_prom:{}, | |
| 98 | + //存储订单促销的取价,按照门店进行索引 | |
| 99 | + show_ord_prom:{}, | |
| 93 | 100 | }, |
| 94 | 101 | |
| 95 | 102 | |
| ... | ... | @@ -444,7 +451,9 @@ Page({ |
| 444 | 451 | et = 2; |
| 445 | 452 | } |
| 446 | 453 | |
| 454 | + t.data.data.shop_price_y=t.data.data.shop_price | |
| 447 | 455 | t.data.data.shop_price = gg.goods_price; |
| 456 | + | |
| 448 | 457 | //--如果是普通购买的时候-- |
| 449 | 458 | if (gg.is_normal == 1) { |
| 450 | 459 | t.data.data.prom_id = 0; |
| ... | ... | @@ -485,6 +494,8 @@ Page({ |
| 485 | 494 | |
| 486 | 495 | } |
| 487 | 496 | |
| 497 | + //用深拷贝把商品缓存起来,方便后面使用 | |
| 498 | + th.data.old_bn_goods=ut.deep_cp(t.data.data); | |
| 488 | 499 | |
| 489 | 500 | th.setData({ |
| 490 | 501 | bn_goods: t.data.data, bn_pickname: gg.pick_name, |
| ... | ... | @@ -568,7 +579,6 @@ Page({ |
| 568 | 579 | et = th.data.bn_exp_type; |
| 569 | 580 | } |
| 570 | 581 | |
| 571 | - | |
| 572 | 582 | //-- 计算获得佣金的金额 -- |
| 573 | 583 | if (getApp().globalData.userInfo.is_distribut |
| 574 | 584 | && th.data.dis_config && th.data.dis_config.is_yongjin_dk) { |
| ... | ... | @@ -591,6 +601,8 @@ Page({ |
| 591 | 601 | |
| 592 | 602 | } |
| 593 | 603 | |
| 604 | + //用深拷贝把商品缓存起来,方便后面使用 | |
| 605 | + th.data.old_bn_goods=ut.deep_cp(t.data.data); | |
| 594 | 606 | |
| 595 | 607 | th.setData({ |
| 596 | 608 | bn_goods: t.data.data, bn_pickname: gg.pick_name, |
| ... | ... | @@ -834,13 +846,17 @@ Page({ |
| 834 | 846 | |
| 835 | 847 | if(th.data.bn_is_order_yh && th.data.kt_type != 3 ){ |
| 836 | 848 | |
| 837 | - await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | |
| 838 | - data: { store_id: os.stoid, orderAmount: o_condition, user_id: getApp().globalData.user_id } | |
| 839 | - }).then(res => { | |
| 840 | - if (res.data.code == 0) { | |
| 841 | - ord_prom = res.data.data; | |
| 842 | - } | |
| 843 | - }) | |
| 849 | + // await getApp().request.promiseGet("/api/weshop/promorder/getOrderPromotion", { | |
| 850 | + // data: { store_id: os.stoid, orderAmount: o_condition, user_id: getApp().globalData.user_id } | |
| 851 | + // }).then(res => { | |
| 852 | + // if (res.data.code == 0) { | |
| 853 | + // ord_prom = res.data.data; | |
| 854 | + // } | |
| 855 | + // }) | |
| 856 | + | |
| 857 | + th.set_by_now_ord_prom(th.data.bn_goods); | |
| 858 | + th.data.order_prom_map_ck[bn_pick].goods_price_all=condition; | |
| 859 | + ord_prom=await th.get_cur_ord_prom(bn_pick); | |
| 844 | 860 | } |
| 845 | 861 | |
| 846 | 862 | |
| ... | ... | @@ -2260,6 +2276,142 @@ Page({ |
| 2260 | 2276 | th.setData({ open_quan: 0 }); |
| 2261 | 2277 | }, |
| 2262 | 2278 | |
| 2279 | + //-- 获取订单促销的判断结构 -- | |
| 2280 | + set_by_now_ord_prom(item){ | |
| 2281 | + let pickid=this.data.bn_pick; | |
| 2282 | + let order_prom_map_ck= this.data.order_prom_map_ck; | |
| 2283 | + order_prom_map_ck[pickid]={ | |
| 2284 | + shop_price_all:0, //手店价的累计 | |
| 2285 | + market_price_all:0, //市场价的累计 | |
| 2286 | + goods_price_all:0, //实收价的累计 | |
| 2287 | + no_ord_price:0, //要累计上不参与订单促销的金额 | |
| 2288 | + goodsList:[], | |
| 2289 | + } | |
| 2290 | + | |
| 2291 | + let pk_ord_map=order_prom_map_ck[pickid]; | |
| 2292 | + pk_ord_map.shop_price_all += item.shop_price_y * item.buynum; | |
| 2293 | + pk_ord_map.market_price_all += item.goods_market_price * item.buynum; | |
| 2294 | + | |
| 2295 | + }, | |
| 2296 | + | |
| 2297 | + //获取当前进行中订单促销,同时带入相应的金额判断订单促销是不是运行,同时订单促销的条件不是实收价判断的话,默认的时候,订单促销是不参与运算的 | |
| 2298 | + async get_cur_ord_prom(pickid) { | |
| 2299 | + let ord_prom = null; | |
| 2300 | + let order_prom_map_ck = this.data.order_prom_map_ck[pickid]; | |
| 2301 | + if(!order_prom_map_ck) return null; | |
| 2302 | + | |
| 2303 | + //获取当前进行中的优惠促销 | |
| 2304 | + await getApp().request.promiseGet("/api/weshop/promorder/getPromOrder", { | |
| 2305 | + data: { | |
| 2306 | + store_id: os.stoid, | |
| 2307 | + orderAmount: -1, //-1为不判断金额条件 | |
| 2308 | + user_id: getApp().globalData.user_id | |
| 2309 | + } | |
| 2310 | + }).then(res => { | |
| 2311 | + if (res.data.code == 0) { | |
| 2312 | + ord_prom = res.data.data; | |
| 2313 | + } | |
| 2314 | + }) | |
| 2315 | + | |
| 2316 | + if (!ord_prom) return null; | |
| 2317 | + //用于计算订单促销的金额 | |
| 2318 | + let calculate_price=0; | |
| 2319 | + | |
| 2320 | + let txt1='show_ord_prom['+pickid+']'; | |
| 2321 | + //-- 此时判断活动的金额满足与否 -- | |
| 2322 | + switch (ord_prom.discount_field) { | |
| 2323 | + //实收价的时候 | |
| 2324 | + case 0: | |
| 2325 | + //要先还原 | |
| 2326 | + this.setData({ | |
| 2327 | + [txt1]: 0 | |
| 2328 | + }); | |
| 2329 | + | |
| 2330 | + if (ord_prom.money > order_prom_map_ck.goods_price_all){ | |
| 2331 | + return null; | |
| 2332 | + } | |
| 2333 | + break; | |
| 2334 | + //手店价的时候 | |
| 2335 | + case 1: | |
| 2336 | + if (ord_prom.money > order_prom_map_ck.shop_price_all){ | |
| 2337 | + //要先还原 | |
| 2338 | + this.setData({ | |
| 2339 | + [txt1]: 0 | |
| 2340 | + }); | |
| 2341 | + return null; | |
| 2342 | + } | |
| 2343 | + //要显示订单促销使用的按钮 | |
| 2344 | + this.setData({ | |
| 2345 | + [txt1]: 1 | |
| 2346 | + }); | |
| 2347 | + break; | |
| 2348 | + //市场价的时候 | |
| 2349 | + case 2: | |
| 2350 | + if (ord_prom.money > order_prom_map_ck.market_price_all){ | |
| 2351 | + //要先还原 | |
| 2352 | + this.setData({ | |
| 2353 | + [txt1]: 0 | |
| 2354 | + }); | |
| 2355 | + return null; | |
| 2356 | + } | |
| 2357 | + //要显示订单促销使用的按钮 | |
| 2358 | + this.setData({ | |
| 2359 | + [txt1]: 2 | |
| 2360 | + }); | |
| 2361 | + break; | |
| 2362 | + } | |
| 2363 | + //如果订单促销是不参与订单促销的,那么就直接返回null(订单促销不是实收价的时候) | |
| 2364 | + if(ord_prom.discount_field>0 && !this.data.can_use_ord_prom[pickid]){ | |
| 2365 | + return null; | |
| 2366 | + } | |
| 2367 | + return ord_prom; | |
| 2368 | + }, | |
| 2369 | + | |
| 2370 | + //立即购买的时候,点击订单促销的参与 | |
| 2371 | + set_can_use_ord_prom_now:function (e){ | |
| 2372 | + | |
| 2373 | + if(this.data.submit) return false; | |
| 2374 | + this.setData({ submit: 1,same_ok:1 }); | |
| 2375 | + | |
| 2376 | + let pickid=this.data.bn_pick; | |
| 2377 | + let txt = 'can_use_ord_prom[' + pickid + ']'; | |
| 2378 | + let can_use = this.data.can_use_ord_prom[pickid] ? this.data.can_use_ord_prom[pickid] : 0; | |
| 2379 | + this.setData({ | |
| 2380 | + [txt]: !can_use | |
| 2381 | + }) | |
| 2382 | + | |
| 2383 | + let th=this; | |
| 2384 | + let good=th.data.bn_goods; | |
| 2385 | + | |
| 2386 | + //如果有要参与订单促销的按钮点击后,要修改商品的价格 | |
| 2387 | + if(th.data.can_use_ord_prom[pickid]){ | |
| 2388 | + let discount_field=th.data.show_ord_prom[pickid]; | |
| 2389 | + switch (discount_field){ | |
| 2390 | + case 1: | |
| 2391 | + good.shop_price=good.shop_price_y; | |
| 2392 | + break; | |
| 2393 | + case 2: | |
| 2394 | + good.shop_price=good.market_price; | |
| 2395 | + break; | |
| 2396 | + } | |
| 2397 | + //-- 转成普通商品 --- | |
| 2398 | + good.prom_type=0; | |
| 2399 | + good.prom_id=0; | |
| 2400 | + good.discount_field=discount_field; | |
| 2401 | + }else{ | |
| 2402 | + good=ut.deep_cp(th.data.old_bn_goods); | |
| 2403 | + } | |
| 2404 | + | |
| 2405 | + th.setData({ | |
| 2406 | + bn_goods:good | |
| 2407 | + }) | |
| 2408 | + wx.showLoading({ | |
| 2409 | + title: "处理中.", | |
| 2410 | + mark:true | |
| 2411 | + }) | |
| 2412 | + th.calculatePrice2() | |
| 2413 | + } | |
| 2414 | + | |
| 2263 | 2415 | |
| 2264 | 2416 | |
| 2265 | 2417 | ... | ... |
packageE/pages/cart/cart2_pt/cart2_pt.wxml
| ... | ... | @@ -102,6 +102,13 @@ |
| 102 | 102 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} |
| 103 | 103 | </view> |
| 104 | 104 | |
| 105 | + <!-- 订单促销取价规则的优化 --> | |
| 106 | + <view class="set-mes" wx:if="{{show_ord_prom[bn_pick]}}"> | |
| 107 | + <view class="use-item" > | |
| 108 | + <icon bindtap='set_can_use_ord_prom_now' color="{{can_use_ord_prom[bn_pick]?'red':'gray'}}" size="16" type="success"></icon> | |
| 109 | + <view bindtap='set_can_use_ord_prom_now' class="yu_er">参与订单促销</view> | |
| 110 | + </view> | |
| 111 | + </view> | |
| 105 | 112 | |
| 106 | 113 | <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="{{(selected_quan_list && selected_quan_list.length>0) || get_by_quan_list!=null}}"> |
| 107 | 114 | <view class="work-frame flex-space-between"> | ... | ... |