Files
jjx-web/uniCloud-tcb/cloudfunctions/router/service/client/timedTask/pub/syncMerchantBalance.js
T
2026-10-08 18:18:21 +08:00

64 lines
2.1 KiB
JavaScript

'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;
}
};