342 lines
8.2 KiB
Markdown
342 lines
8.2 KiB
Markdown
# AppServer API 使用指南
|
|
|
|
本文档说明如何使用 AppServer.js 中封装的 API 接口。
|
|
|
|
## 初始化
|
|
|
|
```javascript
|
|
import { AppServer } from '@/modules/api/AppServer';
|
|
|
|
const appServer = new AppServer();
|
|
```
|
|
|
|
## 认证相关接口
|
|
|
|
### 1. 微信登录
|
|
```javascript
|
|
const data = await appServer.WechatLogin(code);
|
|
// 返回: { success: true, data: { token, refreshToken, user } }
|
|
```
|
|
|
|
### 2. 刷新Token
|
|
```javascript
|
|
const data = await appServer.RefreshToken(refreshToken);
|
|
// 返回: { success: true, data: { token, refreshToken } }
|
|
```
|
|
|
|
### 3. 登出
|
|
```javascript
|
|
const data = await appServer.Logout();
|
|
// 返回: { success: true, message: '登出成功' }
|
|
```
|
|
|
|
## 用户相关接口
|
|
|
|
### 1. 获取用户信息
|
|
```javascript
|
|
const data = await appServer.GetUserProfile();
|
|
// 返回: { success: true, data: { id, nickname, avatar, ... } }
|
|
```
|
|
|
|
### 2. 更新用户信息
|
|
```javascript
|
|
const data = await appServer.UpdateUserProfile({
|
|
nickname: '新昵称',
|
|
avatar: 'https://...',
|
|
realName: '真实姓名',
|
|
phone: '13800138000',
|
|
whatsapp: '+86138...',
|
|
wechatId: 'wechat123'
|
|
});
|
|
// 返回: { success: true, data: { ...更新后的用户信息 } }
|
|
```
|
|
|
|
### 3. 设置语言偏好
|
|
```javascript
|
|
const data = await appServer.SetLanguage('zh'); // 'zh', 'en', 'pt'
|
|
// 返回: { success: true, message: '语言设置成功' }
|
|
```
|
|
|
|
## 服务相关接口
|
|
|
|
### 1. 获取服务分类列表
|
|
```javascript
|
|
const data = await appServer.GetCategories();
|
|
// 返回: { success: true, data: [{ id, key, nameZh, nameEn, namePt, ... }] }
|
|
```
|
|
|
|
### 2. 获取服务列表
|
|
```javascript
|
|
const data = await appServer.GetServices({
|
|
page: 1,
|
|
limit: 10,
|
|
categoryId: 'uuid', // 可选
|
|
language: 'zh' // 可选
|
|
});
|
|
// 返回: { success: true, data: { items: [...], total, page, limit } }
|
|
```
|
|
|
|
### 3. 获取服务详情
|
|
```javascript
|
|
const data = await appServer.GetServiceById(serviceId, 'zh');
|
|
// 返回: { success: true, data: { id, title, description, price, ... } }
|
|
```
|
|
|
|
## 预约相关接口
|
|
|
|
### 1. 创建预约
|
|
```javascript
|
|
const data = await appServer.CreateAppointment({
|
|
serviceId: 'uuid',
|
|
realName: '张三',
|
|
contactMethod: 'phone', // 'phone', 'whatsapp', 'wechat'
|
|
contactValue: '13800138000',
|
|
appointmentDate: '2025-12-31', // 可选
|
|
appointmentTime: '14:30:00', // 可选
|
|
notes: '备注信息', // 可选
|
|
amount: 100.00 // 可选
|
|
});
|
|
// 返回: { success: true, data: { id, appointmentNo, ... } }
|
|
```
|
|
|
|
### 2. 获取预约列表
|
|
```javascript
|
|
const data = await appServer.GetAppointments({
|
|
page: 1,
|
|
limit: 10,
|
|
status: 'pending' // 可选: 'pending', 'confirmed', 'in-progress', 'completed', 'cancelled'
|
|
});
|
|
// 返回: { success: true, data: { items: [...], total, page, limit } }
|
|
```
|
|
|
|
### 3. 获取预约详情
|
|
```javascript
|
|
const data = await appServer.GetAppointmentById(appointmentId);
|
|
// 返回: { success: true, data: { id, service, user, status, ... } }
|
|
```
|
|
|
|
### 4. 更新预约
|
|
```javascript
|
|
const data = await appServer.UpdateAppointment(appointmentId, {
|
|
realName: '李四',
|
|
contactMethod: 'whatsapp',
|
|
contactValue: '+8613800138000',
|
|
notes: '更新备注'
|
|
});
|
|
// 返回: { success: true, data: { ...更新后的预约信息 } }
|
|
```
|
|
|
|
### 5. 取消预约
|
|
```javascript
|
|
const data = await appServer.CancelAppointment(appointmentId);
|
|
// 返回: { success: true, message: '预约已取消' }
|
|
```
|
|
|
|
## 通知相关接口
|
|
|
|
### 1. 获取通知列表
|
|
```javascript
|
|
const data = await appServer.GetNotifications({
|
|
page: 1,
|
|
limit: 10,
|
|
type: 'system' // 可选: 'system', 'activity', 'service'
|
|
});
|
|
// 返回: { success: true, data: { items: [...], total, page, limit } }
|
|
```
|
|
|
|
### 2. 标记通知为已读
|
|
```javascript
|
|
const data = await appServer.MarkNotificationAsRead(notificationId);
|
|
// 返回: { success: true, message: '已标记为已读' }
|
|
```
|
|
|
|
### 3. 全部标记为已读
|
|
```javascript
|
|
const data = await appServer.MarkAllNotificationsAsRead();
|
|
// 返回: { success: true, message: '全部已标记为已读' }
|
|
```
|
|
|
|
### 4. 删除通知
|
|
```javascript
|
|
const data = await appServer.DeleteNotification(notificationId);
|
|
// 返回: { success: true, message: '通知已删除' }
|
|
```
|
|
|
|
## 邀请相关接口
|
|
|
|
### 1. 生成邀请码
|
|
```javascript
|
|
const data = await appServer.GenerateInvitationCode();
|
|
// 返回: { success: true, data: { invitationCode: 'ABC123' } }
|
|
```
|
|
|
|
### 2. 获取邀请统计
|
|
```javascript
|
|
const data = await appServer.GetInvitationStats();
|
|
// 返回: { success: true, data: { totalInvites, totalRewards, availableBalance } }
|
|
```
|
|
|
|
### 3. 获取邀请记录
|
|
```javascript
|
|
const data = await appServer.GetInvitationRecords();
|
|
// 返回: { success: true, data: [{ invitee, registeredAt, firstPaymentAmount, ... }] }
|
|
```
|
|
|
|
## 提现相关接口
|
|
|
|
### 1. 申请提现
|
|
```javascript
|
|
const data = await appServer.CreateWithdrawal({
|
|
amount: 100.00,
|
|
paymentMethod: 'wechat', // 'wechat', 'alipay', 'bank'
|
|
paymentDetails: {
|
|
// 微信/支付宝
|
|
qrcodeImage: 'https://...',
|
|
// 或银行卡
|
|
bankCardNumber: '6222...',
|
|
cardholderName: '张三',
|
|
bankName: '中国银行',
|
|
swiftCode: 'BKCH...' // 可选
|
|
}
|
|
});
|
|
// 返回: { success: true, data: { id, withdrawalNo, status, ... } }
|
|
```
|
|
|
|
### 2. 获取提现记录
|
|
```javascript
|
|
const data = await appServer.GetWithdrawals({
|
|
page: 1,
|
|
limit: 10,
|
|
status: 'waiting' // 可选: 'waiting', 'processing', 'completed', 'rejected'
|
|
});
|
|
// 返回: { success: true, data: { items: [...], total, page, limit } }
|
|
```
|
|
|
|
### 3. 获取提现详情
|
|
```javascript
|
|
const data = await appServer.GetWithdrawalById(withdrawalId);
|
|
// 返回: { success: true, data: { id, amount, status, paymentDetails, ... } }
|
|
```
|
|
|
|
## 上传相关接口
|
|
|
|
### 1. 上传图片
|
|
```javascript
|
|
// 选择图片
|
|
uni.chooseImage({
|
|
count: 1,
|
|
success: async (res) => {
|
|
const filePath = res.tempFilePaths[0];
|
|
const data = await appServer.UploadImage(filePath);
|
|
// 返回: { success: true, data: { url: 'https://...', filename: '...' } }
|
|
}
|
|
});
|
|
```
|
|
|
|
## 错误处理
|
|
|
|
所有接口返回格式统一:
|
|
|
|
**成功响应:**
|
|
```javascript
|
|
{
|
|
success: true,
|
|
data: { ... },
|
|
message: '操作成功'
|
|
}
|
|
```
|
|
|
|
**失败响应:**
|
|
```javascript
|
|
{
|
|
success: false,
|
|
error: {
|
|
code: 'ERROR_CODE',
|
|
message: '错误信息',
|
|
details: { ... } // 可选
|
|
}
|
|
}
|
|
```
|
|
|
|
**使用示例:**
|
|
```javascript
|
|
const data = await appServer.GetUserProfile();
|
|
if (data.success) {
|
|
// 成功处理
|
|
console.log('用户信息:', data.data);
|
|
} else {
|
|
// 错误处理
|
|
uni.showToast({
|
|
title: data.error?.message || '操作失败',
|
|
icon: 'none'
|
|
});
|
|
}
|
|
```
|
|
|
|
## 注意事项
|
|
|
|
1. **Token 管理**: 所有需要认证的接口会自动从 `globalData` 或 `localStorage` 获取 token
|
|
2. **语言设置**: 部分接口支持 `language` 参数,可传入 'zh', 'en', 'pt'
|
|
3. **分页参数**: 列表接口通常支持 `page` 和 `limit` 参数
|
|
4. **日期格式**: 日期使用 'YYYY-MM-DD' 格式,时间使用 'HH:MM:SS' 格式
|
|
5. **UUID**: 所有 ID 字段均为 UUID 格式
|
|
|
|
## 完整示例
|
|
|
|
```javascript
|
|
// 登录流程
|
|
async function handleLogin() {
|
|
try {
|
|
// 1. 获取微信登录code
|
|
const loginRes = await uni.login({ provider: 'weixin' });
|
|
|
|
// 2. 调用登录接口
|
|
const appServer = new AppServer();
|
|
const data = await appServer.WechatLogin(loginRes.code);
|
|
|
|
if (data.success) {
|
|
// 3. 保存token
|
|
const token = "Bearer " + data.data.token;
|
|
uni.setStorageSync("token", token);
|
|
|
|
// 4. 跳转首页
|
|
uni.switchTab({ url: '/pages/index/index' });
|
|
} else {
|
|
uni.showToast({
|
|
title: data.error?.message || '登录失败',
|
|
icon: 'none'
|
|
});
|
|
}
|
|
} catch (error) {
|
|
console.error('登录错误:', error);
|
|
}
|
|
}
|
|
|
|
// 创建预约流程
|
|
async function createAppointment() {
|
|
try {
|
|
const appServer = new AppServer();
|
|
const data = await appServer.CreateAppointment({
|
|
serviceId: 'service-uuid',
|
|
realName: '张三',
|
|
contactMethod: 'phone',
|
|
contactValue: '13800138000',
|
|
notes: '请尽快联系我'
|
|
});
|
|
|
|
if (data.success) {
|
|
uni.showToast({
|
|
title: '预约成功',
|
|
icon: 'success'
|
|
});
|
|
// 跳转到预约详情页
|
|
uni.navigateTo({
|
|
url: `/pages/appointment/detail?id=${data.data.id}`
|
|
});
|
|
}
|
|
} catch (error) {
|
|
console.error('创建预约错误:', error);
|
|
}
|
|
}
|
|
```
|