'use strict'; const balanceUtil = require('./util.js'); module.exports = { /** * 新增资金流水 * @url admin/finance/balance/sys/add 前端调用的url参数地址 */ main: async (event) => { let { data = {}, userInfo, util } = event; let { vk } = util; const transaction = await vk.baseDao.startTransaction(); try { const description = String(data.description || '').trim(); if (!description) { throw new Error('说明不能为空'); } const logData = { description, amount: balanceUtil.normalizeAmount(data.amount), type: balanceUtil.normalizeType(data.type), logTime: balanceUtil.normalizeTime(data.logTime), operatorId: userInfo && userInfo.uid ? userInfo.uid : '', source: data.source || 'manual' }; const changeAmount = balanceUtil.buildBalanceChange(logData); await balanceUtil.checkBalanceAvailable({ transaction, vk, changeAmount }); const addRes = await vk.baseDao.add({ db: transaction, dbName: 'jjx-balance-log', dataJson: logData }); await balanceUtil.updateBalanceWithDelta({ transaction, vk, delta: changeAmount, lastLogId: addRes.id }); await transaction.commit(); return { code: 0, msg: '' }; } catch (err) { return await balanceUtil.rollbackTransaction({ transaction, err }); } } };