b341d6ad97
可提现额度扣除处理中提现,避免重复提现超总额;收到报价选择供应商时展示重点提示而非服务费提示。 Co-authored-by: Cursor <cursoragent@cursor.com>
134 lines
4.1 KiB
JavaScript
134 lines
4.1 KiB
JavaScript
'use strict';
|
|
const balanceUtil = require('./util.js');
|
|
|
|
module.exports = {
|
|
/**
|
|
* 查询状态
|
|
* @url admin/finance/balance/sys/getActionLog 前端调用的url参数地址
|
|
* @param {String} accNo 账号
|
|
* @param {String} reqDate 请求日期,格式:yyyyMMdd
|
|
* @param {String} reqJournalNo 请求流水号
|
|
* @param {String} logId 可选,流水ID,传入后会回写状态
|
|
*/
|
|
main: async (event) => {
|
|
let { data = {}, util } = event;
|
|
let { vk } = util;
|
|
let { accNo, reqDate, reqJournalNo, logId } = data;
|
|
|
|
accNo = String(accNo || '').trim();
|
|
reqDate = String(reqDate || '').trim();
|
|
reqJournalNo = String(reqJournalNo || '').trim();
|
|
logId = String(logId || '').trim();
|
|
|
|
if (!accNo) {
|
|
return {
|
|
code: -1,
|
|
msg: 'accNo不能为空'
|
|
};
|
|
}
|
|
|
|
if (!reqDate) {
|
|
return {
|
|
code: -1,
|
|
msg: 'reqDate不能为空'
|
|
};
|
|
}
|
|
|
|
if (!/^\d{8}$/.test(reqDate)) {
|
|
return {
|
|
code: -1,
|
|
msg: 'reqDate格式不正确'
|
|
};
|
|
}
|
|
|
|
if (!reqJournalNo) {
|
|
return {
|
|
code: -1,
|
|
msg: 'reqJournalNo不能为空'
|
|
};
|
|
}
|
|
|
|
let res = await balanceUtil.requestActionLog({
|
|
vk,
|
|
accNo,
|
|
reqDate,
|
|
reqJournalNo
|
|
});
|
|
|
|
if (res && typeof res === 'object' && typeof res.code === 'undefined') {
|
|
res.code = 0;
|
|
}
|
|
|
|
const status = balanceUtil.getActionStatus(res);
|
|
const statusText = balanceUtil.getActionStatusTextByStatus(status);
|
|
|
|
if (status !== null) {
|
|
let logInfo = null;
|
|
if (logId) {
|
|
logInfo = await vk.baseDao.findByWhereJson({
|
|
dbName: 'jjx-balance-log',
|
|
whereJson: {
|
|
_id: logId
|
|
}
|
|
});
|
|
}
|
|
if (!logInfo) {
|
|
logInfo = await vk.baseDao.findByWhereJson({
|
|
dbName: 'jjx-balance-log',
|
|
whereJson: {
|
|
srcReqId: reqJournalNo,
|
|
merchantId: accNo
|
|
}
|
|
});
|
|
}
|
|
|
|
if (logInfo && logInfo._id) {
|
|
logId = logInfo._id;
|
|
const prevStatus = Number(logInfo.status);
|
|
const nextStatus = Number(status);
|
|
const updateData = {
|
|
status: nextStatus
|
|
};
|
|
|
|
// 新提现单(balanceDeducted === false):成功时再扣减余额缓存
|
|
// 旧提现单无该字段:创建时已扣减,这里只更新状态
|
|
const needDeductOnSuccess = logInfo.balanceDeducted === false
|
|
&& prevStatus === 1
|
|
&& nextStatus === 2;
|
|
|
|
if (needDeductOnSuccess) {
|
|
const amount = balanceUtil.normalizeAmount(logInfo.amount);
|
|
await balanceUtil.applyMerchantBalanceDelta({
|
|
vk,
|
|
merchantId: accNo,
|
|
delta: -amount,
|
|
lastLogId: logId
|
|
});
|
|
updateData.balanceDeducted = true;
|
|
}
|
|
|
|
await vk.baseDao.updateById({
|
|
dbName: 'jjx-balance-log',
|
|
id: logId,
|
|
dataJson: updateData
|
|
});
|
|
}
|
|
}
|
|
|
|
const responseObjects = balanceUtil.getRemoteResponseObjects(res);
|
|
if (responseObjects.data && typeof responseObjects.data === 'object' && !Array.isArray(responseObjects.data)) {
|
|
responseObjects.data.status = status;
|
|
responseObjects.data.statusText = statusText;
|
|
responseObjects.data.logId = logId;
|
|
} else if (res && typeof res === 'object') {
|
|
res.data = {
|
|
status,
|
|
statusText,
|
|
logId
|
|
};
|
|
}
|
|
|
|
return res;
|
|
}
|
|
};
|