Commit 37eb2da33f0b16875dc1c020ee3405f219790e00
Merge branch 'test' into 'qa'
Test See merge request !1012
Showing
1 changed file
with
309 additions
and
4 deletions
pages/cart/cart/cart.js
... | ... | @@ -1314,10 +1314,8 @@ Page({ |
1314 | 1314 | total_num: t_num, |
1315 | 1315 | }); |
1316 | 1316 | |
1317 | - th.data.duo_zp_num_arr={}; | |
1318 | - for (var i in e.data.requestData) { | |
1319 | - e.check_prom_activity(i) | |
1320 | - } | |
1317 | + e.all_check_prom_activity(); | |
1318 | + | |
1321 | 1319 | } |
1322 | 1320 | } |
1323 | 1321 | |
... | ... | @@ -3142,6 +3140,313 @@ Page({ |
3142 | 3140 | } |
3143 | 3141 | |
3144 | 3142 | }, |
3143 | + | |
3144 | + async all_check_prom_activity(){ | |
3145 | + this.data.duo_zp_num_arr={}; | |
3146 | + for (var i in this.data.requestData) { | |
3147 | + var cindex=i; | |
3148 | + var make_up_arr = new Array(); | |
3149 | + var send_gift_arr = new Array(); | |
3150 | + var th = this; | |
3151 | + var map = new Map(); | |
3152 | + var list = JSON.parse(JSON.stringify(this.data.requestData[cindex])); | |
3153 | + //循环处理活动,看活动商品的数量,用map来出来存储,key为活动id,值是数量 | |
3154 | + | |
3155 | + //-- 所有的购物车的数据,要用拷贝的赖进行计算 -- | |
3156 | + var alllist = JSON.parse(JSON.stringify(this.data.requestData)); | |
3157 | + var list2 = alllist[cindex]; | |
3158 | + var no_gift_arr = []; | |
3159 | + | |
3160 | + | |
3161 | + //主要判断有没有促销活动 | |
3162 | + var is_sele_prom = 0; | |
3163 | + var is_gift_del = 0; | |
3164 | + for (var i = 0; i < list.goods.length; i++) { | |
3165 | + var item = list.goods[i]; | |
3166 | + if (item.prom_type == 3 && item.selected && !item.is_gift) { | |
3167 | + is_sele_prom = 1; | |
3168 | + if (map.has(item.prom_id + "")) { | |
3169 | + var ob = map.get(item.prom_id + ""); | |
3170 | + ob.num += item.goods_num; | |
3171 | + ob.price += item.goods_num * item.goods_price; | |
3172 | + delete map[item.prom_id + ""]; | |
3173 | + map.set(item.prom_id + "", ob); | |
3174 | + } else { | |
3175 | + var ob = {}; | |
3176 | + ob.num = item.goods_num; | |
3177 | + ob.price = item.goods_num * item.goods_price; | |
3178 | + if (item.guide_id) { | |
3179 | + ob.guide_id = item.guide_id; | |
3180 | + } | |
3181 | + if (item.guide_type) { | |
3182 | + ob.guide_type = item.guide_type; | |
3183 | + } | |
3184 | + map.set(item.prom_id + "", ob); | |
3185 | + } | |
3186 | + } | |
3187 | + if (item.is_gift == 1) { | |
3188 | + var url = '/api/weshop/cart/del/' + oo.stoid + '/' + item.id; | |
3189 | + //getApp().request.delete(url, {}); | |
3190 | + await getApp().request.promiseDelete(url, {}) // 要用同步让赠品删除 | |
3191 | + list2.goods.splice(i, 1); | |
3192 | + list.goods.splice(i--, 1); | |
3193 | + is_gift_del = 1; | |
3194 | + } | |
3195 | + } | |
3196 | + //--如果没有选中的促销活动的,直接退出 -- | |
3197 | + if (!is_sele_prom) { | |
3198 | + //如果有赠品,要重新更新购物车的前台渲染-- | |
3199 | + if (is_gift_del) { | |
3200 | + var rq_text = "requestData[" + cindex + "]"; | |
3201 | + this.setData({ | |
3202 | + [rq_text]: list | |
3203 | + }); | |
3204 | + } | |
3205 | + | |
3206 | + var rq_text2 = "requestData[" + cindex + "].make_up_arr"; | |
3207 | + this.setData({ | |
3208 | + [rq_text2]:null, | |
3209 | + }) | |
3210 | + | |
3211 | + var gift_text = "requestData[" + cindex + "].send_gift_arr"; | |
3212 | + this.setData({ | |
3213 | + [gift_text]:null, | |
3214 | + }) | |
3215 | + continue; | |
3216 | + } | |
3217 | + //-- 循环判断活动 -- | |
3218 | + for (let p_item of map.entries()) { | |
3219 | + var prom = null; | |
3220 | + //使用缓存,减少接口的调用 | |
3221 | + if(th.data.promgoods_map[p_item[0]]){ | |
3222 | + prom=th.data.promgoods_map[p_item[0]]; | |
3223 | + }else{ | |
3224 | + await getApp().request.promiseGet("/api/weshop/promgoods/get/" + os.stoid + "/" + p_item[0], {}).then(res => { | |
3225 | + if (res.data.code == 0) { | |
3226 | + prom = res.data.data; | |
3227 | + } | |
3228 | + }) | |
3229 | + } | |
3230 | + //如果活动已经结束 | |
3231 | + if (!prom || prom.is_end || prom.end_time < ut.gettimestamp()) { | |
3232 | + for (var ii in list.goods) { | |
3233 | + var item = list.goods[ii]; | |
3234 | + list.goods.splice(ii, 1); | |
3235 | + if (item.prom_id == p_item[0] && item.prom_type == 3) { | |
3236 | + var url = '/api/weshop/cart/del/' + oo.stoid + '/' + item.id; | |
3237 | + getApp().request.delete(url, {}); | |
3238 | + } | |
3239 | + } | |
3240 | + continue; | |
3241 | + } | |
3242 | + | |
3243 | + if(!th.data.promgoods_map[p_item[0]]) th.data.promgoods_map[p_item[0]]=prom; | |
3244 | + //---读取打折的详情--- | |
3245 | + var ob = p_item[1]; | |
3246 | + var discount = null; | |
3247 | + | |
3248 | + //看一下是不是多赠品,如果是多赠品 | |
3249 | + var promgoods_list=null; | |
3250 | + if(th.data.promgoods_list[p_item[0]]){ | |
3251 | + promgoods_list=th.data.promgoods_list[p_item[0]]; | |
3252 | + }else{ | |
3253 | + //-- 获取凑单提示 -- | |
3254 | + await getApp().request.promiseGet("/api/weshop/promgoodslist/list", { | |
3255 | + data: { | |
3256 | + prom_id: prom.id | |
3257 | + } | |
3258 | + }).then(res => { | |
3259 | + if (res.data.code == 0) { | |
3260 | + promgoods_list = res.data.data; | |
3261 | + } | |
3262 | + }) | |
3263 | + if(!promgoods_list) continue; | |
3264 | + th.data.promgoods_list[p_item[0]]=promgoods_list; | |
3265 | + } | |
3266 | + | |
3267 | + for (var i in promgoods_list) { | |
3268 | + var item = promgoods_list[i]; | |
3269 | + if (item.prom_type == 0) { | |
3270 | + if (ob.price < item.condition) { | |
3271 | + var elem = { | |
3272 | + prom_id: prom.id, | |
3273 | + diff_type: item.prom_type, | |
3274 | + diff: (item.condition - ob.price).toFixed(2), | |
3275 | + content: JSON.parse(item.preferential_type) | |
3276 | + } | |
3277 | + make_up_arr.push(elem); | |
3278 | + break; | |
3279 | + } | |
3280 | + } else { | |
3281 | + if (ob.num < item.condition) { | |
3282 | + var elem = { | |
3283 | + prom_id: prom.id, | |
3284 | + diff_type: item.prom_type, | |
3285 | + diff: (item.condition - ob.num).toFixed(2), | |
3286 | + content: JSON.parse(item.preferential_type) | |
3287 | + } | |
3288 | + make_up_arr.push(elem); | |
3289 | + break; | |
3290 | + } | |
3291 | + } | |
3292 | + } | |
3293 | + | |
3294 | + | |
3295 | + | |
3296 | + //-- 只有在单赠品的时候,才要进行计算 -- | |
3297 | + await getApp().request.promiseGet("/api/weshop/goods/getDiscount", { | |
3298 | + data: { | |
3299 | + price: parseFloat(ob.price).toFixed(2), | |
3300 | + prom_id: p_item[0], | |
3301 | + goods_num: ob.num, | |
3302 | + user_id: getApp().globalData.user_id, | |
3303 | + is_bz: prom.is_bz | |
3304 | + } | |
3305 | + }).then(res => { | |
3306 | + if (res.data.code == 0) discount = res.data.data; | |
3307 | + }) | |
3308 | + | |
3309 | + if(discount) { | |
3310 | + | |
3311 | + if (!discount.zp_num || parseInt(discount.zp_num) == 0) discount.zp_num = 1; | |
3312 | + //判断一下赠品的模式 | |
3313 | + if (parseInt(discount.zp_mode)== 1 ) | |
3314 | + { | |
3315 | + | |
3316 | + var can_zp_num=0; | |
3317 | + var a_limit_num=0; | |
3318 | + for(let iy in discount.giftsinfo){ | |
3319 | + let item=discount.giftsinfo[iy]; | |
3320 | + can_zp_num+= parseInt(item.gift_storecount)>parseInt(item.limit_num)?parseInt(item.limit_num): parseInt(item.gift_storecount); | |
3321 | + } | |
3322 | + | |
3323 | + var t_zp_num=parseInt(discount.zp_num)*parseInt(discount.bs); | |
3324 | + if(th.data.duo_zp_num_arr[prom.id]){ | |
3325 | + t_zp_num+=th.data.duo_zp_num_arr[prom.id]; | |
3326 | + } | |
3327 | + | |
3328 | + if(can_zp_num>=t_zp_num ) { | |
3329 | + var json={}; | |
3330 | + json.prom_id=prom.id; | |
3331 | + json.prom_name=prom.name; | |
3332 | + send_gift_arr.push(json); | |
3333 | + th.data.duo_zp_num_arr[prom.id]=t_zp_num; | |
3334 | + } | |
3335 | + | |
3336 | + } | |
3337 | + else | |
3338 | + { | |
3339 | + //---如果有打折的信息,赠送的信息,赠送的时候要判断是不是限购数量--- | |
3340 | + if (discount && discount['goods_id'] && discount.limit_num >= discount.bs * discount.zp_num | |
3341 | + && discount.gift_storecount >= discount.bs * discount.zp_num) { | |
3342 | + //如果这礼品超了情况下 | |
3343 | + if (no_gift_arr.indexOf(discount.gift_id) != -1) continue; | |
3344 | + var o = discount.goodsinfo; | |
3345 | + //-- 默认等于1,兼容旧的活动 -- | |
3346 | + | |
3347 | + var newd = { | |
3348 | + goods_id: o.goods_id, | |
3349 | + goods_num: discount.bs * discount.zp_num, //是赠品的翻倍 | |
3350 | + pick_id: list.pid, | |
3351 | + user_id: app.globalData.user_id, | |
3352 | + store_id: os.stoid, | |
3353 | + goods_price: 0, | |
3354 | + guide_id: ob.guide_id ? ob.guide_id : 0, | |
3355 | + guide_type: ob.guide_type ? ob.guide_type : 0, | |
3356 | + member_goods_price: 0, | |
3357 | + goods_name: o.goods_name, | |
3358 | + goods_sn: o.goods_sn, | |
3359 | + sku: o.sku, | |
3360 | + is_gift: 1, | |
3361 | + prom_id: p_item[0], | |
3362 | + prom_type: 3, | |
3363 | + selected: 1, | |
3364 | + gift_id: discount.gift_id, | |
3365 | + original_img: th.data.imgUrl + o.original_img | |
3366 | + }; | |
3367 | + | |
3368 | + list2.goods.push(newd); | |
3369 | + var all_num = 0; | |
3370 | + var all_limit_num = 0; | |
3371 | + | |
3372 | + for (var i in alllist) { | |
3373 | + var list_item = alllist[i]; | |
3374 | + if(list_item.pid==list.pid) continue; | |
3375 | + for (var j in list_item.goods) { | |
3376 | + //如果赠品的ID一样,要进行统计数量 | |
3377 | + if (list_item.goods[j].is_gift == 1 && list_item.goods[j].gift_id == newd.gift_id) { | |
3378 | + all_num += list_item.goods[j].goods_num; | |
3379 | + } | |
3380 | + if (list_item.goods[j].is_gift == 1 && list_item.goods[j].gift_id == newd.gift_id && list_item.goods[j].prom_id == p_item[0]) { | |
3381 | + all_limit_num += list_item.goods[j].goods_num; | |
3382 | + } | |
3383 | + | |
3384 | + } | |
3385 | + } | |
3386 | + | |
3387 | + //-- 赠品的数量超出库存数量和会员的限制,这里是保证所有的赠品部会超出 -- | |
3388 | + if (discount.gift_storecount < all_num+newd.goods_num || discount.limit_num <all_limit_num+newd.goods_num ) { | |
3389 | + no_gift_arr.push(discount.gift_id); | |
3390 | + //--进入下一个循环 -- | |
3391 | + continue; | |
3392 | + } | |
3393 | + | |
3394 | + | |
3395 | + var url = "/api/weshop/cart/delGift?store_id=" + newd.store_id + "&user_id=" + | |
3396 | + newd.user_id + "&goods_id=" + newd.goods_id + "&is_gift=1&pick_id=" + newd.pick_id + "&prom_id=" + newd.prom_id | |
3397 | + await getApp().request.promiseDelete(url, {}) | |
3398 | + | |
3399 | + var add_data = null; | |
3400 | + await getApp().request.promisePost("/api/weshop/cart/save", { | |
3401 | + data: newd | |
3402 | + }).then(res => { | |
3403 | + if (res.data.code == 0) { | |
3404 | + add_data = res.data.data; | |
3405 | + } | |
3406 | + }) | |
3407 | + if (add_data) { | |
3408 | + newd.id = add_data.id; | |
3409 | + list.goods.push(newd); | |
3410 | + } | |
3411 | + } | |
3412 | + } | |
3413 | + } | |
3414 | + | |
3415 | + } | |
3416 | + //--更新购物车的前台渲染-- | |
3417 | + var rq_text = "requestData[" + cindex + "]"; | |
3418 | + this.setData({ | |
3419 | + [rq_text]: list | |
3420 | + }); | |
3421 | + | |
3422 | + var diff_text = "requestData[" + cindex + "].make_up_arr"; | |
3423 | + //-- 如果有凑单的话 -- | |
3424 | + if (make_up_arr.length > 0) { | |
3425 | + this.setData({ | |
3426 | + [diff_text]: make_up_arr | |
3427 | + }); | |
3428 | + } else { | |
3429 | + this.setData({ | |
3430 | + [diff_text]: null | |
3431 | + }); | |
3432 | + } | |
3433 | + | |
3434 | + var gift_text = "requestData[" + cindex + "].send_gift_arr"; | |
3435 | + //-- 如果有凑单的话 -- | |
3436 | + if (send_gift_arr.length > 0) { | |
3437 | + this.setData({ | |
3438 | + [gift_text]: send_gift_arr | |
3439 | + }); | |
3440 | + } else { | |
3441 | + this.setData({ | |
3442 | + [gift_text]: null | |
3443 | + }); | |
3444 | + } | |
3445 | + | |
3446 | + | |
3447 | + } | |
3448 | + }, | |
3449 | + | |
3145 | 3450 | //去凑单 |
3146 | 3451 | go_cou_dang: function (e) { |
3147 | 3452 | var prom_id = e.currentTarget.dataset.prom_id; | ... | ... |