优化待解冻, 平台杂项配置优化
This commit is contained in:
@@ -27,18 +27,29 @@ export async function sumPendingUnfreezeByOrderIds(
|
||||
export async function listDueDepositUnfreezes({
|
||||
limit = 100,
|
||||
workerId = 0,
|
||||
}: { limit?: number; workerId?: number } = {}): Promise<WorkerDepositUnfreezeRow[]> {
|
||||
retroactiveDays = -1,
|
||||
}: {
|
||||
limit?: number
|
||||
workerId?: number
|
||||
/** >=0 时按当前配置回溯:created_at + retroactiveDays 天也视为到期,配置调小后存量提前释放。 */
|
||||
retroactiveDays?: number
|
||||
}): Promise<WorkerDepositUnfreezeRow[]> {
|
||||
const params: unknown[] = []
|
||||
let workerClause = ''
|
||||
if (workerId > 0) {
|
||||
params.push(workerId)
|
||||
workerClause = `AND worker_id = $${params.length}`
|
||||
}
|
||||
let dueClause = 'unfreeze_at <= NOW()'
|
||||
if (Number.isFinite(retroactiveDays) && retroactiveDays >= 0) {
|
||||
params.push(Math.floor(retroactiveDays))
|
||||
dueClause = `(unfreeze_at <= NOW() OR created_at + ($${params.length} * INTERVAL '1 day') <= NOW())`
|
||||
}
|
||||
params.push(limit)
|
||||
const result = await query<WorkerDepositUnfreezeRow>(
|
||||
`
|
||||
SELECT * FROM worker_deposit_unfreezes
|
||||
WHERE status = 'pending' AND unfreeze_at <= NOW() ${workerClause}
|
||||
WHERE status = 'pending' AND ${dueClause} ${workerClause}
|
||||
ORDER BY unfreeze_at ASC
|
||||
LIMIT $${params.length}
|
||||
`,
|
||||
|
||||
@@ -217,9 +217,13 @@ export async function createWorkerWithdrawRequest(
|
||||
export async function settleDueDepositUnfreezes(
|
||||
options: { limit?: number; workerId?: number } = {},
|
||||
) {
|
||||
// 到期判定按当前解冻天数回溯:管理员调小财务配置后,存量待解冻按新天数提前视为到期,
|
||||
// 否则入队时的旧天数会让"扫描 0 笔"一直持续到原到期时间。
|
||||
const retroactiveDays = getWorkerFinanceConfig().depositUnfreezeDays
|
||||
const due = await listDueDepositUnfreezes({
|
||||
limit: Math.max(1, Number(options.limit || 100)),
|
||||
workerId: Number(options.workerId || 0),
|
||||
retroactiveDays,
|
||||
})
|
||||
let processedCount = 0
|
||||
for (const unfreeze of due) {
|
||||
|
||||
Reference in New Issue
Block a user