From 9c28d50890a786dffb28d0fa8589e9994aa74302 Mon Sep 17 00:00:00 2001 From: koreacomp5 Date: Sun, 2 Nov 2025 04:59:09 +0900 Subject: [PATCH] main --- prisma/seed.js | 14 ++++++++++++++ src/app/boards/[id]/page.tsx | 22 +++++++++------------- src/app/components/HeroBanner.tsx | 6 +++--- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/prisma/seed.js b/prisma/seed.js index a2dd809..e8f0516 100644 --- a/prisma/seed.js +++ b/prisma/seed.js @@ -370,6 +370,19 @@ async function seedPartnerShops() { }); } +async function seedBanners() { + // 기존 배너 정리 후 5개만 채움 + await prisma.banner.deleteMany({}); + const items = Array.from({ length: 5 }).map((_, i) => ({ + title: `메인 배너 ${i + 1}`, + imageUrl: "/sample.jpg", + linkUrl: "/", + sortOrder: i + 1, + active: true, + })); + await prisma.banner.createMany({ data: items }); +} + async function main() { await upsertRoles(); const admin = await upsertAdmin(); @@ -380,6 +393,7 @@ async function main() { const boards = await upsertBoards(admin, categoryMap); await createPostsForAllBoards(boards, 100, admin); await seedPartnerShops(); + await seedBanners(); await seedPolicies(); diff --git a/src/app/boards/[id]/page.tsx b/src/app/boards/[id]/page.tsx index 235dd8d..0605df8 100644 --- a/src/app/boards/[id]/page.tsx +++ b/src/app/boards/[id]/page.tsx @@ -10,7 +10,6 @@ export default async function BoardDetail({ params, searchParams }: { params: an const sp = searchParams?.then ? await searchParams : searchParams; const idOrSlug = p.id as string; const sort = (sp?.sort as "recent" | "popular" | undefined) ?? "recent"; - const period = (sp?.period as string | undefined) ?? "monthly"; // 보드 slug 조회 (새 글 페이지 프리셋 전달) const h = await headers(); const host = h.get("host") ?? "localhost:3000"; @@ -32,10 +31,13 @@ export default async function BoardDetail({ params, searchParams }: { params: an let rankingItems: { userId: string; nickname: string; points: number }[] = []; if (isSpecialRanking) { - const rankingUrl = new URL(`/api/ranking?period=${encodeURIComponent(period)}`, base).toString(); - const rankingRes = await fetch(rankingUrl, { cache: "no-store" }); - const rankingData = await rankingRes.json().catch(() => ({ items: [] })); - rankingItems = rankingData?.items ?? []; + const topUsers = await prisma.user.findMany({ + select: { userId: true, nickname: true, points: true }, + where: { status: "active" }, + orderBy: { points: "desc" }, + take: 100, + }); + rankingItems = topUsers.map((u) => ({ userId: u.userId, nickname: u.nickname, points: u.points })); } return (
@@ -49,18 +51,12 @@ export default async function BoardDetail({ params, searchParams }: { params: an {/* 검색/필터 툴바 + 리스트 */}
- + {!isSpecialRanking && }
{isSpecialRanking ? (
-

포인트 랭킹 ({period})

- +

포인트 랭킹

    {rankingItems.map((i, idx) => ( diff --git a/src/app/components/HeroBanner.tsx b/src/app/components/HeroBanner.tsx index ed39332..acfc9a8 100644 --- a/src/app/components/HeroBanner.tsx +++ b/src/app/components/HeroBanner.tsx @@ -132,7 +132,7 @@ export function HeroBanner({ subItems, activeSubId }: { subItems?: SubItem[]; ac {/* Pagination - Figma 스타일: 활성은 주황 바, 비활성은 회색 점 (배너 위에 오버랩) */} {numSlides > 1 && ( -
    +
    {banners.map((_, i) => (