91 lines
2.7 KiB
JavaScript
91 lines
2.7 KiB
JavaScript
import { sysdictPage } from '@/api/index.js'
|
|
|
|
export const MOBILE_DEPOSIT_OTHER_PAYMENT_CONFIG_TYPE = 'MobileDepositOtherPaymentConfig'
|
|
export const MOBILE_PROVIDER_TYPE = 'WechatMiniProgram'
|
|
export const DEPOSIT_OTHER_PAYMENT_CONFIG_KEY = 'depositOtherPayment'
|
|
|
|
function normalizeText(value) {
|
|
return String(value || '').trim()
|
|
}
|
|
|
|
function parseJsonStringMaybe(value) {
|
|
const text = normalizeText(value)
|
|
if (!text) {
|
|
return {}
|
|
}
|
|
try {
|
|
const parsed = JSON.parse(text)
|
|
return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {}
|
|
} catch (error) {
|
|
return {}
|
|
}
|
|
}
|
|
|
|
function normalizeRows(response) {
|
|
const payload = response && response.data !== undefined ? response.data : response
|
|
if (Array.isArray(payload)) {
|
|
return payload
|
|
}
|
|
if (payload && Array.isArray(payload.data)) {
|
|
return payload.data
|
|
}
|
|
if (payload && payload.data && Array.isArray(payload.data.data)) {
|
|
return payload.data.data
|
|
}
|
|
return []
|
|
}
|
|
|
|
function getProviderType(row = {}) {
|
|
return normalizeText(row.providerType || row.ProviderType)
|
|
}
|
|
|
|
export function createDefaultDepositOtherPaymentConfig() {
|
|
return {
|
|
code: '',
|
|
key: DEPOSIT_OTHER_PAYMENT_CONFIG_KEY,
|
|
phone: '',
|
|
qrCode: '',
|
|
contentZh: '',
|
|
contentEn: ''
|
|
}
|
|
}
|
|
|
|
export function normalizeDepositOtherPaymentConfig(row = {}) {
|
|
const defaults = createDefaultDepositOtherPaymentConfig()
|
|
const extra = parseJsonStringMaybe(row.extraInfo || row.extraConfig || row.ExtraConfig)
|
|
|
|
return {
|
|
code: normalizeText(row.code),
|
|
key: normalizeText(row.key) || defaults.key,
|
|
phone: normalizeText(extra.phone || row.description),
|
|
qrCode: normalizeText(extra.qrCode || extra.qrCodeImage || extra.qrImage),
|
|
contentZh: normalizeText(extra.contentZh || extra.content || defaults.contentZh),
|
|
contentEn: normalizeText(extra.contentEn || defaults.contentEn)
|
|
}
|
|
}
|
|
|
|
function findMatchedRow(rows = []) {
|
|
const providerRows = rows.filter(item => getProviderType(item) === MOBILE_PROVIDER_TYPE)
|
|
const legacyRows = rows.filter(item => !getProviderType(item))
|
|
return (
|
|
providerRows.find(item => normalizeText(item && item.key) === DEPOSIT_OTHER_PAYMENT_CONFIG_KEY)
|
|
|| providerRows[0]
|
|
|| legacyRows.find(item => normalizeText(item && item.key) === DEPOSIT_OTHER_PAYMENT_CONFIG_KEY)
|
|
|| legacyRows[0]
|
|
|| null
|
|
)
|
|
}
|
|
|
|
export function loadDepositOtherPaymentConfig(language) {
|
|
return sysdictPage({
|
|
Type: MOBILE_DEPOSIT_OTHER_PAYMENT_CONFIG_TYPE,
|
|
ProviderType: MOBILE_PROVIDER_TYPE,
|
|
PageIndex: 1,
|
|
PageSize: 100
|
|
}, language).then((response) => {
|
|
const rows = normalizeRows(response)
|
|
const matchedRow = findMatchedRow(rows)
|
|
return normalizeDepositOtherPaymentConfig(matchedRow || {})
|
|
})
|
|
}
|