BFON 信贷产品运营平台
一、系统概述
| 项目 | 说明 |
|---|---|
| 系统名称 | BFON — 信贷产品运营平台 (Loan Product Operations Platform) |
| Maven GroupId | cn.webank.cnc.fon |
| ArtifactId | bfon-parent |
| Java 版本 | Java 21 |
| 父 POM | cn.webank.cnc.sdk:zcnc-sdk-parent-for-coe:4.0.37-SNAPSHOT |
| 描述 | 基于 Webank 微众银行 CNC 框架体系构建的信贷产品运营平台,整合了 rfon(零售贷款运营框架)和 fct 等子系统 |
技术栈
| 技术 | 用途 |
|---|---|
| Spring Boot | 应用框架(含 Spring Batch、Spring Transaction、Spring Cache、Spring Scheduling) |
| Spring Batch | 批处理任务框架,模块化配置(modular = true) |
| MyBatis | ORM 持久层框架(MapperScan 扫描 cn.webank.cnc.fct.dao) |
| CNC SDK | 微众银行内部开发框架(含 RMB 消息中间件、GNS、UM 权限管理、序列号、灰度策略等) |
| DynamicProxyGate | 银行核心交易代理网关,用于调用核心账务系统 |
| CommandFactory | 命令模式工厂,封装业务操作为 Command 对象执行 |
| RMB (Reliable Message Bus) | 微众银行可靠消息总线,用于系统间异步/同步消息通信 |
| Lombok | 注解驱动代码生成(@Data, @Slf4j 等) |
| Elasticsearch (cles-client) | 全文检索与日志查询 |
| CGOS (审批中台) | 审批工作流引擎,支持审批链、审批节点配置 |
| FPS (File Process Service) | 文件处理服务客户端 |
| I18N (国际化) | 基于 I18nUtil 的多语言支持框架 |
| TDSQL | 腾讯分布式 SQL 数据库 |
二、模块结构
bfon-parent/
├── bfon-common/ # 公共模块 — 核心交易请求/响应模型、常量定义、工具类
├── bfon-service/ # 服务模块 — Web 服务主模块,含 Controller、Service、RMB Handler、批处理配置
├── bfon-batch/ # 批处理模块 — 独立的 Spring Batch 批处理应用
├── conf/ # 生产环境配置(TSD 加密格式)
├── conf-local/ # 本地开发配置(TSD 加密格式)
├── bin/ # 部署脚本(启动/停止/Docker)
├── dbScript/ # 数据库脚本(DDL/DML,TSD 加密)
└── metadata/ # 元数据/数据模型定义(TSD 加密)2.1 bfon-common 模块
职责: 定义与银行核心系统通信的 Command Request 模型对象及公共常量。供 bfon-service 和 bfon-batch 共同依赖。
核心类:
CommonCmdReq— 通用命令请求基类,包含AppAcctInfo(应用账号信息)、TransChannelInfo(交易渠道信息)、Page(分页信息)C215003CmdReq— 客账账务信息查询请求(serviceCode=215003)C215005CmdReq— 借据列表查询请求(serviceCode=215005)C215006CmdReq— 借据详情查询请求(serviceCode=215006)C215007CmdReq— 借据还款计划查询请求(serviceCode=215007)C215011CmdReq— 入账历史列表查询请求(serviceCode=215011)C215012CmdReq— 入账历史详情查询请求(serviceCode=215012)C215013CmdReq— 扣款结果查询请求(serviceCode=215013)CNQ1039CmdReq— 资金交易查询请求(serviceCode=NQ1039)CRN0011CmdReq— 运营平台客户信息查询请求S280016Req— 上游通知 RFON 处理账务核对文件请求
2.2 bfon-service 模块
职责: 主业务服务模块,提供 REST API、业务逻辑处理、RMB 消息监听、文件上传/处理等核心功能。
包含子包: controller、service、enums、protocol、protocol.dto、rmb.action.notice、task、batch.config、batch.scheduler
2.3 bfon-batch 模块
职责: 独立运行的 Spring Batch 批处理应用,用于执行定时批处理任务。包含 BfonBatchApplication 启动类、BfonBatchConfig 配置和 TestScheduler 调度器。
三、包架构
cn.webank.cnc.bfon
├── common/
│ ├── model/request/ # 银行核心交易 Command Request 模型
│ └── util/ # 常量定义(CmdNoConstants、Constants)
├── service/
│ ├── controller/ # REST API 控制层
│ ├── service/ # 业务逻辑服务层
│ ├── enums/ # 业务枚举定义
│ ├── protocol/ # BFON 特有的协议请求/响应对象
│ │ └── dto/ # 协议 DTO
│ ├── rmb/action/notice/ # RMB 消息处理器(Action 与 Listener)
│ ├── task/ # 异步任务处理器(存储转发)
│ └── batch/
│ ├── config/ # Spring Batch 配置
│ └── scheduler/ # 批处理任务调度器
└── batch/
├── config/ # 批处理应用配置
└── scheduler/ # 批处理任务调度包职责说明
| 包路径 | 职责 |
|---|---|
cn.webank.cnc.bfon.common.model.request | 定义所有与银行核心系统交互的 Command Request 请求对象,包含交易码(serviceCode)和嵌套查询条件结构 |
cn.webank.cnc.bfon.common.util | 系统级常量定义,包括命令编号常量(CmdNoConstants)和业务常量(Constants) |
cn.webank.cnc.bfon.service.controller | REST API 入口,处理 HTTP 请求,参数校验,委托给 Service 层处理 |
cn.webank.cnc.bfon.service.service | 核心业务逻辑实现,调用 DynamicProxyGate 与银行核心通信 |
cn.webank.cnc.bfon.service.enums | 业务枚举类型,包括审批状态、债务处理类型、RMB 调用业务服务枚举 |
cn.webank.cnc.bfon.service.protocol | BFON 特有的交易协议对象(212201 借旧还新/重组申请、222323 还款申请、222324 还款通知) |
cn.webank.cnc.bfon.service.protocol.dto | 协议 DTO,包含协商还款 DTO、审批 DTO、扣款结果 DTO、附件 DTO 等 |
cn.webank.cnc.bfon.service.rmb.action.notice | RMB 消息处理 Action 及同步监听器 |
cn.webank.cnc.bfon.service.task | 异步任务处理器(实现 ITaskHandler 接口),用于文件解析的存储转发 |
cn.webank.cnc.bfon.service.batch.config | bfon-service 内嵌的 Spring Batch 配置 |
cn.webank.cnc.bfon.service.batch.scheduler | bfon-service 内嵌的批处理调度器 |
cn.webank.cnc.bfon.batch.config | bfon-batch 独立应用配置 |
cn.webank.cnc.bfon.batch.scheduler | bfon-batch 独立应用调度器 |
四、核心类详解
4.1 Controller 层
LoanInfoControllerV1
- 路径:
cn.webank.cnc.bfon.service.controller.LoanInfoControllerV1 - 请求基路径:
/rfon/web/loan/action - 职责: 借据信息相关查询操作
- 依赖:
LoanInfoService,CommandFactory,HttpRequestService,LoanService,RfonParamService,CreditCoreService
| 方法 | 路径 | 业务含义 |
|---|---|---|
queryLoanList | /query/loanListInfo | 借据列表查询,支持按日期范围、账户号、产品号筛选 |
queryLoanDetail | /query/loanDetail | 借据详情查询,需传入交易参考号(refNbr) |
queryRepayScheduleList | /query/repayScheduleList | 借据还款计划列表查询 |
queryAbsSplitLoanDetail | (已注释) | ABS 拆分借据详情查询 |
loanCancel | (已注释) | 借据撤销操作 |
loanCancelReverse | (已注释) | 借据撤销冲正 |
loanEarlySettle | (已注释) | 借据提前结清 |
TxnInfoControllerV1
- 路径:
cn.webank.cnc.bfon.service.controller.TxnInfoControllerV1 - 请求基路径:
/rfon/web/txn/action - 职责: 交易信息查询操作
| 方法 | 路径 | 业务含义 |
|---|---|---|
queryTxnRecordList | /query/txnRecordList | 交易记录查询(调用 NQ1039 资金交易查询接口) |
queryTxnHstRecordList | /query/txnHstRecordList | 入账历史列表查询(调用 215011) |
queryTxnHstRecordDetail | /query/txnHstRecordDetail | 入账历史详情查询(调用 215012) |
CustomerInfoControllerV1
- 路径:
cn.webank.cnc.bfon.service.controller.CustomerInfoControllerV1 - 请求基路径:
/rfon/web/customer/action - 职责: 客户信息及账户账务信息查询
| 方法 | 路径 | 业务含义 |
|---|---|---|
queryCustInfo | /query/custInfo | 客户信息查询(调用 RN0011) |
queryAcctDetails | /query/acctDetails | 客户账户账务信息列表查询(调用 C215003) |
NegotiationRepaymentController
- 路径:
cn.webank.cnc.bfon.service.controller.NegotiationRepaymentController - 请求基路径:
/rfon/web/negotiationRepayment/action - 职责: 协商还款业务全流程管理
| 方法 | 路径 | 业务含义 |
|---|---|---|
queryReduction | /queryReduction | 申请减免页面查询 |
submitForApprove | /submitForApprove | 提交协商还款审批(含附件上传) |
doApprove | /doApprove | 审批通过或驳回 |
queryDetail | /queryDetail | 协商还款详情查询 |
queryNegotiationRepaymentList | /query/negotiationRepaymentList | 协商还款列表查询 |
queryNegotiationRepaymentRecordList | /query/negotiationRepaymentRecordList | 操作记录列表查询 |
queryDeductionResult | /query/deductionResult | 扣款结果查询 |
downloadAttachment | /download/attachment | 附件下载 |
FileUploadControllerV1
- 路径:
cn.webank.cnc.bfon.service.controller.FileUploadControllerV1 - 请求基路径:
/rfon1/web/file/action - 职责: 在线文件上传与管理
| 方法 | 路径 | 业务含义 |
|---|---|---|
upload | /upload | 在线文件上传(含 CGOS 审批流程) |
ocrUpload | /ocrUpload | OCR 影像件文件上传 |
queryInstance | /instance/query | 文件上传结果列表查询 |
queryDetail | /detail/query | 文件上传明细查询 |
instanceCancel | /instance/cancel | 文件上传实例取消 |
loadFilePriv | /loadFilePriv | 加载在线文件权限配置 |
fileAcctOpTransferTraceResultQuery | /transferTraceResult/query | 联机动账结果查询 |
fileAcctOpTransferTraceResultConfirm | /transferTraceResult/confirm | 联机动账结果确认 |
fileAcctOpTransferTraceResultRetry | /transferTraceResult/retry | 联机动账结果重试 |
commonUpload | /commonUpload | 通用文件导入 |
BatchFileUploadControllerV1
- 路径:
cn.webank.cnc.bfon.service.controller.BatchFileUploadControllerV1 - 请求基路径:
/1rfon/web/file/action - 职责: 批量文件上传与管理
| 方法 | 路径 | 业务含义 |
|---|---|---|
batchUpload | /batchUpload | 批量文件上传(含文件校验和审批流程) |
queryBatchFile | /batchFile/query | 批量文件上传结果查询 |
cancelBatchFile | /batchFile/cancel | 批量文件上传撤销 |
loadBatchFilePriv | /loadBatchFilePriv | 批量文件权限配置查询 |
4.2 Service 层
LoanInfoService
- 路径:
cn.webank.cnc.bfon.service.service.LoanInfoService - 注解:
@Service,@Slf4j - 职责: 借据信息业务逻辑,通过
DynamicProxyGate调用银行核心交易 - 依赖:
LowCodeManagerService,DynamicProxyGate,CreditCoreService,HttpRequestService
| 方法 | 业务含义 | 核心交易码 |
|---|---|---|
queryLoanList | 构造 C215005CmdReq 查询借据列表,支持按卡号/应用账号查询 | 215005 |
queryLoanDetail | 构造 C215006CmdReq 查询借据详情 | 215006 |
queryRepayScheduleList | 构造 C215007CmdReq 查询还款计划 | 215007 |
TxnInfoService
- 路径:
cn.webank.cnc.bfon.service.service.TxnInfoService - 注解:
@Service,@Slf4j - 职责: 交易信息业务逻辑
| 方法 | 业务含义 | 核心交易码 |
|---|---|---|
queryTxnHstRecordList | 构造 C215011CmdReq 查询入账历史列表 | 215011 |
queryTxnHstRecordDetail | 构造 C215012CmdReq 查询入账历史详情 | 215012 |
queryTxnRecordList | 构造 CNQ1039CmdReq 查询资金交易记录 | NQ1039 |
CustomerInfoBfonService
- 路径:
cn.webank.cnc.bfon.service.service.CustomerInfoBfonService - 注解:
@Service,@Slf4j - 职责: 客户信息及账户账务信息查询
| 方法 | 业务含义 | 核心交易码 |
|---|---|---|
queryCustInfo | 调用 RN0011 查询客户信息,支持敏感数据脱敏 | RN0011 |
queryAcctDetails | 调用 C215003 查询客账账务信息列表 | 215003 |
queryDeductionResult | 调用 C215013 查询扣款结果 | 215013 |
NegotiationRepaymentService
- 路径:
cn.webank.cnc.bfon.service.service.NegotiationRepaymentService - 注解:
@Service,@Slf4j - 职责: 协商还款全流程业务逻辑,是最复杂的 Service 类,处理借旧还新和协商减免两种债务处理类型
- 依赖:
DynamicProxyGate,CreditCoreService,HttpRequestService,CustomerInfoBfonService,TmNegotiationRepaymentDao,TmNegotiationRepaymentRecordDao,TransIdService,SeqNo,RfonParamService,CgosMidFacility,CgosApprovalMidService
| 方法 | 业务含义 |
|---|---|
queryAcct | 申请减免页面查询,返回账户账务详情及现有协商还款状态 |
queryNegotiationRepaymentList | 协商还款列表查询,支持多条件筛选和多种排序 |
selectNegotiationPay | 协商还款详情查询,填充已付/余额金额信息 |
submitForApproval | 提交协商还款审批,含附件上传、状态管理、操作记录 |
approve | 审批处理(通过/驳回),通过后执行完整的协商还款交易链路 |
handle212201 | 调用 212201 借旧还新/重组申请交易 |
handle222323 | 调用 222323 还款申请交易 |
handle222324 | 调用 222324 还款通知交易 |
handle212203 | 调用 212203 重组撤销交易 |
executeAllServicesInOrder | 核心方法 — 按顺序执行协商还款全链路:212201→222323→222324,失败时调用 212203 回滚 |
AccountCheckManageService
- 路径:
cn.webank.cnc.bfon.service.service.AccountCheckManageService - 注解:
@Service,@Slf4j - 职责: 账务核对管理
- 方法:
saveCompareSummaryList(批量保存对比汇总)、saveDiffSummaryList(批量保存差异汇总)
4.3 RMB Handler 类
S280016
- 路径:
cn.webank.cnc.bfon.service.rmb.action.notice.S280016 - Action ID:
action.S280016 - 职责: 接收上游系统的账务核对文件通知,验证参数后创建存储转发任务
SyncRmbListener
- 路径:
cn.webank.cnc.bfon.service.rmb.action.notice.SyncRmbListener - 注解:
@Service - 职责: RMB 同步消息监听器,将 RMB 消息路由到对应的 Action 处理器
| 方法 | RMB ServiceId | 业务含义 |
|---|---|---|
syncS280016Service | ${rmb.280016.serviceId} | 接收 280016 消息,处理账务核对文件通知 |
syncS281003Service | ${rmb.281003.serviceId} | 接收 281003 消息,处理未登账操作通知 |
4.4 Task Handler 类
AccountCheckFileParsingHandler
- 路径:
cn.webank.cnc.bfon.service.task.AccountCheckFileParsingHandler - 注解:
@Component - 职责: 账务核对文件解析存储转发处理器
- 方法:
forward(从 FPS 下载文件,解析后保存)、saveRetryTask(创建延迟 5 秒的异步任务)
五、数据模型
5.1 数据表清单(按业务域分类)
账务核对域
| 表名 | 用途 |
|---|---|
TM_CHECK_BDP_COMPARE_SUMMARY | 对比汇总表 |
TM_CHECK_BDP_DIFF_SUMMARY | 差异汇总表 |
TM_CHECK_CONFIRM_RECORD | 核对确认记录 |
TM_CHECK_CONFIRM_RECORD_DETAIL | 核对确认记录明细 |
协商还款/债务处理域
| 表名 | 用途 |
|---|---|
TM_NEGOTIATION_REPAYMENT | 协商还款主记录表 |
TM_NEGOTIATION_REPAYMENT_RECORD | 协商还款操作记录表 |
TM_BDP_CUST_WRITEOFF_INFO | 客户核销信息 |
TM_BDP_WRITEOFF_RESULT | 核销结果 |
审批流程域
| 表名 | 用途 |
|---|---|
TM_APPROVAL_PROCESS_MODEL | 审批流程模型定义 |
TM_APPROVAL_PROCESS_NODE | 审批流程节点定义 |
TM_APPROVAL_PROCESS_RULE | 审批流程规则 |
TM_APPROVAL_ORDER | 审批工单 |
TM_APPROVAL_ORDER_OPERATION_LOG | 审批工单操作日志 |
参数配置域
| 表名 | 用途 |
|---|---|
TM_PARA_DICT | 参数字典表 |
TM_PARA_PRODUCT_INFO | 产品信息参数 |
TM_PARA_CMD | 命令参数 |
TM_PARA_RMB_SERVICE | RMB 服务参数 |
TM_PARA_BIZ_LIMIT | 业务限制参数 |
文件处理域
| 表名 | 用途 |
|---|---|
TM_FILE_TASK_INSTANCE | 文件任务实例 |
TM_FILE_TASK_DETAIL | 文件任务明细 |
TM_FILE_TASK_CONFIG | 文件任务配置 |
TM_FILE_PERMISSION | 文件权限配置 |
账务调整域
| 表名 | 用途 |
|---|---|
TM_ACCOUNTING_ADJ_RECORD | 会计调整记录 |
TM_ACCOUNTING_ADJ_DETAIL | 会计调整明细 |
TM_ACCOUNT_ADJ_RECORD | 账户调整记录 |
TM_ACCOUNT_ADJ_TXN_ITEM | 账户调整交易项 |
系统管理域
| 表名 | 用途 |
|---|---|
TM_SYSTEM_STATUS | 系统状态 |
TM_DISTRIBUTED_LOCK | 分布式锁 |
TM_TABLE_SEQ | 表序列号 |
TM_RMB_TRACE_LOG | RMB 跟踪日志 |
5.2 关键 DTO/Entity 类
bfon-common 模块(Command Request 模型)
| 类名 | 用途 |
|---|---|
CommonCmdReq | 通用命令请求基类(AppAcctInfo、TransChannelInfo、Page) |
C215003CmdReq | 客账账务信息查询请求 |
C215005CmdReq | 借据列表查询请求 |
C215006CmdReq | 借据详情查询请求 |
C215007CmdReq | 借据还款计划查询请求 |
C215011CmdReq | 入账历史列表查询请求 |
C215012CmdReq | 入账历史详情查询请求 |
C215013CmdReq | 扣款结果查询请求 |
CNQ1039CmdReq | 资金交易查询请求(含 CustInfo、TxnCommInfo、QueryRule 等嵌套结构) |
CRN0011CmdReq | 运营平台客户信息查询请求 |
S280016Req | 账务核对文件通知请求 |
bfon-service 模块(协议与 DTO)
| 类名 | 用途 |
|---|---|
C212201CmdReq/Rsp | 借旧还新/重组申请请求与响应 |
C212203CmdReq/Rsp | 重组撤销请求与响应 |
C222323CmdReq/Rsp | 还款申请请求与响应(含 Control、Loan、RepayContent、CustInfo 等复杂嵌套) |
C222324CmdReq/Rsp | 还款通知请求与响应 |
NegotiationPayDto | 协商还款支付 DTO |
NegotiationApproveDto | 协商还款审批 DTO |
DeductionResultReq | 扣款结果查询请求 |
AttachmentDto | 附件 DTO |
枚举类
| 类名 | 用途 |
|---|---|
ApproveStatusEnum | 审批状态:SUBMIT(已提交)、PASS(审批通过)、REJECT(审批拒绝)、SUCCESS(处理成功)、FAILED(处理失败) |
DebtHandlingTypeEnum | 债务处理类型:RENEWAL_TO_REPAY_OLD_DEBT(借新还旧)、NEGOTIATED_REMISSION(协商减免) |
RmbCallBizServiceEnum | RMB 业务服务:LOAN_RENEWAL、RESTRUCTURING_CANCELLATION、REPAYMENT_APPLICATION、REPAYMENT_NOTIFICATION 等 |
六、银行核心对接
6.1 DynamicProxyGate 调用方式
java
// 典型调用模式
RemoteServiceResp resp = (RemoteServiceResp) dynamicProxyGate.call(
RemoteBizServiceEnum.XXX.name(), // 业务服务枚举名称
"COE", // 系统标识(固定值 "COE")
req // Command Request 请求对象
);DynamicProxyGate 是 CNC SDK 提供的动态代理网关,根据业务服务枚举名称动态路由到对应的银行核心交易接口。
6.2 核心交易码
| 交易码 | 业务服务枚举 | 用途 | 所在类 |
|---|---|---|---|
| 215003 | ACCT_DETAILS_QUERY | 客账账务信息查询 | CustomerInfoBfonService |
| 215005 | LOAN_LIST_QUERY | 借据列表查询 | LoanInfoService |
| 215006 | LOAN_DETAIL_QUERY | 借据详情查询 | LoanInfoService |
| 215007 | LOAN_REPAY_SCHEDULE | 借据还款计划查询 | LoanInfoService |
| 215011 | TXN_HST_LIST_QUERY | 入账历史列表查询 | TxnInfoService |
| 215012 | TXN_HST_DETAIL_QUERY | 入账历史详情查询 | TxnInfoService |
| 215013 | DEDUCTION_RESULT_QUERY | 扣款结果查询 | CustomerInfoBfonService |
| NQ1039 | TXN_RECORD_QUERY | 资金交易查询 | TxnInfoService |
| RN0011 | RCBS_CUSTOMER_INFO_QUERY | 运营平台客户信息查询 | CustomerInfoBfonService |
| 212201 | LOAN_RENEWAL | 借旧还新/重组申请 | NegotiationRepaymentService |
| 212203 | RESTRUCTURING_CANCELLATION | 重组撤销 | NegotiationRepaymentService |
| 222323 | REPAYMENT_APPLICATION | 还款申请 | NegotiationRepaymentService |
| 222324 | REPAYMENT_NOTIFICATION | 还款通知 | NegotiationRepaymentService |
七、Spring Batch 批处理
7.1 批处理应用架构
BFON 系统包含两个批处理入口:
- bfon-service 内嵌批处理:
BfonServiceApplication启用了@EnableBatchProcessing(modular = true)和@EnableScheduling - bfon-batch 独立批处理应用:
BfonBatchApplication作为独立的 Spring Batch 应用运行
7.2 批处理调度器
- TestScheduler (
cn.webank.cnc.bfon.batch.scheduler.TestScheduler)- 调度:
@Scheduled(cron = "0 */1 * * * ?")— 每分钟执行 - 当前状态:核心逻辑已注释
- 依赖:
CncJobOperator(CNC SDK 提供的批处理作业操作器)
- 调度:
八、RMB 消息处理
| Handler | Action ID | 消息类型 | 触发场景 |
|---|---|---|---|
| S280016 | action.S280016 | 同步请求/响应 | 上游系统通知 RFON 处理账务核对文件 |
| S281003 | (由 rfon 框架定义) | 同步请求/响应 | 未登账操作通知 |
消息处理流程:
SyncRmbListener通过@RmbMap接收 RMB Message- 初始化消息返回信息(AppHeader、RetList)
- 反序列化 Message Content 为 Request 对象
- 委托给对应 Action 的
process方法 - 处理结果序列化回 Message Content
- 返回码:成功
SSSS,失败D002
九、业务流程
9.1 贷款运营查询流程
用户请求 → Controller(参数校验) → Service(构造 Command Request)
→ DynamicProxyGate.call(核心交易) → 银行核心系统
→ RemoteServiceResp → Service(解析响应) → Controller(返回 RespBase)涉及的核心交易:
- 客户信息查询: 卡号/ECIF号 → RN0011 → 客户基础信息
- 账务信息查询: 账号+产品号 → C215003 → 账户账务列表
- 借据查询: 账号+日期范围 → C215005/C215006/C215007 → 借据列表/详情/还款计划
- 交易查询: 账号+日期范围 → C215011/C215012/NQ1039 → 交易记录
9.2 协商还款流程
类型一:借旧还新 (RENEWAL_TO_REPAY_OLD_DEBT)
1. queryAcct: 查询账户账务详情,展示可协商金额
2. submitForApproval: 提交审批
- 上传附件
- 保存协商还款记录(状态=SUBMIT)
- 记录操作历史
3. approve: 审批处理
- 验证审批权限(审批人不能是提交人)
- 审批通过后执行交易链路:
a. 212201(借旧还新申请) → 创建新的贷款重组
b. 222323(还款申请) → 申请还款
c. 222324(还款通知) → 通知还款结果
d. 若失败:212203(重组撤销) → 回滚类型二:协商减免 (NEGOTIATED_REMISSION)
流程同上,区别在于:
- 212201 中 reorgType 为协商减免类型
- 222323 中 authTxnCode 为 ConsultRepayAcctIOU 或 ConsultRepayAcctInAmt9.3 账户核对流程
1. 上游系统发送 280016 RMB 消息(包含 fileId、fileName、fileHashValue、bizType)
2. SyncRmbListener.syncS280016Service 接收消息
3. S280016.doProcess 验证参数
4. AccountCheckFileParsingHandler.saveRetryTask 创建存储转发任务(延迟 5 秒)
5. AccountCheckFileParsingHandler.forward 执行转发:
a. 通过 FpsClientUtil 下载文件
b. 按 "|::|" 分隔符解析文件内容
c. 根据 bizType 解析为对比汇总或差异汇总记录
d. AccountCheckManageService 批量保存到数据库9.4 文件上传流程
1. 前端上传文件(multipart/form-data)
2. FileUploadController 校验文件和类型
3. 根据文件类型判断是否需要 CGOS 审批
4. 通过查询接口获取上传结果/明细十、REST API 汇总
借据信息 API (/rfon/web/loan/action)
| 方法 | 路径 | 功能 |
|---|---|---|
| POST | /rfon/web/loan/action/query/loanListInfo | 借据列表查询 |
| POST | /rfon/web/loan/action/query/loanDetail | 借据详情查询 |
| POST | /rfon/web/loan/action/query/repayScheduleList | 还款计划查询 |
交易信息 API (/rfon/web/txn/action)
| 方法 | 路径 | 功能 |
|---|---|---|
| POST | /rfon/web/txn/action/query/txnRecordList | 交易记录查询 |
| POST | /rfon/web/txn/action/query/txnHstRecordList | 入账历史列表 |
| POST | /rfon/web/txn/action/query/txnHstRecordDetail | 入账历史详情 |
客户信息 API (/rfon/web/customer/action)
| 方法 | 路径 | 功能 |
|---|---|---|
| POST | /rfon/web/customer/action/query/custInfo | 客户信息查询 |
| POST | /rfon/web/customer/action/query/acctDetails | 账户账务信息查询 |
协商还款 API (/rfon/web/negotiationRepayment/action)
| 方法 | 路径 | 功能 |
|---|---|---|
| POST | /queryReduction | 申请减免页面查询 |
| POST | /submitForApprove | 提交审批 |
| POST | /doApprove | 审批处理 |
| POST | /queryDetail | 详情查询 |
| POST | /query/negotiationRepaymentList | 列表查询 |
| POST | /query/deductionResult | 扣款结果查询 |
| GET | /download/attachment | 附件下载 |
在线文件 API (/rfon1/web/file/action)
| 方法 | 路径 | 功能 |
|---|---|---|
| POST | /upload | 文件上传 |
| POST | /ocrUpload | OCR 上传 |
| POST | /instance/query | 上传结果查询 |
| POST | /detail/query | 上传明细查询 |
| POST | /instance/cancel | 实例取消 |
| POST | /transferTraceResult/query | 联机动账结果查询 |
| POST | /transferTraceResult/confirm | 联机动账结果确认 |
| POST | /transferTraceResult/retry | 联机动账结果重试 |
| POST | /commonUpload | 通用文件导入 |
批量文件 API (/1rfon/web/file/action)
| 方法 | 路径 | 功能 |
|---|---|---|
| POST | /batchUpload | 批量文件上传 |
| POST | /batchFile/query | 批量文件结果查询 |
| POST | /batchFile/cancel | 批量文件撤销 |
十一、配置与部署
11.1 配置文件结构
conf/
├── bfon-service/
│ ├── application.properties # Spring Boot 主配置(TSD 加密)
│ ├── bfon-service.properties # 服务配置(TSD 加密)
│ ├── bfon-service-env.properties # 环境变量配置(TSD 加密)
│ ├── gns-api.properties # GNS API 配置
│ ├── rmb-client.properties # RMB 客户端配置
│ ├── sso.client.properties # SSO 单点登录配置
│ └── log4j2.xml # 日志配置
└── bfon-batch/
├── application.properties
├── bfon-batch.properties
├── bfon-batch-env.properties
├── rmb-client.properties
└── log4j2.xml注: 所有 .properties 文件均采用 TSD (Tencent Secure Distribution) 加密格式。
11.2 关键配置项
| 配置项 | 来源 | 用途 |
|---|---|---|
systemId | @Value("#{env['systemId']?:'U543'}") | 系统标识,默认 U543 |
common.settings.um.domain.url | @Value | UM 域名 URL |
batchWorkDir | @Value | 批处理工作目录 |
rmb.280016.serviceId/scenario | @RmbMap | RMB 消息服务配置 |
rmb.281003.serviceId/scenario | @RmbMap | RMB 消息服务配置 |
11.3 数据库版本管理
dbScript/
├── 24.08.30/ # 初始化版本
├── 24.09.30/ # 增量版本
└── 25.10.30/ # 最新版本(200+ DDL 文件)十二、外部系统集成
集成关系图
┌─────────────────┐
│ BFON System │
│ (信贷产品运营) │
└────────┬────────┘
│
┌────────────────┼────────────────┐
│ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ 银行核心系统 │ │ RMB 消息 │ │ CGOS │
│ (BCPS/BNBS) │ │ 中间件 │ │ 审批中台 │
└─────────────┘ └──────┬──────┘ └─────────────┘
│
┌────────┼────────┐
│ │
┌──────▼──────┐ ┌──────▼──────┐
│ RFON │ │ 上游核对系统 │
│ (零售贷款运营)│ │ (账务核对) │
└─────────────┘ └─────────────┘集成系统详解
| 集成系统 | 集成方式 | 用途 | 接口 |
|---|---|---|---|
| 银行核心 (BCPS) | DynamicProxyGate 同步调用 | 借据/交易/客户/账务查询 | 215003, 215005-215007, 215011-215013 |
| 银行核心 (BNBS) | DynamicProxyGate 同步调用 | 资金交易查询 | NQ1039 |
| 银行核心 (RCBS) | DynamicProxyGate 同步调用 | 运营客户信息查询 | RN0011 |
| 银行核心 (贷款重组) | DynamicProxyGate 同步调用 | 借旧还新/协商减免/重组撤销 | 212201, 212203, 222323, 222324 |
| RMB 消息中间件 | @RmbMap 同步监听 | 账务核对文件通知 | 280016 |
| RFON 框架 | 代码复用/继承 | 基础运营框架 | S281003 |
| CGOS 审批中台 | CgosMidFacility | 审批流程 | CGOS API |
| GNS | GNS SDK | 服务发现与路由 | gns-api.properties |
| UM | SSO + UserAuthFacility | 用户认证、权限管理 | SSO CAS |
| FPS | FpsClientUtil | 文件下载 | FPS API |
| Elasticsearch | cles-client | 日志与数据检索 | ES Proxy |
本报告基于对 BFON 项目源代码、DDL 脚本、配置文件和部署脚本的全面静态分析生成。部分配置文件和数据库脚本采用 TSD 加密格式。