169 lines
3.8 KiB
JavaScript
169 lines
3.8 KiB
JavaScript
// API 使用示例
|
|
import api, { userService, travelService, homeService, apiUtils } from './index.js'
|
|
|
|
// 示例1: 用户登录
|
|
async function exampleLogin() {
|
|
try {
|
|
const result = await userService.login({
|
|
username: 'user123',
|
|
password: 'password123'
|
|
})
|
|
|
|
console.log('登录成功:', result)
|
|
// 保存token
|
|
api.setAuthToken(result.token)
|
|
|
|
} catch (error) {
|
|
console.error('登录失败:', error)
|
|
api.handleError(error)
|
|
}
|
|
}
|
|
|
|
// 示例2: 获取首页数据
|
|
async function exampleGetHomeData() {
|
|
try {
|
|
const homeData = await homeService.getHomeData()
|
|
console.log('首页数据:', homeData)
|
|
|
|
// 或者使用错误处理包装器
|
|
const { success, data, error } = await api.withErrorHandling(
|
|
homeService.getHomeData(),
|
|
'首页数据加载成功'
|
|
)
|
|
|
|
if (success) {
|
|
// 处理数据
|
|
console.log('处理首页数据:', data)
|
|
}
|
|
|
|
} catch (error) {
|
|
api.handleError(error, '首页数据加载失败')
|
|
}
|
|
}
|
|
|
|
// 示例3: 分页获取旅行计划
|
|
async function exampleGetTravelPlans() {
|
|
try {
|
|
const pagination = apiUtils.generatePagination(1, 10)
|
|
const travels = await travelService.getList({
|
|
...pagination,
|
|
keyword: '西藏'
|
|
})
|
|
|
|
console.log('旅行计划列表:', travels)
|
|
|
|
} catch (error) {
|
|
api.handleError(error)
|
|
}
|
|
}
|
|
|
|
// 示例4: 文件上传
|
|
async function exampleUploadAvatar() {
|
|
try {
|
|
// 选择图片
|
|
const res = await uni.chooseImage({
|
|
count: 1,
|
|
sizeType: ['compressed'],
|
|
sourceType: ['album']
|
|
})
|
|
|
|
const filePath = res.tempFilePaths[0]
|
|
const uploadResult = await userService.uploadAvatar(filePath)
|
|
|
|
console.log('头像上传成功:', uploadResult)
|
|
|
|
} catch (error) {
|
|
api.handleError(error, '头像上传失败')
|
|
}
|
|
}
|
|
|
|
// 示例5: 完整的页面数据加载流程
|
|
async function loadPageData() {
|
|
try {
|
|
// 并行加载多个数据
|
|
const [banners, travels, animals, flowers] = await Promise.all([
|
|
homeService.getBanners(),
|
|
homeService.getRecommendedTravels(),
|
|
homeService.getHotAnimals(),
|
|
homeService.getFeaturedFlowers()
|
|
])
|
|
|
|
return {
|
|
banners: banners || [],
|
|
travelPlans: travels || [],
|
|
animals: animals || [],
|
|
flowers: flowers || []
|
|
}
|
|
|
|
} catch (error) {
|
|
api.handleError(error)
|
|
// 返回默认数据或空数据
|
|
return {
|
|
banners: [],
|
|
travelPlans: [],
|
|
animals: [],
|
|
flowers: []
|
|
}
|
|
}
|
|
}
|
|
|
|
// 示例6: 订单支付流程
|
|
async function examplePaymentFlow(orderId) {
|
|
try {
|
|
// 1. 创建支付
|
|
const payment = await paymentService.create({
|
|
orderId,
|
|
amount: 100,
|
|
paymentMethod: 'wechat'
|
|
})
|
|
|
|
// 2. 调用微信支付
|
|
const payResult = await uni.requestPayment({
|
|
timeStamp: payment.timeStamp,
|
|
nonceStr: payment.nonceStr,
|
|
package: payment.package,
|
|
signType: payment.signType,
|
|
paySign: payment.paySign
|
|
})
|
|
|
|
// 3. 确认支付结果
|
|
if (payResult.errMsg === 'requestPayment:ok') {
|
|
// 支付成功,更新订单状态
|
|
await orderService.pay(orderId)
|
|
console.log('支付成功')
|
|
}
|
|
|
|
} catch (error) {
|
|
api.handleError(error, '支付失败')
|
|
}
|
|
}
|
|
|
|
// 导出示例函数
|
|
export default {
|
|
exampleLogin,
|
|
exampleGetHomeData,
|
|
exampleGetTravelPlans,
|
|
exampleUploadAvatar,
|
|
loadPageData,
|
|
examplePaymentFlow
|
|
}
|
|
|
|
// 在页面中使用示例
|
|
/*
|
|
// 在Vue组件的methods中
|
|
methods: {
|
|
async loadData() {
|
|
const pageData = await loadPageData()
|
|
this.banners = pageData.banners
|
|
this.travelPlans = pageData.travelPlans
|
|
this.animals = pageData.animals
|
|
this.flowers = pageData.flowers
|
|
},
|
|
|
|
async handleLogin() {
|
|
await exampleLogin()
|
|
// 登录成功后重新加载数据
|
|
await this.loadData()
|
|
}
|
|
}
|
|
*/ |