ether-docs/04-TECHNICAL/api-docs.md

1581 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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*