优化提现流程,新增用户确认模式以支持待用户确认的转账,更新相关API和数据库结构以确保数据一致性。同时,调整小程序界面以展示待确认收款信息,提升用户体验。

This commit is contained in:
乘风
2026-02-06 19:45:24 +08:00
parent 2e65d68e1e
commit 8e67eb5d62
19 changed files with 649 additions and 95 deletions

View File

@@ -0,0 +1,53 @@
/**
* 待确认收款列表 - 供小程序调起 wx.requestMerchantTransfer 使用
* GET ?userId=xxx 返回当前用户 status=pending_confirm 且含 package_info 的提现记录,及 mch_id、app_id
*/
import { NextRequest, NextResponse } from 'next/server'
import { prisma } from '@/lib/prisma'
import { getTransferMchAndAppId } from '@/lib/wechat-transfer'
export async function GET(request: NextRequest) {
try {
const userId = request.nextUrl.searchParams.get('userId')
if (!userId) {
return NextResponse.json({ success: false, message: '缺少 userId' }, { status: 400 })
}
// 原始查询(数据库 ENUM 已包含 pending_confirm
const list = await prisma.$queryRaw<
{ id: string; amount: unknown; package_info: string | null; created_at: Date }[]
>`
SELECT id, amount, package_info, created_at
FROM withdrawals
WHERE user_id = ${userId}
AND status = 'pending_confirm'
AND package_info IS NOT NULL
ORDER BY created_at DESC
`
const { mchId, appId } = getTransferMchAndAppId()
const items = list.map((w) => ({
id: w.id,
amount: Number(w.amount),
package: w.package_info ?? '',
created_at: w.created_at,
}))
return NextResponse.json({
success: true,
data: {
list: items,
mch_id: mchId,
app_id: appId,
},
})
} catch (e) {
console.error('[Withdraw pending-confirm]', e)
return NextResponse.json(
{ success: false, message: '获取待确认列表失败' },
{ status: 500 }
)
}
}