'use strict'; const dayjs = require('dayjs'); const balanceUtil = require('../../../admin/finance/balance/sys/util.js'); module.exports = { /** * 定时同步企业余额 * @url client/timedTask/pub/syncMerchantBalance 前端调用的url参数地址 */ main: async (event) => { let { data = {}, util } = event; let { vk } = util; let res = { code: 0, msg: '', data: [] }; if (data.key !== 'lsgjoksdjf') return { code: 1, msg: '非法请求' }; const updateTime = dayjs().format('YYYY-MM-DD HH:mm:ss'); for (const merchant of balanceUtil.MERCHANT_OPTIONS) { try { const requestRes = await balanceUtil.requestMerchantBalance({ vk, accNo: merchant.accNo }); const merchantBalance = balanceUtil.getRemoteMerchantBalance(requestRes); if (merchantBalance === null) { throw new Error('未获取到余额字段'); } const syncRes = await balanceUtil.syncMerchantBalance({ vk, accNo: merchant.accNo, merchantBalance, updateTime }); res.data.push({ accNo: merchant.accNo, merchantName: merchant.label, balance: syncRes.merchantBalance, updateTime, success: true }); } catch (err) { console.error(`syncMerchantBalance error: ${merchant.accNo}`, err); res.data.push({ accNo: merchant.accNo, merchantName: merchant.label, success: false, msg: err.message || '同步失败' }); } } const failList = res.data.filter(item => !item.success); if (failList.length) { res.code = -1; res.msg = `部分企业余额同步失败:${failList.map(item => item.accNo).join(',')}`; } return res; } };