diff --git a/client/src/pages/MediaOutletAuction.tsx b/client/src/pages/MediaOutletAuction.tsx index f1e0c72..f9249b4 100644 --- a/client/src/pages/MediaOutletAuction.tsx +++ b/client/src/pages/MediaOutletAuction.tsx @@ -32,10 +32,7 @@ export default function MediaOutletAuction() { const placeBidMutation = useMutation({ mutationFn: async (bidData: { amount: number; qualityScore?: number }) => { - return apiRequest(`/api/media-outlets/${params?.slug}/auction/bids`, { - method: "POST", - body: JSON.stringify(bidData), - }); + return apiRequest("POST", `/api/media-outlets/${params?.slug}/auction/bids`, bidData); }, onSuccess: () => { toast({ @@ -75,7 +72,7 @@ export default function MediaOutletAuction() { return; } - if (auction && amount <= auction.currentBid) { + if (auction && auction.currentBid && amount <= parseFloat(auction.currentBid)) { toast({ title: "입찰 금액 부족", description: `현재 최고 입찰가(${auction.currentBid}원)보다 높은 금액을 입력해주세요.`, @@ -102,7 +99,7 @@ export default function MediaOutletAuction() { }).format(amount); }; - const formatTimeRemaining = (endDate: string) => { + const formatTimeRemaining = (endDate: Date | string) => { const end = new Date(endDate); const now = new Date(); const diff = end.getTime() - now.getTime(); @@ -264,7 +261,7 @@ export default function MediaOutletAuction() { 현재 최고가 - {formatCurrency(auction.currentBid)} + {formatCurrency(parseFloat(auction.currentBid || "0"))} @@ -278,14 +275,14 @@ export default function MediaOutletAuction() { - {auction.highestBidder && ( + {auction.highestBidderId && (
최고 입찰자
- {auction.highestBidder.slice(0, 3)}*** + {auction.highestBidderId.slice(0, 3)}***
)} @@ -328,8 +325,8 @@ export default function MediaOutletAuction() { type="number" value={bidAmount} onChange={(e) => setBidAmount(e.target.value)} - placeholder={`${auction.currentBid + 1000} 이상`} - min={auction.currentBid + 1} + placeholder={`${parseFloat(auction.currentBid || "0") + 1000} 이상`} + min={parseFloat(auction.currentBid || "0") + 1} data-testid="input-bid-amount" /> diff --git a/server/storage.ts b/server/storage.ts index e0c4ecb..89d6445 100644 --- a/server/storage.ts +++ b/server/storage.ts @@ -53,6 +53,7 @@ export interface IStorage { // Auction operations getActiveAuctions(): Promise; getAuctionById(id: string): Promise; + getAuctionByMediaOutlet(mediaOutletId: string): Promise; createAuction(auction: InsertAuction): Promise; placeBid(bid: InsertBid): Promise; @@ -191,6 +192,13 @@ export class DatabaseStorage implements IStorage { return auction; } + async getAuctionByMediaOutlet(mediaOutletId: string): Promise { + const [auction] = await db.select().from(auctions).where( + and(eq(auctions.mediaOutletId, mediaOutletId), eq(auctions.isActive, true)) + ); + return auction; + } + async createAuction(auction: InsertAuction): Promise { const [newAuction] = await db.insert(auctions).values(auction).returning(); return newAuction;