import type { Outfit } from "./types" import { mockResponse, type PaginatedResponse, type PaginationParams } from "./client" // 模拟服装数据 const mockOutfits: Outfit[] = [ { id: "OUT001", name: "星空礼裙", designer: "星辰设计工作室", description: "以星空为灵感设计的华丽礼裙,适合正式场合穿着。", releaseDate: "2023-08-15", status: "已发布", type: "礼服", rarity: "传说", image: "/placeholder.svg?height=300&width=300", }, { id: "OUT002", name: "音符连衣裙", designer: "音乐之声工作室", description: "装饰有音符图案的连衣裙,轻盈飘逸,适合日常穿着。", releaseDate: "2023-09-20", status: "已发布", type: "连衣裙", rarity: "稀有", image: "/placeholder.svg?height=300&width=300", }, { id: "OUT003", name: "未来科技套装", designer: "未来主义设计团队", description: "融合未来科技元素的套装,包含上衣、裤子和配饰。", releaseDate: "2023-10-30", status: "已发布", type: "套装", rarity: "史诗", image: "/placeholder.svg?height=300&width=300", }, { id: "OUT004", name: "传统汉服", designer: "古风设计工作室", description: "传统风格的汉服,展现中国古典美学。", releaseDate: "2023-12-05", status: "已发布", type: "汉服", rarity: "稀有", image: "/placeholder.svg?height=300&width=300", }, { id: "OUT005", name: "春节限定旗袍", designer: "洛天依官方设计团队", description: "春节限定款旗袍,融合传统与现代元素。", releaseDate: "", status: "未发布", type: "旗袍", rarity: "传说", image: "/placeholder.svg?height=300&width=300", }, ] // 获取服装列表 export const getOutfits = async (params?: PaginationParams): Promise> => { let filteredOutfits = [...mockOutfits] // 搜索过滤 if (params?.search) { const search = params.search.toLowerCase() filteredOutfits = filteredOutfits.filter( (outfit) => outfit.name.toLowerCase().includes(search) || outfit.id.toLowerCase().includes(search) || outfit.designer.toLowerCase().includes(search) || outfit.type.toLowerCase().includes(search), ) } // 排序 if (params?.sortBy) { filteredOutfits.sort((a: any, b: any) => { const aValue = a[params.sortBy!] const bValue = b[params.sortBy!] if (typeof aValue === "string" && typeof bValue === "string") { return params.sortOrder === "desc" ? bValue.localeCompare(aValue) : aValue.localeCompare(bValue) } return params.sortOrder === "desc" ? bValue - aValue : aValue - bValue }) } // 分页 const page = params?.page || 1 const pageSize = params?.pageSize || 10 const startIndex = (page - 1) * pageSize const paginatedOutfits = filteredOutfits.slice(startIndex, startIndex + pageSize) return mockResponse({ items: paginatedOutfits, total: filteredOutfits.length, page, pageSize, totalPages: Math.ceil(filteredOutfits.length / pageSize), }) } // 获取单个服装 export const getOutfit = async (id: string): Promise => { const outfit = mockOutfits.find((outfit) => outfit.id === id) if (!outfit) { return mockResponse({} as Outfit, "服装不存在") } return mockResponse(outfit) } // 创建服装 export const createOutfit = async (outfitData: Partial): Promise => { // 生成新的服装ID const outfitId = "OUT" + String(mockOutfits.length + 1).padStart(3, "0") const newOutfit: Outfit = { id: outfitId, name: outfitData.name || "", designer: outfitData.designer || "", description: outfitData.description || "", releaseDate: outfitData.releaseDate || "", status: outfitData.status || "未发布", type: outfitData.type || "", rarity: outfitData.rarity || "", image: outfitData.image || "/placeholder.svg?height=300&width=300", } mockOutfits.push(newOutfit) return mockResponse(newOutfit) } // 更新服装 export const updateOutfit = async (id: string, outfitData: Partial): Promise => { const outfitIndex = mockOutfits.findIndex((outfit) => outfit.id === id) if (outfitIndex === -1) { return mockResponse({} as Outfit, "服装不存在") } const updatedOutfit = { ...mockOutfits[outfitIndex], ...outfitData, } mockOutfits[outfitIndex] = updatedOutfit return mockResponse(updatedOutfit) } // 删除服装 export const deleteOutfit = async (id: string): Promise => { const outfitIndex = mockOutfits.findIndex((outfit) => outfit.id === id) if (outfitIndex === -1) { return mockResponse(false, "服装不存在") } // 已发布的服装不能删除 if (mockOutfits[outfitIndex].status === "已发布") { return mockResponse(false, "已发布的服装不能删除") } mockOutfits.splice(outfitIndex, 1) return mockResponse(true) } // 发布服装 export const publishOutfit = async (id: string): Promise => { const outfitIndex = mockOutfits.findIndex((outfit) => outfit.id === id) if (outfitIndex === -1) { return mockResponse({} as Outfit, "服装不存在") } mockOutfits[outfitIndex].status = "已发布" mockOutfits[outfitIndex].releaseDate = new Date().toISOString().split("T")[0] return mockResponse(mockOutfits[outfitIndex]) }