64 lines
2.1 KiB
JavaScript
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;
|
|
}
|
|
};
|