|
|
@@ -321,10 +321,63 @@ In Progress - 需要实现银行卡、备注、回访信息组件
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-- **照片验证逻辑**(来自`AggregatedService`):
|
|
|
- - 验证`fileId`的有效性(检查文件是否存在)
|
|
|
- - 照片必须包含有效的文件ID
|
|
|
- - 自动为照片添加`fileUrl`字段(从文件模块获取)
|
|
|
+- **银行卡数据结构**(来自`DisabledBankCardSchema`):
|
|
|
+ ```typescript
|
|
|
+ {
|
|
|
+ id?: number; // 银行卡ID(创建时可选)
|
|
|
+ personId?: number; // 残疾人ID(创建时可选)
|
|
|
+ subBankName: string; // 发卡支行
|
|
|
+ bankName: string; // 银行名称
|
|
|
+ cardNumber: string; // 卡号
|
|
|
+ cardholderName: string; // 持卡人姓名
|
|
|
+ fileId: number; // **银行卡照片文件ID**(引用@d8d/file-module)
|
|
|
+ isDefault: number; // 是否默认:1-是,0-否
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+- **备注数据结构**(来自`DisabledRemarkSchema`):
|
|
|
+ ```typescript
|
|
|
+ {
|
|
|
+ id?: number; // 备注ID(创建时可选)
|
|
|
+ personId?: number; // 残疾人ID(创建时可选)
|
|
|
+ remarkContent: string; // 备注内容
|
|
|
+ isSpecialNeeds: number; // 是否特殊需求:1-是,0-否
|
|
|
+ operatorId: number; // 操作人ID
|
|
|
+ remarkTime?: Date; // 备注时间(创建时自动生成)
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+- **回访数据结构**(来自`DisabledVisitSchema`):
|
|
|
+ ```typescript
|
|
|
+ {
|
|
|
+ id?: number; // 回访ID(创建时可选)
|
|
|
+ personId?: number; // 残疾人ID(创建时可选)
|
|
|
+ visitDate: Date; // 回访日期
|
|
|
+ visitType: string; // 回访类型
|
|
|
+ visitContent: string; // 回访内容
|
|
|
+ visitResult?: string; // 回访结果(可选)
|
|
|
+ nextVisitDate?: Date; // 下次回访日期(可选)
|
|
|
+ visitorId: number; // 回访人ID
|
|
|
+ visitTime?: Date; // 记录时间(创建时自动生成)
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+- **数据验证逻辑**(来自`AggregatedService`):
|
|
|
+ - **照片验证**:
|
|
|
+ - 验证`fileId`的有效性(检查文件是否存在)
|
|
|
+ - 照片必须包含有效的文件ID
|
|
|
+ - 自动为照片添加`fileUrl`字段(从文件模块获取)
|
|
|
+ - **银行卡验证**:
|
|
|
+ - 验证银行卡照片`fileId`的有效性
|
|
|
+ - 确保只有一个默认银行卡(`isDefault: 1`)
|
|
|
+ - 验证银行卡号格式
|
|
|
+ - **备注验证**:
|
|
|
+ - 验证备注内容不能为空
|
|
|
+ - 自动设置`remarkTime`为当前时间
|
|
|
+ - **回访验证**:
|
|
|
+ - 验证回访日期不能晚于当前日期
|
|
|
+ - 验证回访内容不能为空
|
|
|
+ - 自动设置`visitTime`为当前时间
|
|
|
|
|
|
- **照片上传流程**(新系统):
|
|
|
1. 通过`FileSelector`上传到文件模块,获取`fileId`
|
|
|
@@ -333,19 +386,42 @@ In Progress - 需要实现银行卡、备注、回访信息组件
|
|
|
4. 响应中包含`fileUrl`(从文件模块获取)
|
|
|
|
|
|
### 残疾人模块RPC API调用信息(基于集成测试和路由定义)
|
|
|
-- **RPC客户端调用方式**(来自`allin-packages/disability-module/tests/integration/disability.integration.test.ts`和`allin-packages/disability-module/src/routes/disabled-person-custom.routes.ts`):
|
|
|
- - `disabilityClientManager.get().createDisabledPerson.$post({ json: personData })` - 创建残疾人记录
|
|
|
- - `disabilityClientManager.get().updateDisabledPerson.$post({ json: personData })` - 更新残疾人记录
|
|
|
- - `disabilityClientManager.get().deleteDisabledPerson.$post({ json: { id } })` - 删除残疾人记录
|
|
|
- - `disabilityClientManager.get().getDisabledPersonList.$get({ query: { page, pageSize, filters, sortBy, sortOrder } })` - 获取残疾人列表(分页)
|
|
|
- - `disabilityClientManager.get().getDisabledPersonById.$get({ query: { id } })` - 获取残疾人详情
|
|
|
-
|
|
|
-- **API路径映射**(来自`allin-packages/disability-module/src/routes/disabled-person-custom.routes.ts`):
|
|
|
- - `POST /createDisabledPerson` → `disabilityClientManager.get().createDisabledPerson.$post`
|
|
|
- - `POST /updateDisabledPerson` → `disabilityClientManager.get().updateDisabledPerson.$post`
|
|
|
- - `POST /deleteDisabledPerson` → `disabilityClientManager.get().deleteDisabledPerson.$post`
|
|
|
- - `GET /getDisabledPersonList` → `disabilityClientManager.get().getDisabledPersonList.$get`
|
|
|
- - `GET /getDisabledPersonById` → `disabilityClientManager.get().getDisabledPersonById.$get`
|
|
|
+- **RPC客户端调用方式**(来自`allin-packages/disability-module/tests/integration/disability.integration.test.ts`和路由定义):
|
|
|
+ - **基本CRUD API**:
|
|
|
+ - `disabilityClientManager.get().createDisabledPerson.$post({ json: personData })` - 创建残疾人记录(仅基本信息)
|
|
|
+ - `disabilityClientManager.get().updateDisabledPerson.$post({ json: personData })` - 更新残疾人记录(仅基本信息)
|
|
|
+ - `disabilityClientManager.get().deleteDisabledPerson.$post({ json: { id } })` - 删除残疾人记录
|
|
|
+ - `disabilityClientManager.get().getDisabledPersonList.$get({ query: { page, pageSize, filters, sortBy, sortOrder } })` - 获取残疾人列表(分页)
|
|
|
+ - `disabilityClientManager.get().getDisabledPersonById.$get({ query: { id } })` - 获取残疾人详情(仅基本信息)
|
|
|
+
|
|
|
+ - **聚合API**(包含银行卡、照片、备注、回访信息):
|
|
|
+ - `disabilityClientManager.get().createAggregatedDisabledPerson.$post({ json: aggregatedData })` - **聚合创建残疾人所有信息**
|
|
|
+ - `disabilityClientManager.get().getAggregatedDisabledPerson[':id']['$get']({ param: { id } })` - **聚合查询残疾人所有信息**
|
|
|
+ - `disabilityClientManager.get().updateAggregatedDisabledPerson[':id']['$put']({ json: aggregatedData, param: { id } })` - **聚合更新残疾人所有信息**
|
|
|
+
|
|
|
+- **API路径映射**:
|
|
|
+ - **基本CRUD API**(来自`disabled-person-custom.routes.ts`):
|
|
|
+ - `POST /createDisabledPerson` → `disabilityClientManager.get().createDisabledPerson.$post`
|
|
|
+ - `POST /updateDisabledPerson` → `disabilityClientManager.get().updateDisabledPerson.$post`
|
|
|
+ - `POST /deleteDisabledPerson` → `disabilityClientManager.get().deleteDisabledPerson.$post`
|
|
|
+ - `GET /getDisabledPersonList` → `disabilityClientManager.get().getDisabledPersonList.$get`
|
|
|
+ - `GET /getDisabledPersonById` → `disabilityClientManager.get().getDisabledPersonById.$get`
|
|
|
+
|
|
|
+ - **聚合API**(来自`aggregated.routes.ts`):
|
|
|
+ - `POST /createAggregatedDisabledPerson` → `disabilityClientManager.get().createAggregatedDisabledPerson.$post`
|
|
|
+ - `GET /getAggregatedDisabledPerson/{id}` → `disabilityClientManager.get().getAggregatedDisabledPerson[':id']['$get']`
|
|
|
+ - `PUT /updateAggregatedDisabledPerson/{id}` → `disabilityClientManager.get().updateAggregatedDisabledPerson[':id']['$put']`
|
|
|
+
|
|
|
+- **聚合数据结构**(`CreateAggregatedDisabledPersonSchema`):
|
|
|
+ ```typescript
|
|
|
+ {
|
|
|
+ personInfo: CreateDisabledPersonSchema, // 残疾人基本信息
|
|
|
+ bankCards?: DisabledBankCardSchema[], // 银行卡信息数组(可选)
|
|
|
+ photos?: DisabledPhotoSchema[], // 照片信息数组(可选)
|
|
|
+ remarks?: DisabledRemarkSchema[], // 备注信息数组(可选)
|
|
|
+ visits?: DisabledVisitSchema[] // 回访信息数组(可选)
|
|
|
+ }
|
|
|
+ ```
|
|
|
|
|
|
- **残疾人数据字段**(来自`allin-packages/disability-module/src/schemas/disabled-person.schema.ts`):
|
|
|
- `name: string` - 姓名
|
|
|
@@ -457,6 +533,12 @@ Claude Code (d8d-model)
|
|
|
- ✅ 检查Schema定义:已确认有银行卡、备注、回访信息Schema
|
|
|
- ✅ 检查聚合API:已确认支持银行卡、备注、回访信息的创建、查询、更新
|
|
|
- ✅ 检查服务层实现:aggregated.service.ts已支持银行卡、备注、回访信息处理
|
|
|
+ - ✅ 检查RPC API定义:**没有独立的银行卡、备注、回访信息API**,所有相关数据通过聚合API处理
|
|
|
+ - ✅ 检查前端API客户端:已包含聚合API的类型定义(`CreateAggregatedDisabledPersonRequest`、`GetAggregatedDisabledPersonResponse`等)
|
|
|
+ - ✅ **API调用方式**:
|
|
|
+ - 创建:`disabilityClientManager.get().createAggregatedDisabledPerson.$post({ json: aggregatedData })`
|
|
|
+ - 查询:`disabilityClientManager.get().getAggregatedDisabledPerson[':id']['$get']({ param: { id } })`
|
|
|
+ - 更新:`disabilityClientManager.get().updateAggregatedDisabledPerson[':id']['$put']({ json: aggregatedData, param: { id } })`
|
|
|
|
|
|
10. **待实现功能**:
|
|
|
- ⚠️ **银行卡管理组件**:需要创建`BankCardManagement.tsx`组件,支持多个银行卡管理、银行卡照片上传、默认银行卡设置
|