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