Commit a3e934a428ec8ef51f8cd4ecb8814e828dd2c03e

Authored by yvan.ni
1 parent 9181a05b

组合购和阶梯促销的优化

packageE/pages/cart/cart2/cart2.js
@@ -4234,7 +4234,7 @@ Page({ @@ -4234,7 +4234,7 @@ Page({
4234 case 7: 4234 case 7:
4235 goods.prom_type = 7; 4235 goods.prom_type = 7;
4236 goods.prom_id = g_item.prom_id; 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 break 4238 break
4239 default: 4239 default:
4240 goods.prom_type = 0; 4240 goods.prom_type = 0;
@@ -4320,12 +4320,25 @@ Page({ @@ -4320,12 +4320,25 @@ Page({
4320 } 4320 }
4321 4321
4322 4322
4323 - //-- 如果订单中有组合购 --- 4323 + //-- 如果订单中有组合购,要统计到倍增的情况 ---
4324 if(Object.keys(zh_map_count).length){ 4324 if(Object.keys(zh_map_count).length){
4325 var zhlist=[]; 4325 var zhlist=[];
  4326 +
4326 for (var kf in zh_map_count) { 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 item.zhlist=zhlist; 4342 item.zhlist=zhlist;
4330 } 4343 }
4331 4344
packageE/pages/cart/cart2/zh_calculate.js
@@ -148,107 +148,118 @@ module.exports = { @@ -148,107 +148,118 @@ module.exports = {
148 no_in_arr.pop(); 148 no_in_arr.pop();
149 } 149 }
150 } 150 }
  151 +
151 //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增 152 //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增
152 if (act.is_bz && no_in_arr.length >= act.zhbuyqty) { 153 if (act.is_bz && no_in_arr.length >= act.zhbuyqty) {
153 var bz_num_ok = 0; //超量倍增是否满足 154 var bz_num_ok = 0; //超量倍增是否满足
154 var zhqty_len = 0; //几个超量倍增 155 var zhqty_len = 0; //几个超量倍增
155 var delete_num=0; 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 } else { 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 } else { 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 let index = no_in_arr.findIndex(i => { 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 if (index > -1) { 247 if (index > -1) {
207 - // delete_num++ 248 + delete_num++
208 no_in_arr.splice(index, 1) 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 } else { 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,7 +107,7 @@ module.exports = {
107 all_num += item.cart_num; 107 all_num += item.cart_num;
108 for (var j = 0; j < item.cart_num; j++) { 108 for (var j = 0; j < item.cart_num; j++) {
109 no_in_arr.push({ 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,7 +123,7 @@ module.exports = {
123 if(no_in_arr.length==0) break; 123 if(no_in_arr.length==0) break;
124 let item_j=act.ladder_list[j]; 124 let item_j=act.ladder_list[j];
125 var end=no_in_arr.pop(); 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 aprice+=new_price* parseFloat(item_j.discount)/10; 127 aprice+=new_price* parseFloat(item_j.discount)/10;
128 lev++; 128 lev++;
129 } 129 }
pages/cart/cart/zh_calculate.js
@@ -239,105 +239,115 @@ module.exports = { @@ -239,105 +239,115 @@ module.exports = {
239 var delete_num = 0; 239 var delete_num = 0;
240 var zhqty_len = 0; //几个超量倍增 240 var zhqty_len = 0; //几个超量倍增
241 var be = parseInt(no_in_arr.length / act.zhbuyqty); //看一下是几倍 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 } else { 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 } else { 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 let index = no_in_arr.findIndex(i => { 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 if (index > -1) { 331 if (index > -1) {
293 - // delete_num++ 332 + delete_num++
294 no_in_arr.splice(index, 1) 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 } else { 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 if (no_in_arr.length) { 353 if (no_in_arr.length) {