orderFlow.js
2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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))
}