Files
soul-yongping/app/api/db/distribution/route.ts

74 lines
2.1 KiB
TypeScript

/**
* 绑定数据API - 从真实数据库查询
*/
import { NextRequest, NextResponse } from 'next/server'
import { query } from '@/lib/db'
export async function GET(request: NextRequest) {
try {
const { searchParams } = new URL(request.url)
const userId = searchParams.get('userId')
let sql = `
SELECT
rb.id,
rb.referrer_id,
rb.referee_id,
rb.referral_code as referrer_code,
rb.status,
rb.binding_date as bound_at,
rb.expiry_date as expires_at,
rb.conversion_date,
rb.commission_amount,
u1.nickname as referrer_name,
u2.nickname as referee_nickname,
u2.phone as referee_phone,
DATEDIFF(rb.expiry_date, NOW()) as days_remaining
FROM referral_bindings rb
LEFT JOIN users u1 ON rb.referrer_id = u1.id
LEFT JOIN users u2 ON rb.referee_id = u2.id
`
let params: any[] = []
if (userId) {
sql += ' WHERE rb.referrer_id = ?'
params.push(userId)
}
sql += ' ORDER BY rb.binding_date DESC LIMIT 500'
const bindings = await query(sql, params) as any[]
return NextResponse.json({
success: true,
bindings: bindings.map((b: any) => ({
id: b.id,
referrer_id: b.referrer_id,
referrer_name: b.referrer_name || '未知',
referrer_code: b.referrer_code,
referee_id: b.referee_id,
referee_phone: b.referee_phone,
referee_nickname: b.referee_nickname || '用户' + (b.referee_id || '').slice(-4),
bound_at: b.bound_at,
expires_at: b.expires_at,
status: b.status,
days_remaining: Math.max(0, parseInt(b.days_remaining) || 0),
commission: parseFloat(b.commission_amount) || 0,
order_amount: 0, // 需要的话可以关联 orders 表计算
source: 'miniprogram'
})),
total: bindings.length
})
} catch (error) {
console.error('[Distribution API] 查询失败:', error)
// 表可能不存在,返回空数组
return NextResponse.json({
success: true,
bindings: [],
total: 0
})
}
}