856 lines
40 KiB
Markdown
856 lines
40 KiB
Markdown
# 数字债权服务系统设计文档
|
||
|
||
## 概述
|
||
|
||
数字债权服务系统是基于RuoYi框架构建的企业级债权管理平台,采用微服务架构和区块链技术,为安保服务行业提供完整的债权确权、融资申请和结算清收解决方案。系统遵循RuoYi的分层架构模式,在现有框架基础上扩展债权管理相关功能模块。
|
||
|
||
## 架构设计
|
||
|
||
### 整体架构
|
||
|
||
系统采用分层架构模式,基于RuoYi框架的模块化设计,集成区块链、安全、监控等多个技术栈:
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ 前端展示层 (Vue3) │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
|
||
│ │债权管理界面 │ │融资管理界面 │ │ 报表分析界面 │ │
|
||
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ Web控制层 (Controller) │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
|
||
│ │合同API │ │融资API │ │ 报表API │ │
|
||
│ │债权API │ │支付API │ │ 监控API │ │
|
||
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ 业务服务层 (Service) │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
|
||
│ │合同管理 │ │融资管理 │ │ 报表分析 │ │
|
||
│ │债权管理 │ │支付结算 │ │ 工作流引擎 │ │
|
||
│ │安全管理 │ │通知服务 │ │ 集成适配 │ │
|
||
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ 数据访问层 (Mapper) │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
|
||
│ │合同数据访问 │ │融资数据访问 │ │ 日志数据访问 │ │
|
||
│ │债权数据访问 │ │支付数据访问 │ │ 缓存数据访问 │ │
|
||
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ 数据持久层 │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
|
||
│ │MySQL数据库 │ │Redis缓存 │ │ 文件存储 │ │
|
||
│ │(业务数据) │ │(会话/缓存) │ │ (报表/日志) │ │
|
||
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
│
|
||
┌─────────────────────┼─────────────────────┐
|
||
│ │ │
|
||
┌───────▼────────┐ ┌─────────▼────────┐ ┌────────▼────────┐
|
||
│ 区块链集成层 │ │ 外部系统集成 │ │ 监控告警系统 │
|
||
│ ┌─────────────┐ │ │ ┌──────────────┐ │ │ ┌─────────────┐ │
|
||
│ │智能合约执行 │ │ │ │金融机构API │ │ │ │系统监控 │ │
|
||
│ │数据上链存储 │ │ │ │支付网关集成 │ │ │ │性能监控 │ │
|
||
│ │链上数据验证 │ │ │ │第三方服务 │ │ │ │告警通知 │ │
|
||
│ └─────────────┘ │ │ └──────────────┘ │ │ └─────────────┘ │
|
||
└────────────────┘ └──────────────────┘ └─────────────────┘
|
||
```
|
||
|
||
#### 架构特点
|
||
|
||
1. **分层解耦**: 严格的分层架构,每层职责明确
|
||
2. **模块化设计**: 按业务领域划分模块,便于维护和扩展
|
||
3. **多技术栈集成**: 集成区块链、缓存、监控等多种技术
|
||
4. **横向扩展**: 支持微服务化改造和水平扩展
|
||
5. **安全优先**: 在每一层都集成安全控制和数据保护
|
||
|
||
### 模块架构
|
||
|
||
系统将作为新的业务模块集成到RuoYi框架中:
|
||
|
||
```
|
||
RuoYi数字债权服务系统模块架构
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ RuoYi Framework │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ ruoyi-admin │ ruoyi-system │ ruoyi-framework │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ 新增债权服务模块 │
|
||
├─────────────────┬─────────────────┬─────────────────────────┤
|
||
│ ruoyi-credit │ ruoyi-blockchain│ ruoyi-payment │
|
||
│ ┌─────────────┐│ ┌─────────────┐│ ┌─────────────────────┐│
|
||
│ │合同管理 ││ │区块链集成 ││ │支付结算 ││
|
||
│ │债权管理 ││ │智能合约 ││ │资金监管 ││
|
||
│ │融资管理 ││ │数据上链 ││ │资金分配 ││
|
||
│ └─────────────┘│ └─────────────┘│ └─────────────────────┘│
|
||
├─────────────────┼─────────────────┼─────────────────────────┤
|
||
│ ruoyi-security │ruoyi-notification│ ruoyi-analytics │
|
||
│ ┌─────────────┐│ ┌─────────────┐│ ┌─────────────────────┐│
|
||
│ │身份认证 ││ │消息推送 ││ │报表生成 ││
|
||
│ │权限管理 ││ │定时提醒 ││ │数据分析 ││
|
||
│ │数据加密 ││ │告警通知 ││ │仪表板 ││
|
||
│ │审计日志 ││ │消息模板 ││ │数据导出 ││
|
||
│ └─────────────┘│ └─────────────┘│ └─────────────────────┘│
|
||
├─────────────────┼─────────────────┼─────────────────────────┤
|
||
│ ruoyi-workflow │ ruoyi-integration│ ruoyi-monitor │
|
||
│ ┌─────────────┐│ ┌─────────────┐│ ┌─────────────────────┐│
|
||
│ │流程引擎 ││ │外部系统集成 ││ │系统监控 ││
|
||
│ │任务管理 ││ │API适配 ││ │性能监控 ││
|
||
│ │审批流程 ││ │数据同步 ││ │健康检查 ││
|
||
│ │流程回滚 ││ │第三方服务 ││ │告警机制 ││
|
||
│ └─────────────┘│ └─────────────┘│ └─────────────────────┘│
|
||
└─────────────────┴─────────────────┴─────────────────────────┘
|
||
```
|
||
|
||
#### 核心模块说明
|
||
|
||
- **ruoyi-credit**: 债权管理核心模块
|
||
- 合同管理服务 (ContractManager)
|
||
- 债权管理服务 (CreditManager)
|
||
- 融资管理服务 (FinancingManager)
|
||
|
||
- **ruoyi-blockchain**: 区块链集成模块
|
||
- 区块链集成组件 (BlockchainIntegrator)
|
||
- 智能合约执行和数据上链
|
||
|
||
- **ruoyi-payment**: 支付结算模块
|
||
- 支付处理组件 (PaymentProcessor)
|
||
- 资金监管和分配逻辑
|
||
|
||
- **ruoyi-security**: 安全管理模块
|
||
- 安全管理组件 (SecurityManager)
|
||
- 数据加密、身份认证、权限控制
|
||
|
||
- **ruoyi-notification**: 通知服务模块
|
||
- 通知服务组件 (NotificationService)
|
||
- 消息推送、定时提醒、告警通知
|
||
|
||
- **ruoyi-analytics**: 数据分析模块
|
||
- 报表分析组件 (ReportAnalyzer)
|
||
- 财务报表、数据可视化、仪表板
|
||
|
||
- **ruoyi-workflow**: 工作流模块
|
||
- 工作流引擎组件 (WorkflowEngine)
|
||
- 业务流程自动化、任务审批
|
||
|
||
- **ruoyi-integration**: 集成适配模块
|
||
- 集成适配组件 (IntegrationAdapter)
|
||
- 外部系统集成、API适配
|
||
|
||
- **ruoyi-monitor**: 监控管理模块
|
||
- 系统监控、性能监控、健康检查
|
||
- 缓存管理组件 (CacheManager)
|
||
|
||
## 组件和接口
|
||
|
||
### 核心组件
|
||
|
||
#### 1. 合同管理组件 (ContractManager)
|
||
- **所属模块**: ruoyi-credit
|
||
- **架构层级**: 业务服务层
|
||
- **职责**: 处理服务合同的创建、确认和状态管理
|
||
- **接口**:
|
||
- `createContract(contractInfo)`: 创建服务合同
|
||
- `confirmContract(contractId, partyType)`: 确认合同
|
||
- `updateContractStatus(contractId, status)`: 更新合同状态
|
||
- `validateContractData(contractInfo)`: 验证合同数据完整性
|
||
- `generateContractNumber()`: 生成合同编号
|
||
|
||
#### 2. 债权管理组件 (CreditManager)
|
||
- **所属模块**: ruoyi-credit
|
||
- **架构层级**: 业务服务层
|
||
- **职责**: 管理数字债权凭证的生成、验证和状态跟踪
|
||
- **接口**:
|
||
- `generateCredit(contractId)`: 生成数字债权凭证
|
||
- `validateCredit(creditId)`: 验证债权凭证有效性
|
||
- `updateCreditStatus(creditId, status)`: 更新债权状态
|
||
- `calculateCreditAmount(contractId)`: 计算债权金额
|
||
- `generateDigitalSignature(creditData)`: 生成数字签名
|
||
|
||
#### 3. 融资管理组件 (FinancingManager)
|
||
- **所属模块**: ruoyi-credit
|
||
- **架构层级**: 业务服务层
|
||
- **职责**: 处理融资申请、审批和资金管理
|
||
- **接口**:
|
||
- `submitFinancingApplication(creditId, amount)`: 提交融资申请
|
||
- `processApproval(applicationId, result)`: 处理审批结果
|
||
- `manageFunds(accountId, operation)`: 管理资金操作
|
||
- `calculateInterestRate(creditInfo, institutionId)`: 计算利率
|
||
- `generateRiskAssessment(applicationId)`: 生成风险评估报告
|
||
|
||
#### 4. 区块链集成组件 (BlockchainIntegrator)
|
||
- **所属模块**: ruoyi-blockchain
|
||
- **架构层级**: 区块链集成层
|
||
- **职责**: 与区块链网络交互,确保数据不可篡改性
|
||
- **接口**:
|
||
- `storeOnChain(data)`: 将数据存储到区块链
|
||
- `verifyOnChain(hash)`: 验证链上数据
|
||
- `executeSmartContract(contractAddress, params)`: 执行智能合约
|
||
- `deploySmartContract(contractCode)`: 部署智能合约
|
||
- `queryChainData(queryParams)`: 查询链上数据
|
||
- `monitorChainEvents(eventFilter)`: 监控链上事件
|
||
|
||
#### 5. 支付结算组件 (PaymentProcessor)
|
||
- **所属模块**: ruoyi-payment
|
||
- **架构层级**: 业务服务层
|
||
- **职责**: 处理资金流转、分配和结算
|
||
- **接口**:
|
||
- `processPayment(paymentInfo)`: 处理支付
|
||
- `distributeFunds(distributionPlan)`: 分配资金
|
||
- `settleAccount(accountId)`: 结算账户
|
||
- `createEscrowAccount(applicationId)`: 创建监管账户
|
||
- `transferFunds(fromAccount, toAccount, amount)`: 资金转账
|
||
- `calculateFees(transactionAmount)`: 计算手续费
|
||
|
||
#### 6. 通知服务组件 (NotificationService)
|
||
- **所属模块**: ruoyi-notification
|
||
- **架构层级**: 业务服务层
|
||
- **职责**: 发送各类业务通知和提醒
|
||
- **接口**:
|
||
- `sendNotification(recipient, message, type)`: 发送通知
|
||
- `scheduleReminder(scheduleInfo)`: 安排提醒
|
||
- `sendAlert(alertInfo)`: 发送告警
|
||
- `createMessageTemplate(templateInfo)`: 创建消息模板
|
||
- `batchSendNotification(recipients, message)`: 批量发送通知
|
||
- `trackDeliveryStatus(messageId)`: 跟踪消息投递状态
|
||
|
||
#### 7. 安全管理组件 (SecurityManager)
|
||
- **所属模块**: ruoyi-security
|
||
- **架构层级**: 业务服务层(横切关注点)
|
||
- **职责**: 统一管理系统安全策略和安全事件处理
|
||
- **接口**:
|
||
- `authenticateUser(credentials)`: 用户身份认证
|
||
- `authorizeAccess(userId, resource, action)`: 权限授权
|
||
- `encryptData(data, keyId)`: 数据加密
|
||
- `decryptData(encryptedData, keyId)`: 数据解密
|
||
- `auditLog(operation, userId, resource)`: 审计日志记录
|
||
- `detectThreat(eventData)`: 威胁检测
|
||
- `handleSecurityIncident(incident)`: 安全事件处理
|
||
- `generateMFAToken(userId)`: 生成多因素认证令牌
|
||
- `validateMFAToken(userId, token)`: 验证多因素认证令牌
|
||
- `maskSensitiveData(data, userRole)`: 敏感数据脱敏
|
||
|
||
#### 8. 数据管理组件 (DataManager)
|
||
- **所属模块**: ruoyi-monitor
|
||
- **架构层级**: 数据访问层
|
||
- **职责**: 管理数据生命周期、备份恢复和数据质量
|
||
- **接口**:
|
||
- `backupData(dataType, schedule)`: 数据备份
|
||
- `restoreData(backupId, targetTime)`: 数据恢复
|
||
- `validateDataIntegrity(dataId)`: 数据完整性验证
|
||
- `maskSensitiveData(data, maskLevel)`: 敏感数据脱敏
|
||
- `archiveData(dataId, retentionPolicy)`: 数据归档
|
||
- `purgeData(dataId, reason)`: 数据清理
|
||
- `syncDataAcrossNodes(dataType)`: 跨节点数据同步
|
||
- `compressHistoricalData(timeRange)`: 压缩历史数据
|
||
- `generateDataQualityReport()`: 生成数据质量报告
|
||
|
||
#### 9. 工作流引擎组件 (WorkflowEngine)
|
||
- **所属模块**: ruoyi-workflow
|
||
- **架构层级**: 业务服务层
|
||
- **职责**: 管理业务流程的自动化执行和状态跟踪
|
||
- **接口**:
|
||
- `startWorkflow(processDefinition, parameters)`: 启动工作流
|
||
- `executeTask(taskId, action, parameters)`: 执行任务
|
||
- `approveTask(taskId, approver, decision)`: 任务审批
|
||
- `getWorkflowStatus(instanceId)`: 获取流程状态
|
||
- `rollbackWorkflow(instanceId, targetStep)`: 流程回滚
|
||
- `defineWorkflowTemplate(templateInfo)`: 定义工作流模板
|
||
- `assignTask(taskId, assignee)`: 分配任务
|
||
- `escalateTask(taskId, escalationRule)`: 任务升级
|
||
|
||
#### 10. 报表分析组件 (ReportAnalyzer)
|
||
- **所属模块**: ruoyi-analytics
|
||
- **架构层级**: 业务服务层
|
||
- **职责**: 生成各类业务报表和数据分析
|
||
- **接口**:
|
||
- `generateReport(reportType, parameters)`: 生成报表
|
||
- `exportReport(reportId, format)`: 导出报表
|
||
- `analyzeRisk(creditId, analysisType)`: 风险分析
|
||
- `calculateMetrics(metricType, timeRange)`: 计算指标
|
||
- `createDashboard(userId, widgets)`: 创建仪表板
|
||
- `scheduleReportGeneration(reportConfig)`: 定时生成报表
|
||
- `aggregateStatistics(dataSource, groupBy)`: 聚合统计数据
|
||
- `predictTrends(historicalData, algorithm)`: 趋势预测
|
||
|
||
#### 11. 集成适配组件 (IntegrationAdapter)
|
||
- **所属模块**: ruoyi-integration
|
||
- **架构层级**: 外部系统集成层
|
||
- **职责**: 与外部系统和第三方服务的集成适配
|
||
- **接口**:
|
||
- `connectExternalSystem(systemConfig)`: 连接外部系统
|
||
- `syncData(sourceSystem, targetSystem, dataType)`: 数据同步
|
||
- `callThirdPartyAPI(apiConfig, parameters)`: 调用第三方API
|
||
- `handleCallback(callbackData, source)`: 处理回调
|
||
- `transformData(data, sourceFormat, targetFormat)`: 数据转换
|
||
- `registerWebhook(webhookConfig)`: 注册Webhook
|
||
- `retryFailedIntegration(integrationId)`: 重试失败的集成
|
||
- `monitorIntegrationHealth(systemId)`: 监控集成健康状态
|
||
|
||
#### 12. 缓存管理组件 (CacheManager)
|
||
- **所属模块**: ruoyi-monitor
|
||
- **架构层级**: 数据访问层
|
||
- **职责**: 管理系统缓存策略和性能优化
|
||
- **接口**:
|
||
- `cacheData(key, data, expiration)`: 缓存数据
|
||
- `getCachedData(key)`: 获取缓存数据
|
||
- `invalidateCache(pattern)`: 失效缓存
|
||
- `preloadCache(dataType)`: 预加载缓存
|
||
- `monitorCachePerformance()`: 监控缓存性能
|
||
- `configureCachePolicy(cacheConfig)`: 配置缓存策略
|
||
- `distributeCacheUpdate(key, data)`: 分布式缓存更新
|
||
- `analyzeCacheHitRate(timeRange)`: 分析缓存命中率
|
||
|
||
### API接口设计
|
||
|
||
#### RESTful API端点
|
||
|
||
##### 合同管理API (ruoyi-credit模块)
|
||
```
|
||
POST /api/credit/contracts # 创建服务合同
|
||
PUT /api/credit/contracts/{id}/confirm # 确认合同
|
||
GET /api/credit/contracts/{id} # 获取合同详情
|
||
GET /api/credit/contracts # 查询合同列表
|
||
PUT /api/credit/contracts/{id}/status # 更新合同状态
|
||
DELETE /api/credit/contracts/{id} # 删除合同
|
||
POST /api/credit/contracts/{id}/validate # 验证合同数据
|
||
```
|
||
|
||
##### 债权管理API (ruoyi-credit模块)
|
||
```
|
||
POST /api/credit/credits # 生成数字债权凭证
|
||
GET /api/credit/credits/{id} # 获取债权凭证详情
|
||
GET /api/credit/credits # 查询债权列表
|
||
PUT /api/credit/credits/{id}/status # 更新债权状态
|
||
POST /api/credit/credits/{id}/validate # 验证债权有效性
|
||
GET /api/credit/credits/{id}/signature # 获取数字签名
|
||
```
|
||
|
||
##### 融资管理API (ruoyi-credit模块)
|
||
```
|
||
POST /api/credit/financing # 提交融资申请
|
||
PUT /api/credit/financing/{id}/approve # 审批融资申请
|
||
GET /api/credit/financing/{id} # 获取融资详情
|
||
GET /api/credit/financing # 查询融资申请列表
|
||
POST /api/credit/financing/{id}/risk-assess # 风险评估
|
||
GET /api/credit/financing/{id}/interest-rate # 获取利率信息
|
||
```
|
||
|
||
##### 支付结算API (ruoyi-payment模块)
|
||
```
|
||
POST /api/payment/process # 处理支付
|
||
POST /api/payment/escrow # 创建监管账户
|
||
PUT /api/payment/escrow/{id}/distribute # 资金分配
|
||
GET /api/payment/history # 获取支付历史
|
||
GET /api/payment/escrow/{id}/balance # 查询账户余额
|
||
POST /api/payment/transfer # 资金转账
|
||
```
|
||
|
||
##### 区块链集成API (ruoyi-blockchain模块)
|
||
```
|
||
POST /api/blockchain/store # 数据上链存储
|
||
GET /api/blockchain/verify/{hash} # 验证链上数据
|
||
POST /api/blockchain/contract/execute # 执行智能合约
|
||
POST /api/blockchain/contract/deploy # 部署智能合约
|
||
GET /api/blockchain/events # 查询链上事件
|
||
GET /api/blockchain/transaction/{txHash} # 查询交易详情
|
||
```
|
||
|
||
##### 报表分析API (ruoyi-analytics模块)
|
||
```
|
||
GET /api/reports/dashboard # 获取仪表板数据
|
||
POST /api/reports/generate # 生成报表
|
||
GET /api/reports/{id}/export # 导出报表
|
||
GET /api/reports/financial # 获取财务报表
|
||
POST /api/reports/risk-analysis # 风险分析
|
||
GET /api/reports/statistics # 统计数据
|
||
```
|
||
|
||
##### 安全管理API (ruoyi-security模块)
|
||
```
|
||
POST /api/security/authenticate # 用户认证
|
||
POST /api/security/mfa/generate # 生成MFA令牌
|
||
POST /api/security/mfa/validate # 验证MFA令牌
|
||
GET /api/security/audit-logs # 查询审计日志
|
||
POST /api/security/encrypt # 数据加密
|
||
POST /api/security/decrypt # 数据解密
|
||
```
|
||
|
||
##### 通知服务API (ruoyi-notification模块)
|
||
```
|
||
POST /api/notification/send # 发送通知
|
||
POST /api/notification/schedule # 安排定时通知
|
||
GET /api/notification/templates # 获取消息模板
|
||
POST /api/notification/templates # 创建消息模板
|
||
GET /api/notification/delivery-status/{id} # 查询投递状态
|
||
POST /api/notification/batch-send # 批量发送通知
|
||
```
|
||
|
||
## 数据模型
|
||
|
||
### 核心实体
|
||
|
||
#### 服务合同 (ServiceContract)
|
||
```java
|
||
public class ServiceContract {
|
||
private Long contractId; // 合同ID
|
||
private String contractNumber; // 合同编号
|
||
private Long securityCompanyId; // 安保公司ID
|
||
private Long clientCompanyId; // 甲方单位ID
|
||
|
||
@EncryptedField(algorithm = "AES-256-GCM")
|
||
private String serviceContent; // 服务内容(加密)
|
||
|
||
@EncryptedField(algorithm = "AES-256-GCM")
|
||
private BigDecimal contractAmount; // 合同金额(加密)
|
||
|
||
private Date startDate; // 服务开始日期
|
||
private Date endDate; // 服务结束日期
|
||
private Date paymentDueDate; // 付款到期日
|
||
private String contractStatus; // 合同状态
|
||
private Date createTime; // 创建时间
|
||
private Date updateTime; // 更新时间
|
||
private String blockchainHash; // 区块链哈希
|
||
private String dataHash; // 敏感数据哈希(用于完整性验证)
|
||
}
|
||
```
|
||
|
||
#### 数字债权凭证 (DigitalCredit)
|
||
```java
|
||
public class DigitalCredit {
|
||
private Long creditId; // 债权ID
|
||
private String creditNumber; // 债权编号
|
||
private Long contractId; // 关联合同ID
|
||
|
||
@EncryptedField(algorithm = "AES-256-GCM")
|
||
private BigDecimal creditAmount; // 债权金额(加密)
|
||
|
||
private Date issueDate; // 发行日期
|
||
private Date maturityDate; // 到期日期
|
||
private String creditStatus; // 债权状态
|
||
private String blockchainHash; // 区块链哈希
|
||
|
||
@EncryptedField(algorithm = "AES-256-GCM")
|
||
private String digitalSignature; // 数字签名(加密)
|
||
|
||
private Date createTime; // 创建时间
|
||
private Date updateTime; // 更新时间
|
||
private String encryptionKeyId; // 加密密钥ID
|
||
}
|
||
```
|
||
|
||
#### 融资申请 (FinancingApplication)
|
||
```java
|
||
public class FinancingApplication {
|
||
private Long applicationId; // 申请ID
|
||
private String applicationNumber; // 申请编号
|
||
private Long creditId; // 债权ID
|
||
private Long financialInstitutionId; // 金融机构ID
|
||
|
||
@EncryptedField(algorithm = "AES-256-GCM")
|
||
private BigDecimal requestAmount; // 申请金额(加密)
|
||
|
||
@EncryptedField(algorithm = "AES-256-GCM")
|
||
private BigDecimal approvedAmount; // 批准金额(加密)
|
||
|
||
@EncryptedField(algorithm = "AES-256-GCM")
|
||
private Double interestRate; // 利率(加密)
|
||
|
||
private String applicationStatus; // 申请状态
|
||
private Date applicationDate; // 申请日期
|
||
private Date approvalDate; // 审批日期
|
||
|
||
@EncryptedField(algorithm = "AES-256-GCM")
|
||
private String approvalComments; // 审批意见(加密)
|
||
|
||
private Date createTime; // 创建时间
|
||
private Date updateTime; // 更新时间
|
||
private String accessLog; // 访问日志ID
|
||
}
|
||
```
|
||
|
||
#### 资金监管账户 (EscrowAccount)
|
||
```java
|
||
public class EscrowAccount {
|
||
private Long accountId; // 账户ID
|
||
private String accountNumber; // 账户号码
|
||
private Long applicationId; // 关联融资申请ID
|
||
private BigDecimal totalAmount; // 总金额
|
||
private BigDecimal availableAmount; // 可用金额
|
||
private BigDecimal frozenAmount; // 冻结金额
|
||
private String accountStatus; // 账户状态
|
||
private Date createTime; // 创建时间
|
||
private Date updateTime; // 更新时间
|
||
}
|
||
```
|
||
|
||
#### 资金流转记录 (FundTransfer)
|
||
```java
|
||
public class FundTransfer {
|
||
private Long transferId; // 流转ID
|
||
private String transferNumber; // 流转编号
|
||
private Long fromAccountId; // 转出账户ID
|
||
private Long toAccountId; // 转入账户ID
|
||
private BigDecimal transferAmount; // 转账金额
|
||
private String transferType; // 转账类型
|
||
private String transferStatus; // 转账状态
|
||
private String description; // 描述
|
||
private Date transferTime; // 转账时间
|
||
private String blockchainTxHash; // 区块链交易哈希
|
||
}
|
||
```
|
||
|
||
### 数据库设计
|
||
|
||
系统将在现有RuoYi数据库基础上新增以下表结构:
|
||
|
||
#### 核心业务表 (ruoyi-credit模块)
|
||
- `dc_service_contract`: 服务合同表
|
||
- `dc_digital_credit`: 数字债权凭证表
|
||
- `dc_financing_application`: 融资申请表
|
||
- `dc_company_info`: 公司信息表
|
||
- `dc_contract_attachment`: 合同附件表
|
||
|
||
#### 支付结算表 (ruoyi-payment模块)
|
||
- `dc_escrow_account`: 资金监管账户表
|
||
- `dc_fund_transfer`: 资金流转记录表
|
||
- `dc_payment_record`: 支付记录表
|
||
- `dc_account_balance`: 账户余额表
|
||
- `dc_transaction_log`: 交易日志表
|
||
|
||
#### 区块链集成表 (ruoyi-blockchain模块)
|
||
- `dc_blockchain_transaction`: 区块链交易表
|
||
- `dc_smart_contract`: 智能合约表
|
||
- `dc_chain_event`: 链上事件表
|
||
- `dc_hash_mapping`: 哈希映射表
|
||
|
||
#### 安全管理表 (ruoyi-security模块)
|
||
- `dc_audit_log`: 审计日志表
|
||
- `dc_security_event`: 安全事件表
|
||
- `dc_encryption_key`: 加密密钥表
|
||
- `dc_mfa_token`: 多因素认证令牌表
|
||
- `dc_access_control`: 访问控制表
|
||
|
||
#### 通知服务表 (ruoyi-notification模块)
|
||
- `dc_notification_log`: 通知日志表
|
||
- `dc_message_template`: 消息模板表
|
||
- `dc_scheduled_task`: 定时任务表
|
||
- `dc_delivery_status`: 投递状态表
|
||
|
||
#### 报表分析表 (ruoyi-analytics模块)
|
||
- `dc_report_config`: 报表配置表
|
||
- `dc_report_instance`: 报表实例表
|
||
- `dc_dashboard_widget`: 仪表板组件表
|
||
- `dc_statistics_cache`: 统计缓存表
|
||
|
||
#### 工作流管理表 (ruoyi-workflow模块)
|
||
- `dc_workflow_definition`: 工作流定义表
|
||
- `dc_workflow_instance`: 工作流实例表
|
||
- `dc_workflow_task`: 工作流任务表
|
||
- `dc_approval_record`: 审批记录表
|
||
|
||
#### 集成适配表 (ruoyi-integration模块)
|
||
- `dc_external_system`: 外部系统表
|
||
- `dc_integration_config`: 集成配置表
|
||
- `dc_api_call_log`: API调用日志表
|
||
- `dc_webhook_config`: Webhook配置表
|
||
|
||
#### 系统监控表 (ruoyi-monitor模块)
|
||
- `dc_system_monitor`: 系统监控表
|
||
- `dc_performance_metric`: 性能指标表
|
||
- `dc_cache_statistics`: 缓存统计表
|
||
- `dc_backup_record`: 备份记录表
|
||
|
||
## 正确性属性
|
||
|
||
*属性是指在系统的所有有效执行中都应该成立的特征或行为——本质上是关于系统应该做什么的正式声明。属性作为人类可读规范和机器可验证正确性保证之间的桥梁。*
|
||
|
||
### 合同管理属性
|
||
|
||
**属性 1: 合同创建完整性**
|
||
*对于任何*有效的合同信息,创建合同后系统必须生成唯一的合同记录并发送确认通知
|
||
**验证需求: 1.1**
|
||
|
||
**属性 2: 合同状态一致性**
|
||
*对于任何*合同确认操作,系统必须正确更新合同状态为"已确认"并记录准确的确认时间
|
||
**验证需求: 1.2**
|
||
|
||
**属性 3: 债权生成触发**
|
||
*对于任何*已确认且服务完成的合同,系统必须自动生成对应的应收账款债权记录
|
||
**验证需求: 1.3**
|
||
|
||
### 债权管理属性
|
||
|
||
**属性 4: 债权凭证完整性**
|
||
*对于任何*生成的债权记录,系统必须创建包含完整合同详情、金额和到期日的数字债权凭证
|
||
**验证需求: 1.4**
|
||
|
||
**属性 5: 区块链不可篡改性**
|
||
*对于任何*上链的数字债权凭证,其数据哈希在区块链上必须保持不可篡改
|
||
**验证需求: 1.5**
|
||
|
||
**属性 6: 债权验证准确性**
|
||
*对于任何*融资申请,系统必须准确验证关联数字债权凭证的有效性和完整性
|
||
**验证需求: 2.1**
|
||
|
||
### 融资管理属性
|
||
|
||
**属性 7: API数据提供完整性**
|
||
*对于任何*有效的API请求,系统必须提供完整准确的链上债权数据用于信用评估
|
||
**验证需求: 2.2**
|
||
|
||
**属性 8: 审批结果记录**
|
||
*对于任何*通过的融资申请,系统必须准确记录审批结果并创建相应的融资合约
|
||
**验证需求: 2.3**
|
||
|
||
**属性 9: 资金监管存储**
|
||
*对于任何*到账的融资资金,系统必须将其正确存入指定的资金监管账户
|
||
**验证需求: 2.4**
|
||
|
||
**属性 10: 智能合约执行优先级**
|
||
*对于任何*进入监管账户的资金,系统必须通过智能合约优先保障安保人员薪资支付
|
||
**验证需求: 2.5**
|
||
|
||
### 结算管理属性
|
||
|
||
**属性 11: 付款提醒及时性**
|
||
*对于任何*临近到期的合同,系统必须自动发送付款提醒给相关甲方单位
|
||
**验证需求: 3.1**
|
||
|
||
**属性 12: 收款确认触发**
|
||
*对于任何*支付到监管专户的款项,系统必须确认收款并自动触发智能合约执行
|
||
**验证需求: 3.2**
|
||
|
||
**属性 13: 资金分配优先级**
|
||
*对于任何*启动的资金分配程序,系统必须首先偿还金融机构的贷款本金和利息
|
||
**验证需求: 3.3**
|
||
|
||
**属性 14: 剩余资金处理**
|
||
*对于任何*贷款偿还完成后的剩余资金,系统必须将其正确转至安保公司账户
|
||
**验证需求: 3.4**
|
||
|
||
**属性 15: 债权状态更新**
|
||
*对于任何*完成债务结清的债权,系统必须将数字债权凭证状态更新为"已结清"
|
||
**验证需求: 3.5**
|
||
|
||
### 系统管理属性
|
||
|
||
**属性 16: 操作日志完整性**
|
||
*对于任何*债权相关操作,系统必须记录包含完整操作详情的审计轨迹
|
||
**验证需求: 4.1**
|
||
|
||
**属性 17: 异常告警及时性**
|
||
*对于任何*系统异常情况,系统必须立即发送告警通知给相关管理人员
|
||
**验证需求: 4.2**
|
||
|
||
**属性 18: 查询数据实时性**
|
||
*对于任何*债权状态查询请求,系统必须提供实时准确的债权流转状态和历史记录
|
||
**验收需求: 4.3**
|
||
|
||
**属性 19: 数据备份一致性**
|
||
*对于任何*数据备份操作,系统必须确保区块链数据和业务数据的完全一致性
|
||
**验证需求: 4.4**
|
||
|
||
### API接口属性
|
||
|
||
**属性 20: API标准化响应**
|
||
*对于任何*金融机构的债权信息请求,系统必须通过RESTful API提供标准化格式的数据
|
||
**验证需求: 5.1**
|
||
|
||
**属性 21: 身份认证验证**
|
||
*对于任何*包含有效认证信息的API调用,系统必须正确验证调用方身份并授权数据访问
|
||
**验证需求: 5.2**
|
||
|
||
**属性 22: 风险评估数据完整性**
|
||
*对于任何*债权数据响应,系统必须包含合同金额、信用历史、还款能力等所有风险评估要素
|
||
**验证需求: 5.3**
|
||
|
||
**属性 23: 审批结果接收**
|
||
*对于任何*金融机构提交的审批结果,系统必须正确接收并完整记录审批决定和相关条件
|
||
**验证需求: 5.4**
|
||
|
||
**属性 24: 数据传输安全性**
|
||
*对于任何*数据传输过程,系统必须使用加密协议确保传输安全
|
||
**验证需求: 5.5**
|
||
|
||
### 财务管理属性
|
||
|
||
**属性 25: 债权查询完整性**
|
||
*对于任何*特定债权的查询请求,系统必须提供包含创建时间、金额、状态变更历史的完整信息
|
||
**验证需求: 6.2**
|
||
|
||
**属性 26: 资金流转实时更新**
|
||
*对于任何*资金流转操作,系统必须实时更新资金流向记录并发送相应通知
|
||
**验证需求: 6.3**
|
||
|
||
**属性 27: 财务报表数据完整性**
|
||
*对于任何*财务报表生成请求,系统必须提供完整的债权统计和收益分析等财务数据
|
||
**验证需求: 6.4**
|
||
|
||
**属性 28: 数据导出格式支持**
|
||
*对于任何*数据导出请求,系统必须支持Excel、PDF等多种格式的数据导出功能
|
||
**验证需求: 6.5**
|
||
|
||
## 数据安全与隐私保护
|
||
|
||
### 敏感数据加密
|
||
|
||
#### 数据分类
|
||
- **高敏感数据**: 合同金额、银行账户信息、身份证号码、数字签名私钥
|
||
- **中敏感数据**: 公司名称、联系方式、合同内容详情
|
||
- **低敏感数据**: 合同状态、创建时间、公开的合同编号
|
||
|
||
#### 加密策略
|
||
- **数据库加密**: 使用AES-256对高敏感字段进行字段级加密
|
||
- **传输加密**: 所有API通信使用TLS 1.3协议
|
||
- **存储加密**: 文件存储使用透明数据加密(TDE)
|
||
- **密钥管理**: 采用密钥轮换机制,定期更新加密密钥
|
||
|
||
#### 加密实现
|
||
```java
|
||
// 敏感字段加密注解
|
||
@EncryptedField(algorithm = "AES-256-GCM")
|
||
private String bankAccountNumber;
|
||
|
||
@EncryptedField(algorithm = "AES-256-GCM")
|
||
private BigDecimal contractAmount;
|
||
```
|
||
|
||
### 数据泄露防护
|
||
|
||
#### 访问控制
|
||
- **角色权限**: 基于RuoYi的RBAC模型,细化到字段级权限控制
|
||
- **数据脱敏**: 非授权用户查看时自动脱敏显示
|
||
- **审计日志**: 记录所有敏感数据访问和操作日志
|
||
- **会话管理**: 实现安全的会话超时和强制登出机制
|
||
- **登录失败处理**: 连续登录失败时自动清理缓存数据和临时会话信息
|
||
|
||
#### 登录安全机制
|
||
- **失败计数**: 记录连续登录失败次数,超过阈值(如5次)触发安全措施
|
||
- **账户锁定**: 登录失败达到上限时临时锁定账户(如30分钟)
|
||
- **数据清理**: 登录失败时立即清理以下数据:
|
||
- 清除浏览器缓存中的敏感信息
|
||
- 注销临时会话和Token
|
||
- 清理内存中的用户数据
|
||
- 删除临时文件和下载记录
|
||
- **安全日志**: 记录所有登录失败事件,包括IP地址、时间戳、失败原因
|
||
- **异常检测**: 检测异常登录模式(如异地登录、频繁失败)并触发告警
|
||
|
||
#### 多因素认证(MFA)
|
||
- **双因素认证**: 支持短信验证码、邮箱验证码、TOTP等
|
||
- **生物识别**: 支持指纹、人脸识别等生物特征认证
|
||
- **硬件Token**: 支持USB Key、智能卡等硬件认证设备
|
||
- **风险评估**: 基于用户行为和环境风险动态调整认证强度
|
||
|
||
#### 网络安全防护
|
||
- **防火墙**: 部署Web应用防火墙(WAF)防护常见攻击
|
||
- **DDoS防护**: 实施分布式拒绝服务攻击防护
|
||
- **入侵检测**: 部署IDS/IPS系统监控网络异常
|
||
- **SSL/TLS**: 强制使用HTTPS,禁用弱加密算法
|
||
- **API安全**: 实施API限流、签名验证、IP白名单
|
||
|
||
#### 数据备份与恢复
|
||
- **定期备份**: 自动化数据备份,支持增量和全量备份
|
||
- **异地备份**: 备份数据存储在不同地理位置
|
||
- **备份加密**: 备份文件使用独立密钥加密
|
||
- **恢复测试**: 定期进行数据恢复演练
|
||
- **版本控制**: 保留多个备份版本,支持时间点恢复
|
||
|
||
#### 安全监控与审计
|
||
- **实时监控**: 7x24小时安全事件监控
|
||
- **行为分析**: 用户行为异常检测和分析
|
||
- **威胁情报**: 集成外部威胁情报源
|
||
- **合规审计**: 满足等保、ISO27001等合规要求
|
||
- **事件响应**: 建立安全事件应急响应机制
|
||
|
||
#### 代码安全
|
||
- **静态扫描**: 代码提交前进行安全漏洞扫描
|
||
- **依赖检查**: 检查第三方组件的安全漏洞
|
||
- **代码混淆**: 对关键代码进行混淆保护
|
||
- **运行时保护**: 部署RASP运行时应用自我保护
|
||
|
||
#### 数据脱敏规则
|
||
```java
|
||
// 银行账户脱敏: 1234****5678
|
||
// 金额脱敏: ****万元
|
||
// 身份证脱敏: 3301**********1234
|
||
```
|
||
|
||
#### 防泄露措施
|
||
- **水印标记**: 在导出文档中嵌入用户水印
|
||
- **下载限制**: 限制敏感数据的批量下载
|
||
- **屏幕截图防护**: 在敏感页面禁用截图和打印
|
||
- **网络隔离**: 敏感数据处理在内网环境中进行
|
||
- **DLP防护**: 部署数据丢失防护系统,监控数据外传
|
||
- **USB管控**: 禁用或限制USB设备访问
|
||
- **邮件监控**: 监控包含敏感数据的邮件发送
|
||
|
||
### 区块链隐私保护
|
||
|
||
#### 链上数据最小化
|
||
- **哈希存储**: 仅将数据哈希值存储在区块链上
|
||
- **零知识证明**: 使用zk-SNARKs验证数据完整性而不暴露原始数据
|
||
- **私有链**: 采用联盟链架构,限制节点访问权限
|
||
|
||
#### 隐私计算
|
||
- **同态加密**: 支持在加密状态下进行数据计算
|
||
- **安全多方计算**: 多方协作验证而不泄露各方数据
|
||
- **差分隐私**: 在数据统计分析中保护个体隐私
|
||
- **联邦学习**: 在不共享原始数据的情况下进行模型训练
|
||
|
||
#### 智能合约安全
|
||
- **合约审计**: 智能合约部署前进行安全审计
|
||
- **权限控制**: 实施细粒度的合约权限管理
|
||
- **升级机制**: 支持安全的合约升级和回滚
|
||
- **Gas优化**: 防止Gas耗尽攻击和重入攻击
|
||
- **Oracle安全**: 确保外部数据源的可信性
|
||
|
||
## 错误处理
|
||
|
||
### 异常分类
|
||
|
||
1. **业务异常**: 合同状态不符、债权验证失败、资金不足等
|
||
2. **系统异常**: 数据库连接失败、区块链网络异常、第三方服务不可用等
|
||
3. **安全异常**: 身份认证失败、权限不足、数据篡改检测、加密解密失败、登录失败超限等
|
||
4. **隐私异常**: 数据泄露检测、非授权访问、敏感数据暴露、数据清理失败等
|
||
|
||
### 错误处理策略
|
||
|
||
- **统一异常处理**: 使用RuoYi框架的全局异常处理机制
|
||
- **业务回滚**: 关键业务操作支持事务回滚
|
||
- **重试机制**: 对于网络异常等临时性错误实现自动重试
|
||
- **降级处理**: 在系统负载过高时提供基础功能保障
|
||
- **安全响应**: 检测到安全威胁时自动触发防护措施
|
||
- **隐私保护**: 发生数据泄露风险时立即启动应急响应
|
||
- **登录失败处理**: 登录失败时立即执行数据清理和会话注销
|
||
- **自动清理**: 系统异常时自动清理敏感数据缓存和临时文件
|
||
|
||
## 测试策略
|
||
|
||
### 双重测试方法
|
||
|
||
系统采用单元测试和基于属性的测试相结合的综合测试策略:
|
||
|
||
#### 单元测试
|
||
- 验证特定示例、边界情况和错误条件
|
||
- 测试组件间的集成点
|
||
- 单元测试有助于发现具体的错误,但应避免编写过多,因为基于属性的测试负责覆盖大量输入
|
||
|
||
#### 基于属性的测试
|
||
- 使用**JUnit 5**和**jqwik**库进行基于属性的测试
|
||
- 每个基于属性的测试配置为运行最少100次迭代,因为属性测试过程是随机的
|
||
- 每个基于属性的测试必须用注释明确引用设计文档中的正确性属性
|
||
- 每个基于属性的测试使用以下确切格式标记:'**Feature: digital-credit-service, Property {number}: {property_text}**'
|
||
- 每个正确性属性必须由单个基于属性的测试实现
|
||
- 基于属性的测试验证应该在所有输入中保持的通用属性
|
||
|
||
#### 测试库和工具
|
||
- **单元测试**: JUnit 5, Mockito, Spring Boot Test
|
||
- **基于属性的测试**: jqwik (Java的属性测试库)
|
||
- **集成测试**: TestContainers (用于数据库和区块链测试)
|
||
- **API测试**: RestAssured, WireMock
|
||
|
||
#### 测试要求
|
||
- 基于属性的测试必须在实现过程中尽可能接近实现,以便及早发现错误
|
||
- 每个正确性属性必须有对应的基于属性的测试实现
|
||
- 测试必须验证真实功能,不得使用模拟或虚假数据来通过测试
|
||
- 如果测试在3-4次尝试后仍然失败,必须解释问题并寻求指导 |