账务系统设计文档

一、设计目的
账务系统旨在提供金融系统账户、授信、余额等核心数据维护的一站式解决方案,要达成涵盖全量业务、数据精准、性能优良的设计目标,主要功能有开户、授信额度管理,可用余额管理、各类信息查询、对账等。
二、名词解释
分账户:用户维度下的分账户,一个用户可以开通多个账户,主要分为信用户和现金户两类,描述借、贷业务。
授信:通过风控审核后,给某个信用账户赋予信用额度。
账户冻结:出于风控或业务流程需要,对账户进行的封禁措施,封禁期间账户相关资金对普通业务许进不许出,可通过单独接口通过鉴权后进行划扣(如:还款)。
金额冻结:过程交易或业务需要对账户的信用额度、现金额度进行冻结,可通过冻结码(交易id)进行解冻或直接划扣。
结账撤回:亦称红冲,在账务发生后,不能通过正向交易形式回退的,账户系统通过在原有账务流水中标识的方法将资金回退,此类交易需在核销时予以备注。
三、数据库设计

ER:
账务系统设计文档

分账户表 account:存储账户状态、余额、授信额度、冻结金额等信息,开户时写入
账务系统设计文档
账务系统设计文档
账务流水表 account_flow:存储划扣过程中交易双方、金额以及发生前后值,除红冲类交易不允许更新,记账时写入
账务系统设计文档
账务系统设计文档
冻结流水表 account_lock_flow:存储过程交易或业务需要手动冻结金额时的记录表,原则上不允许更新,发生冻结金额时写入
账务系统设计文档
账务系统设计文档
账户变更记录表account_change_flow:存储账户开户、状态变更、授信额度调整等操作时的记录表,原则上不允许更新,开户、冻结、解冻账户、授信额度调整时写入
账务系统设计文档
账务系统设计文档

四、接口设计

开户接口
核心入参:userId、type、typeRemark
支持批量开户

记账接口
核心入参:accountId、opponentAccountId、transactionId、amount
支持批量记账、支持冻结金额划扣、划扣后冻结(可能需拆分为多个接口)

反记账接口
核心入参:transactionId

冻结、解冻接口
核心入参:accountId、transactionId
支持批量冻结

账户信息查询
核心入参:accountId、userId
支持批量

资金流水查询
核心入参:accountFlowId、transactionId、createTime(区间)
支持分页查询

五、设计要点
1、记账类数据事务控制须严谨
2、性能优良
3、数据量较大
4、数据迁移工具