添加银行后端接口,前端代码

This commit is contained in:
2025-09-23 17:57:18 +08:00
parent 325c114c38
commit bdc1b29934
67 changed files with 12682 additions and 7085 deletions

View File

@@ -0,0 +1,403 @@
# 项目清单 API 接口文档
## 概述
项目清单管理系统的后端API接口提供项目的增删改查功能。
## 基础信息
- **基础URL**: `http://localhost:5351/api/projects`
- **认证方式**: Bearer Token
- **内容类型**: `application/json`
## 接口列表
### 1. 创建项目
**POST** `/api/projects`
#### 请求头
```
Authorization: Bearer <token>
Content-Type: application/json
```
#### 请求参数
| 字段名 | 类型 | 必填 | 说明 | 示例 |
|--------|------|------|------|------|
| name | string | 是 | 项目名称最大100字符 | "张洪彬养殖项目" |
| farmName | string | 是 | 养殖场名称最大200字符 | "张洪彬养殖场" |
| supervisionObject | string | 是 | 监管对象 | "牛" |
| supervisionPeriod | string | 是 | 监管周期 | "12个月" |
| startTime | string | 是 | 起始时间格式YYYY-MM-DD | "2024-01-01" |
| endTime | string | 是 | 结束时间格式YYYY-MM-DD | "2024-12-31" |
| status | string | 否 | 项目状态默认supervision | "supervision" 或 "completed" |
| supervisionQuantity | number | 否 | 监管数量默认0 | 100 |
| supervisionAmount | number | 否 | 监管金额默认0.00 | 500000.00 |
| earTag | number | 否 | 耳标数量默认0 | 50 |
| collar | number | 否 | 项圈数量默认0 | 30 |
| host | number | 否 | 主机数量默认0 | 20 |
| loanOfficer | string | 否 | 贷款专员 | "张专员" |
| description | string | 否 | 项目描述 | "这是一个测试项目" |
#### 请求示例
```json
{
"name": "张洪彬养殖项目",
"farmName": "张洪彬养殖场",
"supervisionObject": "牛",
"supervisionPeriod": "12个月",
"startTime": "2024-01-01",
"endTime": "2024-12-31",
"status": "supervision",
"supervisionQuantity": 100,
"supervisionAmount": 500000.00,
"earTag": 50,
"collar": 30,
"host": 20,
"loanOfficer": "张专员",
"description": "这是一个测试项目"
}
```
#### 响应示例
**成功响应 (201)**
```json
{
"success": true,
"message": "创建项目成功",
"data": {
"id": 9,
"name": "张洪彬养殖项目",
"status": "supervision",
"farmName": "张洪彬养殖场",
"supervisionObject": "牛",
"supervisionQuantity": 100,
"supervisionPeriod": "12个月",
"supervisionAmount": "500000.00",
"startTime": "2024-01-01",
"endTime": "2024-12-31",
"earTag": 50,
"collar": 30,
"host": 20,
"loanOfficer": "张专员",
"description": "这是一个测试项目",
"createdBy": 1,
"updatedBy": 1,
"createdAt": "2024-12-20T10:30:00.000Z",
"updatedAt": "2024-12-20T10:30:00.000Z",
"creator": {
"id": 1,
"username": "admin",
"real_name": "管理员"
},
"updater": {
"id": 1,
"username": "admin",
"real_name": "管理员"
}
}
}
```
**错误响应 (400)**
```json
{
"success": false,
"message": "请填写所有必填字段: name, farmName"
}
```
**错误响应 (400)**
```json
{
"success": false,
"message": "项目名称已存在,请使用其他名称"
}
```
**错误响应 (400)**
```json
{
"success": false,
"message": "结束时间必须晚于开始时间"
}
```
### 2. 获取项目列表
**GET** `/api/projects`
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|--------|------|------|------|------|
| page | number | 否 | 页码默认1 | 1 |
| limit | number | 否 | 每页数量默认10 | 12 |
| search | string | 否 | 搜索关键词 | "张洪彬" |
| status | string | 否 | 状态筛选 | "supervision" 或 "completed" |
| sortBy | string | 否 | 排序字段默认createdAt | "name" |
| sortOrder | string | 否 | 排序方向默认DESC | "ASC" 或 "DESC" |
#### 请求示例
```
GET /api/projects?page=1&limit=12&search=张洪彬&status=supervision&sortBy=name&sortOrder=ASC
```
#### 响应示例
```json
{
"success": true,
"message": "获取项目列表成功",
"data": {
"projects": [
{
"id": 1,
"name": "张洪彬",
"status": "completed",
"farmName": "大数据中心",
"supervisionObject": "牛",
"supervisionQuantity": 100,
"supervisionPeriod": "12个月",
"supervisionAmount": "500000.00",
"startTime": "2024-01-01",
"endTime": "2024-12-31",
"earTag": 50,
"collar": 30,
"host": 20,
"loanOfficer": "张专员",
"description": "项目描述",
"createdAt": "2024-12-20T10:30:00.000Z",
"updatedAt": "2024-12-20T10:30:00.000Z",
"creator": {
"id": 1,
"username": "admin",
"real_name": "管理员"
},
"updater": {
"id": 1,
"username": "admin",
"real_name": "管理员"
}
}
],
"pagination": {
"total": 8,
"currentPage": 1,
"pageSize": 12,
"totalPages": 1,
"hasNextPage": false,
"hasPrevPage": false
}
}
}
```
### 3. 获取项目详情
**GET** `/api/projects/:id`
#### 路径参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | number | 是 | 项目ID |
#### 响应示例
```json
{
"success": true,
"message": "获取项目详情成功",
"data": {
"id": 1,
"name": "张洪彬",
"status": "completed",
"farmName": "大数据中心",
"supervisionObject": "牛",
"supervisionQuantity": 100,
"supervisionPeriod": "12个月",
"supervisionAmount": "500000.00",
"startTime": "2024-01-01",
"endTime": "2024-12-31",
"earTag": 50,
"collar": 30,
"host": 20,
"loanOfficer": "张专员",
"description": "项目描述",
"createdAt": "2024-12-20T10:30:00.000Z",
"updatedAt": "2024-12-20T10:30:00.000Z",
"creator": {
"id": 1,
"username": "admin",
"real_name": "管理员"
},
"updater": {
"id": 1,
"username": "admin",
"real_name": "管理员"
}
}
}
```
### 4. 更新项目
**PUT** `/api/projects/:id`
#### 请求参数
与创建项目相同,所有字段都是可选的。
#### 响应示例
```json
{
"success": true,
"message": "项目更新成功",
"data": {
"id": 1,
"name": "更新后的项目名称",
"status": "completed",
// ... 其他字段
}
}
```
### 5. 删除项目
**DELETE** `/api/projects/:id`
#### 响应示例
```json
{
"success": true,
"message": "项目删除成功"
}
```
### 6. 获取项目统计
**GET** `/api/projects/stats`
#### 响应示例
```json
{
"success": true,
"message": "项目统计获取成功",
"data": {
"total": 8,
"supervision": 3,
"completed": 5
}
}
```
### 7. 批量更新项目状态
**PUT** `/api/projects/batch/status`
#### 请求参数
```json
{
"ids": [1, 2, 3],
"status": "completed"
}
```
#### 响应示例
```json
{
"success": true,
"message": "成功更新 3 个项目状态",
"data": {
"updatedCount": 3
}
}
```
## 错误码说明
| 状态码 | 说明 |
|--------|------|
| 200 | 请求成功 |
| 201 | 创建成功 |
| 400 | 请求参数错误 |
| 401 | 未授权,需要登录 |
| 403 | 禁止访问,权限不足 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
## 数据验证规则
### 必填字段验证
- `name`: 项目名称,不能为空
- `farmName`: 养殖场名称,不能为空
- `supervisionObject`: 监管对象,不能为空
- `supervisionPeriod`: 监管周期,不能为空
- `startTime`: 起始时间,不能为空
- `endTime`: 结束时间,不能为空
### 字段长度限制
- `name`: 最大100个字符
- `farmName`: 最大200个字符
- `supervisionObject`: 最大50个字符
- `supervisionPeriod`: 最大50个字符
- `loanOfficer`: 最大100个字符
### 数值字段验证
- `supervisionQuantity`: 不能为负数
- `supervisionAmount`: 不能为负数
- `earTag`: 不能为负数
- `collar`: 不能为负数
- `host`: 不能为负数
### 日期验证
- `startTime``endTime` 必须是有效的日期格式 (YYYY-MM-DD)
- `endTime` 必须晚于 `startTime`
### 状态验证
- `status` 只能是 "supervision" 或 "completed"
## 使用示例
### JavaScript (axios)
```javascript
// 创建项目
const createProject = async (projectData) => {
try {
const response = await axios.post('/api/projects', projectData, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
});
return response.data;
} catch (error) {
console.error('创建项目失败:', error.response.data);
throw error;
}
};
// 获取项目列表
const getProjects = async (params = {}) => {
try {
const response = await axios.get('/api/projects', {
headers: {
'Authorization': `Bearer ${token}`
},
params
});
return response.data;
} catch (error) {
console.error('获取项目列表失败:', error.response.data);
throw error;
}
};
```
### cURL
```bash
# 创建项目
curl -X POST http://localhost:5351/api/projects \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "测试项目",
"farmName": "测试养殖场",
"supervisionObject": "牛",
"supervisionPeriod": "12个月",
"startTime": "2024-01-01",
"endTime": "2024-12-31"
}'
# 获取项目列表
curl -X GET "http://localhost:5351/api/projects?page=1&limit=10" \
-H "Authorization: Bearer YOUR_TOKEN"
```

View File

@@ -0,0 +1,459 @@
# 监管任务 API 接口文档
## 概述
监管任务管理系统的后端API接口提供监管任务的增删改查功能。
## 基础信息
- **基础URL**: `http://localhost:5351/api/supervision-tasks`
- **认证方式**: Bearer Token
- **内容类型**: `application/json`
## 接口列表
### 1. 创建监管任务
**POST** `/api/supervision-tasks`
#### 请求头
```
Authorization: Bearer <token>
Content-Type: application/json
```
#### 请求参数
| 字段名 | 类型 | 必填 | 说明 | 示例 |
|--------|------|------|------|------|
| applicationNumber | string | 是 | 申请单号最大50字符唯一 | "APP001" |
| contractNumber | string | 是 | 放款合同编号最大50字符唯一 | "CONTRACT001" |
| productName | string | 是 | 产品名称最大100字符 | "农业贷款产品A" |
| customerName | string | 是 | 客户姓名最大50字符 | "张三" |
| idType | string | 是 | 证件类型 | "id_card" (身份证), "passport" (护照), "other" (其他) |
| idNumber | string | 是 | 证件号码最大50字符 | "110101199001011234" |
| assetType | string | 是 | 养殖生资种类 | "cattle" (牛), "sheep" (羊), "pig" (猪), "poultry" (家禽), "other" (其他) |
| assetQuantity | number | 是 | 监管生资数量,非负数 | 10 |
| startTime | string | 是 | 监管起始时间格式YYYY-MM-DD | "2024-01-15" |
| endTime | string | 是 | 监管结束时间格式YYYY-MM-DD | "2024-12-15" |
| supervisionStatus | string | 否 | 监管状态默认pending | "pending", "supervising", "completed", "suspended" |
| loanAmount | number | 否 | 贷款金额默认0 | 500000.00 |
| interestRate | number | 否 | 利率默认0范围0-1 | 0.0650 |
| loanTerm | number | 否 | 贷款期限默认12 | 12 |
| supervisorName | string | 否 | 监管员姓名最大50字符 | "李监管员" |
| supervisorPhone | string | 否 | 监管员电话最大20字符 | "13800138001" |
| farmAddress | string | 否 | 养殖场地址最大200字符 | "北京市朝阳区某某养殖场" |
| remarks | string | 否 | 备注 | "重点监管项目,需要定期检查" |
#### 请求示例
```json
{
"applicationNumber": "APP001",
"contractNumber": "CONTRACT001",
"productName": "农业贷款产品A",
"customerName": "张三",
"idType": "id_card",
"idNumber": "110101199001011234",
"assetType": "cattle",
"assetQuantity": 10,
"supervisionStatus": "pending",
"startTime": "2024-01-15",
"endTime": "2024-12-15",
"loanAmount": 500000.00,
"interestRate": 0.0650,
"loanTerm": 12,
"supervisorName": "李监管员",
"supervisorPhone": "13800138001",
"farmAddress": "北京市朝阳区某某养殖场",
"remarks": "重点监管项目,需要定期检查"
}
```
#### 响应示例
**成功响应 (201)**
```json
{
"success": true,
"message": "监管任务创建成功",
"data": {
"id": 1,
"applicationNumber": "APP001",
"contractNumber": "CONTRACT001",
"productName": "农业贷款产品A",
"customerName": "张三",
"idType": "id_card",
"idNumber": "110101199001011234",
"assetType": "cattle",
"assetQuantity": 10,
"supervisionStatus": "pending",
"importTime": "2024-12-20T10:30:00.000Z",
"startTime": "2024-01-15",
"endTime": "2024-12-15",
"loanAmount": "500000.00",
"interestRate": "0.0650",
"loanTerm": 12,
"supervisorName": "李监管员",
"supervisorPhone": "13800138001",
"farmAddress": "北京市朝阳区某某养殖场",
"remarks": "重点监管项目,需要定期检查",
"createdBy": 1,
"updatedBy": 1,
"createdAt": "2024-12-20T10:30:00.000Z",
"updatedAt": "2024-12-20T10:30:00.000Z",
"creator": {
"id": 1,
"username": "admin",
"real_name": "管理员"
},
"updater": {
"id": 1,
"username": "admin",
"real_name": "管理员"
}
}
}
```
### 2. 获取监管任务列表
**GET** `/api/supervision-tasks`
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|--------|------|------|------|------|
| page | number | 否 | 页码默认1 | 1 |
| limit | number | 否 | 每页数量默认10 | 10 |
| search | string | 否 | 搜索关键词(申请单号、合同编号、客户姓名、产品名称) | "张三" |
| supervisionStatus | string | 否 | 状态筛选 | "pending", "supervising", "completed", "suspended" |
| dateRange | string | 否 | 日期范围筛选格式startDate,endDate | "2024-01-01,2024-12-31" |
| sortBy | string | 否 | 排序字段默认createdAt | "applicationNumber", "customerName", "supervisionStatus" |
| sortOrder | string | 否 | 排序方向默认DESC | "ASC", "DESC" |
#### 请求示例
```
GET /api/supervision-tasks?page=1&limit=10&search=张三&supervisionStatus=supervising&dateRange=2024-01-01,2024-12-31&sortBy=customerName&sortOrder=ASC
```
#### 响应示例
```json
{
"success": true,
"message": "监管任务列表获取成功",
"data": {
"tasks": [
{
"id": 1,
"applicationNumber": "APP001",
"contractNumber": "CONTRACT001",
"productName": "农业贷款产品A",
"customerName": "张三",
"idType": "id_card",
"idNumber": "110101199001011234",
"assetType": "cattle",
"assetQuantity": 10,
"supervisionStatus": "supervising",
"importTime": "2024-01-15T10:30:00.000Z",
"startTime": "2024-01-15",
"endTime": "2024-12-15",
"loanAmount": "500000.00",
"interestRate": "0.0650",
"loanTerm": 12,
"supervisorName": "李监管员",
"supervisorPhone": "13800138001",
"farmAddress": "北京市朝阳区某某养殖场",
"remarks": "重点监管项目,需要定期检查",
"createdAt": "2024-12-20T10:30:00.000Z",
"updatedAt": "2024-12-20T10:30:00.000Z",
"creator": {
"id": 1,
"username": "admin",
"real_name": "管理员"
},
"updater": {
"id": 1,
"username": "admin",
"real_name": "管理员"
}
}
],
"pagination": {
"total": 8,
"currentPage": 1,
"pageSize": 10,
"totalPages": 1,
"hasNextPage": false,
"hasPrevPage": false
}
}
}
```
### 3. 获取监管任务详情
**GET** `/api/supervision-tasks/:id`
#### 路径参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | number | 是 | 监管任务ID |
#### 响应示例
```json
{
"success": true,
"message": "监管任务详情获取成功",
"data": {
"id": 1,
"applicationNumber": "APP001",
"contractNumber": "CONTRACT001",
"productName": "农业贷款产品A",
"customerName": "张三",
"idType": "id_card",
"idNumber": "110101199001011234",
"assetType": "cattle",
"assetQuantity": 10,
"supervisionStatus": "supervising",
"importTime": "2024-01-15T10:30:00.000Z",
"startTime": "2024-01-15",
"endTime": "2024-12-15",
"loanAmount": "500000.00",
"interestRate": "0.0650",
"loanTerm": 12,
"supervisorName": "李监管员",
"supervisorPhone": "13800138001",
"farmAddress": "北京市朝阳区某某养殖场",
"remarks": "重点监管项目,需要定期检查",
"createdAt": "2024-12-20T10:30:00.000Z",
"updatedAt": "2024-12-20T10:30:00.000Z",
"creator": {
"id": 1,
"username": "admin",
"real_name": "管理员"
},
"updater": {
"id": 1,
"username": "admin",
"real_name": "管理员"
}
}
}
```
### 4. 更新监管任务
**PUT** `/api/supervision-tasks/:id`
#### 请求参数
与创建监管任务相同,所有字段都是可选的。
#### 响应示例
```json
{
"success": true,
"message": "监管任务更新成功",
"data": {
"id": 1,
"applicationNumber": "APP001",
"contractNumber": "CONTRACT001",
"productName": "农业贷款产品A",
"customerName": "张三",
"supervisionStatus": "supervising",
"remarks": "更新后的备注信息",
"updatedAt": "2024-12-20T11:00:00.000Z"
}
}
```
### 5. 删除监管任务
**DELETE** `/api/supervision-tasks/:id`
#### 响应示例
```json
{
"success": true,
"message": "监管任务删除成功"
}
```
### 6. 获取监管任务统计
**GET** `/api/supervision-tasks/stats`
#### 响应示例
```json
{
"success": true,
"message": "监管任务统计获取成功",
"data": {
"total": 8,
"pending": 2,
"supervising": 3,
"completed": 2,
"suspended": 1
}
}
```
### 7. 批量更新监管任务状态
**PUT** `/api/supervision-tasks/batch/status`
#### 请求参数
```json
{
"ids": [1, 2, 3],
"supervisionStatus": "completed"
}
```
#### 响应示例
```json
{
"success": true,
"message": "成功更新 3 个监管任务状态",
"data": {
"updatedCount": 3
}
}
```
### 8. 批量删除监管任务
**DELETE** `/api/supervision-tasks/batch`
#### 请求参数
```json
{
"ids": [1, 2, 3]
}
```
#### 响应示例
```json
{
"success": true,
"message": "成功删除 3 个监管任务",
"data": {
"deletedCount": 3
}
}
```
## 错误码说明
| 状态码 | 说明 |
|--------|------|
| 200 | 请求成功 |
| 201 | 创建成功 |
| 400 | 请求参数错误 |
| 401 | 未授权,需要登录 |
| 403 | 禁止访问,权限不足 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
## 数据验证规则
### 必填字段验证
- `applicationNumber`: 申请单号不能为空最大50字符唯一
- `contractNumber`: 放款合同编号不能为空最大50字符唯一
- `productName`: 产品名称不能为空最大100字符
- `customerName`: 客户姓名不能为空最大50字符
- `idNumber`: 证件号码不能为空最大50字符
- `startTime`: 监管起始时间,不能为空
- `endTime`: 监管结束时间,不能为空
### 枚举值验证
- `idType`: 只能是 "id_card", "passport", "other"
- `assetType`: 只能是 "cattle", "sheep", "pig", "poultry", "other"
- `supervisionStatus`: 只能是 "pending", "supervising", "completed", "suspended"
### 数值字段验证
- `assetQuantity`: 不能为负数
- `loanAmount`: 不能为负数
- `interestRate`: 必须在0-1之间
- `loanTerm`: 不能为负数
### 日期验证
- `startTime``endTime` 必须是有效的日期格式 (YYYY-MM-DD)
- `endTime` 必须晚于 `startTime`
## 使用示例
### JavaScript (axios)
```javascript
// 创建监管任务
const createSupervisionTask = async (taskData) => {
try {
const response = await axios.post('/api/supervision-tasks', taskData, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
});
return response.data;
} catch (error) {
console.error('创建监管任务失败:', error.response.data);
throw error;
}
};
// 获取监管任务列表
const getSupervisionTasks = async (params = {}) => {
try {
const response = await axios.get('/api/supervision-tasks', {
headers: {
'Authorization': `Bearer ${token}`
},
params
});
return response.data;
} catch (error) {
console.error('获取监管任务列表失败:', error.response.data);
throw error;
}
};
```
### cURL
```bash
# 创建监管任务
curl -X POST http://localhost:5351/api/supervision-tasks \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"applicationNumber": "APP001",
"contractNumber": "CONTRACT001",
"productName": "农业贷款产品A",
"customerName": "张三",
"idType": "id_card",
"idNumber": "110101199001011234",
"assetType": "cattle",
"assetQuantity": 10,
"startTime": "2024-01-15",
"endTime": "2024-12-15"
}'
# 获取监管任务列表
curl -X GET "http://localhost:5351/api/supervision-tasks?page=1&limit=10" \
-H "Authorization: Bearer YOUR_TOKEN"
```
## 数据库表结构
### supervision_tasks 表
| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | INTEGER | 主键,自增 |
| applicationNumber | VARCHAR(50) | 申请单号,唯一 |
| contractNumber | VARCHAR(50) | 放款合同编号,唯一 |
| productName | VARCHAR(100) | 产品名称 |
| customerName | VARCHAR(50) | 客户姓名 |
| idType | ENUM | 证件类型 |
| idNumber | VARCHAR(50) | 证件号码 |
| assetType | ENUM | 养殖生资种类 |
| assetQuantity | INTEGER | 监管生资数量 |
| supervisionStatus | ENUM | 监管状态 |
| importTime | DATETIME | 任务导入时间 |
| startTime | DATE | 监管起始时间 |
| endTime | DATE | 监管结束时间 |
| loanAmount | DECIMAL(15,2) | 贷款金额 |
| interestRate | DECIMAL(5,4) | 利率 |
| loanTerm | INTEGER | 贷款期限(月) |
| supervisorName | VARCHAR(50) | 监管员姓名 |
| supervisorPhone | VARCHAR(20) | 监管员电话 |
| farmAddress | VARCHAR(200) | 养殖场地址 |
| remarks | TEXT | 备注 |
| createdBy | INTEGER | 创建人ID |
| updatedBy | INTEGER | 更新人ID |
| createdAt | DATETIME | 创建时间 |
| updatedAt | DATETIME | 更新时间 |