Files
jiebanke/mini-program/api/example.js
2025-08-30 14:33:49 +08:00

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()
}
}
*/