Generating commit message...
This commit is contained in:
312
mini-program/api/mock.js
Normal file
312
mini-program/api/mock.js
Normal file
@@ -0,0 +1,312 @@
|
||||
// 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@example.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调用
|
||||
}
|
||||
*/
|
||||
Reference in New Issue
Block a user