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