Files
jjx-web/uniCloud-tcb/cloudfunctions/router/service/admin/finance/balance/sys/getActionLog.js
T
b2894lxlx b341d6ad97 fix: 提现排除处理中金额,选择报价改为重点提示
可提现额度扣除处理中提现,避免重复提现超总额;收到报价选择供应商时展示重点提示而非服务费提示。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-11 00:48:08 +08:00

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