/** * 绑定数据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 }) } }