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,35 +1042,9 @@ Page({ | ||
1042 | //-- 多促销活动调用接口需要的参数,和商品的购买数量和活动的购买数量的请求参数 -- | 1042 | //-- 多促销活动调用接口需要的参数,和商品的购买数量和活动的购买数量的请求参数 -- |
1043 | var dug_cx_arr = []; | 1043 | var dug_cx_arr = []; |
1044 | //获取 限购 和 多活动的促销---2024-2-1 | 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 | if ([1, 2, 4, 6, 8, 9].indexOf(item1.prom_type) == -1 && !item1.whsle_id | 1049 | if ([1, 2, 4, 6, 8, 9].indexOf(item1.prom_type) == -1 && !item1.whsle_id |
1076 | && !item1.is_gift && !item1.is_ld_split && !item1.is_zh_split) { | 1050 | && !item1.is_gift && !item1.is_ld_split && !item1.is_zh_split) { |
@@ -1080,7 +1054,7 @@ Page({ | @@ -1080,7 +1054,7 @@ Page({ | ||
1080 | }); | 1054 | }); |
1081 | if (f_idx == -1) { | 1055 | if (f_idx == -1) { |
1082 | let gd_ite = { | 1056 | let gd_ite = { |
1083 | - goods_id: carr[i].goods_id, | 1057 | + goods_id: carr[iv].goods_id, |
1084 | goods_num: 1, | 1058 | goods_num: 1, |
1085 | is_limit_show: 1, | 1059 | is_limit_show: 1, |
1086 | is_state: 0 | 1060 | is_state: 0 |
@@ -1091,7 +1065,7 @@ Page({ | @@ -1091,7 +1065,7 @@ Page({ | ||
1091 | } | 1065 | } |
1092 | 1066 | ||
1093 | if (is_change) { | 1067 | if (is_change) { |
1094 | - carr[i].collocationList = null; | 1068 | + carr[iv].collocationList = null; |
1095 | } | 1069 | } |
1096 | } | 1070 | } |
1097 | //-- 对商品的多促销进行判断 ---2024-2-1-- | 1071 | //-- 对商品的多促销进行判断 ---2024-2-1-- |
@@ -1099,9 +1073,46 @@ Page({ | @@ -1099,9 +1073,46 @@ Page({ | ||
1099 | await th.buy_pro_group(dug_cx_arr,carr); | 1073 | await th.buy_pro_group(dug_cx_arr,carr); |
1100 | } | 1074 | } |
1101 | } | 1075 | } |
1076 | + | ||
1102 | //在分组的时候,就不要再调用接口,await | 1077 | //在分组的时候,就不要再调用接口,await |
1103 | for (var i = 0; i < carr.length; i++) { | 1078 | for (var i = 0; i < carr.length; i++) { |
1104 | var item = carr[i]; | 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 | if (is_card_back) { | 1117 | if (is_card_back) { |
1107 | th.data.card_name = th.data.userinfo.card_field; | 1118 | th.data.card_name = th.data.userinfo.card_field; |
@@ -4950,6 +4961,12 @@ Page({ | @@ -4950,6 +4961,12 @@ Page({ | ||
4950 | 'prom_id': th.data.bn_goods.prom_id, //促销活动id | 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 | if (th.data.bn_goods.whsle_id) { | 4970 | if (th.data.bn_goods.whsle_id) { |
4954 | item.is_whsle = 1; | 4971 | item.is_whsle = 1; |
4955 | item.whsle_id = th.data.bn_goods.whsle_id; | 4972 | item.whsle_id = th.data.bn_goods.whsle_id; |
@@ -5343,6 +5360,11 @@ Page({ | @@ -5343,6 +5360,11 @@ Page({ | ||
5343 | 'store_id': oo.stoid, | 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 | if (g_item.is_pd_normal) { | 5368 | if (g_item.is_pd_normal) { |
5347 | goods.is_pd_normal = 1; | 5369 | goods.is_pd_normal = 1; |
5348 | } | 5370 | } |
@@ -9012,6 +9034,10 @@ Page({ | @@ -9012,6 +9034,10 @@ Page({ | ||
9012 | good.shop_price=good.market_price; | 9034 | good.shop_price=good.market_price; |
9013 | break; | 9035 | break; |
9014 | } | 9036 | } |
9037 | + | ||
9038 | + //-- 转成普通商品 --- | ||
9039 | + good.prom_type=0; | ||
9040 | + good.prom_id=0; | ||
9015 | }else{ | 9041 | }else{ |
9016 | good=ut.deep_cp(th.data.old_bn_goods); | 9042 | good=ut.deep_cp(th.data.old_bn_goods); |
9017 | } | 9043 | } |
packageE/pages/cart/cart2/cart2.wxml
@@ -355,9 +355,9 @@ | @@ -355,9 +355,9 @@ | ||
355 | 355 | ||
356 | <!-- 订单促销取价规则的优化 --> | 356 | <!-- 订单促销取价规则的优化 --> |
357 | <view class="set-mes" wx:if="{{show_ord_prom[item.pickup_id]}}"> | 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 | </view> | 361 | </view> |
362 | </view> | 362 | </view> |
363 | 363 | ||
@@ -695,9 +695,9 @@ | @@ -695,9 +695,9 @@ | ||
695 | 695 | ||
696 | <!-- 订单促销取价规则的优化 --> | 696 | <!-- 订单促销取价规则的优化 --> |
697 | <view class="set-mes" wx:if="{{show_ord_prom[bn_pick]}}"> | 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 | </view> | 701 | </view> |
702 | </view> | 702 | </view> |
703 | 703 |
packageE/pages/cart/cart2_inte/cart2_inte.js
@@ -85,7 +85,14 @@ Page({ | @@ -85,7 +85,14 @@ Page({ | ||
85 | same_ok:1, //同城配送的控制,默认ok | 85 | same_ok:1, //同城配送的控制,默认ok |
86 | bconfig: null, | 86 | bconfig: null, |
87 | showFold:true, | 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,6 +639,8 @@ Page({ | ||
632 | success: async function (tt) { | 639 | success: async function (tt) { |
633 | if (tt.data.code == 0 && tt.data.data && tt.data.data.pageData) { | 640 | if (tt.data.code == 0 && tt.data.data && tt.data.data.pageData) { |
634 | var inte_data = tt.data.data.pageData[0]; | 641 | var inte_data = tt.data.data.pageData[0]; |
642 | + | ||
643 | + gd.shop_price_y=gd.shop_price; | ||
635 | t.data.data.shop_price = inte_data.addmoney; | 644 | t.data.data.shop_price = inte_data.addmoney; |
636 | t.data.data.integral = inte_data.integral; | 645 | t.data.data.integral = inte_data.integral; |
637 | 646 | ||
@@ -658,6 +667,9 @@ Page({ | @@ -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 | th.setData({ | 673 | th.setData({ |
662 | bn_goods: t.data.data, bn_pickname: gg.pick_name, bn_exp_type: et, index: m_wind, | 674 | bn_goods: t.data.data, bn_pickname: gg.pick_name, bn_exp_type: et, index: m_wind, |
663 | bn_pick: gg.pick_id, bn_t_exp_t: distr_t, bn_exp_type: et,inv_is_post:inte_data.is_post | 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,16 +754,23 @@ Page({ | ||
742 | var condition = parseFloat(allpice-cut_price).toFixed(2); | 754 | var condition = parseFloat(allpice-cut_price).toFixed(2); |
743 | var ord_prom = null; | 755 | var ord_prom = null; |
744 | var is_ord_prom_post = 0; | 756 | var is_ord_prom_post = 0; |
757 | + //---如果有选择优惠券的情况下--- | ||
758 | + var quan_price = 0, bn_pick = th.data.bn_pick; | ||
745 | 759 | ||
746 | if (condition > 0 && th.data.bn_is_order_yh && !th.data.bn_goods.whsle_id) { | 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 | if (ord_prom && ord_prom.is_post_temp) { | 774 | if (ord_prom && ord_prom.is_post_temp) { |
756 | is_ord_prom_post = 1; | 775 | is_ord_prom_post = 1; |
757 | } | 776 | } |
@@ -894,8 +913,7 @@ Page({ | @@ -894,8 +913,7 @@ Page({ | ||
894 | var wl_txt = "formData.shipping_price"; | 913 | var wl_txt = "formData.shipping_price"; |
895 | th.setData({ [wl_txt]: 0, }) | 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 | var total_m = (parseFloat(allpice)).toFixed(2); | 919 | var total_m = (parseFloat(allpice)).toFixed(2); |
@@ -1281,7 +1299,6 @@ Page({ | @@ -1281,7 +1299,6 @@ Page({ | ||
1281 | item.samecity_order_amount=th.data.bn_samecity_order_amount; | 1299 | item.samecity_order_amount=th.data.bn_samecity_order_amount; |
1282 | } | 1300 | } |
1283 | 1301 | ||
1284 | - | ||
1285 | //获取立即购买的商品的信息 | 1302 | //获取立即购买的商品的信息 |
1286 | var gg = to.get_b_now(); | 1303 | var gg = to.get_b_now(); |
1287 | //--商品的房间号-- | 1304 | //--商品的房间号-- |
@@ -1319,6 +1336,15 @@ Page({ | @@ -1319,6 +1336,15 @@ Page({ | ||
1319 | 'prom_id': th.data.bn_goods.prom_id, //促销活动id | 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 | if(getApp().globalData.skinface_id){ | 1348 | if(getApp().globalData.skinface_id){ |
1323 | goods.skinface_id=getApp().globalData.skinface_id; | 1349 | goods.skinface_id=getApp().globalData.skinface_id; |
1324 | } | 1350 | } |
@@ -1757,7 +1783,146 @@ Page({ | @@ -1757,7 +1783,146 @@ Page({ | ||
1757 | var th = this; | 1783 | var th = this; |
1758 | th.setData({bn_use_commission: !th.data.bn_use_commission}); | 1784 | th.setData({bn_use_commission: !th.data.bn_use_commission}); |
1759 | th.calculatePrice2(); | 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,6 +94,14 @@ | ||
94 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} | 94 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} |
95 | </view> | 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 | <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}}"> | 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 | <view class="work-frame flex-space-between"> | 106 | <view class="work-frame flex-space-between"> |
99 | <view class="work"> | 107 | <view class="work"> |
packageE/pages/cart/cart2_pt/cart2_pt.js
@@ -90,6 +90,13 @@ Page({ | @@ -90,6 +90,13 @@ Page({ | ||
90 | is_no_by: {}, | 90 | is_no_by: {}, |
91 | is_by: {}, | 91 | is_by: {}, |
92 | is_quan_by: {}, | 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,7 +451,9 @@ Page({ | ||
444 | et = 2; | 451 | et = 2; |
445 | } | 452 | } |
446 | 453 | ||
454 | + t.data.data.shop_price_y=t.data.data.shop_price | ||
447 | t.data.data.shop_price = gg.goods_price; | 455 | t.data.data.shop_price = gg.goods_price; |
456 | + | ||
448 | //--如果是普通购买的时候-- | 457 | //--如果是普通购买的时候-- |
449 | if (gg.is_normal == 1) { | 458 | if (gg.is_normal == 1) { |
450 | t.data.data.prom_id = 0; | 459 | t.data.data.prom_id = 0; |
@@ -485,6 +494,8 @@ Page({ | @@ -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 | th.setData({ | 500 | th.setData({ |
490 | bn_goods: t.data.data, bn_pickname: gg.pick_name, | 501 | bn_goods: t.data.data, bn_pickname: gg.pick_name, |
@@ -568,7 +579,6 @@ Page({ | @@ -568,7 +579,6 @@ Page({ | ||
568 | et = th.data.bn_exp_type; | 579 | et = th.data.bn_exp_type; |
569 | } | 580 | } |
570 | 581 | ||
571 | - | ||
572 | //-- 计算获得佣金的金额 -- | 582 | //-- 计算获得佣金的金额 -- |
573 | if (getApp().globalData.userInfo.is_distribut | 583 | if (getApp().globalData.userInfo.is_distribut |
574 | && th.data.dis_config && th.data.dis_config.is_yongjin_dk) { | 584 | && th.data.dis_config && th.data.dis_config.is_yongjin_dk) { |
@@ -591,6 +601,8 @@ Page({ | @@ -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 | th.setData({ | 607 | th.setData({ |
596 | bn_goods: t.data.data, bn_pickname: gg.pick_name, | 608 | bn_goods: t.data.data, bn_pickname: gg.pick_name, |
@@ -834,13 +846,17 @@ Page({ | @@ -834,13 +846,17 @@ Page({ | ||
834 | 846 | ||
835 | if(th.data.bn_is_order_yh && th.data.kt_type != 3 ){ | 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,6 +2276,142 @@ Page({ | ||
2260 | th.setData({ open_quan: 0 }); | 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,6 +102,13 @@ | ||
102 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} | 102 | <icon color="#f23030" size="16" type="info"></icon>{{order.store_prom}} |
103 | </view> | 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 | <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}}"> | 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 | <view class="work-frame flex-space-between"> | 114 | <view class="work-frame flex-space-between"> |