export function isTui(item){ return item.status=='return'||item.status=='refund'||item.status=='refunding' } //计算商品券优惠价格 export function returnProductCouponPrice(coup, goodsArr, vipUser) { const item = goodsArr.find(v => v.productId == coup.proId); if(!item){ return 0 } const memberPrice = item.memberPrice ? item.memberPrice : item.price; const price = item ? (vipUser.isVip ? memberPrice : item.price) : 0; return price*coup.num } //返回新的商品列表,过滤掉退菜的,退单的商品 export function returnNewGoodsList(arr) { let goodsMap={} return arr.filter(v => !isTui(v)) } //根据当前购物车商品以及数量,已选券对应商品数量,判断该商品券是否可用 export function returnCoupCanUse(goodsArr=[],coup,selCoupArr=[]) { // if(!coup.use){ // return false // } const findGoods=goodsArr.filter(v=>v.productId==coup.proId) if(!findGoods.length){ return false } const findGoodsTotalNumber=findGoods.reduce((prve,cur)=>{ return prve+cur.num*1 },0) const selCoupNumber=selCoupArr.filter(v=>v.proId==coup.proId).reduce((prve,cur)=>{ return prve+cur.num*1 },0) if(selCoupNumber>=findGoodsTotalNumber){ return false } return findGoodsTotalNumber<(coup.num+selCoupNumber)?false:true } //查找购物车商品根据购物车商品数据返回商品券信息(抵扣价格以及是否满足可用需求) export function returnProductCoupon(coup, goodsArr, vipUser,selCoupArr=[]) { const newGoodsArr = returnNewGoodsList(goodsArr) const item = newGoodsArr.find(v => v.productId == coup.proId); if(!item){ return {...coup, discountAmount: 0,use:false} } const memberPrice = item.memberPrice ? item.memberPrice : item.price; const price = item ? (vipUser.isVip ? memberPrice : item.price) : 0; const discountAmount=(price*coup.num).toFixed(2) console.log(discountAmount); const canUse=!coup.use?false:(discountAmount>0&&returnCoupCanUse(goodsArr,coup,selCoupArr)) // const canUse=discountAmount>0 return { ...coup, discountAmount: discountAmount,use:canUse} } /** * 根据购物车商品计算商品券抵扣价格以及是否满足可用需求 * 1.商品券对应商品数量大于购物车对应商品数量不可用 * 2.未在购物车找到相关商品不可用 * @param {*} coupArr * @param {*} goodsArr * @param {*} vipUser * @returns */ export function returnProductAllCoup(coupArr, goodsArr, vipUser){ return coupArr.map((v) => { return returnProductCoupon(v, goodsArr, vipUser) }) } //计算商品券总优惠价格 export function returnProductCouponAllPrice(coupArr, goodsArr, vipUser) { if(coupArr.length == 0){ return 0; } return coupArr.reduce((a, b) => { const price = returnProductCouponPrice(b, goodsArr, vipUser) return a + price; }, 0).toFixed(2); } //计算满减券总优惠价格 export function returnFullReductionCouponAllPrice(coupArr) { if(coupArr.length == 0){ return 0; } return coupArr.filter(v => v.type == 1).reduce((a, b) => { const price = b.discountAmount return a + price; }, 0).toFixed(2); } //计算优惠券总价格 export function returnCouponAllPrice(coupArr, goodsArr, vipUser) { const poductAllprice=returnProductCouponAllPrice(coupArr, goodsArr, vipUser) const pointAllPrice=returnFullReductionCouponAllPrice(coupArr) return (poductAllprice*1+pointAllPrice*1).toFixed(2); }