Files
jiebanke/mini-program/api/mock.js
2025-09-01 03:32:45 +08:00

312 lines
6.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Mock数据 - 用于开发和测试
import { OrderStatus, TravelStatus } from './types.js'
// Mock用户数据
export const mockUsers = [
{
id: 1,
username: 'user1',
nickname: '旅行爱好者',
avatar: '/static/user/avatar1.jpg',
phone: '138****1234',
points: 150,
level: 2,
createTime: '2024-01-15'
},
{
id: 2,
username: 'user2',
nickname: '动物保护者',
avatar: '/static/user/avatar2.jpg',
email: 'user2@jiebanke.com',
points: 300,
level: 3,
createTime: '2024-02-20'
}
]
// Mock轮播图数据
export const mockBanners = [
{
id: 1,
image: '/static/banners/banner1.jpg',
title: '西藏之旅',
link: '/pages/travel/list',
type: 'travel'
},
{
id: 2,
image: '/static/banners/banner2.jpg',
title: '动物认养',
link: '/pages/animal/list',
type: 'animal'
},
{
id: 3,
image: '/static/banners/banner3.jpg',
title: '鲜花配送',
link: '/pages/flower/list',
type: 'flower'
}
]
// Mock旅行计划数据
export const mockTravelPlans = [
{
id: 1,
title: '西藏拉萨深度游',
destination: '西藏拉萨',
coverImage: '/static/travel/tibet.jpg',
startDate: '2024-10-01',
endDate: '2024-10-07',
budget: 5000,
currentMembers: 3,
maxMembers: 6,
description: '探索西藏神秘文化,感受高原风情',
status: TravelStatus.RECRUITING,
creator: mockUsers[0],
createTime: '2024-08-20'
},
{
id: 2,
title: '云南大理休闲游',
destination: '云南大理',
coverImage: '/static/travel/yunnan.jpg',
startDate: '2024-10-05',
endDate: '2024-10-12',
budget: 3500,
currentMembers: 2,
maxMembers: 4,
description: '漫步古城,享受洱海风光',
status: TravelStatus.RECRUITING,
creator: mockUsers[1],
createTime: '2024-08-22'
}
]
// Mock动物数据
export const mockAnimals = [
{
id: 1,
name: '小羊驼',
species: '羊驼',
price: 1000,
image: '/static/animals/alpaca.jpg',
description: '温顺可爱的羊驼,适合家庭认养',
location: '西藏牧场',
isHot: true,
status: 'available',
createTime: '2024-08-15'
},
{
id: 2,
name: '小绵羊',
species: '绵羊',
price: 800,
image: '/static/animals/sheep.jpg',
description: '毛茸茸的小绵羊,非常温顺',
location: '内蒙古草原',
isHot: false,
status: 'available',
createTime: '2024-08-18'
}
]
// Mock花束数据
export const mockFlowers = [
{
id: 1,
name: '浪漫玫瑰',
description: '11朵红玫瑰象征热烈的爱情',
price: 199,
image: '/static/flowers/rose.jpg',
category: '爱情',
stock: 50,
createTime: '2024-08-10'
},
{
id: 2,
name: '向日葵花束',
description: '9朵向日葵象征阳光和希望',
price: 179,
image: '/static/flowers/sunflower.jpg',
category: '祝福',
stock: 30,
createTime: '2024-08-12'
}
]
// Mock订单数据
export const mockOrders = [
{
id: 'ORD202408270001',
orderNo: '202408270001',
type: 'travel',
title: '西藏拉萨深度游',
image: '/static/travel/tibet.jpg',
price: 5000,
count: 1,
totalAmount: 5000,
status: OrderStatus.UNPAID,
createTime: '2024-08-27 10:00:00'
},
{
id: 'ORD202408270002',
orderNo: '202408270002',
type: 'animal',
title: '小羊驼认养',
image: '/static/animals/alpaca.jpg',
price: 1000,
count: 1,
totalAmount: 1000,
status: OrderStatus.PAID,
createTime: '2024-08-27 11:30:00',
payTime: '2024-08-27 11:35:00'
}
]
// Mock系统公告
export const mockNotices = [
{
id: 1,
title: '系统维护通知',
content: '系统将于今晚进行维护预计耗时2小时',
type: 'system',
isActive: true,
createTime: '2024-08-26'
},
{
id: 2,
title: '新功能上线',
content: '送花服务正式上线,欢迎体验',
type: 'feature',
isActive: true,
createTime: '2024-08-27'
}
]
// Mock API响应
export const mockResponses = {
// 成功响应
success: (data, message = '操作成功') => ({
code: 0,
message,
data,
timestamp: Date.now()
}),
// 错误响应
error: (code, message) => ({
code,
message,
timestamp: Date.now()
}),
// 分页响应
pagination: (list, total, page = 1, pageSize = 10) => ({
code: 0,
message: '操作成功',
data: {
list,
total,
page,
pageSize,
totalPages: Math.ceil(total / pageSize)
},
timestamp: Date.now()
})
}
// Mock服务函数
export const mockService = {
// 模拟延迟
delay: (ms = 500) => new Promise(resolve => setTimeout(resolve, ms)),
// 模拟登录
mockLogin: async (username, password) => {
await mockService.delay(1000)
if (username === 'admin' && password === '123456') {
return mockResponses.success({
token: 'mock-token-123456',
refreshToken: 'mock-refresh-token-123456',
userInfo: mockUsers[0]
})
}
return mockResponses.error(1001, '用户名或密码错误')
},
// 模拟获取首页数据
mockHomeData: async () => {
await mockService.delay(800)
return mockResponses.success({
banners: mockBanners,
travelPlans: mockTravelPlans,
animals: mockAnimals,
flowers: mockFlowers,
notices: mockNotices
})
},
// 模拟获取列表数据
mockList: async (type, page = 1, pageSize = 10) => {
await mockService.delay(600)
const allData = {
travel: mockTravelPlans,
animal: mockAnimals,
flower: mockFlowers,
order: mockOrders
}
const data = allData[type] || []
const start = (page - 1) * pageSize
const end = start + pageSize
const paginatedData = data.slice(start, end)
return mockResponses.pagination(paginatedData, data.length, page, pageSize)
},
// 模拟获取详情
mockDetail: async (type, id) => {
await mockService.delay(500)
const allData = {
travel: mockTravelPlans,
animal: mockAnimals,
flower: mockFlowers,
order: mockOrders
}
const data = allData[type] || []
const item = data.find(item => item.id === id || item.id === parseInt(id))
if (item) {
return mockResponses.success(item)
}
return mockResponses.error(404, '数据不存在')
}
}
// 导出所有Mock数据
export default {
mockUsers,
mockBanners,
mockTravelPlans,
mockAnimals,
mockFlowers,
mockOrders,
mockNotices,
mockResponses,
mockService
}
// 使用示例
/*
// 在开发环境中使用Mock数据
if (process.env.NODE_ENV === 'development') {
// 可以在这里替换真实的API调用
}
*/