Commit a3e934a428ec8ef51f8cd4ecb8814e828dd2c03e

Authored by yvan.ni
1 parent 9181a05b

组合购和阶梯促销的优化

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) {
... ...