import { GUIDE_BANK_CARDS_KEY, GUIDE_ONBOARDING_KEY, GUIDE_SELECTED_BANK_KEY, GUIDE_SELECTED_BRANCH_KEY, bankBranches, initialBankCards, initialOnboarding } from '../constants/mock' function formatNow() { const now = new Date() const pad = (value) => String(value).padStart(2, '0') return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())} ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}` } function maskCard(cardNumber) { const digits = String(cardNumber || '').replace(/\D/g, '') return `****${digits.slice(-4)}` } function readOnboarding() { const stored = uni.getStorageSync(GUIDE_ONBOARDING_KEY) if (stored && stored.status) { return stored } uni.setStorageSync(GUIDE_ONBOARDING_KEY, { ...initialOnboarding }) return { ...initialOnboarding } } function writeOnboarding(data) { uni.setStorageSync(GUIDE_ONBOARDING_KEY, data) } function readBankCards() { const stored = uni.getStorageSync(GUIDE_BANK_CARDS_KEY) if (Array.isArray(stored) && stored.length) { return stored } uni.setStorageSync(GUIDE_BANK_CARDS_KEY, initialBankCards) return initialBankCards.slice() } function writeBankCards(cards) { uni.setStorageSync(GUIDE_BANK_CARDS_KEY, cards) } export function getOnboardingStatus() { return Promise.resolve(readOnboarding()) } export function submitOnboarding(payload) { const next = { status: 'pending', reason: '', submittedAt: formatNow(), payload: payload || {} } writeOnboarding(next) return Promise.resolve(next) } export function refreshOnboardingStatus() { const current = readOnboarding() if (current.status === 'pending') { const next = { ...current, status: 'approved', reason: '', reviewedAt: formatNow() } writeOnboarding(next) return Promise.resolve(next) } return Promise.resolve(current) } export function getBankCards() { return Promise.resolve(readBankCards()) } export function addBankCard(payload) { const cards = readBankCards() const created = { id: `card_${Date.now()}`, bankName: payload.bankName, branchName: payload.branchName, cardMasked: maskCard(payload.cardNumber), status: 'pending', reason: '' } writeBankCards([created, ...cards]) return Promise.resolve(created) } export function searchBankBranches(keyword = '') { const query = String(keyword || '').trim() const items = bankBranches.filter((item) => { if (!query) { return true } return item.bankName.indexOf(query) >= 0 || item.branchName.indexOf(query) >= 0 }) return Promise.resolve(items) } export function saveSelectedBankId(id) { uni.setStorageSync(GUIDE_SELECTED_BANK_KEY, id) } export function consumeSelectedBankId() { const value = uni.getStorageSync(GUIDE_SELECTED_BANK_KEY) if (value) { uni.removeStorageSync(GUIDE_SELECTED_BANK_KEY) } return value || '' } export function saveSelectedBranch(branch) { uni.setStorageSync(GUIDE_SELECTED_BRANCH_KEY, JSON.stringify(branch)) } export function consumeSelectedBranch() { const stored = uni.getStorageSync(GUIDE_SELECTED_BRANCH_KEY) if (!stored) { return null } uni.removeStorageSync(GUIDE_SELECTED_BRANCH_KEY) if (typeof stored === 'object') { return stored } try { return JSON.parse(stored) } catch (error) { return { branchName: stored, bankName: stored, branchCode: '' } } }