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 || {}) }) }