# Ether 智慧物业管理平台 - API 文档

## 概述

本文档描述了 Ether 智慧物业管理平台的 RESTful API 接口规范。

### 基础信息

- **基础URL**: `http://localhost:8080`
- **API版本**: v1
- **认证方式**: JWT Bearer Token
- **数据格式**: JSON
- **字符编码**: UTF-8

### 通用响应格式

```json
{
  "code": 200,
  "message": "success",
  "data": { ... }
}
```

### 通用错误码

| 错误码 | 说明 |
|--------|------|
| 200 | 成功 |
| 400 | 请求参数错误 |
| 401 | 未授权 |
| 403 | 无权限 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |

---

## 1. 设备管理 API (ether-asset)

### 1.1 设备基础管理

#### 1.1.1 创建设备

**接口**: `POST /api/v1/asset/equipments`

**描述**: 创建新设备

**请求头**:
```
Authorization: Bearer {token}
X-Project-Id: {projectId}
```

**请求体**:
```json
{
  "code": "EQ-20260220-001",
  "name": "中央空调主机",
  "equipmentType": "HVAC",
  "brand": "格力",
  "model": "GMV-400W",
  "specifications": "制冷量: 40kW",
  "serialNumber": "SN20260220001",
  "manufacturer": "珠海格力电器股份有限公司",
  "supplier": "格力授权经销商",
  "spaceNodeId": "uuid-space-node",
  "locationDesc": "A栋1楼机房",
  "purchaseDate": "2026-01-15",
  "installDate": "2026-01-20",
  "warrantyDate": "2028-01-20",
  "purchasePrice": 150000.00,
  "serviceLife": 15,
  "maintenanceCycle": 90,
  "managerId": "uuid-manager",
  "managerName": "张三",
  "contactPhone": "13800138000",
  "images": "url1,url2",
  "manualUrl": "https://example.com/manual.pdf",
  "remarks": "主要制冷设备"
}
```

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "id": "uuid-equipment",
    "projectId": "uuid-project",
    "code": "EQ-20260220-001",
    "name": "中央空调主机",
    "equipmentType": "HVAC",
    "status": "NORMAL",
    ...
    "createdAt": "2026-02-20T10:30:00"
  }
}
```

---

#### 1.1.2 更新设备

**接口**: `PUT /api/v1/asset/equipments/{id}`

**描述**: 更新设备信息

**路径参数**:
- `id`: 设备ID (UUID)

**请求体**: 同创建设备

**响应**: 同创建设备

---

#### 1.1.3 删除设备

**接口**: `DELETE /api/v1/asset/equipments/{id}`

**描述**: 删除设备

**路径参数**:
- `id`: 设备ID (UUID)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": null
}
```

---

#### 1.1.4 根据ID查询设备

**接口**: `GET /api/v1/asset/equipments/{id}`

**描述**: 根据ID获取设备详情

**路径参数**:
- `id`: 设备ID (UUID)

**响应**: 同创建设备响应

---

#### 1.1.5 根据编码查询设备

**接口**: `GET /api/v1/asset/equipments/code/{code}`

**描述**: 根据设备编码获取设备信息

**路径参数**:
- `code`: 设备编码

**响应**: 同创建设备响应

---

#### 1.1.6 查询项目下所有设备

**接口**: `GET /api/v1/asset/equipments`

**描述**: 获取当前项目下所有设备列表

**请求头**:
```
Authorization: Bearer {token}
X-Project-Id: {projectId}
```

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": "uuid-equipment-1",
      "code": "EQ-001",
      "name": "设备1",
      ...
    },
    {
      "id": "uuid-equipment-2",
      "code": "EQ-002",
      "name": "设备2",
      ...
    }
  ]
}
```

---

#### 1.1.7 根据类型查询设备

**接口**: `GET /api/v1/asset/equipments/type/{equipmentType}`

**描述**: 根据设备类型查询设备列表

**路径参数**:
- `equipmentType`: 设备类型枚举值

**设备类型枚举**:
| 枚举值 | 说明 |
|--------|------|
| HVAC | 暖通空调 |
| ELEVATOR | 电梯设备 |
| FIRE_FIGHTING | 消防设备 |
| ELECTRICAL | 电气设备 |
| WATER_SUPPLY | 给排水设备 |
| SECURITY | 安防设备 |
| PARKING | 停车设备 |
| CLEANING | 清洁设备 |
| LANDSCAPE | 园林设备 |
| OTHER | 其他设备 |

**响应**: 同查询项目下所有设备

---

#### 1.1.8 根据状态查询设备

**接口**: `GET /api/v1/asset/equipments/status/{status}`

**描述**: 根据设备状态查询设备列表

**路径参数**:
- `status`: 设备状态枚举值

**设备状态枚举**:
| 枚举值 | 说明 |
|--------|------|
| NORMAL | 正常 |
| MAINTENANCE | 维修中 |
| FAULT | 故障 |
| SCRAPPED | 报废 |

**响应**: 同查询项目下所有设备

---

#### 1.1.9 根据空间节点查询设备

**接口**: `GET /api/v1/asset/equipments/space-node/{spaceNodeId}`

**描述**: 根据空间节点ID查询设备列表

**路径参数**:
- `spaceNodeId`: 空间节点ID (UUID)

**响应**: 同查询项目下所有设备

---

#### 1.1.10 搜索设备

**接口**: `GET /api/v1/asset/equipments/search`

**描述**: 根据设备名称模糊搜索

**查询参数**:
- `name`: 设备名称关键词

**响应**: 同查询项目下所有设备

---

#### 1.1.11 更新设备状态

**接口**: `PATCH /api/v1/asset/equipments/{id}/status`

**描述**: 更新设备运行状态

**路径参数**:
- `id`: 设备ID (UUID)

**查询参数**:
- `status`: 设备状态枚举值

**响应**: 同创建设备响应

---

#### 1.1.12 记录保养

**接口**: `POST /api/v1/asset/equipments/{id}/maintenance`

**描述**: 记录设备保养操作

**路径参数**:
- `id`: 设备ID (UUID)

**响应**: 同创建设备响应

---

#### 1.1.13 生成设备编码

**接口**: `GET /api/v1/asset/equipments/generate-code`

**描述**: 生成新的设备编码

**查询参数**:
- `equipmentType`: 设备类型枚举值

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": "EQ-HVAC-20260220-001"
}
```

---

#### 1.1.14 报告设备故障

**接口**: `POST /api/v1/asset/equipments/{id}/report-fault`

**描述**: 报告设备故障，自动创建维修工单

**路径参数**:
- `id`: 设备ID (UUID)

**查询参数**:
- `faultDescription`: 故障描述 (必填)
- `reporterId`: 报告人ID (可选)
- `reporterName`: 报告人姓名 (可选)
- `reporterPhone`: 报告人电话 (可选)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": "uuid-work-order"
}
```

---

#### 1.1.15 获取设备维修历史

**接口**: `GET /api/v1/asset/equipments/{id}/repair-history`

**描述**: 获取设备维修工单历史记录

**路径参数**:
- `id`: 设备ID (UUID)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": [
    {
      "workOrderId": "uuid-work-order",
      "workOrderNo": "WO-20260220-001",
      "title": "空调故障维修",
      "status": "COMPLETED",
      "createdAt": "2026-02-15T10:00:00"
    }
  ]
}
```

---

### 1.2 设备二维码管理

#### 1.2.1 获取设备二维码

**接口**: `GET /api/v1/asset/equipment/qrcode/{equipmentId}`

**描述**: 生成并返回设备二维码图片

**路径参数**:
- `equipmentId`: 设备ID (UUID)

**响应**: 
- Content-Type: image/png
- 返回二维码图片二进制数据

---

#### 1.2.2 批量生成二维码

**接口**: `GET /api/v1/asset/equipment/qrcode/batch`

**描述**: 批量生成设备二维码信息

**查询参数**:
- `equipmentIds`: 设备ID列表 (多个UUID，逗号分隔)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": [
    {
      "equipmentId": "uuid-1",
      "equipmentCode": "EQ-001",
      "equipmentName": "设备1",
      "qrCodeUrl": "/api/v1/asset/equipment/qrcode/uuid-1"
    }
  ]
}
```

---

#### 1.2.3 扫码获取设备信息

**接口**: `GET /api/v1/asset/equipment/qrcode/info/{qrCode}`

**描述**: 通过二维码内容获取设备信息

**路径参数**:
- `qrCode`: 二维码内容 (格式: EQUIPMENT:{uuid})

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "id": "uuid-equipment",
    "code": "EQ-001",
    "name": "中央空调主机",
    "type": "暖通空调",
    "status": "正常",
    "location": "A栋1楼机房",
    "brand": "格力",
    "model": "GMV-400W"
  }
}
```

---

### 1.3 设备统计 API

#### 1.3.1 设备概览统计

**接口**: `GET /api/v1/asset/equipment/statistics/overview`

**描述**: 获取设备总体统计数据

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "total": 150,
    "normal": 120,
    "maintenance": 15,
    "fault": 10,
    "scrapped": 5,
    "maintenanceRate": 10.0,
    "faultRate": 6.67
  }
}
```

---

#### 1.3.2 按状态统计

**接口**: `GET /api/v1/asset/equipment/statistics/by-status`

**描述**: 按设备状态统计数量

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "NORMAL": 120,
    "MAINTENANCE": 15,
    "FAULT": 10,
    "SCRAPPED": 5
  }
}
```

---

#### 1.3.3 按类型统计

**接口**: `GET /api/v1/asset/equipment/statistics/by-type`

**描述**: 按设备类型统计数量

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "HVAC": 30,
    "ELEVATOR": 10,
    "FIRE_FIGHTING": 25,
    "ELECTRICAL": 40,
    "WATER_SUPPLY": 20,
    "SECURITY": 15,
    "OTHER": 10
  }
}
```

---

#### 1.3.4 故障率统计

**接口**: `GET /api/v1/asset/equipment/statistics/fault-rate`

**描述**: 获取设备故障率统计

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "totalFaults": 25,
    "totalEquipment": 150,
    "faultRate": 16.67,
    "monthlyFaults": [
      {"month": "2026-01", "count": 8},
      {"month": "2026-02", "count": 5}
    ]
  }
}
```

---

#### 1.3.5 维保趋势统计

**接口**: `GET /api/v1/asset/equipment/statistics/maintenance-trend`

**描述**: 获取设备维保趋势数据

**查询参数**:
- `days`: 统计天数 (默认30天)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "totalMaintenance": 45,
    "completedMaintenance": 40,
    "pendingMaintenance": 5,
    "dailyTrend": [
      {"date": "2026-02-19", "count": 3},
      {"date": "2026-02-20", "count": 2}
    ]
  }
}
```

---

#### 1.3.6 故障设备排行

**接口**: `GET /api/v1/asset/equipment/statistics/top-fault`

**描述**: 获取故障次数最多的设备排行

**查询参数**:
- `limit`: 返回数量 (默认10)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "topFaultEquipment": [
      {
        "equipmentId": "uuid-1",
        "equipmentCode": "EQ-001",
        "equipmentName": "电梯A",
        "faultCount": 5
      }
    ]
  }
}
```

---

### 1.4 维保计划管理

#### 1.4.1 创建维保计划

**接口**: `POST /api/v1/asset/maintenance-plans`

**描述**: 创建设备维保计划

**请求体**:
```json
{
  "equipmentId": "uuid-equipment",
  "planName": "季度保养计划",
  "planType": "PERIODIC",
  "frequency": "QUARTERLY",
  "startDate": "2026-01-01",
  "endDate": "2026-12-31",
  "nextExecutionDate": "2026-03-01",
  "content": "检查制冷系统、清洁滤网、检查电气连接",
  "estimatedDuration": 120,
  "estimatedCost": 500.00,
  "executorId": "uuid-executor",
  "executorName": "李四",
  "remarks": "每季度执行一次"
}
```

**响应**: 返回创建的维保计划详情

---

#### 1.4.2 查询维保计划列表

**接口**: `GET /api/v1/asset/maintenance-plans`

**描述**: 分页查询维保计划列表

**查询参数**:
- `page`: 页码 (默认0)
- `size`: 每页数量 (默认20)
- `sortBy`: 排序字段 (默认createdAt)
- `sortDir`: 排序方向 (ASC/DESC，默认DESC)

**响应**: 返回分页的维保计划列表

---

#### 1.4.3 查询待执行的维保计划

**接口**: `GET /api/v1/asset/maintenance-plans/executable`

**描述**: 查询指定日期可执行的维保计划

**查询参数**:
- `date`: 查询日期 (格式: yyyy-MM-dd)

**响应**: 返回待执行的维保计划列表

---

#### 1.4.4 执行维保计划

**接口**: `POST /api/v1/asset/maintenance-plans/{id}/execute`

**描述**: 执行维保计划，创建维保记录

**路径参数**:
- `id`: 维保计划ID

**响应**: 返回创建的维保记录ID

---

### 1.5 维保记录管理

#### 1.5.1 创建维保记录

**接口**: `POST /api/v1/asset/maintenance-records`

**描述**: 创建维保记录

**请求体**:
```json
{
  "equipmentId": "uuid-equipment",
  "planId": "uuid-plan",
  "maintenanceType": "PERIODIC",
  "scheduledDate": "2026-02-20",
  "content": "清洁滤网、检查制冷剂、检查电气连接",
  "executorId": "uuid-executor",
  "executorName": "李四",
  "estimatedCost": 500.00
}
```

**响应**: 返回创建的维保记录详情

---

#### 1.5.2 查询维保记录列表

**接口**: `GET /api/v1/asset/maintenance-records`

**描述**: 分页查询维保记录列表

**查询参数**:
- `page`: 页码 (默认0)
- `size`: 每页数量 (默认20)
- `sortBy`: 排序字段 (默认createdAt)
- `sortDir`: 排序方向 (ASC/DESC，默认DESC)

**响应**: 返回分页的维保记录列表

---

#### 1.5.3 开始维保

**接口**: `PATCH /api/v1/asset/maintenance-records/{id}/start`

**描述**: 开始执行维保任务

**路径参数**:
- `id`: 维保记录ID

**响应**: 返回更新后的维保记录

---

#### 1.5.4 完成维保

**接口**: `PATCH /api/v1/asset/maintenance-records/{id}/complete`

**描述**: 完成维保任务

**路径参数**:
- `id`: 维保记录ID

**查询参数**:
- `result`: 维保结果描述 (必填)
- `images`: 维保图片URL (可选)

**响应**: 返回更新后的维保记录

---

#### 1.5.5 取消维保

**接口**: `PATCH /api/v1/asset/maintenance-records/{id}/cancel`

**描述**: 取消维保任务

**路径参数**:
- `id`: 维保记录ID

**查询参数**:
- `reason`: 取消原因 (必填)

**响应**: 返回更新后的维保记录

---

## 2. 收费管理 API (ether-finance)

### 2.1 收费项目管理

#### 2.1.1 创建收费项目

**接口**: `POST /api/v1/finance/fee-items`

**描述**: 创建新的收费项目

**请求头**:
```
Authorization: Bearer {token}
X-Project-Id: {projectId}
```

**请求体**:
```json
{
  "itemCode": "FI-001",
  "itemName": "物业管理费",
  "feeType": "PROPERTY_MANAGEMENT",
  "unitPrice": 3.50,
  "unit": "元/平方米/月",
  "billingCycle": "MONTHLY",
  "description": "按建筑面积收取",
  "sortOrder": 1
}
```

**收费类型枚举**:
| 枚举值 | 说明 |
|--------|------|
| PROPERTY_MANAGEMENT | 物业管理费 |
| WATER | 水费 |
| ELECTRICITY | 电费 |
| GAS | 燃气费 |
| PARKING | 停车费 |
| DECORATION_DEPOSIT | 装修押金 |
| PROPERTY_MAINTENANCE | 物业维修基金 |
| OTHER | 其他费用 |

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "id": "uuid-fee-item",
    "projectId": "uuid-project",
    "itemCode": "FI-001",
    "itemName": "物业管理费",
    "feeType": "PROPERTY_MANAGEMENT",
    "unitPrice": 3.50,
    "unit": "元/平方米/月",
    "billingCycle": "MONTHLY",
    "enabled": true,
    "createdAt": "2026-02-20T10:30:00"
  }
}
```

---

#### 2.1.2 更新收费项目

**接口**: `PUT /api/v1/finance/fee-items/{id}`

**描述**: 更新收费项目信息

**路径参数**:
- `id`: 收费项目ID (UUID)

**请求体**: 同创建收费项目

**响应**: 同创建收费项目

---

#### 2.1.3 删除收费项目

**接口**: `DELETE /api/v1/finance/fee-items/{id}`

**描述**: 删除收费项目

**路径参数**:
- `id`: 收费项目ID (UUID)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": null
}
```

---

#### 2.1.4 查询收费项目详情

**接口**: `GET /api/v1/finance/fee-items/{id}`

**描述**: 根据ID获取收费项目详情

**路径参数**:
- `id`: 收费项目ID (UUID)

**响应**: 同创建收费项目

---

#### 2.1.5 查询收费项目列表

**接口**: `GET /api/v1/finance/fee-items`

**描述**: 获取当前项目下所有收费项目列表

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": "uuid-1",
      "itemCode": "FI-001",
      "itemName": "物业管理费",
      ...
    },
    {
      "id": "uuid-2",
      "itemCode": "FI-002",
      "itemName": "水费",
      ...
    }
  ]
}
```

---

### 2.2 账单管理

#### 2.2.1 创建账单

**接口**: `POST /api/v1/finance/bills`

**描述**: 创建收费账单

**请求体**:
```json
{
  "houseId": "uuid-house",
  "contractId": "uuid-contract",
  "houseNo": "A栋1单元101",
  "ownerId": "uuid-owner",
  "ownerName": "王五",
  "ownerPhone": "13900139000",
  "feeItemId": "uuid-fee-item",
  "feeType": "PROPERTY_MANAGEMENT",
  "feeItemName": "物业管理费",
  "billingPeriodStart": "2026-02-01",
  "billingPeriodEnd": "2026-02-28",
  "quantity": 100.00,
  "unit": "平方米",
  "unitPrice": 3.50,
  "amount": 350.00,
  "discountAmount": 0,
  "lateFee": 0,
  "totalAmount": 350.00,
  "dueDate": "2026-03-10",
  "description": "2026年2月物业管理费",
  "issuedBy": "张三"
}
```

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "id": "uuid-bill",
    "projectId": "uuid-project",
    "billNo": "FB20260220001",
    "houseNo": "A栋1单元101",
    "ownerName": "王五",
    "feeItemName": "物业管理费",
    "totalAmount": 350.00,
    "paidAmount": 0,
    "unpaidAmount": 350.00,
    "status": "PENDING",
    "dueDate": "2026-03-10",
    "createdAt": "2026-02-20T10:30:00"
  }
}
```

---

#### 2.2.2 更新账单

**接口**: `PUT /api/v1/finance/bills/{id}`

**描述**: 更新账单信息

**路径参数**:
- `id`: 账单ID (UUID)

**请求体**: 同创建账单

**响应**: 同创建账单

---

#### 2.2.3 删除账单

**接口**: `DELETE /api/v1/finance/bills/{id}`

**描述**: 删除账单

**路径参数**:
- `id`: 账单ID (UUID)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": null
}
```

---

#### 2.2.4 查询账单详情

**接口**: `GET /api/v1/finance/bills/{id}`

**描述**: 根据ID获取账单详情

**路径参数**:
- `id`: 账单ID (UUID)

**响应**: 同创建账单

---

#### 2.2.5 查询账单列表

**接口**: `GET /api/v1/finance/bills`

**描述**: 分页查询账单列表

**查询参数**:
- `page`: 页码 (默认0)
- `size`: 每页数量 (默认20)
- `sort`: 排序字段 (默认createdAt)
- `direction`: 排序方向 (ASC/DESC，默认DESC)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "content": [
      {
        "id": "uuid-bill-1",
        "billNo": "FB20260220001",
        ...
      }
    ],
    "totalElements": 100,
    "totalPages": 5,
    "number": 0,
    "size": 20
  }
}
```

---

#### 2.2.6 按状态查询账单

**接口**: `GET /api/v1/finance/bills/by-status`

**描述**: 根据状态查询账单列表

**查询参数**:
- `status`: 账单状态枚举值

**账单状态枚举**:
| 枚举值 | 说明 |
|--------|------|
| PENDING | 待缴费 |
| PARTIAL | 部分缴费 |
| PAID | 已缴清 |
| OVERDUE | 已逾期 |
| CANCELLED | 已取消 |

**响应**: 返回账单列表

---

### 2.3 支付管理

#### 2.3.1 创建支付

**接口**: `POST /api/v1/finance/bills/{billId}/pay`

**描述**: 为账单创建支付记录

**路径参数**:
- `billId`: 账单ID (UUID)

**查询参数**:
- `amount`: 支付金额 (必填)
- `method`: 支付方式 (必填)

**支付方式枚举**:
| 枚举值 | 说明 |
|--------|------|
| CASH | 现金 |
| WECHAT | 微信支付 |
| ALIPAY | 支付宝 |
| BANK_TRANSFER | 银行转账 |
| OTHER | 其他 |

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "id": "uuid-payment",
    "paymentNo": "FP20260220001",
    "billNo": "FB20260220001",
    "amount": 350.00,
    "paymentMethod": "WECHAT",
    "status": "SUCCESS",
    "paymentTime": "2026-02-20T14:30:00",
    "payerName": "王五",
    "transactionNo": "WX20260220143000001"
  }
}
```

---

#### 2.3.2 查询支付详情

**接口**: `GET /api/v1/finance/payments/{id}`

**描述**: 根据ID获取支付记录详情

**路径参数**:
- `id`: 支付记录ID (UUID)

**响应**: 同创建支付

---

#### 2.3.3 查询支付记录列表

**接口**: `GET /api/v1/finance/payments`

**描述**: 分页查询支付记录列表

**查询参数**:
- `page`: 页码 (默认0)
- `size`: 每页数量 (默认20)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "content": [
      {
        "id": "uuid-payment-1",
        "paymentNo": "FP20260220001",
        ...
      }
    ],
    "totalElements": 50,
    "totalPages": 3,
    "number": 0,
    "size": 20
  }
}
```

---

#### 2.3.4 创建在线支付

**接口**: `POST /api/v1/finance/payments/create`

**描述**: 创建在线支付订单（微信/支付宝）

**查询参数**:
- `billId`: 账单ID
- `method`: 支付方式 (WECHAT/ALIPAY)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "status": "success",
    "paymentNo": "FP20260220001",
    "prepayId": "wx_prepay_id",
    "codeUrl": "weixin://wxpay/bizpayurl?...",
    "message": "支付订单创建成功"
  }
}
```

---

#### 2.3.5 查询支付状态

**接口**: `GET /api/v1/finance/payments/query/{paymentNo}`

**描述**: 查询在线支付订单状态

**路径参数**:
- `paymentNo`: 支付单号

**查询参数**:
- `method`: 支付方式 (WECHAT/ALIPAY)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "paymentNo": "FP20260220001",
    "status": "SUCCESS",
    "amount": 350.00,
    "paymentTime": "2026-02-20T14:30:00"
  }
}
```

---

#### 2.3.6 支付退款

**接口**: `POST /api/v1/finance/payments/refund/{paymentId}`

**描述**: 申请支付退款

**路径参数**:
- `paymentId`: 支付记录ID (UUID)

**查询参数**:
- `refundAmount`: 退款金额
- `reason`: 退款原因

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "status": "success",
    "refundNo": "RF20260220001",
    "refundAmount": 350.00,
    "message": "退款申请成功"
  }
}
```

---

#### 2.3.7 关闭支付订单

**接口**: `POST /api/v1/finance/payments/close/{paymentNo}`

**描述**: 关闭未支付的支付订单

**路径参数**:
- `paymentNo`: 支付单号

**查询参数**:
- `method`: 支付方式 (WECHAT/ALIPAY)

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": true
}
```

---

### 2.4 统计分析

#### 2.4.1 收费统计概览

**接口**: `GET /api/v1/finance/statistics`

**描述**: 获取收费统计数据概览

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "todayReceivable": 15000.00,
    "todayReceived": 12500.00,
    "outstandingAmount": 85000.00,
    "overdueAmount": 25000.00,
    "totalBills": 500,
    "pendingBills": 120,
    "paidBills": 350,
    "overdueBills": 30
  }
}
```

---

#### 2.4.2 今日应收金额

**接口**: `GET /api/v1/finance/statistics/today-receivable`

**描述**: 获取今日应收金额

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": 15000.00
}
```

---

#### 2.4.3 今日实收金额

**接口**: `GET /api/v1/finance/statistics/today-received`

**描述**: 获取今日实收金额

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": 12500.00
}
```

---

#### 2.4.4 待收金额

**接口**: `GET /api/v1/finance/statistics/pending-amount`

**描述**: 获取待收金额

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": 85000.00
}
```

---

#### 2.4.5 逾期金额

**接口**: `GET /api/v1/finance/statistics/overdue-amount`

**描述**: 获取逾期金额

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": 25000.00
}
```

---

#### 2.4.6 账单状态统计

**接口**: `GET /api/v1/finance/statistics/bill-status-count`

**描述**: 按状态统计账单数量

**响应**:
```json
{
  "code": 200,
  "message": "success",
  "data": {
    "PENDING": 120,
    "PARTIAL": 30,
    "PAID": 350,
    "OVERDUE": 30,
    "CANCELLED": 5
  }
}
```

---

### 2.5 导出功能

#### 2.5.1 导出账单列表

**接口**: `GET /api/v1/finance/bills/export`

**描述**: 导出账单列表为Excel文件

**查询参数**:
- `status`: 账单状态 (可选)
- `startDate`: 开始日期 (可选)
- `endDate`: 结束日期 (可选)

**响应**: 
- Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- 返回Excel文件

---

#### 2.5.2 导出支付记录

**接口**: `GET /api/v1/finance/payments/export`

**描述**: 导出支付记录为Excel文件

**查询参数**:
- `startDate`: 开始日期 (可选)
- `endDate`: 结束日期 (可选)

**响应**: 
- Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- 返回Excel文件

---

#### 2.5.3 导出收费统计报表

**接口**: `GET /api/v1/finance/statistics/export`

**描述**: 导出收费统计报表为Excel文件

**查询参数**:
- `startDate`: 开始日期 (可选)
- `endDate`: 结束日期 (可选)

**响应**: 
- Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- 返回Excel文件

---

#### 2.5.4 导出业主缴费明细

**接口**: `GET /api/v1/finance/owner/{ownerId}/payment-detail/export`

**描述**: 导出指定业主的缴费明细

**路径参数**:
- `ownerId`: 业主ID (UUID)

**查询参数**:
- `startDate`: 开始日期 (可选)
- `endDate`: 结束日期 (可选)

**响应**: 
- Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- 返回Excel文件

---

## 3. 数据模型

### 3.1 设备实体 (Equipment)

| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | UUID | 主键 |
| projectId | UUID | 项目ID |
| code | String | 设备编码 |
| name | String | 设备名称 |
| equipmentType | Enum | 设备类型 |
| status | Enum | 设备状态 |
| brand | String | 品牌 |
| model | String | 型号 |
| specifications | String | 规格参数 |
| serialNumber | String | 序列号 |
| manufacturer | String | 生产厂家 |
| supplier | String | 供应商 |
| spaceNodeId | UUID | 安装位置ID |
| locationDesc | String | 位置描述 |
| purchaseDate | LocalDate | 购置日期 |
| installDate | LocalDate | 安装日期 |
| warrantyDate | LocalDate | 保修期至 |
| purchasePrice | BigDecimal | 购置价格 |
| serviceLife | Integer | 使用年限 |
| maintenanceCycle | Integer | 保养周期 |
| lastMaintenanceDate | LocalDate | 上次保养日期 |
| nextMaintenanceDate | LocalDate | 下次保养日期 |
| managerId | UUID | 负责人ID |
| managerName | String | 负责人姓名 |
| contactPhone | String | 联系电话 |
| images | String | 设备图片 |
| manualUrl | String | 说明书URL |
| remarks | String | 备注 |
| attributes | JSON | 扩展属性 |
| createdAt | LocalDateTime | 创建时间 |
| updatedAt | LocalDateTime | 更新时间 |

---

### 3.2 收费项目实体 (FeeItem)

| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | UUID | 主键 |
| projectId | UUID | 项目ID |
| itemCode | String | 项目编码 |
| itemName | String | 项目名称 |
| feeType | Enum | 收费类型 |
| unitPrice | BigDecimal | 单价 |
| unit | String | 单位 |
| billingCycle | String | 计费周期 |
| description | String | 描述 |
| enabled | Boolean | 是否启用 |
| sortOrder | Integer | 排序 |
| createdAt | LocalDateTime | 创建时间 |
| updatedAt | LocalDateTime | 更新时间 |

---

### 3.3 账单实体 (FeeBill)

| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | UUID | 主键 |
| projectId | UUID | 项目ID |
| billNo | String | 账单号 |
| houseId | UUID | 房屋ID |
| contractId | UUID | 合同ID |
| houseNo | String | 房屋编号 |
| ownerId | UUID | 业主ID |
| ownerName | String | 业主姓名 |
| ownerPhone | String | 业主电话 |
| feeItemId | UUID | 收费项目ID |
| feeType | Enum | 收费类型 |
| feeItemName | String | 收费项目名称 |
| billingPeriodStart | LocalDate | 计费开始日期 |
| billingPeriodEnd | LocalDate | 计费结束日期 |
| quantity | BigDecimal | 数量 |
| unit | String | 单位 |
| unitPrice | BigDecimal | 单价 |
| amount | BigDecimal | 金额 |
| discountAmount | BigDecimal | 优惠金额 |
| lateFee | BigDecimal | 滞纳金 |
| totalAmount | BigDecimal | 总金额 |
| paidAmount | BigDecimal | 已付金额 |
| unpaidAmount | BigDecimal | 未付金额 |
| status | Enum | 账单状态 |
| dueDate | LocalDate | 缴费截止日期 |
| overdueDays | Integer | 逾期天数 |
| description | String | 描述 |
| remarks | String | 备注 |
| issuedBy | String | 开单人 |
| issuedAt | LocalDateTime | 开单时间 |
| createdAt | LocalDateTime | 创建时间 |
| updatedAt | LocalDateTime | 更新时间 |

---

## 4. 附录

### 4.1 服务端口

| 服务 | 端口 |
|------|------|
| ether-gateway | 8080 |
| ether-auth | 8081 |
| ether-mdm | 8082 |
| ether-ops | 8083 |
| ether-finance | 8085 |
| ether-asset | 8084 |

### 4.2 相关文档

- [待开发功能列表](./pending-features.md)
- [数据库设计](./02-DESIGN/domains/03-ASSET.md)
- [领域模型设计](./02-DESIGN/domains/04-FINANCE.md)

---

*最后更新: 2026-02-20*
