Files
jiebanke/mini-program/api/mock.js

312 lines
6.7 KiB
JavaScript
Raw Normal View History

2025-08-30 14:33:49 +08:00
// 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',
2025-08-30 14:33:49 +08:00
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调用
}
*/