Commit a3e934a428ec8ef51f8cd4ecb8814e828dd2c03e
1 parent
9181a05b
组合购和阶梯促销的优化
Showing
4 changed files
with
199 additions
and
165 deletions
packageE/pages/cart/cart2/cart2.js
... | ... | @@ -4234,7 +4234,7 @@ Page({ |
4234 | 4234 | case 7: |
4235 | 4235 | goods.prom_type = 7; |
4236 | 4236 | goods.prom_id = g_item.prom_id; |
4237 | - zh_map_count[g_item.prom_id]=1; //汇总一下组合购的活动 | |
4237 | + zh_map_count[g_item.prom_id]= (zh_map_count[g_item.prom_id]?zh_map_count[g_item.prom_id]:0)+goods.goods_num; //汇总一下组合购的活动 | |
4238 | 4238 | break |
4239 | 4239 | default: |
4240 | 4240 | goods.prom_type = 0; |
... | ... | @@ -4320,12 +4320,25 @@ Page({ |
4320 | 4320 | } |
4321 | 4321 | |
4322 | 4322 | |
4323 | - //-- 如果订单中有组合购 --- | |
4323 | + //-- 如果订单中有组合购,要统计到倍增的情况 --- | |
4324 | 4324 | if(Object.keys(zh_map_count).length){ |
4325 | 4325 | var zhlist=[]; |
4326 | + | |
4326 | 4327 | for (var kf in zh_map_count) { |
4327 | - zhlist.push({zhid:kf}); | |
4328 | + | |
4329 | + var zh_act_th=th.data.zhhe_act_map[kf]; | |
4330 | + var ite={zhid:kf,zhnum:1}; | |
4331 | + | |
4332 | + if(zh_act_th.is_bz){ | |
4333 | + if(zh_map_count[kf]>zh_act_th.zhbuyqty){ | |
4334 | + ite.zhnum=zh_map_count[kf]/zh_act_th.zhbuyqty; | |
4335 | + } | |
4336 | + } | |
4337 | + | |
4338 | + zhlist.push(ite); | |
4339 | + | |
4328 | 4340 | } |
4341 | + | |
4329 | 4342 | item.zhlist=zhlist; |
4330 | 4343 | } |
4331 | 4344 | ... | ... |
packageE/pages/cart/cart2/zh_calculate.js
... | ... | @@ -148,107 +148,118 @@ module.exports = { |
148 | 148 | no_in_arr.pop(); |
149 | 149 | } |
150 | 150 | } |
151 | + | |
151 | 152 | //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增 |
152 | 153 | if (act.is_bz && no_in_arr.length >= act.zhbuyqty) { |
153 | 154 | var bz_num_ok = 0; //超量倍增是否满足 |
154 | 155 | var zhqty_len = 0; //几个超量倍增 |
155 | 156 | var delete_num=0; |
156 | - let be = parseInt(no_in_arr.length / act.zhbuyqty); //看一下是几倍 | |
157 | - if (act.is_bzyh && zhqty_bz.length > 0) { | |
158 | - if (zhqty_bz.length > 1) { | |
159 | - let zhqty_bz_arr = []; | |
160 | - let zhqty_bz_flag=this.zhqty_bz_fun(zhqty_bz,be,zhqty_bz_arr); | |
161 | - if (zhqty_bz_flag) { | |
162 | - for (let i = 0; i < zhqty_bz.length; i++) { | |
163 | - var vv = zhqty_bz[i]; | |
164 | - for (let j = 0; j < be * vv['zhqty']; j++) { | |
165 | - let index = no_in_arr.findIndex(i => { | |
166 | - return vv.goods_id === i.goods_id | |
167 | - }) | |
168 | - if (index > -1) { | |
169 | - delete_num++ | |
170 | - no_in_arr.splice(index, 1) | |
157 | + | |
158 | + //看一下是几倍 | |
159 | + let be = parseInt(no_in_arr.length / act.zhbuyqty); | |
160 | + //如果有总数控制的时候 | |
161 | + if(act.zh_num){ | |
162 | + var be1=act.zh_num-act.zh_buy_num-1; | |
163 | + if(be1<be) be=be1; | |
164 | + } | |
165 | + | |
166 | + if(be) { | |
167 | + if (act.is_bzyh && zhqty_bz.length > 0) { | |
168 | + if (zhqty_bz.length > 1) { | |
169 | + let zhqty_bz_arr = []; | |
170 | + let zhqty_bz_flag = this.zhqty_bz_fun(zhqty_bz, be, zhqty_bz_arr); | |
171 | + if (zhqty_bz_flag) { | |
172 | + for (let i = 0; i < zhqty_bz.length; i++) { | |
173 | + var vv = zhqty_bz[i]; | |
174 | + for (let j = 0; j < be * vv['zhqty']; j++) { | |
175 | + let index = no_in_arr.findIndex(i => { | |
176 | + return vv.goods_id === i.goods_id | |
177 | + }) | |
178 | + if (index > -1) { | |
179 | + delete_num++ | |
180 | + no_in_arr.splice(index, 1) | |
181 | + } | |
171 | 182 | } |
172 | 183 | } |
173 | - } | |
174 | - } else { | |
175 | - zhqty_len=1; | |
176 | - let min_bz_num = Math.min.apply(Math, zhqty_bz_arr.map(function (o) { | |
177 | - return o['num']; | |
178 | - })); | |
179 | - let new_arr = zhqty_bz_arr.filter(ii => { | |
180 | - return ii['num'] == min_bz_num; | |
181 | - }) | |
182 | - var vv = new_arr[0]; | |
183 | - var bz_num = be * new_arr[0].zhqty; //超量倍增 | |
184 | - var num = min_bz_num - new_arr[0].zhqty; //购买数量减去超量 | |
185 | - bz_num_ok = bz_num - num; | |
186 | - if (bz_num_ok <= 0) { | |
187 | - //超量倍增满足,超量倍增就等于倍数 | |
188 | - bz_num_ok = bz_num; | |
189 | 184 | } else { |
190 | - //超量倍增不满足,倍数要减去多出得 | |
191 | - // be=be-bz_num_ok; | |
192 | - if (num % vv.zhqty == 0) { | |
193 | - be = num / vv.zhqty; | |
185 | + zhqty_len = 1; | |
186 | + let min_bz_num = Math.min.apply(Math, zhqty_bz_arr.map(function (o) { | |
187 | + return o['num']; | |
188 | + })); | |
189 | + let new_arr = zhqty_bz_arr.filter(ii => { | |
190 | + return ii['num'] == min_bz_num; | |
191 | + }) | |
192 | + var vv = new_arr[0]; | |
193 | + var bz_num = be * new_arr[0].zhqty; //超量倍增 | |
194 | + var num = min_bz_num - new_arr[0].zhqty; //购买数量减去超量 | |
195 | + bz_num_ok = bz_num - num; | |
196 | + if (bz_num_ok <= 0) { | |
197 | + //超量倍增满足,超量倍增就等于倍数 | |
198 | + bz_num_ok = bz_num; | |
194 | 199 | } else { |
195 | - be = Math.floor(num / vv.zhqty) | |
200 | + //超量倍增不满足,倍数要减去多出得 | |
201 | + // be=be-bz_num_ok; | |
202 | + if (num % vv.zhqty == 0) { | |
203 | + be = num / vv.zhqty; | |
204 | + } else { | |
205 | + be = Math.floor(num / vv.zhqty) | |
206 | + } | |
207 | + bz_num_ok = be * vv.zhqty; | |
208 | + } | |
209 | + | |
210 | + for (let i = 0; i < zhqty_bz.length; i++) { | |
211 | + let item1 = zhqty_bz[i]; | |
212 | + for (let j = 0; j < be * item1['zhqty']; j++) { | |
213 | + let index = no_in_arr.findIndex(i => { | |
214 | + return item1.goods_id === i.goods_id | |
215 | + }) | |
216 | + if (index > -1) { | |
217 | + // delete_num++ | |
218 | + no_in_arr.splice(index, 1) | |
219 | + } | |
220 | + } | |
196 | 221 | } |
197 | - bz_num_ok = be * vv.zhqty; | |
222 | + aprice += be * aprice; | |
198 | 223 | } |
199 | - | |
200 | - for(let i = 0; i < zhqty_bz.length; i++){ | |
201 | - let item1=zhqty_bz[i]; | |
202 | - for (let j = 0; j < be * item1['zhqty']; j++) { | |
224 | + } else { | |
225 | + var vv = zhqty_bz[0]; | |
226 | + var bz_num = be * vv.zhqty; //超量倍增 | |
227 | + var num = vv['num'] - vv.zhqty; //购买数量减去超量 | |
228 | + if (num > 0) { | |
229 | + bz_num_ok = bz_num - num; | |
230 | + if (bz_num_ok <= 0) { | |
231 | + //超量倍增满足,超量倍增就等于倍数 | |
232 | + bz_num_ok = bz_num; | |
233 | + } else { | |
234 | + //超量倍增不满足,倍数要减去多出得 | |
235 | + // be=be-bz_num_ok; | |
236 | + if (num % vv.zhqty == 0) { | |
237 | + be = num / vv.zhqty; | |
238 | + } else { | |
239 | + be = Math.floor(num / vv.zhqty) | |
240 | + } | |
241 | + bz_num_ok = be * vv.zhqty; | |
242 | + } | |
243 | + for (let j = 0; j < bz_num_ok; j++) { | |
203 | 244 | let index = no_in_arr.findIndex(i => { |
204 | - return item1.goods_id === i.goods_id | |
245 | + return vv.goods_id === i.goods_id | |
205 | 246 | }) |
206 | 247 | if (index > -1) { |
207 | - // delete_num++ | |
248 | + delete_num++ | |
208 | 249 | no_in_arr.splice(index, 1) |
209 | 250 | } |
210 | 251 | } |
211 | - } | |
212 | - aprice += be * aprice; | |
213 | - } | |
214 | - } else { | |
215 | - var vv = zhqty_bz[0]; | |
216 | - var bz_num = be * vv.zhqty; //超量倍增 | |
217 | - var num = vv['num'] - vv.zhqty; //购买数量减去超量 | |
218 | - if (num > 0) { | |
219 | - bz_num_ok = bz_num - num; | |
220 | - if (bz_num_ok <= 0) { | |
221 | - //超量倍增满足,超量倍增就等于倍数 | |
222 | - bz_num_ok = bz_num; | |
223 | 252 | } else { |
224 | - //超量倍增不满足,倍数要减去多出得 | |
225 | - // be=be-bz_num_ok; | |
226 | - if (num % vv.zhqty == 0) { | |
227 | - be = num / vv.zhqty; | |
228 | - } else { | |
229 | - be = Math.floor(num / vv.zhqty) | |
230 | - } | |
231 | - bz_num_ok = be * vv.zhqty; | |
232 | - } | |
233 | - for (let j = 0; j < bz_num_ok; j++) { | |
234 | - let index = no_in_arr.findIndex(i => { | |
235 | - return vv.goods_id === i.goods_id | |
236 | - }) | |
237 | - if (index > -1) { | |
238 | - delete_num++ | |
239 | - no_in_arr.splice(index, 1) | |
240 | - } | |
253 | + zhqty_len = 1; | |
241 | 254 | } |
242 | - } else { | |
243 | - zhqty_len = 1; | |
244 | 255 | } |
245 | 256 | } |
246 | - } | |
247 | - if (!zhqty_len) { | |
248 | - aprice += be * act.zhprice; | |
249 | - let pop_num = be * act.zhbuyqty - delete_num; | |
250 | - for (var m = 0; m < pop_num; m++) { | |
251 | - no_in_arr.pop(); | |
257 | + if (!zhqty_len) { | |
258 | + aprice += be * act.zhprice; | |
259 | + let pop_num = be * act.zhbuyqty - delete_num; | |
260 | + for (var m = 0; m < pop_num; m++) { | |
261 | + no_in_arr.pop(); | |
262 | + } | |
252 | 263 | } |
253 | 264 | } |
254 | 265 | ... | ... |
pages/cart/cart/ladder_calculate.js
... | ... | @@ -107,7 +107,7 @@ module.exports = { |
107 | 107 | all_num += item.cart_num; |
108 | 108 | for (var j = 0; j < item.cart_num; j++) { |
109 | 109 | no_in_arr.push({ |
110 | - price: item.goods_price,offline_price:item.offline_price,goods_id:item.goods_id,shop_price:item.shop_price | |
110 | + price: item.goods_price,offline_price:item.offline_price,goods_id:item.goods_id,shop_price:item.shop_price,goods_market_price:item.goods_market_price | |
111 | 111 | }) |
112 | 112 | } |
113 | 113 | } |
... | ... | @@ -123,7 +123,7 @@ module.exports = { |
123 | 123 | if(no_in_arr.length==0) break; |
124 | 124 | let item_j=act.ladder_list[j]; |
125 | 125 | var end=no_in_arr.pop(); |
126 | - var new_price=parseInt(item_j.discount_field)==1?end.shop_price:end.price; | |
126 | + var new_price = parseInt(item_j.discount_field) == 2?end.goods_market_price:(parseInt(item_j.discount_field) == 1 ? end.shop_price : end.price); | |
127 | 127 | aprice+=new_price* parseFloat(item_j.discount)/10; |
128 | 128 | lev++; |
129 | 129 | } | ... | ... |
pages/cart/cart/zh_calculate.js
... | ... | @@ -239,105 +239,115 @@ module.exports = { |
239 | 239 | var delete_num = 0; |
240 | 240 | var zhqty_len = 0; //几个超量倍增 |
241 | 241 | var be = parseInt(no_in_arr.length / act.zhbuyqty); //看一下是几倍 |
242 | - if (act.is_bzyh && zhqty_bz.length > 0) { | |
243 | - if (zhqty_bz.length > 1) { | |
244 | - let zhqty_bz_arr = []; | |
245 | - let zhqty_bz_flag=this.zhqty_bz_fun(zhqty_bz,be,zhqty_bz_arr); | |
246 | - | |
247 | - if (zhqty_bz_flag) { | |
248 | - for (let i = 0; i < zhqty_bz.length; i++) { | |
249 | - var vv = zhqty_bz[i]; | |
250 | - for (let j = 0; j < be * vv['zhqty']; j++) { | |
251 | - let index = no_in_arr.findIndex(i => { | |
252 | - return vv.goods_id === i.goods_id | |
253 | - }) | |
254 | - if (index > -1) { | |
255 | - delete_num++ | |
256 | - no_in_arr.splice(index, 1) | |
242 | + | |
243 | + //如果有总数控制的时候 | |
244 | + if(act.zh_num){ | |
245 | + var be1=act.zh_num-act.zh_buy_num-1; | |
246 | + if(be1<be) be=be1; | |
247 | + } | |
248 | + | |
249 | + if(be){ | |
250 | + if (act.is_bzyh && zhqty_bz.length > 0) { | |
251 | + if (zhqty_bz.length > 1) { | |
252 | + let zhqty_bz_arr = []; | |
253 | + let zhqty_bz_flag=this.zhqty_bz_fun(zhqty_bz,be,zhqty_bz_arr); | |
254 | + | |
255 | + if (zhqty_bz_flag) { | |
256 | + for (let i = 0; i < zhqty_bz.length; i++) { | |
257 | + var vv = zhqty_bz[i]; | |
258 | + for (let j = 0; j < be * vv['zhqty']; j++) { | |
259 | + let index = no_in_arr.findIndex(i => { | |
260 | + return vv.goods_id === i.goods_id | |
261 | + }) | |
262 | + if (index > -1) { | |
263 | + delete_num++ | |
264 | + no_in_arr.splice(index, 1) | |
265 | + } | |
257 | 266 | } |
258 | 267 | } |
259 | - } | |
260 | - } else { | |
261 | - zhqty_len=1; | |
262 | - let min_bz_num = Math.min.apply(Math, zhqty_bz_arr.map(function (o) { | |
263 | - return o['num']; | |
264 | - })); | |
265 | - let new_arr = zhqty_bz_arr.filter(ii => { | |
266 | - return ii['num'] == min_bz_num; | |
267 | - }) | |
268 | - var vv = new_arr[0]; | |
269 | - var bz_num = be * new_arr[0].zhqty; //超量倍增 | |
270 | - var num = min_bz_num - new_arr[0].zhqty; //购买数量减去超量 | |
271 | - bz_num_ok = bz_num - num; | |
272 | - if (bz_num_ok <= 0) { | |
273 | - //超量倍增满足,超量倍增就等于倍数 | |
274 | - bz_num_ok = bz_num; | |
275 | 268 | } else { |
276 | - //超量倍增不满足,倍数要减去多出得 | |
277 | - // be=be-bz_num_ok; | |
278 | - if (num % vv.zhqty == 0) { | |
279 | - be = num / vv.zhqty; | |
269 | + zhqty_len=1; | |
270 | + let min_bz_num = Math.min.apply(Math, zhqty_bz_arr.map(function (o) { | |
271 | + return o['num']; | |
272 | + })); | |
273 | + let new_arr = zhqty_bz_arr.filter(ii => { | |
274 | + return ii['num'] == min_bz_num; | |
275 | + }) | |
276 | + var vv = new_arr[0]; | |
277 | + var bz_num = be * new_arr[0].zhqty; //超量倍增 | |
278 | + var num = min_bz_num - new_arr[0].zhqty; //购买数量减去超量 | |
279 | + bz_num_ok = bz_num - num; | |
280 | + if (bz_num_ok <= 0) { | |
281 | + //超量倍增满足,超量倍增就等于倍数 | |
282 | + bz_num_ok = bz_num; | |
280 | 283 | } else { |
281 | - be = Math.floor(num / vv.zhqty) | |
284 | + //超量倍增不满足,倍数要减去多出得 | |
285 | + // be=be-bz_num_ok; | |
286 | + if (num % vv.zhqty == 0) { | |
287 | + be = num / vv.zhqty; | |
288 | + } else { | |
289 | + be = Math.floor(num / vv.zhqty) | |
290 | + } | |
291 | + bz_num_ok = be * vv.zhqty; | |
292 | + } | |
293 | + | |
294 | + for(let i = 0; i < zhqty_bz.length; i++){ | |
295 | + let item1=zhqty_bz[i]; | |
296 | + for (let j = 0; j < be * item1['zhqty']; j++) { | |
297 | + let index = no_in_arr.findIndex(i => { | |
298 | + return item1.goods_id === i.goods_id | |
299 | + }) | |
300 | + if (index > -1) { | |
301 | + // delete_num++ | |
302 | + no_in_arr.splice(index, 1) | |
303 | + } | |
304 | + } | |
282 | 305 | } |
283 | - bz_num_ok = be * vv.zhqty; | |
306 | + aprice += be * aprice; | |
284 | 307 | } |
285 | - | |
286 | - for(let i = 0; i < zhqty_bz.length; i++){ | |
287 | - let item1=zhqty_bz[i]; | |
288 | - for (let j = 0; j < be * item1['zhqty']; j++) { | |
308 | + } else { | |
309 | + var vv = zhqty_bz[0]; | |
310 | + var bz_num = be * vv.zhqty; //超量倍增 | |
311 | + var num = vv['num'] - vv.zhqty; //购买数量减去超量 | |
312 | + if (num > 0) { | |
313 | + bz_num_ok = bz_num - num; | |
314 | + if (bz_num_ok <= 0) { | |
315 | + //超量倍增满足,超量倍增就等于倍数 | |
316 | + bz_num_ok = bz_num; | |
317 | + } else { | |
318 | + //超量倍增不满足,倍数要减去多出得 | |
319 | + // be=be-bz_num_ok; | |
320 | + if (num % vv.zhqty == 0) { | |
321 | + be = num / vv.zhqty; | |
322 | + } else { | |
323 | + be = Math.floor(num / vv.zhqty) | |
324 | + } | |
325 | + bz_num_ok = be * vv.zhqty; | |
326 | + } | |
327 | + for (let j = 0; j < bz_num_ok; j++) { | |
289 | 328 | let index = no_in_arr.findIndex(i => { |
290 | - return item1.goods_id === i.goods_id | |
329 | + return vv.goods_id === i.goods_id | |
291 | 330 | }) |
292 | 331 | if (index > -1) { |
293 | - // delete_num++ | |
332 | + delete_num++ | |
294 | 333 | no_in_arr.splice(index, 1) |
295 | 334 | } |
296 | 335 | } |
297 | - } | |
298 | - aprice += be * aprice; | |
299 | - } | |
300 | - } else { | |
301 | - var vv = zhqty_bz[0]; | |
302 | - var bz_num = be * vv.zhqty; //超量倍增 | |
303 | - var num = vv['num'] - vv.zhqty; //购买数量减去超量 | |
304 | - if (num > 0) { | |
305 | - bz_num_ok = bz_num - num; | |
306 | - if (bz_num_ok <= 0) { | |
307 | - //超量倍增满足,超量倍增就等于倍数 | |
308 | - bz_num_ok = bz_num; | |
309 | 336 | } else { |
310 | - //超量倍增不满足,倍数要减去多出得 | |
311 | - // be=be-bz_num_ok; | |
312 | - if (num % vv.zhqty == 0) { | |
313 | - be = num / vv.zhqty; | |
314 | - } else { | |
315 | - be = Math.floor(num / vv.zhqty) | |
316 | - } | |
317 | - bz_num_ok = be * vv.zhqty; | |
318 | - } | |
319 | - for (let j = 0; j < bz_num_ok; j++) { | |
320 | - let index = no_in_arr.findIndex(i => { | |
321 | - return vv.goods_id === i.goods_id | |
322 | - }) | |
323 | - if (index > -1) { | |
324 | - delete_num++ | |
325 | - no_in_arr.splice(index, 1) | |
326 | - } | |
337 | + zhqty_len = 1; | |
327 | 338 | } |
328 | - } else { | |
329 | - zhqty_len = 1; | |
330 | 339 | } |
331 | 340 | } |
332 | - } | |
333 | 341 | |
334 | - if (!zhqty_len) { | |
335 | - aprice += be * act.zhprice; | |
336 | - let pop_num = be * act.zhbuyqty - delete_num; | |
337 | - for (var m = 0; m < pop_num; m++) { | |
338 | - no_in_arr.pop(); | |
342 | + if (!zhqty_len) { | |
343 | + aprice += be * act.zhprice; | |
344 | + let pop_num = be * act.zhbuyqty - delete_num; | |
345 | + for (var m = 0; m < pop_num; m++) { | |
346 | + no_in_arr.pop(); | |
347 | + } | |
339 | 348 | } |
340 | 349 | } |
350 | + | |
341 | 351 | } |
342 | 352 | //算一下剩余的钱 |
343 | 353 | if (no_in_arr.length) { | ... | ... |