57 lines
1.7 KiB
JavaScript
57 lines
1.7 KiB
JavaScript
'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
|
|
});
|
|
}
|
|
}
|
|
};
|