import { orders, findOrderById } from '@/data/mock' import { findProductById } from '@/packageMall/data/products' export const LATEST_PICKUP_ORDER_KEY = 'lf_latest_pickup_order' const pad = value => String(value || '').padStart(2, '0') const buildVerifyCode = (orderId, productId) => { const tail = String((Number(orderId || 0) * 7 + Number(productId || 0) * 13) % 100).padStart(2, '0') return `LQ-${String(orderId).slice(-4)}-${pad(productId)}${tail}` } const mergeLatestPickupOrder = (order, latestOrder) => { if (!order) { return null } const useLatest = latestOrder && String(latestOrder.orderId) === String(order.id) const product = useLatest && latestOrder.productId ? findProductById(latestOrder.productId) : null const quantity = order.quantity || 1 const displayPrice = product ? product.price : order.price const displayAmount = displayPrice * quantity const productId = product && product.id ? product.id : order.id return { ...order, status: useLatest && latestOrder.status ? latestOrder.status : order.status, statusKey: useLatest && latestOrder.statusKey ? latestOrder.statusKey : order.statusKey, statusNote: useLatest && latestOrder.statusNote ? latestOrder.statusNote : order.statusNote, verifyExpire: '', title: product ? product.name : order.title, sku: product && product.specs && product.specs.length ? product.specs[0] : order.sku, price: displayPrice, amount: displayAmount, pickupStoreId: '', pickupStore: '任意门店可核销', pickupAddress: '支持任意门店到店核销自提', pickupHours: '任意时间可用', pickupPhone: '', verifyCode: useLatest ? buildVerifyCode(order.id, productId) : (order.verifyCode || buildVerifyCode(order.id, productId)), createdAt: useLatest && latestOrder.createdAt ? latestOrder.createdAt : order.createdAt } } export const getLatestPickupOrder = () => uni.getStorageSync(LATEST_PICKUP_ORDER_KEY) || null export const saveLatestPickupOrder = payload => { uni.setStorageSync(LATEST_PICKUP_ORDER_KEY, payload) } export const getDisplayOrderById = id => mergeLatestPickupOrder(findOrderById(id), getLatestPickupOrder()) export const getDisplayOrders = () => { const latestOrder = getLatestPickupOrder() return orders.map(item => mergeLatestPickupOrder(item, latestOrder)) }