import { mockIp, mockReqId } from '../../utils/mock'; export const transformGoodsDataToConfirmData = (goodsDataList) => { const list = []; goodsDataList.forEach((goodsData) => { list.push({ storeId: goodsData.storeId, spuId: goodsData.spuId, skuId: goodsData.skuId, goodsName: goodsData.title, image: goodsData.primaryImage, reminderStock: 119, quantity: goodsData.quantity, payPrice: goodsData.price, totalSkuPrice: goodsData.price, discountSettlePrice: goodsData.price, realSettlePrice: goodsData.price, settlePrice: goodsData.price, oriPrice: goodsData.originPrice, tagPrice: null, tagText: null, skuSpecLst: goodsData.specInfo, promotionIds: null, weight: 0.0, unit: 'KG', volume: null, masterGoodsType: 0, viceGoodsType: 0, roomId: goodsData.roomId, egoodsName: null, }); }); return list; }; /** 生成结算数据 */ export function genSettleDetail(params) { const { userAddressReq, couponList, goodsRequestList } = params; const resp = { data: { settleType: 0, userAddress: null, totalGoodsCount: 3, packageCount: 1, totalAmount: '289997', totalPayAmount: '', totalDiscountAmount: '110000', totalPromotionAmount: '1100', totalCouponAmount: '0', totalSalePrice: '289997', totalGoodsAmount: '289997', totalDeliveryFee: '0', invoiceRequest: null, skuImages: null, deliveryFeeList: null, storeGoodsList: [ { storeId: '1000', storeName: '云Mall深圳旗舰店', remark: null, goodsCount: 1, deliveryFee: '0', deliveryWords: null, storeTotalAmount: '0', storeTotalPayAmount: '179997', storeTotalDiscountAmount: '110000', storeTotalCouponAmount: '0', skuDetailVos: [], couponList: [ { couponId: 11, storeId: '1000', }, ], }, ], inValidGoodsList: null, outOfStockGoodsList: null, limitGoodsList: null, abnormalDeliveryGoodsList: null, invoiceSupport: 1, }, code: 'Success', msg: null, requestId: mockReqId(), clientIp: mockIp(), rt: 244, success: true, }; const list = transformGoodsDataToConfirmData(goodsRequestList); // 获取购物车传递的商品数据 resp.data.storeGoodsList[0].skuDetailVos = list; // 判断是否携带优惠券数据 const discountPrice = []; if (couponList && couponList.length > 0) { couponList.forEach((coupon) => { if (coupon.status === 'default') { discountPrice.push({ type: coupon.type, value: coupon.value, }); } }); } // 模拟计算场景 // 计算总价 const totalPrice = list.reduce((pre, cur) => { return pre + cur.quantity * Number(cur.settlePrice); }, 0); // 计算折扣 const totalDiscountPrice = discountPrice.length > 0 ? discountPrice.reduce((pre, cur) => { if (cur.type === 1) { return pre + cur.value; } if (cur.type === 2) { return pre + (Number(totalPrice) * cur.value) / 10; } return pre + cur; }, 0) : 0; resp.data.totalSalePrice = totalPrice; resp.data.totalCouponAmount = totalDiscountPrice; resp.data.totalPayAmount = totalPrice - totalDiscountPrice - Number(resp.data.totalPromotionAmount); if (userAddressReq) { resp.data.settleType = 1; resp.data.userAddress = userAddressReq; } return resp; }