Commit 37eb2da33f0b16875dc1c020ee3405f219790e00

Authored by 后端研发-苏明海
2 parents 09f1474a 785d8889

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;
... ...