Добавлены модели для внешней рекламы и кэша склада WB в схему Prisma. Обновлены компоненты AdvertisingTab и WBWarehouseDashboard для работы с новыми данными. Реализованы GraphQL запросы и мутации для управления внешней рекламой и кэшем склада. Оптимизирована логика отображения статистики и добавлены новые функции для работы с рекламой.
This commit is contained in:
34
src/app/track/[linkId]/route.ts
Normal file
34
src/app/track/[linkId]/route.ts
Normal file
@ -0,0 +1,34 @@
|
||||
import { NextRequest, NextResponse } from 'next/server'
|
||||
import { clickStorage } from '@/lib/click-storage'
|
||||
|
||||
export async function GET(
|
||||
request: NextRequest,
|
||||
{ params }: { params: { linkId: string } }
|
||||
) {
|
||||
const { linkId } = params
|
||||
|
||||
try {
|
||||
// Получаем целевую ссылку из параметров
|
||||
const redirectUrl = request.nextUrl.searchParams.get('redirect')
|
||||
|
||||
if (!redirectUrl) {
|
||||
console.error(`No redirect URL for link: ${linkId}`)
|
||||
return NextResponse.redirect(new URL('/', request.url))
|
||||
}
|
||||
|
||||
// Декодируем URL
|
||||
const decodedUrl = decodeURIComponent(redirectUrl)
|
||||
|
||||
// Записываем клик через общий storage
|
||||
const totalClicks = clickStorage.recordClick(linkId)
|
||||
|
||||
console.log(`Redirect: ${linkId} -> ${decodedUrl} (click #${totalClicks})`)
|
||||
|
||||
// Мгновенный серверный редирект на целевую ссылку
|
||||
return NextResponse.redirect(decodedUrl)
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error processing tracking link:', error)
|
||||
return NextResponse.redirect(new URL('/', request.url))
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user