# Uni-Fans API 接口文档

本文档详细说明了 Uni-Fans 应用中使用的所有接口，包括参数说明和使用示例。

## 目录

1. [订单查询接口](#1-订单查询接口)
2. [设备信息查询接口](#2-设备信息查询接口)
3. [订单套餐更新接口](#3-订单套餐更新接口)
4. [用户余额更新接口](#4-用户余额更新接口)
5. [微信支付订单创建接口](#5-微信支付订单创建接口)
6. [设备租借指令接口](#6-设备租借指令接口)

## 1. 订单查询接口

### 描述
根据订单ID查询订单详细信息。

### 接口信息
- **方法名**: `queryById`
- **请求方式**: GET
- **URL**: `/app/order/query/{orderId}`

### 请求参数

| 参数名 | 类型 | 必须 | 描述 |
| ----- | ---- | ---- | ---- |
| orderId | String | 是 | 订单ID |

### 响应参数

```json
{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "orderId": "订单ID",
    "orderNo": "订单编号",
    "deviceNo": "设备编号",
    "createTime": "创建时间",
    "phone": "联系电话",
    "depositAmount": "押金金额",
    "packageTime": "套餐时间(分钟)",
    "packagePrice": "套餐价格"
  }
}
```

### 使用示例

```javascript
const orderInfo = await queryById('12345');
if (orderInfo.code === 200) {
  // 处理订单信息
  console.log(orderInfo.data);
}
```

## 2. 设备信息查询接口

### 描述
根据设备编号查询设备详细信息。

### 接口信息
- **方法名**: `getDeviceInfo`
- **请求方式**: GET
- **URL**: `/app/device/info/{deviceNo}`

### 请求参数

| 参数名 | 类型 | 必须 | 描述 |
| ----- | ---- | ---- | ---- |
| deviceNo | String | 是 | 设备编号 |

### 响应参数

```json
{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "device": {
      "deviceNo": "设备编号",
      "deviceName": "设备名称",
      "deviceStatus": "设备状态",
      "depositAmount": "押金金额",
      "feeType": "收费类型(hour/times)",
      "feeConfig": "费用配置JSON字符串"
    }
  }
}
```

### 使用示例

```javascript
const deviceInfo = await getDeviceInfo('D001');
if (deviceInfo.code === 200) {
  // 处理设备信息
  console.log(deviceInfo.data.device);
}
```

## 3. 订单套餐更新接口

### 描述
更新订单的套餐信息。

### 接口信息
- **方法名**: `updateOrderPackage`
- **请求方式**: POST
- **URL**: `/app/order/update-package`

### 请求参数

| 参数名 | 类型 | 必须 | 描述 |
| ----- | ---- | ---- | ---- |
| orderId | String | 是 | 订单ID |
| packageTime | Number | 是 | 套餐时间(分钟) |
| packagePrice | Number | 是 | 套餐价格 |

### 响应参数

```json
{
  "code": 200,
  "msg": "操作成功",
  "data": null
}
```

### 使用示例

```javascript
const result = await updateOrderPackage({
  orderId: '12345',
  packageTime: 360, // 6小时(分钟)
  packagePrice: 30  // 30元
});
if (result.code === 200) {
  console.log('套餐更新成功');
}
```

## 4. 用户余额更新接口

### 描述
支付成功后更新用户余额信息。

### 接口信息
- **方法名**: `updateUserBalance`
- **请求方式**: POST
- **URL**: `/app/user/update-balance`

### 请求参数

| 参数名 | 类型 | 必须 | 描述 |
| ----- | ---- | ---- | ---- |
| orderId | String | 是 | 订单ID |

### 响应参数

```json
{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "userId": "用户ID",
    "balance": "更新后余额"
  }
}
```

### 使用示例

```javascript
const result = await updateUserBalance('12345');
if (result.code === 200) {
  console.log('用户余额更新成功');
}
```

## 5. 微信支付订单创建接口

### 描述
创建微信支付订单。

### 接口信息
- **请求方式**: GET
- **URL**: `/app/wx-payment/create/{orderNo}`

### 请求参数

| 参数名 | 类型 | 必须 | 描述 |
| ----- | ---- | ---- | ---- |
| orderNo | String | 是 | 订单编号 |

### 请求头

| 参数名 | 必须 | 描述 |
| ----- | ---- | ---- |
| Authorization | 是 | Bearer 认证令牌 |
| Clientid | 是 | 客户端ID |

### 响应参数

```json
{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "appId": "微信应用ID",
    "timeStamp": "时间戳",
    "nonceStr": "随机字符串",
    "package": "预支付交易会话标识",
    "signType": "签名类型",
    "paySign": "签名"
  }
}
```

### 使用示例

```javascript
const res = await uni.request({
  url: `${URL}/app/wx-payment/create/${orderNo}`,
  method: 'GET',
  header: {
    'Authorization': "Bearer " + uni.getStorageSync('token'),
    'Clientid': uni.getStorageSync('client_id')
  }
});

if (res.statusCode === 200 && res.data.code === 200) {
  const payParams = res.data.data;
  await uni.requestPayment({
    ...payParams,
    success: () => {
      console.log('支付成功');
    },
    fail: (err) => {
      console.error('支付失败:', err);
    }
  });
}
```

## 6. 设备租借指令接口

### 描述
发送设备租借指令。

### 接口信息
- **请求方式**: POST
- **URL**: `/app/device/sendRentCommand`

### 请求参数

| 参数名 | 类型 | 必须 | 描述 |
| ----- | ---- | ---- | ---- |
| orderId | String | 是 | 订单ID |

### 请求头

| 参数名 | 必须 | 描述 |
| ----- | ---- | ---- |
| Content-Type | 是 | application/x-www-form-urlencoded |
| Authorization | 是 | Bearer 认证令牌 |
| Clientid | 是 | 客户端ID |

### 响应参数

```json
{
  "code": 200,
  "msg": "操作成功",
  "data": null
}
```

### 使用示例

```javascript
const res = await uni.request({
  url: `${URL}/app/device/sendRentCommand`,
  method: 'POST',
  data: {
    orderId: '12345'
  },
  header: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': "Bearer " + uni.getStorageSync('token'),
    'Clientid': uni.getStorageSync('client_id')
  }
});

if (res.statusCode === 200 && res.data.code === 200) {
  console.log('租借指令发送成功');
}
``` 