refactor: rewrite and expand mock data into modular files
This commit is contained in:
@@ -4,7 +4,7 @@ import { Badge } from "@/components/ui/badge"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Card, CardContent } from "@/components/ui/card"
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
|
||||
import { mockNotifications } from "@/lib/mock-data"
|
||||
import { mockNotifications } from "@/lib/mock"
|
||||
import type { Notification } from "@/lib/types"
|
||||
|
||||
const typeIcons: Record<Notification["type"], typeof Bell> = {
|
||||
|
||||
@@ -11,7 +11,7 @@ import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"
|
||||
import { Separator } from "@/components/ui/separator"
|
||||
import { Switch } from "@/components/ui/switch"
|
||||
import { Textarea } from "@/components/ui/textarea"
|
||||
import { currentUser } from "@/lib/mock-data"
|
||||
import { currentUser } from "@/lib/mock"
|
||||
import type { UserRole } from "@/lib/types"
|
||||
import { useAuthStore } from "@/store/auth"
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import { Button } from "@/components/ui/button"
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
||||
import { Input } from "@/components/ui/input"
|
||||
import { Separator } from "@/components/ui/separator"
|
||||
import { mockTransactions, walletBalance } from "@/lib/mock-data"
|
||||
import { mockTransactions, walletBalance } from "@/lib/mock"
|
||||
import { useAuthStore } from "@/store/auth"
|
||||
|
||||
const typeLabels: Record<string, string> = {
|
||||
|
||||
@@ -9,7 +9,7 @@ import { z } from "zod"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Input } from "@/components/ui/input"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { currentUser } from "@/lib/mock-data"
|
||||
import { currentUser } from "@/lib/mock"
|
||||
import { useAuthStore } from "@/store/auth"
|
||||
|
||||
const loginSchema = z.object({
|
||||
|
||||
@@ -9,7 +9,7 @@ import { z } from "zod"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Input } from "@/components/ui/input"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { currentUser } from "@/lib/mock-data"
|
||||
import { currentUser } from "@/lib/mock"
|
||||
import { useAuthStore } from "@/store/auth"
|
||||
|
||||
const registerSchema = z
|
||||
|
||||
@@ -7,7 +7,7 @@ import { Button } from "@/components/ui/button"
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
||||
import { Progress } from "@/components/ui/progress"
|
||||
import { statusLabels } from "@/lib/constants"
|
||||
import { mockOrders, mockPlayers, mockServices, mockShops } from "@/lib/mock-data"
|
||||
import { mockOrders, mockPlayers, mockServices, mockShops } from "@/lib/mock"
|
||||
import { useAuthStore } from "@/store/auth"
|
||||
|
||||
export default function DashboardPage() {
|
||||
|
||||
@@ -19,7 +19,7 @@ import {
|
||||
} from "@/components/ui/select"
|
||||
import { Textarea } from "@/components/ui/textarea"
|
||||
import { GameIcon } from "@/lib/game-icons"
|
||||
import { mockGames } from "@/lib/mock-data"
|
||||
import { mockGames } from "@/lib/mock"
|
||||
|
||||
const serviceSchema = z.object({
|
||||
title: z.string().min(2, "标题至少2个字符"),
|
||||
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
TableHeader,
|
||||
TableRow,
|
||||
} from "@/components/ui/table"
|
||||
import { mockServices } from "@/lib/mock-data"
|
||||
import { mockServices } from "@/lib/mock"
|
||||
|
||||
export default function ServicesPage() {
|
||||
return (
|
||||
|
||||
@@ -18,7 +18,7 @@ import {
|
||||
TableHeader,
|
||||
TableRow,
|
||||
} from "@/components/ui/table"
|
||||
import { mockPlayers } from "@/lib/mock-data"
|
||||
import { mockPlayers } from "@/lib/mock"
|
||||
|
||||
const shopPlayers = mockPlayers.filter((p) => p.shopId === "shop1")
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
TableHeader,
|
||||
TableRow,
|
||||
} from "@/components/ui/table"
|
||||
import { mockOrders, mockTransactions } from "@/lib/mock-data"
|
||||
import { mockOrders, mockTransactions } from "@/lib/mock"
|
||||
|
||||
export default function ShopIncomePage() {
|
||||
const completedOrders = mockOrders.filter((o) => o.status === "completed")
|
||||
|
||||
@@ -12,7 +12,7 @@ import {
|
||||
TableRow,
|
||||
} from "@/components/ui/table"
|
||||
import { statusLabels } from "@/lib/constants"
|
||||
import { mockOrders } from "@/lib/mock-data"
|
||||
import { mockOrders } from "@/lib/mock"
|
||||
|
||||
export default function ShopOrdersPage() {
|
||||
const totalOrders = mockOrders.length
|
||||
|
||||
@@ -7,7 +7,7 @@ import { Input } from "@/components/ui/input"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { Separator } from "@/components/ui/separator"
|
||||
import { Textarea } from "@/components/ui/textarea"
|
||||
import { mockShops } from "@/lib/mock-data"
|
||||
import { mockShops } from "@/lib/mock"
|
||||
|
||||
export default function ShopManagementPage() {
|
||||
const shop = mockShops[0]
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
SelectValue,
|
||||
} from "@/components/ui/select"
|
||||
import { Switch } from "@/components/ui/switch"
|
||||
import { mockShops } from "@/lib/mock-data"
|
||||
import { mockShops } from "@/lib/mock"
|
||||
import type { Shop } from "@/lib/types"
|
||||
|
||||
export default function ShopRulesPage() {
|
||||
|
||||
@@ -6,7 +6,7 @@ import { type DragEvent, useEffect, useState } from "react"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
||||
import { Switch } from "@/components/ui/switch"
|
||||
import { mockShops } from "@/lib/mock-data"
|
||||
import { mockShops } from "@/lib/mock"
|
||||
import type { ShopSection } from "@/lib/types"
|
||||
|
||||
const sectionLabels: Record<ShopSection["type"], string> = {
|
||||
|
||||
@@ -8,7 +8,7 @@ import { Badge } from "@/components/ui/badge"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Card, CardContent, CardFooter, CardHeader } from "@/components/ui/card"
|
||||
import { roleLabels } from "@/lib/constants"
|
||||
import { mockGames, mockPosts } from "@/lib/mock-data"
|
||||
import { mockGames, mockPosts } from "@/lib/mock"
|
||||
|
||||
export default function CommunityPage() {
|
||||
const [sortMode, setSortMode] = useState<"latest" | "hot">("latest")
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ import { Badge } from "@/components/ui/badge"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"
|
||||
import { GameIcon } from "@/lib/game-icons"
|
||||
import { mockGames, mockPlayers, mockShops } from "@/lib/mock-data"
|
||||
import { mockGames, mockPlayers, mockShops } from "@/lib/mock"
|
||||
|
||||
export default function HomePage() {
|
||||
return (
|
||||
|
||||
@@ -15,7 +15,7 @@ import {
|
||||
} from "@/components/ui/card"
|
||||
import { Separator } from "@/components/ui/separator"
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
|
||||
import { mockFavorites, mockPlayers, mockReviews, mockServices } from "@/lib/mock-data"
|
||||
import { mockFavorites, mockPlayers, mockReviews, mockServices } from "@/lib/mock"
|
||||
|
||||
export default async function PlayerDetailPage({ params }: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params
|
||||
|
||||
@@ -9,7 +9,7 @@ import { Card, CardContent, CardHeader } from "@/components/ui/card"
|
||||
import { Separator } from "@/components/ui/separator"
|
||||
import { Textarea } from "@/components/ui/textarea"
|
||||
import { roleLabels } from "@/lib/constants"
|
||||
import { mockComments, mockOrders, mockPlayers, mockPosts } from "@/lib/mock-data"
|
||||
import { mockComments, mockOrders, mockPlayers, mockPosts } from "@/lib/mock"
|
||||
|
||||
export default async function PostDetailPage({ params }: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params
|
||||
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
SelectValue,
|
||||
} from "@/components/ui/select"
|
||||
import { Textarea } from "@/components/ui/textarea"
|
||||
import { mockPosts } from "@/lib/mock-data"
|
||||
import { mockPosts } from "@/lib/mock"
|
||||
import { useRequireAuth } from "@/lib/use-require-auth"
|
||||
|
||||
const postSchema = z.object({
|
||||
|
||||
@@ -42,7 +42,7 @@ import {
|
||||
} from "@/components/ui/sheet"
|
||||
import { Switch } from "@/components/ui/switch"
|
||||
import { GameIcon } from "@/lib/game-icons"
|
||||
import { mockGames, mockPlayers } from "@/lib/mock-data"
|
||||
import { mockGames, mockPlayers } from "@/lib/mock"
|
||||
import type { Player } from "@/lib/types"
|
||||
import { cn } from "@/lib/utils"
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
|
||||
import { Badge } from "@/components/ui/badge"
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
||||
import { Separator } from "@/components/ui/separator"
|
||||
import { mockFavorites, mockPlayers, mockReviews, mockServices, mockShops } from "@/lib/mock-data"
|
||||
import { mockFavorites, mockPlayers, mockReviews, mockServices, mockShops } from "@/lib/mock"
|
||||
|
||||
interface PageProps {
|
||||
params: Promise<{ id: string }>
|
||||
|
||||
@@ -5,7 +5,7 @@ import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
|
||||
import { Badge } from "@/components/ui/badge"
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
|
||||
import { mockFavorites, mockPlayers, mockPosts, mockShops, mockUsers } from "@/lib/mock-data"
|
||||
import { mockFavorites, mockPlayers, mockPosts, mockShops, mockUsers } from "@/lib/mock"
|
||||
|
||||
export default async function UserProfilePage({ params }: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params
|
||||
|
||||
@@ -8,7 +8,7 @@ import { Badge } from "@/components/ui/badge"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Input } from "@/components/ui/input"
|
||||
import { ScrollArea } from "@/components/ui/scroll-area"
|
||||
import { mockChatMessages, mockChatSessions } from "@/lib/mock-data"
|
||||
import { mockChatMessages, mockChatSessions } from "@/lib/mock"
|
||||
import { cn } from "@/lib/utils"
|
||||
import { useAuthStore } from "@/store/auth"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import Link from "next/link"
|
||||
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
|
||||
import { Badge } from "@/components/ui/badge"
|
||||
import { Card, CardContent } from "@/components/ui/card"
|
||||
import { mockChatSessions } from "@/lib/mock-data"
|
||||
import { mockChatSessions } from "@/lib/mock"
|
||||
|
||||
export default function ChatListPage() {
|
||||
return (
|
||||
|
||||
@@ -11,7 +11,7 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { Separator } from "@/components/ui/separator"
|
||||
import { Textarea } from "@/components/ui/textarea"
|
||||
import { mockDisputes, mockOrders } from "@/lib/mock-data"
|
||||
import { mockDisputes, mockOrders } from "@/lib/mock"
|
||||
|
||||
const disputeStatusLabels: Record<string, string> = {
|
||||
open: "已提交",
|
||||
|
||||
@@ -6,7 +6,7 @@ import { Badge } from "@/components/ui/badge"
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
||||
import { Separator } from "@/components/ui/separator"
|
||||
import { statusLabels } from "@/lib/constants"
|
||||
import { mockChatSessions, mockOrders, mockReviews } from "@/lib/mock-data"
|
||||
import { mockChatSessions, mockOrders, mockReviews } from "@/lib/mock"
|
||||
import type { OrderStatus } from "@/lib/types"
|
||||
|
||||
const statusSteps: OrderStatus[] = [
|
||||
|
||||
@@ -11,7 +11,7 @@ import { Input } from "@/components/ui/input"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { Separator } from "@/components/ui/separator"
|
||||
import { Textarea } from "@/components/ui/textarea"
|
||||
import { mockOrders, mockPlayers, mockServices, walletBalance } from "@/lib/mock-data"
|
||||
import { mockOrders, mockPlayers, mockServices, walletBalance } from "@/lib/mock"
|
||||
import { useRequireAuth } from "@/lib/use-require-auth"
|
||||
|
||||
function showFeedback(message: string) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import { Button } from "@/components/ui/button"
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
|
||||
import { statusLabels } from "@/lib/constants"
|
||||
import { mockChatSessions, mockOrders } from "@/lib/mock-data"
|
||||
import { mockChatSessions, mockOrders } from "@/lib/mock"
|
||||
import type { OrderStatus } from "@/lib/types"
|
||||
import { cn } from "@/lib/utils"
|
||||
import { useAuthStore } from "@/store/auth"
|
||||
|
||||
@@ -7,7 +7,7 @@ import { Button } from "@/components/ui/button"
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { Textarea } from "@/components/ui/textarea"
|
||||
import { mockOrders } from "@/lib/mock-data"
|
||||
import { mockOrders } from "@/lib/mock"
|
||||
|
||||
export default function ReviewPage({ params }: { params: Promise<{ id: string }> }) {
|
||||
const { id } = use(params)
|
||||
|
||||
@@ -29,7 +29,7 @@ import {
|
||||
} from "@/components/ui/dropdown-menu"
|
||||
import { Input } from "@/components/ui/input"
|
||||
import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from "@/components/ui/sheet"
|
||||
import { currentUser, mockNotifications, mockShops } from "@/lib/mock-data"
|
||||
import { currentUser, mockNotifications, mockShops } from "@/lib/mock"
|
||||
import type { UserRole } from "@/lib/types"
|
||||
import { cn } from "@/lib/utils"
|
||||
import { useAuthStore } from "@/store/auth"
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
} from "@/components/ui/dialog"
|
||||
import { Input } from "@/components/ui/input"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { currentUser } from "@/lib/mock-data"
|
||||
import { currentUser } from "@/lib/mock"
|
||||
import { useAuthStore } from "@/store/auth"
|
||||
|
||||
const loginSchema = z.object({
|
||||
|
||||
@@ -1,736 +0,0 @@
|
||||
import type {
|
||||
ChatMessage,
|
||||
ChatSession,
|
||||
Comment,
|
||||
Dispute,
|
||||
Favorite,
|
||||
Game,
|
||||
Notification,
|
||||
Order,
|
||||
Player,
|
||||
PlayerService,
|
||||
Post,
|
||||
Review,
|
||||
Shop,
|
||||
User,
|
||||
WalletTransaction,
|
||||
} from "./types"
|
||||
|
||||
export const mockUsers: User[] = [
|
||||
{
|
||||
id: "u1",
|
||||
username: "xm_2003",
|
||||
nickname: "小明",
|
||||
avatar: "/avatars/u1.jpg",
|
||||
role: "consumer",
|
||||
phone: "138****1234",
|
||||
bio: "工作日打两三把,周末偶尔通宵",
|
||||
createdAt: "2025-01-15",
|
||||
},
|
||||
{
|
||||
id: "u2",
|
||||
username: "LDShen666",
|
||||
nickname: "老李",
|
||||
avatar: "/avatars/u2.jpg",
|
||||
role: "player",
|
||||
phone: "139****5678",
|
||||
bio: "晚上在线多,逆风不摆,能语音更快",
|
||||
createdAt: "2024-11-20",
|
||||
},
|
||||
{
|
||||
id: "u3",
|
||||
username: "wangzai77",
|
||||
nickname: "王哥",
|
||||
avatar: "/avatars/u3.jpg",
|
||||
role: "owner",
|
||||
phone: "137****9012",
|
||||
bio: "店里就三个人,忙的时候回消息会慢点",
|
||||
createdAt: "2024-08-10",
|
||||
},
|
||||
{
|
||||
id: "u4",
|
||||
username: "Achen9k",
|
||||
nickname: "阿辰",
|
||||
avatar: "/avatars/u4.jpg",
|
||||
role: "player",
|
||||
bio: "主狙和突破都打,报点直给",
|
||||
createdAt: "2025-02-01",
|
||||
},
|
||||
{
|
||||
id: "u5",
|
||||
username: "甜甜酱w",
|
||||
nickname: "甜甜酱",
|
||||
avatar: "/avatars/u5.jpg",
|
||||
role: "player",
|
||||
bio: "主辅+原神日常,社恐,但会认真打",
|
||||
createdAt: "2025-01-05",
|
||||
},
|
||||
]
|
||||
|
||||
export const mockGames: Game[] = [
|
||||
{ id: "g1", name: "英雄联盟", icon: "Swords", category: "MOBA" },
|
||||
{ id: "g2", name: "王者荣耀", icon: "Crown", category: "MOBA" },
|
||||
{ id: "g3", name: "CS2", icon: "Crosshair", category: "FPS" },
|
||||
{ id: "g4", name: "永劫无间", icon: "Flame", category: "动作" },
|
||||
{ id: "g5", name: "原神", icon: "Sparkles", category: "RPG" },
|
||||
{ id: "g6", name: "和平精英", icon: "Target", category: "FPS" },
|
||||
{ id: "g7", name: "DOTA2", icon: "Shield", category: "MOBA" },
|
||||
{ id: "g8", name: "无畏契约", icon: "Bomb", category: "FPS" },
|
||||
]
|
||||
|
||||
export const mockServices: PlayerService[] = [
|
||||
{
|
||||
id: "s1",
|
||||
playerId: "u2",
|
||||
gameId: "g1",
|
||||
gameName: "英雄联盟",
|
||||
title: "LOL双排稳一点上分",
|
||||
description: "主打野/中,前两把先磨合。逆风会讲思路,不闷着。",
|
||||
price: 33,
|
||||
unit: "局",
|
||||
rankRange: "铂金-大师",
|
||||
availability: ["周一至周五 20:00-01:00", "周末 14:00-02:00"],
|
||||
},
|
||||
{
|
||||
id: "s2",
|
||||
playerId: "u2",
|
||||
gameId: "g2",
|
||||
gameName: "王者荣耀",
|
||||
title: "王者补位冲星",
|
||||
description: "连跪想止损就来,射手辅助都能补。冲几星先说,我按你节奏来。",
|
||||
price: 27,
|
||||
unit: "星",
|
||||
rankRange: "星耀-王者80星",
|
||||
availability: ["每天 18:30-00:30"],
|
||||
},
|
||||
{
|
||||
id: "s3",
|
||||
playerId: "u4",
|
||||
gameId: "g3",
|
||||
gameName: "CS2",
|
||||
title: "CS2车队位",
|
||||
description: "语音里先报点,残局我来喊。不开喷,失误就下一把拉回来。",
|
||||
price: 57,
|
||||
unit: "局",
|
||||
rankRange: "白银-超凡",
|
||||
availability: ["每天 15:00-01:00"],
|
||||
},
|
||||
{
|
||||
id: "s4",
|
||||
playerId: "u5",
|
||||
gameId: "g1",
|
||||
gameName: "英雄联盟",
|
||||
title: "LOL轻松双排",
|
||||
description: "主辅位,偏保人打法。想聊天就聊,不想说话也行。",
|
||||
price: 22,
|
||||
unit: "局",
|
||||
availability: ["周末 11:00-23:30"],
|
||||
},
|
||||
{
|
||||
id: "s5",
|
||||
playerId: "u5",
|
||||
gameId: "g5",
|
||||
gameName: "原神",
|
||||
title: "原神日常清体力",
|
||||
description: "每日委托、树脂、活动本都能清。做完发截图,不乱动你号。",
|
||||
price: 19,
|
||||
unit: "次",
|
||||
availability: ["工作日 21:00-24:00", "周末白天可加急"],
|
||||
},
|
||||
]
|
||||
|
||||
export const mockPlayers: Player[] = [
|
||||
{
|
||||
id: "u2",
|
||||
user: mockUsers[1],
|
||||
rating: 4.5,
|
||||
totalOrders: 83,
|
||||
completionRate: 0.93,
|
||||
status: "available",
|
||||
games: ["英雄联盟", "王者荣耀"],
|
||||
services: mockServices.filter((s) => s.playerId === "u2"),
|
||||
shopId: "shop1",
|
||||
shopName: "王者电竞工作室",
|
||||
tags: ["补位稳", "会复盘", "麦克风在线"],
|
||||
},
|
||||
{
|
||||
id: "u4",
|
||||
user: mockUsers[3],
|
||||
rating: 4.8,
|
||||
totalOrders: 47,
|
||||
completionRate: 0.96,
|
||||
status: "busy",
|
||||
games: ["CS2", "无畏契约"],
|
||||
services: mockServices.filter((s) => s.playerId === "u4"),
|
||||
tags: ["报点快", "节奏凶", "不压力队友"],
|
||||
},
|
||||
{
|
||||
id: "u5",
|
||||
user: mockUsers[4],
|
||||
rating: 3.9,
|
||||
totalOrders: 21,
|
||||
completionRate: 0.86,
|
||||
status: "available",
|
||||
games: ["英雄联盟", "原神"],
|
||||
services: mockServices.filter((s) => s.playerId === "u5"),
|
||||
shopId: "shop1",
|
||||
shopName: "王者电竞工作室",
|
||||
tags: ["主辅", "不抢话", "原神日常"],
|
||||
},
|
||||
]
|
||||
|
||||
export const mockShops: Shop[] = [
|
||||
{
|
||||
id: "shop1",
|
||||
owner: mockUsers[2],
|
||||
name: "王者电竞工作室",
|
||||
banner: "/banners/shop1.jpg",
|
||||
description: "晚上在线的人多一点,接单前会先问清楚你想怎么打。",
|
||||
rating: 4.4,
|
||||
totalOrders: 68,
|
||||
playerCount: 7,
|
||||
commissionType: "percentage",
|
||||
commissionValue: 15,
|
||||
allowMultiShop: false,
|
||||
allowIndependentOrders: true,
|
||||
dispatchMode: "manual",
|
||||
announcements: ["晚上9点后单子多,等位可能会慢", "这周加了原神日常代清,截图回传"],
|
||||
templateConfig: {
|
||||
sections: [
|
||||
{ type: "banner", enabled: true, order: 0 },
|
||||
{ type: "intro", enabled: true, order: 1 },
|
||||
{ type: "announcements", enabled: true, order: 2 },
|
||||
{ type: "services", enabled: true, order: 3 },
|
||||
{ type: "players", enabled: true, order: 4 },
|
||||
{ type: "reviews", enabled: true, order: 5 },
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
export const mockOrders: Order[] = [
|
||||
{
|
||||
id: "ord1",
|
||||
consumerId: "u1",
|
||||
consumerName: "小明",
|
||||
playerId: "u2",
|
||||
playerName: "老李",
|
||||
shopId: "shop1",
|
||||
shopName: "王者电竞工作室",
|
||||
service: mockServices[0],
|
||||
status: "pending_review",
|
||||
totalPrice: 99,
|
||||
note: "今晚冲三把,输了也别急",
|
||||
createdAt: "2025-02-18T14:30:00",
|
||||
acceptedAt: "2025-02-18T14:35:00",
|
||||
closedAt: "2025-02-18T23:48:00",
|
||||
completedAt: "2025-02-18T23:50:00",
|
||||
},
|
||||
{
|
||||
id: "ord2",
|
||||
consumerId: "u1",
|
||||
consumerName: "小明",
|
||||
playerId: "u4",
|
||||
playerName: "阿辰",
|
||||
service: mockServices[2],
|
||||
status: "completed",
|
||||
totalPrice: 116,
|
||||
createdAt: "2025-02-15T10:00:00",
|
||||
acceptedAt: "2025-02-15T10:05:00",
|
||||
closedAt: "2025-02-15T12:30:00",
|
||||
completedAt: "2025-02-15T12:35:00",
|
||||
},
|
||||
{
|
||||
id: "ord3",
|
||||
consumerId: "u1",
|
||||
consumerName: "小明",
|
||||
playerId: "u5",
|
||||
playerName: "甜甜酱",
|
||||
shopId: "shop1",
|
||||
shopName: "王者电竞工作室",
|
||||
service: mockServices[3],
|
||||
status: "pending_accept",
|
||||
totalPrice: 69,
|
||||
note: "只想放松玩,不冲分",
|
||||
createdAt: "2025-02-19T20:00:00",
|
||||
},
|
||||
{
|
||||
id: "ord4",
|
||||
consumerId: "u1",
|
||||
consumerName: "小明",
|
||||
playerId: "u2",
|
||||
playerName: "老李",
|
||||
shopId: "shop1",
|
||||
shopName: "王者电竞工作室",
|
||||
service: mockServices[1],
|
||||
status: "disputed",
|
||||
totalPrice: 87,
|
||||
createdAt: "2025-02-10T16:00:00",
|
||||
acceptedAt: "2025-02-10T16:10:00",
|
||||
},
|
||||
{
|
||||
id: "ord5",
|
||||
consumerId: "u1",
|
||||
consumerName: "小明",
|
||||
playerId: "u2",
|
||||
playerName: "老李",
|
||||
shopId: "shop1",
|
||||
shopName: "王者电竞工作室",
|
||||
service: mockServices[1],
|
||||
status: "completed",
|
||||
totalPrice: 54,
|
||||
note: "补两星就收工",
|
||||
createdAt: "2025-02-08T21:10:00",
|
||||
acceptedAt: "2025-02-08T21:15:00",
|
||||
closedAt: "2025-02-08T22:20:00",
|
||||
completedAt: "2025-02-08T22:25:00",
|
||||
},
|
||||
{
|
||||
id: "ord6",
|
||||
consumerId: "u1",
|
||||
consumerName: "小明",
|
||||
playerId: "u5",
|
||||
playerName: "甜甜酱",
|
||||
shopId: "shop1",
|
||||
shopName: "王者电竞工作室",
|
||||
service: mockServices[4],
|
||||
status: "completed",
|
||||
totalPrice: 38,
|
||||
note: "帮我清两天日常",
|
||||
createdAt: "2025-02-06T19:40:00",
|
||||
acceptedAt: "2025-02-06T19:45:00",
|
||||
closedAt: "2025-02-06T20:25:00",
|
||||
completedAt: "2025-02-06T20:28:00",
|
||||
},
|
||||
{
|
||||
id: "ord7",
|
||||
consumerId: "u1",
|
||||
consumerName: "小明",
|
||||
playerId: "u4",
|
||||
playerName: "阿辰",
|
||||
service: mockServices[2],
|
||||
status: "completed",
|
||||
totalPrice: 57,
|
||||
createdAt: "2025-02-03T23:10:00",
|
||||
acceptedAt: "2025-02-03T23:12:00",
|
||||
closedAt: "2025-02-04T00:05:00",
|
||||
completedAt: "2025-02-04T00:08:00",
|
||||
},
|
||||
]
|
||||
|
||||
export const mockReviews: Review[] = [
|
||||
{
|
||||
id: "r1",
|
||||
orderId: "ord2",
|
||||
fromUserId: "u1",
|
||||
fromUserName: "小明",
|
||||
fromUserAvatar: "/avatars/u1.jpg",
|
||||
toUserId: "u4",
|
||||
rating: 5,
|
||||
content: "报点很快,架枪位也会提前说。中间崩了一把,后面拉回来了。",
|
||||
sealed: false,
|
||||
createdAt: "2025-02-15T13:00:00",
|
||||
},
|
||||
{
|
||||
id: "r2",
|
||||
orderId: "ord2",
|
||||
fromUserId: "u4",
|
||||
fromUserName: "阿辰",
|
||||
fromUserAvatar: "/avatars/u4.jpg",
|
||||
toUserId: "u1",
|
||||
rating: 4,
|
||||
content: "人挺好沟通,听指令,不会乱冲。",
|
||||
sealed: false,
|
||||
createdAt: "2025-02-15T13:30:00",
|
||||
},
|
||||
{
|
||||
id: "r3",
|
||||
orderId: "ord1",
|
||||
fromUserId: "u1",
|
||||
fromUserName: "小明",
|
||||
fromUserAvatar: "/avatars/u1.jpg",
|
||||
toUserId: "u2",
|
||||
rating: 4,
|
||||
content: "整体可以,第二把他家里来电话断了几分钟,后面补回来了。",
|
||||
sealed: true,
|
||||
createdAt: "2025-02-19T00:05:00",
|
||||
},
|
||||
{
|
||||
id: "r4",
|
||||
orderId: "ord5",
|
||||
fromUserId: "u1",
|
||||
fromUserName: "小明",
|
||||
fromUserAvatar: "/avatars/u1.jpg",
|
||||
toUserId: "u2",
|
||||
rating: 5,
|
||||
content: "补位确实稳。最后一把逆风翻了,爽。",
|
||||
sealed: false,
|
||||
createdAt: "2025-02-08T22:40:00",
|
||||
},
|
||||
{
|
||||
id: "r5",
|
||||
orderId: "ord5",
|
||||
fromUserId: "u2",
|
||||
fromUserName: "老李",
|
||||
fromUserAvatar: "/avatars/u2.jpg",
|
||||
toUserId: "u1",
|
||||
rating: 4,
|
||||
content: "配合OK,心态稳,输一局也没甩锅。",
|
||||
sealed: false,
|
||||
createdAt: "2025-02-08T22:45:00",
|
||||
},
|
||||
{
|
||||
id: "r6",
|
||||
orderId: "ord6",
|
||||
fromUserId: "u1",
|
||||
fromUserName: "小明",
|
||||
fromUserAvatar: "/avatars/u1.jpg",
|
||||
toUserId: "u5",
|
||||
rating: 3,
|
||||
content: "日常都做了,就是比我想的晚半小时。",
|
||||
sealed: false,
|
||||
createdAt: "2025-02-06T20:40:00",
|
||||
},
|
||||
{
|
||||
id: "r7",
|
||||
orderId: "ord6",
|
||||
fromUserId: "u5",
|
||||
fromUserName: "甜甜酱",
|
||||
fromUserAvatar: "/avatars/u5.jpg",
|
||||
toUserId: "u1",
|
||||
rating: 4,
|
||||
content: "需求给得清楚,省事。",
|
||||
sealed: false,
|
||||
createdAt: "2025-02-06T20:46:00",
|
||||
},
|
||||
{
|
||||
id: "r8",
|
||||
orderId: "ord7",
|
||||
fromUserId: "u1",
|
||||
fromUserName: "小明",
|
||||
fromUserAvatar: "/avatars/u1.jpg",
|
||||
toUserId: "u4",
|
||||
rating: 5,
|
||||
content: "节奏飞快,枪很硬。就是我跟得有点累哈哈。",
|
||||
sealed: false,
|
||||
createdAt: "2025-02-04T00:20:00",
|
||||
},
|
||||
{
|
||||
id: "r9",
|
||||
orderId: "ord7",
|
||||
fromUserId: "u4",
|
||||
fromUserName: "阿辰",
|
||||
fromUserAvatar: "/avatars/u4.jpg",
|
||||
toUserId: "u1",
|
||||
rating: 5,
|
||||
content: "上手快,喊点就能到。",
|
||||
sealed: false,
|
||||
createdAt: "2025-02-04T00:25:00",
|
||||
},
|
||||
]
|
||||
|
||||
export const mockDisputes: Dispute[] = [
|
||||
{
|
||||
id: "d1",
|
||||
orderId: "ord4",
|
||||
initiatorId: "u1",
|
||||
initiatorName: "小明",
|
||||
reason: "中途掉线后一直没回来,约好的上星数量没打完。",
|
||||
evidence: ["/evidence/d1-1.jpg", "/evidence/d1-2.jpg"],
|
||||
status: "reviewing",
|
||||
createdAt: "2025-02-12T10:00:00",
|
||||
},
|
||||
]
|
||||
|
||||
export const mockChatSessions: ChatSession[] = [
|
||||
{
|
||||
id: "chat1",
|
||||
type: "order",
|
||||
orderId: "ord1",
|
||||
participants: [
|
||||
{ id: "u1", name: "小明", avatar: "/avatars/u1.jpg" },
|
||||
{ id: "u2", name: "老李", avatar: "/avatars/u2.jpg" },
|
||||
],
|
||||
lastMessage: "行,20:00开",
|
||||
lastMessageAt: "2025-02-18T18:30:00",
|
||||
unreadCount: 2,
|
||||
readonly: false,
|
||||
},
|
||||
{
|
||||
id: "chat2",
|
||||
type: "consultation",
|
||||
participants: [
|
||||
{ id: "u1", name: "小明", avatar: "/avatars/u1.jpg" },
|
||||
{ id: "u5", name: "甜甜酱", avatar: "/avatars/u5.jpg" },
|
||||
],
|
||||
lastMessage: "周末还能接吗",
|
||||
lastMessageAt: "2025-02-19T15:00:00",
|
||||
unreadCount: 0,
|
||||
readonly: false,
|
||||
},
|
||||
{
|
||||
id: "chat3",
|
||||
type: "order",
|
||||
orderId: "ord2",
|
||||
participants: [
|
||||
{ id: "u1", name: "小明", avatar: "/avatars/u1.jpg" },
|
||||
{ id: "u4", name: "阿辰", avatar: "/avatars/u4.jpg" },
|
||||
],
|
||||
lastMessage: "下次再组",
|
||||
lastMessageAt: "2025-02-15T12:30:00",
|
||||
unreadCount: 0,
|
||||
readonly: true,
|
||||
},
|
||||
]
|
||||
|
||||
export const mockChatMessages: ChatMessage[] = [
|
||||
{
|
||||
id: "msg1",
|
||||
sessionId: "chat1",
|
||||
senderId: "u1",
|
||||
senderName: "小明",
|
||||
senderAvatar: "/avatars/u1.jpg",
|
||||
type: "system",
|
||||
content: "订单创建成功",
|
||||
createdAt: "2025-02-18T14:35:00",
|
||||
},
|
||||
{
|
||||
id: "msg2",
|
||||
sessionId: "chat1",
|
||||
senderId: "u2",
|
||||
senderName: "老李",
|
||||
senderAvatar: "/avatars/u2.jpg",
|
||||
type: "text",
|
||||
content: "在,能打。你想几把?",
|
||||
createdAt: "2025-02-18T14:36:00",
|
||||
},
|
||||
{
|
||||
id: "msg3",
|
||||
sessionId: "chat1",
|
||||
senderId: "u1",
|
||||
senderName: "小明",
|
||||
senderAvatar: "/avatars/u1.jpg",
|
||||
type: "text",
|
||||
content: "8点开行不",
|
||||
createdAt: "2025-02-18T18:30:00",
|
||||
},
|
||||
{
|
||||
id: "msg4",
|
||||
sessionId: "chat1",
|
||||
senderId: "u2",
|
||||
senderName: "老李",
|
||||
senderAvatar: "/avatars/u2.jpg",
|
||||
type: "text",
|
||||
content: "行,到点我拉你",
|
||||
createdAt: "2025-02-18T18:32:00",
|
||||
},
|
||||
]
|
||||
|
||||
export const mockPosts: Post[] = [
|
||||
{
|
||||
id: "p1",
|
||||
author: mockUsers[0],
|
||||
authorRole: "consumer",
|
||||
title: "CS2上分体验分享",
|
||||
content: "昨晚跟阿辰打了三把,前两把顺,第三把差点翻车。总体值这个价。",
|
||||
images: ["/posts/p1-1.jpg"],
|
||||
tags: ["CS2", "上分", "好评"],
|
||||
linkedOrderId: "ord2",
|
||||
likeCount: 42,
|
||||
commentCount: 8,
|
||||
liked: false,
|
||||
pinned: false,
|
||||
createdAt: "2025-02-16T10:00:00",
|
||||
},
|
||||
{
|
||||
id: "p2",
|
||||
author: mockUsers[1],
|
||||
authorRole: "player",
|
||||
title: "新赛季英雄联盟上分攻略",
|
||||
content: "新赛季改动有点多,先别急着硬冲分。前10分钟别乱接团,先稳住发育。",
|
||||
images: [],
|
||||
tags: ["英雄联盟", "攻略", "新赛季"],
|
||||
likeCount: 128,
|
||||
commentCount: 35,
|
||||
liked: true,
|
||||
pinned: true,
|
||||
createdAt: "2025-02-14T08:00:00",
|
||||
},
|
||||
{
|
||||
id: "p3",
|
||||
author: mockUsers[4],
|
||||
authorRole: "player",
|
||||
title: "原神4.5版本日常代肝服务上线",
|
||||
content: "新活动有点肝,没空的话我可以帮清日常,做完发截图。",
|
||||
images: ["/posts/p3-1.jpg", "/posts/p3-2.jpg"],
|
||||
tags: ["原神", "代肝", "新版本"],
|
||||
likeCount: 67,
|
||||
commentCount: 12,
|
||||
liked: false,
|
||||
pinned: false,
|
||||
createdAt: "2025-02-17T14:00:00",
|
||||
},
|
||||
]
|
||||
|
||||
export const mockComments: Comment[] = [
|
||||
{
|
||||
id: "c1",
|
||||
postId: "p1",
|
||||
author: mockUsers[3],
|
||||
content: "收到,下次继续组",
|
||||
likeCount: 15,
|
||||
liked: false,
|
||||
createdAt: "2025-02-16T11:00:00",
|
||||
},
|
||||
{
|
||||
id: "c2",
|
||||
postId: "p1",
|
||||
author: mockUsers[4],
|
||||
content: "他枪法确实硬,不过脾气也直哈哈",
|
||||
likeCount: 8,
|
||||
liked: false,
|
||||
createdAt: "2025-02-16T12:00:00",
|
||||
},
|
||||
{
|
||||
id: "c3",
|
||||
postId: "p2",
|
||||
author: mockUsers[0],
|
||||
content: "我照着打了两把,确实有用",
|
||||
likeCount: 5,
|
||||
liked: true,
|
||||
createdAt: "2025-02-14T10:00:00",
|
||||
},
|
||||
]
|
||||
|
||||
export const mockNotifications: Notification[] = [
|
||||
{
|
||||
id: "n1",
|
||||
type: "order",
|
||||
title: "订单已接单",
|
||||
content: "老李接单了,去聊天里约时间就行",
|
||||
read: false,
|
||||
link: "/order/ord1",
|
||||
createdAt: "2025-02-18T14:35:00",
|
||||
},
|
||||
{
|
||||
id: "n2",
|
||||
type: "order",
|
||||
title: "争议处理中",
|
||||
content: "你提交的订单争议已进入审核",
|
||||
read: true,
|
||||
link: "/dispute/ord4",
|
||||
createdAt: "2025-02-12T10:05:00",
|
||||
},
|
||||
{
|
||||
id: "n3",
|
||||
type: "community",
|
||||
title: "帖子获得点赞",
|
||||
content: "你的帖子「CS2上分体验分享」又多了42个赞",
|
||||
read: false,
|
||||
link: "/post/p1",
|
||||
createdAt: "2025-02-17T20:00:00",
|
||||
},
|
||||
{
|
||||
id: "n4",
|
||||
type: "system",
|
||||
title: "平台公告",
|
||||
content: "春节活动 2 月 3 日上线,活动页明天开放。",
|
||||
read: true,
|
||||
createdAt: "2025-02-01T00:00:00",
|
||||
},
|
||||
{
|
||||
id: "n5",
|
||||
type: "community",
|
||||
title: "新评论",
|
||||
content: "阿辰评论了你的帖子",
|
||||
read: false,
|
||||
link: "/post/p1",
|
||||
createdAt: "2025-02-16T11:00:00",
|
||||
},
|
||||
]
|
||||
|
||||
export const mockTransactions: WalletTransaction[] = [
|
||||
{
|
||||
id: "t1",
|
||||
type: "topup",
|
||||
amount: 500,
|
||||
description: "充值",
|
||||
createdAt: "2025-02-10T10:00:00",
|
||||
},
|
||||
{
|
||||
id: "t2",
|
||||
type: "payment",
|
||||
amount: -116,
|
||||
description: "支付订单 ord2",
|
||||
createdAt: "2025-02-15T10:00:00",
|
||||
},
|
||||
{
|
||||
id: "t3",
|
||||
type: "payment",
|
||||
amount: -99,
|
||||
description: "支付订单 ord1",
|
||||
createdAt: "2025-02-18T14:30:00",
|
||||
},
|
||||
{
|
||||
id: "t4",
|
||||
type: "topup",
|
||||
amount: 200,
|
||||
description: "充值",
|
||||
createdAt: "2025-02-19T09:00:00",
|
||||
},
|
||||
{
|
||||
id: "t5",
|
||||
type: "payment",
|
||||
amount: -69,
|
||||
description: "支付订单 ord3",
|
||||
createdAt: "2025-02-19T20:00:00",
|
||||
},
|
||||
{
|
||||
id: "t6",
|
||||
type: "payment",
|
||||
amount: -87,
|
||||
description: "支付订单 ord4",
|
||||
createdAt: "2025-02-10T16:00:00",
|
||||
},
|
||||
{
|
||||
id: "t7",
|
||||
type: "payment",
|
||||
amount: -54,
|
||||
description: "支付订单 ord5",
|
||||
createdAt: "2025-02-08T21:10:00",
|
||||
},
|
||||
{
|
||||
id: "t8",
|
||||
type: "payment",
|
||||
amount: -38,
|
||||
description: "支付订单 ord6",
|
||||
createdAt: "2025-02-06T19:40:00",
|
||||
},
|
||||
{
|
||||
id: "t9",
|
||||
type: "payment",
|
||||
amount: -57,
|
||||
description: "支付订单 ord7",
|
||||
createdAt: "2025-02-03T23:10:00",
|
||||
},
|
||||
]
|
||||
|
||||
export const currentUser = mockUsers[0]
|
||||
export const walletBalance = 180
|
||||
|
||||
export const mockFavorites: Favorite[] = [
|
||||
{
|
||||
id: "fav1",
|
||||
userId: "u1",
|
||||
targetType: "player",
|
||||
targetId: "u2",
|
||||
createdAt: "2025-02-16T10:00:00",
|
||||
},
|
||||
{
|
||||
id: "fav2",
|
||||
userId: "u1",
|
||||
targetType: "shop",
|
||||
targetId: "shop1",
|
||||
createdAt: "2025-02-17T14:00:00",
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,256 @@
|
||||
import type { ChatMessage, ChatSession } from "../types"
|
||||
|
||||
export const mockChatSessions: ChatSession[] = [
|
||||
{
|
||||
id: "chat1",
|
||||
type: "order",
|
||||
orderId: "ord10",
|
||||
participants: [
|
||||
{ id: "u2", name: "玲玲", avatar: "/avatars/u2.jpg" },
|
||||
{ id: "u7", name: "琪琪", avatar: "/avatars/u2.jpg" },
|
||||
],
|
||||
lastMessage: "好的那我先上号等你",
|
||||
lastMessageAt: "2025-02-06T19:15:00Z",
|
||||
unreadCount: 1,
|
||||
readonly: false,
|
||||
},
|
||||
{
|
||||
id: "chat2",
|
||||
type: "order",
|
||||
orderId: "ord11",
|
||||
participants: [
|
||||
{ id: "u3", name: "zz", avatar: "/avatars/u3.jpg" },
|
||||
{ id: "u9", name: "飞飞", avatar: "/avatars/u4.jpg" },
|
||||
],
|
||||
lastMessage: "走走走开一把",
|
||||
lastMessageAt: "2025-02-08T21:10:00Z",
|
||||
unreadCount: 0,
|
||||
readonly: false,
|
||||
},
|
||||
{
|
||||
id: "chat3",
|
||||
type: "order",
|
||||
orderId: "ord1",
|
||||
participants: [
|
||||
{ id: "u2", name: "玲玲", avatar: "/avatars/u2.jpg" },
|
||||
{ id: "u5", name: "俊俊", avatar: "/avatars/u5.jpg" },
|
||||
],
|
||||
lastMessage: "好的辛苦了",
|
||||
lastMessageAt: "2025-01-05T22:15:00Z",
|
||||
unreadCount: 0,
|
||||
readonly: true,
|
||||
},
|
||||
{
|
||||
id: "chat4",
|
||||
type: "consultation",
|
||||
participants: [
|
||||
{ id: "u1", name: "小陈", avatar: "/avatars/u1.jpg" },
|
||||
{ id: "u7", name: "琪琪", avatar: "/avatars/u2.jpg" },
|
||||
],
|
||||
lastMessage: "周末能接单吗",
|
||||
lastMessageAt: "2025-02-09T15:00:00Z",
|
||||
unreadCount: 0,
|
||||
readonly: false,
|
||||
},
|
||||
{
|
||||
id: "chat5",
|
||||
type: "order",
|
||||
orderId: "ord2",
|
||||
participants: [
|
||||
{ id: "u1", name: "小陈", avatar: "/avatars/u1.jpg" },
|
||||
{ id: "u6", name: "Winter", avatar: "/avatars/u1.jpg" },
|
||||
],
|
||||
lastMessage: "下次再组",
|
||||
lastMessageAt: "2025-01-08T17:45:00Z",
|
||||
unreadCount: 0,
|
||||
readonly: true,
|
||||
},
|
||||
{
|
||||
id: "chat6",
|
||||
type: "consultation",
|
||||
participants: [
|
||||
{ id: "u4", name: "莫莫", avatar: "/avatars/u4.jpg" },
|
||||
{ id: "u8", name: "暗影", avatar: "/avatars/u3.jpg" },
|
||||
],
|
||||
lastMessage: "你CS2什么段位",
|
||||
lastMessageAt: "2025-02-10T20:30:00Z",
|
||||
unreadCount: 2,
|
||||
readonly: false,
|
||||
},
|
||||
{
|
||||
id: "chat7",
|
||||
type: "order",
|
||||
orderId: "ord5",
|
||||
participants: [
|
||||
{ id: "u1", name: "小陈", avatar: "/avatars/u1.jpg" },
|
||||
{ id: "u9", name: "飞飞", avatar: "/avatars/u4.jpg" },
|
||||
],
|
||||
lastMessage: "打得不错 下次还找你",
|
||||
lastMessageAt: "2025-01-17T23:10:00Z",
|
||||
unreadCount: 0,
|
||||
readonly: true,
|
||||
},
|
||||
]
|
||||
|
||||
export const mockChatMessages: ChatMessage[] = [
|
||||
{
|
||||
id: "msg1",
|
||||
sessionId: "chat1",
|
||||
senderId: "system",
|
||||
senderName: "系统",
|
||||
senderAvatar: "",
|
||||
type: "system",
|
||||
content: "订单已创建,请协商游戏时间",
|
||||
createdAt: "2025-02-06T19:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg2",
|
||||
sessionId: "chat1",
|
||||
senderId: "u7",
|
||||
senderName: "琪琪",
|
||||
senderAvatar: "/avatars/u2.jpg",
|
||||
type: "text",
|
||||
content: "在的,你现在能打吗",
|
||||
createdAt: "2025-02-06T19:02:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg3",
|
||||
sessionId: "chat1",
|
||||
senderId: "u2",
|
||||
senderName: "玲玲",
|
||||
senderAvatar: "/avatars/u2.jpg",
|
||||
type: "text",
|
||||
content: "可以 我先上号",
|
||||
createdAt: "2025-02-06T19:05:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg4",
|
||||
sessionId: "chat1",
|
||||
senderId: "u7",
|
||||
senderName: "琪琪",
|
||||
senderAvatar: "/avatars/u2.jpg",
|
||||
type: "text",
|
||||
content: "你ID多少 我加你",
|
||||
createdAt: "2025-02-06T19:08:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg5",
|
||||
sessionId: "chat1",
|
||||
senderId: "u2",
|
||||
senderName: "玲玲",
|
||||
senderAvatar: "/avatars/u2.jpg",
|
||||
type: "text",
|
||||
content: "玲玲不会输,区服是微信区",
|
||||
createdAt: "2025-02-06T19:10:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg6",
|
||||
sessionId: "chat1",
|
||||
senderId: "u7",
|
||||
senderName: "琪琪",
|
||||
senderAvatar: "/avatars/u2.jpg",
|
||||
type: "text",
|
||||
content: "好 加了 你通过一下",
|
||||
createdAt: "2025-02-06T19:12:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg7",
|
||||
sessionId: "chat1",
|
||||
senderId: "u2",
|
||||
senderName: "玲玲",
|
||||
senderAvatar: "/avatars/u2.jpg",
|
||||
type: "text",
|
||||
content: "好的那我先上号等你",
|
||||
createdAt: "2025-02-06T19:15:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg8",
|
||||
sessionId: "chat2",
|
||||
senderId: "system",
|
||||
senderName: "系统",
|
||||
senderAvatar: "",
|
||||
type: "system",
|
||||
content: "订单已创建",
|
||||
createdAt: "2025-02-08T21:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg9",
|
||||
sessionId: "chat2",
|
||||
senderId: "u9",
|
||||
senderName: "飞飞",
|
||||
senderAvatar: "/avatars/u4.jpg",
|
||||
type: "text",
|
||||
content: "来了 你steam名字是啥",
|
||||
createdAt: "2025-02-08T21:06:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg10",
|
||||
sessionId: "chat2",
|
||||
senderId: "u3",
|
||||
senderName: "zz",
|
||||
senderAvatar: "/avatars/u3.jpg",
|
||||
type: "text",
|
||||
content: "zz_noob 别笑",
|
||||
createdAt: "2025-02-08T21:07:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg11",
|
||||
sessionId: "chat2",
|
||||
senderId: "u9",
|
||||
senderName: "飞飞",
|
||||
senderAvatar: "/avatars/u4.jpg",
|
||||
type: "text",
|
||||
content: "哈哈没事 加了",
|
||||
createdAt: "2025-02-08T21:08:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg12",
|
||||
sessionId: "chat2",
|
||||
senderId: "u3",
|
||||
senderName: "zz",
|
||||
senderAvatar: "/avatars/u3.jpg",
|
||||
type: "text",
|
||||
content: "走走走开一把",
|
||||
createdAt: "2025-02-08T21:10:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg13",
|
||||
sessionId: "chat4",
|
||||
senderId: "u1",
|
||||
senderName: "小陈",
|
||||
senderAvatar: "/avatars/u1.jpg",
|
||||
type: "text",
|
||||
content: "你好 想问下你周末能接王者的单吗",
|
||||
createdAt: "2025-02-09T14:55:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg14",
|
||||
sessionId: "chat4",
|
||||
senderId: "u7",
|
||||
senderName: "琪琪",
|
||||
senderAvatar: "/avatars/u2.jpg",
|
||||
type: "text",
|
||||
content: "可以的 周末全天都在 你直接下单就行",
|
||||
createdAt: "2025-02-09T14:58:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg15",
|
||||
sessionId: "chat4",
|
||||
senderId: "u1",
|
||||
senderName: "小陈",
|
||||
senderAvatar: "/avatars/u1.jpg",
|
||||
type: "text",
|
||||
content: "周末能接单吗",
|
||||
createdAt: "2025-02-09T15:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "msg16",
|
||||
sessionId: "chat6",
|
||||
senderId: "u4",
|
||||
senderName: "莫莫",
|
||||
senderAvatar: "/avatars/u4.jpg",
|
||||
type: "text",
|
||||
content: "你CS2什么段位",
|
||||
createdAt: "2025-02-10T20:30:00Z",
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,158 @@
|
||||
import type { Comment } from "../types"
|
||||
import { mockUsers } from "./users"
|
||||
|
||||
export const mockComments: Comment[] = [
|
||||
{
|
||||
id: "c1",
|
||||
postId: "p1",
|
||||
author: mockUsers[4],
|
||||
content: "谢谢老板 下次还可以组",
|
||||
likeCount: 12,
|
||||
liked: false,
|
||||
createdAt: "2025-01-02T11:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "c2",
|
||||
postId: "p1",
|
||||
author: mockUsers[2],
|
||||
content: "这个活动力度可以 我去看看",
|
||||
likeCount: 5,
|
||||
liked: false,
|
||||
createdAt: "2025-01-02T12:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "c3",
|
||||
postId: "p2",
|
||||
author: mockUsers[4],
|
||||
content: "收到好评 下次继续",
|
||||
likeCount: 8,
|
||||
liked: false,
|
||||
createdAt: "2025-01-06T10:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "c4",
|
||||
postId: "p2",
|
||||
author: mockUsers[3],
|
||||
content: "俊俊确实稳 我也找过他",
|
||||
likeCount: 6,
|
||||
liked: true,
|
||||
createdAt: "2025-01-06T11:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "c5",
|
||||
postId: "p3",
|
||||
author: mockUsers[0],
|
||||
content: "第三点说得对 之前就是自己乱搞输的",
|
||||
likeCount: 15,
|
||||
liked: false,
|
||||
createdAt: "2025-01-11T08:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "c6",
|
||||
postId: "p3",
|
||||
author: mockUsers[1],
|
||||
content: "学到了 下次试试",
|
||||
likeCount: 3,
|
||||
liked: false,
|
||||
createdAt: "2025-01-11T09:20:00Z",
|
||||
},
|
||||
{
|
||||
id: "c7",
|
||||
postId: "p3",
|
||||
author: mockUsers[5],
|
||||
content: "补充一下 打野来gank的时候别退 跟着打就行",
|
||||
likeCount: 22,
|
||||
liked: true,
|
||||
createdAt: "2025-01-11T10:45:00Z",
|
||||
},
|
||||
{
|
||||
id: "c8",
|
||||
postId: "p4",
|
||||
author: mockUsers[6],
|
||||
content: "确实有些人态度不行 但大部分还是靠谱的",
|
||||
likeCount: 18,
|
||||
liked: false,
|
||||
createdAt: "2025-01-14T00:10:00Z",
|
||||
},
|
||||
{
|
||||
id: "c9",
|
||||
postId: "p4",
|
||||
author: mockUsers[9],
|
||||
content: "我们店里不会这样 有问题随时找我",
|
||||
likeCount: 7,
|
||||
liked: false,
|
||||
createdAt: "2025-01-14T08:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "c10",
|
||||
postId: "p5",
|
||||
author: mockUsers[0],
|
||||
content: "Winter确实不催人 这点很舒服",
|
||||
likeCount: 4,
|
||||
liked: false,
|
||||
createdAt: "2025-01-09T19:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "c11",
|
||||
postId: "p6",
|
||||
author: mockUsers[3],
|
||||
content: "决赛圈那段说得好 我每次都死在跑圈",
|
||||
likeCount: 11,
|
||||
liked: false,
|
||||
createdAt: "2025-01-18T16:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "c12",
|
||||
postId: "p6",
|
||||
author: mockUsers[0],
|
||||
content: "稳健打法确实适合新手 我试了几把有效果",
|
||||
likeCount: 8,
|
||||
liked: true,
|
||||
createdAt: "2025-01-19T10:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "c13",
|
||||
postId: "p7",
|
||||
author: mockUsers[6],
|
||||
content: "谢谢认可!下次还可以组",
|
||||
likeCount: 14,
|
||||
liked: false,
|
||||
createdAt: "2025-01-15T22:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "c14",
|
||||
postId: "p7",
|
||||
author: mockUsers[1],
|
||||
content: "女打手这么猛的吗 我也想试试",
|
||||
likeCount: 9,
|
||||
liked: false,
|
||||
createdAt: "2025-01-16T08:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "c15",
|
||||
postId: "p8",
|
||||
author: mockUsers[8],
|
||||
content: "我可以 私聊了",
|
||||
likeCount: 2,
|
||||
liked: false,
|
||||
createdAt: "2025-01-22T12:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "c16",
|
||||
postId: "p9",
|
||||
author: mockUsers[8],
|
||||
content: "谢谢老板好评 准时上线是基本的",
|
||||
likeCount: 6,
|
||||
liked: false,
|
||||
createdAt: "2025-01-19T00:10:00Z",
|
||||
},
|
||||
{
|
||||
id: "c17",
|
||||
postId: "p10",
|
||||
author: mockUsers[7],
|
||||
content: "谢谢推荐",
|
||||
likeCount: 3,
|
||||
liked: false,
|
||||
createdAt: "2025-01-14T11:00:00Z",
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,25 @@
|
||||
import type { Dispute } from "../types"
|
||||
|
||||
export const mockDisputes: Dispute[] = [
|
||||
{
|
||||
id: "d1",
|
||||
orderId: "ord14",
|
||||
initiatorId: "u3",
|
||||
initiatorName: "zz",
|
||||
reason: "打了两局DOTA,第二局中途说有事直接退了,等了半小时没回来。约好的两局只打了一局半。",
|
||||
evidence: ["/evidence/d1-1.jpg", "/evidence/d1-2.jpg"],
|
||||
status: "reviewing",
|
||||
createdAt: "2025-02-15T10:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "d2",
|
||||
orderId: "ord10",
|
||||
initiatorId: "u7",
|
||||
initiatorName: "琪琪",
|
||||
reason: "对方下单后一直不上线,约了三次时间都放鸽子,已经拖了两天了。",
|
||||
evidence: ["/evidence/d2-1.jpg"],
|
||||
status: "resolved",
|
||||
result: "partial_refund",
|
||||
createdAt: "2025-02-08T12:00:00Z",
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,74 @@
|
||||
import type { Favorite } from "../types"
|
||||
|
||||
export const mockFavorites: Favorite[] = [
|
||||
{
|
||||
id: "fav1",
|
||||
userId: "u1",
|
||||
targetType: "player",
|
||||
targetId: "u5",
|
||||
createdAt: "2025-01-06T10:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "fav2",
|
||||
userId: "u1",
|
||||
targetType: "shop",
|
||||
targetId: "shop1",
|
||||
createdAt: "2025-01-10T14:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "fav3",
|
||||
userId: "u1",
|
||||
targetType: "player",
|
||||
targetId: "u7",
|
||||
createdAt: "2025-01-16T20:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "fav4",
|
||||
userId: "u2",
|
||||
targetType: "player",
|
||||
targetId: "u6",
|
||||
createdAt: "2025-01-09T18:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "fav5",
|
||||
userId: "u2",
|
||||
targetType: "shop",
|
||||
targetId: "shop2",
|
||||
createdAt: "2025-01-12T09:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "fav6",
|
||||
userId: "u3",
|
||||
targetType: "player",
|
||||
targetId: "u8",
|
||||
createdAt: "2025-01-12T01:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "fav7",
|
||||
userId: "u4",
|
||||
targetType: "player",
|
||||
targetId: "u7",
|
||||
createdAt: "2025-01-15T22:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "fav8",
|
||||
userId: "u4",
|
||||
targetType: "shop",
|
||||
targetId: "shop1",
|
||||
createdAt: "2025-01-20T11:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "fav9",
|
||||
userId: "u1",
|
||||
targetType: "player",
|
||||
targetId: "u9",
|
||||
createdAt: "2025-01-18T23:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "fav10",
|
||||
userId: "u3",
|
||||
targetType: "shop",
|
||||
targetId: "shop3",
|
||||
createdAt: "2025-02-09T15:00:00Z",
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,16 @@
|
||||
import type { Game } from "../types"
|
||||
|
||||
export const mockGames: Game[] = [
|
||||
{ id: "g1", name: "英雄联盟", icon: "Swords", category: "MOBA" },
|
||||
{ id: "g2", name: "王者荣耀", icon: "Crown", category: "MOBA" },
|
||||
{ id: "g3", name: "CS2", icon: "Crosshair", category: "FPS" },
|
||||
{ id: "g4", name: "永劫无间", icon: "Sword", category: "动作" },
|
||||
{ id: "g5", name: "原神", icon: "Sparkles", category: "RPG" },
|
||||
{ id: "g6", name: "和平精英", icon: "Target", category: "FPS" },
|
||||
{ id: "g7", name: "DOTA2", icon: "Shield", category: "MOBA" },
|
||||
{ id: "g8", name: "无畏契约", icon: "Zap", category: "FPS" },
|
||||
{ id: "g9", name: "绝区零", icon: "Flame", category: "动作" },
|
||||
{ id: "g10", name: "崩坏:星穹铁道", icon: "Star", category: "RPG" },
|
||||
{ id: "g11", name: "第五人格", icon: "Ghost", category: "动作" },
|
||||
{ id: "g12", name: "三角洲行动", icon: "Radar", category: "FPS" },
|
||||
]
|
||||
@@ -0,0 +1,14 @@
|
||||
export { mockChatMessages, mockChatSessions } from "./chat"
|
||||
export { mockComments } from "./comments"
|
||||
export { mockDisputes } from "./disputes"
|
||||
export { mockFavorites } from "./favorites"
|
||||
export { mockGames } from "./games"
|
||||
export { mockNotifications } from "./notifications"
|
||||
export { mockOrders } from "./orders"
|
||||
export { mockPlayers } from "./players"
|
||||
export { mockPosts } from "./posts"
|
||||
export { mockReviews } from "./reviews"
|
||||
export { mockServices } from "./services"
|
||||
export { mockShops } from "./shops"
|
||||
export { mockTransactions, walletBalance } from "./transactions"
|
||||
export { currentUser, mockUsers } from "./users"
|
||||
@@ -0,0 +1,109 @@
|
||||
import type { Notification } from "../types"
|
||||
|
||||
export const mockNotifications: Notification[] = [
|
||||
{
|
||||
id: "n1",
|
||||
type: "order",
|
||||
title: "订单已接单",
|
||||
content: "琪琪接了你的王者荣耀订单,去聊天约时间吧",
|
||||
read: false,
|
||||
link: "/order/ord10",
|
||||
createdAt: "2025-02-06T19:08:00Z",
|
||||
},
|
||||
{
|
||||
id: "n2",
|
||||
type: "order",
|
||||
title: "订单已完成",
|
||||
content: "你和俊俊的LOL订单已完成,快去评价吧",
|
||||
read: false,
|
||||
link: "/order/ord1",
|
||||
createdAt: "2025-01-05T22:25:00Z",
|
||||
},
|
||||
{
|
||||
id: "n3",
|
||||
type: "order",
|
||||
title: "争议处理中",
|
||||
content: "你提交的订单争议已进入审核,请耐心等待",
|
||||
read: true,
|
||||
link: "/dispute/ord14",
|
||||
createdAt: "2025-02-15T10:05:00Z",
|
||||
},
|
||||
{
|
||||
id: "n4",
|
||||
type: "community",
|
||||
title: "帖子获得点赞",
|
||||
content: "你的帖子「找了个LOL陪玩 三把全赢了」又多了87个赞",
|
||||
read: false,
|
||||
link: "/post/p1",
|
||||
createdAt: "2025-01-08T20:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "n5",
|
||||
type: "community",
|
||||
title: "新评论",
|
||||
content: "俊俊评论了你的帖子",
|
||||
read: false,
|
||||
link: "/post/p2",
|
||||
createdAt: "2025-01-06T10:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "n6",
|
||||
type: "system",
|
||||
title: "平台公告",
|
||||
content: "春节活动上线,2月1日至2月15日全场服务享9折优惠",
|
||||
read: true,
|
||||
createdAt: "2025-01-28T00:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "n7",
|
||||
type: "order",
|
||||
title: "新订单待接单",
|
||||
content: "莫莫下了一个原神深渊代打的单,快去看看",
|
||||
read: false,
|
||||
link: "/order/ord12",
|
||||
createdAt: "2025-02-10T20:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "n8",
|
||||
type: "community",
|
||||
title: "帖子被引用",
|
||||
content: "zz引用了你的帖子「吐槽一下,有些打手真的不行」",
|
||||
read: true,
|
||||
link: "/post/p10",
|
||||
createdAt: "2025-01-14T10:05:00Z",
|
||||
},
|
||||
{
|
||||
id: "n9",
|
||||
type: "system",
|
||||
title: "认证通过",
|
||||
content: "你的打手认证已通过,现在可以发布服务了",
|
||||
read: true,
|
||||
createdAt: "2024-12-20T09:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "n10",
|
||||
type: "order",
|
||||
title: "订单已取消",
|
||||
content: "玲玲取消了CS2车队位的订单",
|
||||
read: true,
|
||||
link: "/order/ord15",
|
||||
createdAt: "2025-02-16T18:05:00Z",
|
||||
},
|
||||
{
|
||||
id: "n11",
|
||||
type: "community",
|
||||
title: "新评论",
|
||||
content: "Winter评论了你的帖子「LOL双排接单攻略」",
|
||||
read: false,
|
||||
link: "/post/p3",
|
||||
createdAt: "2025-01-11T10:45:00Z",
|
||||
},
|
||||
{
|
||||
id: "n12",
|
||||
type: "system",
|
||||
title: "系统维护通知",
|
||||
content: "2月20日凌晨2:00-4:00进行系统维护,届时无法下单",
|
||||
read: false,
|
||||
createdAt: "2025-02-18T12:00:00Z",
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,235 @@
|
||||
import type { Order } from "../types"
|
||||
import { mockServices } from "./services"
|
||||
|
||||
export const mockOrders: Order[] = [
|
||||
{
|
||||
id: "ord1",
|
||||
consumerId: "u2",
|
||||
consumerName: "玲玲",
|
||||
playerId: "u5",
|
||||
playerName: "俊俊",
|
||||
shopId: "shop1",
|
||||
shopName: "老王游戏工作室",
|
||||
service: mockServices[0],
|
||||
status: "completed",
|
||||
totalPrice: 75,
|
||||
note: "麻烦打3局,我今天状态不好一直输",
|
||||
createdAt: "2025-01-05T19:30:00Z",
|
||||
acceptedAt: "2025-01-05T19:45:00Z",
|
||||
closedAt: "2025-01-05T22:10:00Z",
|
||||
completedAt: "2025-01-05T22:25:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord2",
|
||||
consumerId: "u1",
|
||||
consumerName: "小陈",
|
||||
playerId: "u6",
|
||||
playerName: "Winter",
|
||||
shopId: "shop2",
|
||||
shopName: "Yuki 小屋",
|
||||
service: mockServices[3],
|
||||
status: "completed",
|
||||
totalPrice: 54,
|
||||
note: "3星,我用鲁班",
|
||||
createdAt: "2025-01-08T15:00:00Z",
|
||||
acceptedAt: "2025-01-08T15:12:00Z",
|
||||
closedAt: "2025-01-08T17:40:00Z",
|
||||
completedAt: "2025-01-08T17:55:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord3",
|
||||
consumerId: "u3",
|
||||
consumerName: "zz",
|
||||
playerId: "u8",
|
||||
playerName: "暗影",
|
||||
service: mockServices[9],
|
||||
status: "completed",
|
||||
totalPrice: 90,
|
||||
createdAt: "2025-01-11T22:00:00Z",
|
||||
acceptedAt: "2025-01-11T22:05:00Z",
|
||||
closedAt: "2025-01-12T00:30:00Z",
|
||||
completedAt: "2025-01-12T00:45:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord4",
|
||||
consumerId: "u4",
|
||||
consumerName: "莫莫",
|
||||
playerId: "u7",
|
||||
playerName: "琪琪",
|
||||
shopId: "shop1",
|
||||
shopName: "老王游戏工作室",
|
||||
service: mockServices[7],
|
||||
status: "completed",
|
||||
totalPrice: 44,
|
||||
note: "2局就行,主要想练练枪法",
|
||||
createdAt: "2025-01-14T20:00:00Z",
|
||||
acceptedAt: "2025-01-14T20:08:00Z",
|
||||
closedAt: "2025-01-14T21:50:00Z",
|
||||
completedAt: "2025-01-14T22:05:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord5",
|
||||
consumerId: "u1",
|
||||
consumerName: "小陈",
|
||||
playerId: "u9",
|
||||
playerName: "飞飞",
|
||||
shopId: "shop3",
|
||||
shopName: "浩哥开黑",
|
||||
service: mockServices[12],
|
||||
status: "completed",
|
||||
totalPrice: 60,
|
||||
note: "3局,打辅助配合我就行",
|
||||
createdAt: "2025-01-17T20:30:00Z",
|
||||
acceptedAt: "2025-01-17T20:35:00Z",
|
||||
closedAt: "2025-01-17T23:00:00Z",
|
||||
completedAt: "2025-01-17T23:15:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord6",
|
||||
consumerId: "u3",
|
||||
consumerName: "zz",
|
||||
playerId: "u6",
|
||||
playerName: "Winter",
|
||||
shopId: "shop2",
|
||||
shopName: "Yuki 小屋",
|
||||
service: mockServices[5],
|
||||
status: "completed",
|
||||
totalPrice: 40,
|
||||
note: "2局,我是新手别嫌弃",
|
||||
createdAt: "2025-01-20T21:00:00Z",
|
||||
acceptedAt: "2025-01-20T21:10:00Z",
|
||||
closedAt: "2025-01-20T23:20:00Z",
|
||||
completedAt: "2025-01-20T23:35:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord7",
|
||||
consumerId: "u2",
|
||||
consumerName: "玲玲",
|
||||
playerId: "u9",
|
||||
playerName: "飞飞",
|
||||
shopId: "shop3",
|
||||
shopName: "浩哥开黑",
|
||||
service: mockServices[13],
|
||||
status: "completed",
|
||||
totalPrice: 30,
|
||||
createdAt: "2025-01-23T10:00:00Z",
|
||||
acceptedAt: "2025-01-23T10:15:00Z",
|
||||
closedAt: "2025-01-23T11:00:00Z",
|
||||
completedAt: "2025-01-23T11:20:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord8",
|
||||
consumerId: "u4",
|
||||
consumerName: "莫莫",
|
||||
playerId: "u5",
|
||||
playerName: "俊俊",
|
||||
shopId: "shop1",
|
||||
shopName: "老王游戏工作室",
|
||||
service: mockServices[1],
|
||||
status: "pending_review",
|
||||
totalPrice: 40,
|
||||
note: "2局,随便打打",
|
||||
createdAt: "2025-02-01T20:00:00Z",
|
||||
acceptedAt: "2025-02-01T20:10:00Z",
|
||||
closedAt: "2025-02-01T22:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord9",
|
||||
consumerId: "u1",
|
||||
consumerName: "小陈",
|
||||
playerId: "u8",
|
||||
playerName: "暗影",
|
||||
service: mockServices[11],
|
||||
status: "pending_review",
|
||||
totalPrice: 120,
|
||||
createdAt: "2025-02-03T22:30:00Z",
|
||||
acceptedAt: "2025-02-03T22:35:00Z",
|
||||
closedAt: "2025-02-04T01:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord10",
|
||||
consumerId: "u2",
|
||||
consumerName: "玲玲",
|
||||
playerId: "u7",
|
||||
playerName: "琪琪",
|
||||
shopId: "shop1",
|
||||
shopName: "老王游戏工作室",
|
||||
service: mockServices[6],
|
||||
status: "in_progress",
|
||||
totalPrice: 84,
|
||||
note: "3星,我段位铂金2",
|
||||
createdAt: "2025-02-06T19:00:00Z",
|
||||
acceptedAt: "2025-02-06T19:08:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord11",
|
||||
consumerId: "u3",
|
||||
consumerName: "zz",
|
||||
playerId: "u9",
|
||||
playerName: "飞飞",
|
||||
shopId: "shop3",
|
||||
shopName: "浩哥开黑",
|
||||
service: mockServices[14],
|
||||
status: "in_progress",
|
||||
totalPrice: 50,
|
||||
createdAt: "2025-02-08T21:00:00Z",
|
||||
acceptedAt: "2025-02-08T21:05:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord12",
|
||||
consumerId: "u4",
|
||||
consumerName: "莫莫",
|
||||
playerId: "u6",
|
||||
playerName: "Winter",
|
||||
shopId: "shop2",
|
||||
shopName: "Yuki 小屋",
|
||||
service: mockServices[4],
|
||||
status: "pending_accept",
|
||||
totalPrice: 30,
|
||||
note: "2局轻松局,不用太认真",
|
||||
createdAt: "2025-02-10T20:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord13",
|
||||
consumerId: "u1",
|
||||
consumerName: "小陈",
|
||||
playerId: "u7",
|
||||
playerName: "琪琪",
|
||||
shopId: "shop1",
|
||||
shopName: "老王游戏工作室",
|
||||
service: mockServices[8],
|
||||
status: "pending_close",
|
||||
totalPrice: 18,
|
||||
createdAt: "2025-02-12T14:00:00Z",
|
||||
acceptedAt: "2025-02-12T14:10:00Z",
|
||||
closedAt: "2025-02-12T15:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord14",
|
||||
consumerId: "u3",
|
||||
consumerName: "zz",
|
||||
playerId: "u8",
|
||||
playerName: "暗影",
|
||||
service: mockServices[10],
|
||||
status: "disputed",
|
||||
totalPrice: 60,
|
||||
note: "2局DOTA,我是herald别介意",
|
||||
createdAt: "2025-02-14T21:00:00Z",
|
||||
acceptedAt: "2025-02-14T21:08:00Z",
|
||||
closedAt: "2025-02-14T23:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "ord15",
|
||||
consumerId: "u2",
|
||||
consumerName: "玲玲",
|
||||
playerId: "u5",
|
||||
playerName: "俊俊",
|
||||
shopId: "shop1",
|
||||
shopName: "老王游戏工作室",
|
||||
service: mockServices[2],
|
||||
status: "cancelled",
|
||||
totalPrice: 44,
|
||||
note: "临时有事取消了,下次再约",
|
||||
createdAt: "2025-02-16T18:00:00Z",
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,69 @@
|
||||
import type { Player } from "../types"
|
||||
import { mockServices } from "./services"
|
||||
import { mockUsers } from "./users"
|
||||
|
||||
export const mockPlayers: Player[] = [
|
||||
{
|
||||
id: "u5",
|
||||
user: mockUsers[4],
|
||||
rating: 4.2,
|
||||
totalOrders: 156,
|
||||
completionRate: 0.94,
|
||||
status: "available",
|
||||
games: ["英雄联盟", "王者荣耀"],
|
||||
services: mockServices.filter((s) => s.playerId === "u5"),
|
||||
shopId: "shop1",
|
||||
shopName: "老王游戏工作室",
|
||||
tags: ["闷声干活", "不催不急", "准时上线"],
|
||||
},
|
||||
{
|
||||
id: "u6",
|
||||
user: mockUsers[5],
|
||||
rating: 4.7,
|
||||
totalOrders: 412,
|
||||
completionRate: 0.97,
|
||||
status: "available",
|
||||
games: ["英雄联盟", "DOTA2", "原神", "第五人格"],
|
||||
services: mockServices.filter((s) => s.playerId === "u6"),
|
||||
shopId: "shop2",
|
||||
shopName: "Yuki 小屋",
|
||||
tags: ["态度好", "会讲思路", "老手"],
|
||||
},
|
||||
{
|
||||
id: "u7",
|
||||
user: mockUsers[6],
|
||||
rating: 4.5,
|
||||
totalOrders: 289,
|
||||
completionRate: 0.95,
|
||||
status: "busy",
|
||||
games: ["王者荣耀", "和平精英", "绝区零"],
|
||||
services: mockServices.filter((s) => s.playerId === "u7"),
|
||||
shopId: "shop1",
|
||||
shopName: "老王游戏工作室",
|
||||
tags: ["女打手", "技术硬", "不闲聊"],
|
||||
},
|
||||
{
|
||||
id: "u8",
|
||||
user: mockUsers[7],
|
||||
rating: 4.8,
|
||||
totalOrders: 97,
|
||||
completionRate: 0.91,
|
||||
status: "available",
|
||||
games: ["无畏契约", "DOTA2", "CS2"],
|
||||
services: mockServices.filter((s) => s.playerId === "u8"),
|
||||
tags: ["效率高", "话少", "枪法硬"],
|
||||
},
|
||||
{
|
||||
id: "u9",
|
||||
user: mockUsers[8],
|
||||
rating: 4.4,
|
||||
totalOrders: 203,
|
||||
completionRate: 0.98,
|
||||
status: "offline",
|
||||
games: ["英雄联盟", "崩坏:星穹铁道", "三角洲行动"],
|
||||
services: mockServices.filter((s) => s.playerId === "u9"),
|
||||
shopId: "shop3",
|
||||
shopName: "浩哥开黑",
|
||||
tags: ["不掉线", "守时", "长期接单"],
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,160 @@
|
||||
import type { Post } from "../types"
|
||||
import { mockUsers } from "./users"
|
||||
|
||||
export const mockPosts: Post[] = [
|
||||
{
|
||||
id: "p1",
|
||||
author: mockUsers[10],
|
||||
authorRole: "owner",
|
||||
title: "Yuki小屋新年活动!1月全场8折,限时7天",
|
||||
content:
|
||||
"新年快乐各位!1月份搞个小活动,全部服务打八折,包括LOL、第五人格、王者都有。时间就到1月15号,有需要的赶紧来,名额有限哈。Winter和我都在,随时接单。",
|
||||
images: ["/posts/p1-1.jpg"],
|
||||
tags: ["Yuki小屋", "活动", "英雄联盟", "第五人格", "王者荣耀"],
|
||||
likeCount: 87,
|
||||
commentCount: 14,
|
||||
liked: false,
|
||||
pinned: true,
|
||||
createdAt: "2025-01-02T10:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "p2",
|
||||
author: mockUsers[1],
|
||||
authorRole: "consumer",
|
||||
title: "跟俊俊打了三局LOL,赢了两把!",
|
||||
content:
|
||||
"之前一直输一直输,今天下单试了一下,俊俊打野,我打中单,配合还挺顺的。第一局有点磨合,后面两局就好多了。话不多但是打得认真,该抓的时候就来,不会乱。下次还找他。",
|
||||
images: ["/posts/p2-1.jpg", "/posts/p2-2.jpg"],
|
||||
tags: ["英雄联盟", "LOL", "秀单"],
|
||||
linkedOrderId: "ord1",
|
||||
likeCount: 43,
|
||||
commentCount: 8,
|
||||
liked: true,
|
||||
pinned: false,
|
||||
createdAt: "2025-01-06T09:15:00Z",
|
||||
},
|
||||
{
|
||||
id: "p3",
|
||||
author: mockUsers[4],
|
||||
authorRole: "player",
|
||||
title: "LOL双排接单攻略——怎么配合你的打手赢更多",
|
||||
content:
|
||||
"接了这么多单,发现很多人不知道怎么配合打手,导致明明打手发挥不错但还是输了。说几个常见问题:\n\n1. 打手在打野的时候别乱走,跟着走就行\n2. 团战不要先手,等打手起手再跟\n3. 有什么想法直接说,别憋着,我们可以调整\n\n其实很简单,信任就行,别自己乱搞。",
|
||||
images: [],
|
||||
tags: ["英雄联盟", "LOL", "攻略", "双排技巧"],
|
||||
likeCount: 126,
|
||||
commentCount: 19,
|
||||
liked: false,
|
||||
pinned: true,
|
||||
createdAt: "2025-01-10T20:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "p4",
|
||||
author: mockUsers[2],
|
||||
authorRole: "consumer",
|
||||
title: "吐槽一下,有些打手真的不行",
|
||||
content:
|
||||
"不点名,就说一下体验。下了个单,打手全程不说话,问他要不要换个打法也不回,最后输了还说是我的问题。我知道我菜,但你接单就得有个服务态度吧?钱也不少收。\n\n后来换了家,好多了,所以还是要多看评价再下单。",
|
||||
images: [],
|
||||
tags: ["吐槽", "陪玩体验"],
|
||||
likeCount: 58,
|
||||
commentCount: 11,
|
||||
liked: false,
|
||||
pinned: false,
|
||||
createdAt: "2025-01-13T22:45:00Z",
|
||||
},
|
||||
{
|
||||
id: "p5",
|
||||
author: mockUsers[0],
|
||||
authorRole: "consumer",
|
||||
title: "和Winter打王者,体验还不错",
|
||||
content:
|
||||
"我用鲁班,他配合我,打了三局赢了两局。主要是他不催,我手速慢他也没说什么,就正常打。上了两颗星,今天满足了。",
|
||||
images: ["/posts/p5-1.jpg"],
|
||||
tags: ["王者荣耀", "秀单", "Yuki小屋"],
|
||||
linkedOrderId: "ord2",
|
||||
likeCount: 31,
|
||||
commentCount: 5,
|
||||
liked: false,
|
||||
pinned: false,
|
||||
createdAt: "2025-01-09T18:20:00Z",
|
||||
},
|
||||
{
|
||||
id: "p6",
|
||||
author: mockUsers[6],
|
||||
authorRole: "player",
|
||||
title: "和平精英吃鸡小技巧,稳健打法分享",
|
||||
content:
|
||||
"很多人喜欢一上来就冲,其实稳健打法胜率更高。我的习惯是:\n\n- 落点选边缘区,物资够用就行,别贪\n- 中期跟圈走,不主动找人\n- 决赛圈再打,这时候人少了,优势更大\n\n当然这不是唯一打法,但对新手来说最容易上手。有问题可以问我。",
|
||||
images: ["/posts/p6-1.jpg", "/posts/p6-2.jpg"],
|
||||
tags: ["和平精英", "吃鸡", "攻略"],
|
||||
likeCount: 94,
|
||||
commentCount: 16,
|
||||
liked: true,
|
||||
pinned: false,
|
||||
createdAt: "2025-01-18T15:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "p7",
|
||||
author: mockUsers[3],
|
||||
authorRole: "consumer",
|
||||
title: "琪琪带我打和平,枪法真的稳",
|
||||
content:
|
||||
"之前一直觉得女生打手可能没那么厉害,结果被打脸了。琪琪枪法比我认识的大多数男生都稳,决赛圈那把压枪压得我看呆了。两局都进了前三,第二局吃鸡。下次还找她。",
|
||||
images: ["/posts/p7-1.jpg"],
|
||||
tags: ["和平精英", "秀单", "老王游戏工作室"],
|
||||
linkedOrderId: "ord4",
|
||||
likeCount: 67,
|
||||
commentCount: 9,
|
||||
liked: true,
|
||||
pinned: false,
|
||||
createdAt: "2025-01-15T21:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "p8",
|
||||
author: mockUsers[9],
|
||||
authorRole: "owner",
|
||||
title: "老王工作室招新打手,有意向的来聊",
|
||||
content:
|
||||
"工作室目前在招LOL、王者、和平精英方向的打手。要求不高,段位够用就行,主要看服务态度和稳定性。接单量大,不愁没单。有意向的私信我,说一下你玩什么游戏、段位、每天能上几个小时。",
|
||||
images: [],
|
||||
tags: ["老王游戏工作室", "招募", "打手招募"],
|
||||
likeCount: 52,
|
||||
commentCount: 7,
|
||||
liked: false,
|
||||
pinned: false,
|
||||
createdAt: "2025-01-22T11:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "p9",
|
||||
author: mockUsers[1],
|
||||
authorRole: "consumer",
|
||||
title: "飞飞LOL辅助真的很懂配合",
|
||||
content:
|
||||
"我打ADC,飞飞打辅助,三局全赢。他会看我的走位然后跟着保护,不会乱抢资源,视野也插得很好。感觉比我之前随机到的辅助强多了。而且说好几点上就几点上,没让我等。",
|
||||
images: ["/posts/p9-1.jpg", "/posts/p9-2.jpg"],
|
||||
tags: ["英雄联盟", "LOL", "秀单", "浩哥开黑"],
|
||||
linkedOrderId: "ord5",
|
||||
likeCount: 49,
|
||||
commentCount: 6,
|
||||
liked: false,
|
||||
pinned: false,
|
||||
createdAt: "2025-01-18T23:45:00Z",
|
||||
},
|
||||
{
|
||||
id: "p10",
|
||||
author: mockUsers[2],
|
||||
authorRole: "consumer",
|
||||
title: "回复p4,找打手真的要看评价",
|
||||
content:
|
||||
"看到之前那个吐槽帖,深有同感。我也踩过坑,后来学乖了,下单前一定先看评价,特别是最近一个月的。评价少的或者有差评的直接跳过,不值得赌。\n\n现在找到几个靠谱的了,暗影的无畏契约打得很好,推荐。",
|
||||
images: [],
|
||||
tags: ["陪玩体验", "避坑"],
|
||||
quotedPostId: "p4",
|
||||
likeCount: 38,
|
||||
commentCount: 4,
|
||||
liked: false,
|
||||
pinned: false,
|
||||
createdAt: "2025-01-14T10:00:00Z",
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,217 @@
|
||||
import type { Review } from "../types"
|
||||
|
||||
export const mockReviews: Review[] = [
|
||||
{
|
||||
id: "r1",
|
||||
orderId: "ord1",
|
||||
fromUserId: "u1",
|
||||
fromUserName: "小陈",
|
||||
fromUserAvatar: "/avatars/u1.jpg",
|
||||
toUserId: "u5",
|
||||
rating: 5,
|
||||
content: "打得很好,带我上了好几局,沟通也顺畅,下次还找",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-10T20:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "r2",
|
||||
orderId: "ord1",
|
||||
fromUserId: "u5",
|
||||
fromUserName: "俊俊",
|
||||
fromUserAvatar: "/avatars/u4.jpg",
|
||||
toUserId: "u1",
|
||||
rating: 5,
|
||||
content: "配合很好,没有乱跑,愉快",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-10T21:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "r3",
|
||||
orderId: "ord2",
|
||||
fromUserId: "u2",
|
||||
fromUserName: "玲玲",
|
||||
fromUserAvatar: "/avatars/u2.jpg",
|
||||
toUserId: "u6",
|
||||
rating: 4,
|
||||
content: "整体还不错,就是中间断线了一次,不过后来补回来了",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-12T19:15:00Z",
|
||||
},
|
||||
{
|
||||
id: "r4",
|
||||
orderId: "ord2",
|
||||
fromUserId: "u6",
|
||||
fromUserName: "Winter",
|
||||
fromUserAvatar: "/avatars/u1.jpg",
|
||||
toUserId: "u2",
|
||||
rating: 4,
|
||||
sealed: false,
|
||||
createdAt: "2025-01-12T19:45:00Z",
|
||||
},
|
||||
{
|
||||
id: "r5",
|
||||
orderId: "ord3",
|
||||
fromUserId: "u3",
|
||||
fromUserName: "zz",
|
||||
fromUserAvatar: "/avatars/u3.jpg",
|
||||
toUserId: "u7",
|
||||
rating: 5,
|
||||
content: "琪琪真的很厉害!教了我好多操作,感觉进步了不少",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-14T22:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "r6",
|
||||
orderId: "ord3",
|
||||
fromUserId: "u7",
|
||||
fromUserName: "琪琪",
|
||||
fromUserAvatar: "/avatars/u2.jpg",
|
||||
toUserId: "u3",
|
||||
rating: 5,
|
||||
content: "学得很认真,问题也问得很到位,喜欢这种用户",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-14T22:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "r7",
|
||||
orderId: "ord4",
|
||||
fromUserId: "u4",
|
||||
fromUserName: "莫莫",
|
||||
fromUserAvatar: "/avatars/u4.jpg",
|
||||
toUserId: "u8",
|
||||
rating: 3,
|
||||
content: "发挥一般,感觉状态不太好,赢了两局输了三局",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-16T18:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "r8",
|
||||
orderId: "ord4",
|
||||
fromUserId: "u8",
|
||||
fromUserName: "暗影",
|
||||
fromUserAvatar: "/avatars/u3.jpg",
|
||||
toUserId: "u4",
|
||||
rating: 4,
|
||||
content: "还行,没有乱催,比较好说话",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-16T18:20:00Z",
|
||||
},
|
||||
{
|
||||
id: "r9",
|
||||
orderId: "ord5",
|
||||
fromUserId: "u1",
|
||||
fromUserName: "小陈",
|
||||
fromUserAvatar: "/avatars/u1.jpg",
|
||||
toUserId: "u9",
|
||||
rating: 5,
|
||||
content: "飞飞太强了,全程碾压,爽!",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-18T21:10:00Z",
|
||||
},
|
||||
{
|
||||
id: "r10",
|
||||
orderId: "ord5",
|
||||
fromUserId: "u9",
|
||||
fromUserName: "飞飞",
|
||||
fromUserAvatar: "/avatars/u4.jpg",
|
||||
toUserId: "u1",
|
||||
rating: 5,
|
||||
sealed: false,
|
||||
createdAt: "2025-01-18T21:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "r11",
|
||||
orderId: "ord6",
|
||||
fromUserId: "u2",
|
||||
fromUserName: "玲玲",
|
||||
fromUserAvatar: "/avatars/u2.jpg",
|
||||
toUserId: "u5",
|
||||
rating: 4,
|
||||
content: "挺专业的,就是话不多,不过打得好就行",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-20T20:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "r12",
|
||||
orderId: "ord6",
|
||||
fromUserId: "u5",
|
||||
fromUserName: "俊俊",
|
||||
fromUserAvatar: "/avatars/u4.jpg",
|
||||
toUserId: "u2",
|
||||
rating: 3,
|
||||
content: "中途有点急,催了好几次,下次希望耐心一点",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-20T20:25:00Z",
|
||||
},
|
||||
{
|
||||
id: "r13",
|
||||
orderId: "ord7",
|
||||
fromUserId: "u3",
|
||||
fromUserName: "zz",
|
||||
fromUserAvatar: "/avatars/u3.jpg",
|
||||
toUserId: "u6",
|
||||
rating: 2,
|
||||
content: "感觉没有简介里说的那么厉害,好几局都没发挥出来,有点失望",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-22T17:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "r14",
|
||||
orderId: "ord7",
|
||||
fromUserId: "u6",
|
||||
fromUserName: "Winter",
|
||||
fromUserAvatar: "/avatars/u1.jpg",
|
||||
toUserId: "u3",
|
||||
rating: 4,
|
||||
content: "配合还可以,就是网络有点卡",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-22T17:50:00Z",
|
||||
},
|
||||
{
|
||||
id: "r15",
|
||||
orderId: "ord8",
|
||||
fromUserId: "u4",
|
||||
fromUserName: "莫莫",
|
||||
fromUserAvatar: "/avatars/u4.jpg",
|
||||
toUserId: "u7",
|
||||
rating: 5,
|
||||
content: "超级好!带我连赢了五局,开心死了",
|
||||
sealed: true,
|
||||
createdAt: "2025-01-24T23:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "r16",
|
||||
orderId: "ord8",
|
||||
fromUserId: "u7",
|
||||
fromUserName: "琪琪",
|
||||
fromUserAvatar: "/avatars/u2.jpg",
|
||||
toUserId: "u4",
|
||||
rating: 5,
|
||||
content: "很好带,状态也好,合作愉快",
|
||||
sealed: true,
|
||||
createdAt: "2025-01-24T23:15:00Z",
|
||||
},
|
||||
{
|
||||
id: "r17",
|
||||
orderId: "ord9",
|
||||
fromUserId: "u1",
|
||||
fromUserName: "小陈",
|
||||
fromUserAvatar: "/avatars/u1.jpg",
|
||||
toUserId: "u8",
|
||||
rating: 4,
|
||||
content: "打得稳,没有骚操作,就是风格比较保守",
|
||||
sealed: false,
|
||||
createdAt: "2025-01-26T19:40:00Z",
|
||||
},
|
||||
{
|
||||
id: "r18",
|
||||
orderId: "ord9",
|
||||
fromUserId: "u8",
|
||||
fromUserName: "暗影",
|
||||
fromUserAvatar: "/avatars/u3.jpg",
|
||||
toUserId: "u1",
|
||||
rating: 4,
|
||||
sealed: false,
|
||||
createdAt: "2025-01-26T20:00:00Z",
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,181 @@
|
||||
import type { PlayerService } from "../types"
|
||||
|
||||
export const mockServices: PlayerService[] = [
|
||||
{
|
||||
id: "s1",
|
||||
playerId: "u5",
|
||||
gameId: "g1",
|
||||
gameName: "英雄联盟",
|
||||
title: "LOL双排上分",
|
||||
description: "打得不好说话,但是认真打。黄金到铂金段位都接,不保证赢但保证尽力。",
|
||||
price: 25,
|
||||
unit: "局",
|
||||
rankRange: "黄金-铂金",
|
||||
availability: ["工作日晚上9点后", "周末全天"],
|
||||
},
|
||||
{
|
||||
id: "s2",
|
||||
playerId: "u5",
|
||||
gameId: "g4",
|
||||
gameName: "永劫无间",
|
||||
title: "永劫双人组队",
|
||||
description: "永劫玩了两年多,输出位,跟着我打就行,不用担心被带走。",
|
||||
price: 20,
|
||||
unit: "局",
|
||||
availability: ["每天晚上8点到凌晨1点"],
|
||||
},
|
||||
{
|
||||
id: "s3",
|
||||
playerId: "u5",
|
||||
gameId: "g3",
|
||||
gameName: "CS2",
|
||||
title: "CS2车队位",
|
||||
description: "信使/支援位,不抢枪不乱走,配合好的话胜率挺高的。",
|
||||
price: 22,
|
||||
unit: "局",
|
||||
rankRange: "金级-传奇",
|
||||
availability: ["工作日晚上9点后", "周末下午到凌晨"],
|
||||
},
|
||||
{
|
||||
id: "s4",
|
||||
playerId: "u6",
|
||||
gameId: "g2",
|
||||
gameName: "王者荣耀",
|
||||
title: "王者双排稳上星",
|
||||
description:
|
||||
"服务第一,不催不急,你想打哪个英雄都行,我来配合。段位不高但胜率稳,接过几百单了。",
|
||||
price: 18,
|
||||
unit: "星",
|
||||
rankRange: "钻石-星耀",
|
||||
availability: ["每天下午3点到凌晨"],
|
||||
},
|
||||
{
|
||||
id: "s5",
|
||||
playerId: "u6",
|
||||
gameId: "g1",
|
||||
gameName: "英雄联盟",
|
||||
title: "LOL陪玩轻松局",
|
||||
description: "不想上分只想开心的也可以来,我陪你打,不骂人不催,聊天也行。",
|
||||
price: 15,
|
||||
unit: "局",
|
||||
rankRange: "不限",
|
||||
availability: ["每天都有空,提前说一声"],
|
||||
},
|
||||
{
|
||||
id: "s6",
|
||||
playerId: "u6",
|
||||
gameId: "g11",
|
||||
gameName: "第五人格",
|
||||
title: "第五人格求生者陪玩",
|
||||
description: "求生者主,各个角色都会,带你赢监管者。新手也接,慢慢教。",
|
||||
price: 20,
|
||||
unit: "局",
|
||||
availability: ["周末全天", "工作日晚上8点后"],
|
||||
},
|
||||
{
|
||||
id: "s7",
|
||||
playerId: "u7",
|
||||
gameId: "g2",
|
||||
gameName: "王者荣耀",
|
||||
title: "王者女生陪玩双排",
|
||||
description: "女生打手,段位星耀,不接受质疑我的操作。认真打的来,想找人聊天的别来。",
|
||||
price: 28,
|
||||
unit: "星",
|
||||
rankRange: "铂金-王者",
|
||||
availability: ["每天晚上7点到12点"],
|
||||
},
|
||||
{
|
||||
id: "s8",
|
||||
playerId: "u7",
|
||||
gameId: "g6",
|
||||
gameName: "和平精英",
|
||||
title: "和平精英吃鸡陪玩",
|
||||
description: "和平玩了三年,枪法稳,带你吃鸡。不喜欢乱冲的,打法偏稳健。",
|
||||
price: 22,
|
||||
unit: "局",
|
||||
rankRange: "白金-王牌",
|
||||
availability: ["周末全天", "工作日晚上8点后"],
|
||||
},
|
||||
{
|
||||
id: "s9",
|
||||
playerId: "u7",
|
||||
gameId: "g9",
|
||||
gameName: "绝区零",
|
||||
title: "绝区零日常代肝",
|
||||
description: "每天日常、周常都帮你做,不漏活动,有什么特殊需求说一声。",
|
||||
price: 18,
|
||||
unit: "次",
|
||||
availability: ["每天下午到晚上"],
|
||||
},
|
||||
{
|
||||
id: "s10",
|
||||
playerId: "u8",
|
||||
gameId: "g8",
|
||||
gameName: "无畏契约",
|
||||
title: "无畏契约上分",
|
||||
description: "不多说,看战绩。",
|
||||
price: 45,
|
||||
unit: "局",
|
||||
rankRange: "铁-白金",
|
||||
availability: ["晚上10点后"],
|
||||
},
|
||||
{
|
||||
id: "s11",
|
||||
playerId: "u8",
|
||||
gameId: "g7",
|
||||
gameName: "DOTA2",
|
||||
title: "DOTA2组排",
|
||||
description: "DOTA老玩家,各位置都行,不废话,进来打就是了。",
|
||||
price: 30,
|
||||
unit: "局",
|
||||
rankRange: "herald-legend",
|
||||
availability: ["每天凌晨前都在"],
|
||||
},
|
||||
{
|
||||
id: "s12",
|
||||
playerId: "u8",
|
||||
gameId: "g3",
|
||||
gameName: "CS2",
|
||||
title: "CS2上分代打",
|
||||
description: "只接代打,不陪玩。效率高,不磨蹭。",
|
||||
price: 60,
|
||||
unit: "局",
|
||||
rankRange: "银级-金级",
|
||||
availability: ["不定时,接单后尽快开始"],
|
||||
},
|
||||
{
|
||||
id: "s13",
|
||||
playerId: "u9",
|
||||
gameId: "g1",
|
||||
gameName: "英雄联盟",
|
||||
title: "LOL稳定双排",
|
||||
description: "接单稳,不掉线,说几点上就几点上。打辅助和打野,配合你的节奏走。",
|
||||
price: 20,
|
||||
unit: "局",
|
||||
rankRange: "白银-钻石",
|
||||
availability: ["工作日晚上8点后", "周末下午开始"],
|
||||
},
|
||||
{
|
||||
id: "s14",
|
||||
playerId: "u9",
|
||||
gameId: "g10",
|
||||
gameName: "崩坏:星穹铁道",
|
||||
title: "星铁日常代肝",
|
||||
description: "每日任务、模拟宇宙、忘却之庭都做,体力全清,活动不落。长期单子优先。",
|
||||
price: 15,
|
||||
unit: "次",
|
||||
availability: ["每天都有,早上到晚上都行"],
|
||||
},
|
||||
{
|
||||
id: "s15",
|
||||
playerId: "u9",
|
||||
gameId: "g12",
|
||||
gameName: "三角洲行动",
|
||||
title: "三角洲行动组队",
|
||||
description: "三角洲玩得比较多,战术打法,不乱冲。稳定上线,说好时间不会放鸽子。",
|
||||
price: 25,
|
||||
unit: "局",
|
||||
rankRange: "不限",
|
||||
availability: ["每天晚上8点到凌晨"],
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,88 @@
|
||||
import type { Shop } from "../types"
|
||||
import { mockUsers } from "./users"
|
||||
|
||||
export const mockShops: Shop[] = [
|
||||
{
|
||||
id: "shop1",
|
||||
owner: mockUsers[9],
|
||||
name: "老王游戏工作室",
|
||||
banner: "/banners/shop1.jpg",
|
||||
description:
|
||||
"做了三年了,老客户都知道我们靠谱。团队十几个人,各种游戏都有人带,不接单就不派,质量有保障。",
|
||||
rating: 4.7,
|
||||
totalOrders: 3842,
|
||||
playerCount: 14,
|
||||
commissionType: "percentage",
|
||||
commissionValue: 15,
|
||||
allowMultiShop: false,
|
||||
allowIndependentOrders: false,
|
||||
dispatchMode: "manual",
|
||||
announcements: [
|
||||
"新人进店先看公告,接单前确认好游戏段位要求",
|
||||
"每天 12:00-24:00 正常营业,节假日不休",
|
||||
"有问题直接找客服,不要私聊陪玩",
|
||||
],
|
||||
templateConfig: {
|
||||
sections: [
|
||||
{ type: "banner", enabled: true, order: 1 },
|
||||
{ type: "intro", enabled: true, order: 2 },
|
||||
{ type: "services", enabled: true, order: 3 },
|
||||
{ type: "players", enabled: true, order: 4 },
|
||||
{ type: "announcements", enabled: true, order: 5 },
|
||||
{ type: "reviews", enabled: true, order: 6 },
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "shop2",
|
||||
owner: mockUsers[10],
|
||||
name: "Yuki 小屋",
|
||||
description:
|
||||
"小店不追求量,就想好好做。陪玩都是我自己挑的,玩得好、态度好才能留下来。自动派单,接了就会认真打。",
|
||||
rating: 4.5,
|
||||
totalOrders: 671,
|
||||
playerCount: 5,
|
||||
commissionType: "percentage",
|
||||
commissionValue: 12,
|
||||
allowMultiShop: true,
|
||||
allowIndependentOrders: true,
|
||||
dispatchMode: "auto",
|
||||
announcements: ["单子接了就会打完,中途不跑单", "有特殊需求下单前备注一下"],
|
||||
templateConfig: {
|
||||
sections: [
|
||||
{ type: "banner", enabled: false, order: 1 },
|
||||
{ type: "intro", enabled: true, order: 2 },
|
||||
{ type: "players", enabled: true, order: 3 },
|
||||
{ type: "services", enabled: true, order: 4 },
|
||||
{ type: "reviews", enabled: true, order: 5 },
|
||||
{ type: "announcements", enabled: true, order: 6 },
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "shop3",
|
||||
owner: mockUsers[11],
|
||||
name: "浩哥开黑",
|
||||
description:
|
||||
"刚开店,还在摸索中。我自己是老玩家了,带人打球没问题,就是店还没啥名气,价格实惠,欢迎来试试。",
|
||||
rating: 3.9,
|
||||
totalOrders: 88,
|
||||
playerCount: 3,
|
||||
commissionType: "fixed",
|
||||
commissionValue: 8,
|
||||
allowMultiShop: true,
|
||||
allowIndependentOrders: false,
|
||||
dispatchMode: "manual",
|
||||
announcements: ["新店开业,有问题随时找我"],
|
||||
templateConfig: {
|
||||
sections: [
|
||||
{ type: "banner", enabled: false, order: 1 },
|
||||
{ type: "intro", enabled: true, order: 2 },
|
||||
{ type: "services", enabled: true, order: 3 },
|
||||
{ type: "players", enabled: true, order: 4 },
|
||||
{ type: "announcements", enabled: true, order: 5 },
|
||||
{ type: "reviews", enabled: false, order: 6 },
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
@@ -0,0 +1,139 @@
|
||||
import type { WalletTransaction } from "../types"
|
||||
|
||||
export const mockTransactions: WalletTransaction[] = [
|
||||
{
|
||||
id: "t1",
|
||||
type: "topup",
|
||||
amount: 500,
|
||||
description: "充值",
|
||||
createdAt: "2025-01-03T10:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t2",
|
||||
type: "payment",
|
||||
amount: -75,
|
||||
description: "支付订单 ord1",
|
||||
createdAt: "2025-01-05T19:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "t3",
|
||||
type: "payment",
|
||||
amount: -54,
|
||||
description: "支付订单 ord2",
|
||||
createdAt: "2025-01-08T15:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t4",
|
||||
type: "topup",
|
||||
amount: 300,
|
||||
description: "充值",
|
||||
createdAt: "2025-01-15T09:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t5",
|
||||
type: "payment",
|
||||
amount: -60,
|
||||
description: "支付订单 ord5",
|
||||
createdAt: "2025-01-17T20:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "t6",
|
||||
type: "payment",
|
||||
amount: -90,
|
||||
description: "支付订单 ord3",
|
||||
createdAt: "2025-01-11T22:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t7",
|
||||
type: "payment",
|
||||
amount: -44,
|
||||
description: "支付订单 ord4",
|
||||
createdAt: "2025-01-14T20:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t8",
|
||||
type: "refund",
|
||||
amount: 44,
|
||||
description: "订单 ord15 退款",
|
||||
createdAt: "2025-02-16T18:10:00Z",
|
||||
},
|
||||
{
|
||||
id: "t9",
|
||||
type: "topup",
|
||||
amount: 200,
|
||||
description: "充值",
|
||||
createdAt: "2025-02-01T09:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t10",
|
||||
type: "payment",
|
||||
amount: -40,
|
||||
description: "支付订单 ord8",
|
||||
createdAt: "2025-02-01T20:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t11",
|
||||
type: "payment",
|
||||
amount: -120,
|
||||
description: "支付订单 ord9",
|
||||
createdAt: "2025-02-03T22:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "t12",
|
||||
type: "payment",
|
||||
amount: -84,
|
||||
description: "支付订单 ord10",
|
||||
createdAt: "2025-02-06T19:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t13",
|
||||
type: "payment",
|
||||
amount: -50,
|
||||
description: "支付订单 ord11",
|
||||
createdAt: "2025-02-08T21:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t14",
|
||||
type: "payment",
|
||||
amount: -30,
|
||||
description: "支付订单 ord12",
|
||||
createdAt: "2025-02-10T20:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t15",
|
||||
type: "payment",
|
||||
amount: -18,
|
||||
description: "支付订单 ord13",
|
||||
createdAt: "2025-02-12T14:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t16",
|
||||
type: "payment",
|
||||
amount: -60,
|
||||
description: "支付订单 ord14",
|
||||
createdAt: "2025-02-14T21:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t17",
|
||||
type: "income",
|
||||
amount: 63.75,
|
||||
description: "订单 ord1 收入(扣除15%抽成)",
|
||||
createdAt: "2025-01-05T22:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "t18",
|
||||
type: "income",
|
||||
amount: 47.52,
|
||||
description: "订单 ord2 收入(扣除12%抽成)",
|
||||
createdAt: "2025-01-08T18:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "t19",
|
||||
type: "withdrawal",
|
||||
amount: -100,
|
||||
description: "提现到银行卡",
|
||||
createdAt: "2025-01-20T14:00:00Z",
|
||||
},
|
||||
]
|
||||
|
||||
export const walletBalance = 275
|
||||
@@ -0,0 +1,119 @@
|
||||
import type { User } from "../types"
|
||||
|
||||
export const mockUsers: User[] = [
|
||||
{
|
||||
id: "u1",
|
||||
username: "xiao_chen2333",
|
||||
nickname: "小陈",
|
||||
avatar: "/avatars/u1.jpg",
|
||||
role: "consumer",
|
||||
phone: "138****2047",
|
||||
bio: "下班打两把放松,别催我",
|
||||
createdAt: "2024-07-12T10:23:00Z",
|
||||
},
|
||||
{
|
||||
id: "u2",
|
||||
username: "lingling_up",
|
||||
nickname: "玲玲",
|
||||
avatar: "/avatars/u2.jpg",
|
||||
role: "consumer",
|
||||
phone: "177****8831",
|
||||
bio: "周末通宵选手",
|
||||
createdAt: "2024-08-03T15:44:00Z",
|
||||
},
|
||||
{
|
||||
id: "u3",
|
||||
username: "zz_noob99",
|
||||
nickname: "zz",
|
||||
avatar: "/avatars/u3.jpg",
|
||||
role: "consumer",
|
||||
createdAt: "2024-09-20T09:11:00Z",
|
||||
},
|
||||
{
|
||||
id: "u4",
|
||||
username: "MoMo_1107",
|
||||
nickname: "莫莫",
|
||||
avatar: "/avatars/u4.jpg",
|
||||
role: "consumer",
|
||||
phone: "152****6603",
|
||||
bio: "只玩排位不玩娱乐",
|
||||
createdAt: "2024-11-05T21:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "u5",
|
||||
username: "ace_junjun",
|
||||
nickname: "俊俊",
|
||||
avatar: "/avatars/u5.jpg",
|
||||
role: "player",
|
||||
phone: "186****4419",
|
||||
bio: "不太会说话但是会认真打",
|
||||
createdAt: "2024-06-18T13:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "u6",
|
||||
username: "w1nter_gg",
|
||||
nickname: "Winter",
|
||||
avatar: "/avatars/u1.jpg",
|
||||
role: "player",
|
||||
bio: "段位不代表实力,服务第一",
|
||||
createdAt: "2024-07-29T18:55:00Z",
|
||||
},
|
||||
{
|
||||
id: "u7",
|
||||
username: "qiqi_carry",
|
||||
nickname: "琪琪",
|
||||
avatar: "/avatars/u2.jpg",
|
||||
role: "player",
|
||||
phone: "139****7720",
|
||||
bio: "女生打手,不接受质疑",
|
||||
createdAt: "2024-08-14T11:22:00Z",
|
||||
},
|
||||
{
|
||||
id: "u8",
|
||||
username: "darkk_solo",
|
||||
nickname: "暗影",
|
||||
avatar: "/avatars/u3.jpg",
|
||||
role: "player",
|
||||
createdAt: "2024-10-01T08:40:00Z",
|
||||
},
|
||||
{
|
||||
id: "u9",
|
||||
username: "feifei_top1",
|
||||
nickname: "飞飞",
|
||||
avatar: "/avatars/u4.jpg",
|
||||
role: "player",
|
||||
phone: "173****5582",
|
||||
bio: "接单稳,不掉线",
|
||||
createdAt: "2024-12-09T20:15:00Z",
|
||||
},
|
||||
{
|
||||
id: "u10",
|
||||
username: "boss_laowang",
|
||||
nickname: "老王",
|
||||
avatar: "/avatars/u5.jpg",
|
||||
role: "owner",
|
||||
phone: "135****0094",
|
||||
bio: "开店三年,靠谱",
|
||||
createdAt: "2024-06-01T09:00:00Z",
|
||||
},
|
||||
{
|
||||
id: "u11",
|
||||
username: "yuki_studio",
|
||||
nickname: "Yuki",
|
||||
avatar: "/avatars/u1.jpg",
|
||||
role: "owner",
|
||||
phone: "158****3367",
|
||||
bio: "小店慢慢做,质量不将就",
|
||||
createdAt: "2024-09-07T14:30:00Z",
|
||||
},
|
||||
{
|
||||
id: "u12",
|
||||
username: "hao_ge_gg",
|
||||
nickname: "浩哥",
|
||||
avatar: "/avatars/u2.jpg",
|
||||
role: "owner",
|
||||
createdAt: "2025-01-15T16:48:00Z",
|
||||
},
|
||||
]
|
||||
|
||||
export const currentUser = mockUsers[0]
|
||||
Reference in New Issue
Block a user