Blame view

member-miniapp/packageMall/data/orderFlow.js 2.29 KB
d8035736   “wangming”   Refactor project ...
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))
  }