作者 : 杨考 微信号 : devin_cn_hd_09_16
本文是【讲解篇】和【技术分享篇】结合起来,由于CSDN文章图片丢失,又补了一次图片。同时进行了章节拆分。
全量版 https://blog.csdn.net/yk200808/article/details/80755459
第一节:业务简介 https://blog.csdn.net/yk200808/article/details/81624677
第二节:业务分析 https://blog.csdn.net/yk200808/article/details/81624779
第三节:功能设计 https://blog.csdn.net/yk200808/article/details/81624826
第四节:热点问题 https://blog.csdn.net/yk200808/article/details/81624861
第五节:准确性 https://blog.csdn.net/yk200808/article/details/81624899
第六节:使用建议 https://blog.csdn.net/yk200808/article/details/81624917
第七节:思考总结 https://blog.csdn.net/yk200808/article/details/81624934
如上图示,简单总结了账务实时交易系统所处的位置,
所有的业务交易都可以虚拟为订单,订单再经过账务实时交易系统的处理,就可以将金额分配到相应的账户。
如下是外卖的账务交易业务模型,现在需要思考如何根据订单的状态,实现金额的更新、分账和账单的生成。
上面讲了这么多,看看需要接入的实际业务业务有哪些?业务特征是什么?业务模型是否符合理论分析(有向图)?
在线支持业务 |
订单分类 |
外卖平台单 |
物流订单 |
物流外单 |
|
随意购 |
|
自配送 |
|
百度快递 |
|
骑士打赏 |
|
CPC推广费用管理 |
虚拟订单 |
CPT费用管理 |
|
用户提现、打款 |
|
用户订单 |
用户订单 |
… … |
… … |
如下图示是业务模型的一个汇总,
1) 树形,
2) 包含多个账户,业务众多,角色众多
3) 多层、多级分账,
4) 任何一个层级都可以发生取消分账,或者取消部分或者全部分账
5) 单账户的交易类型丰富(如:骑士账户的申诉、奖励、补账、餐损、惩罚 ...)
6) 如果一个账户存在多种交易类型,可以通过业务或者描述信息来区分每个交易。(将图转化为树,或者将子树连接到整棵资金流树上)
总结:虽然账务交易角色众多,交易类型丰富,但是模型还是很典型的树状模型,当前接入的业务是如下图示模型,或者如下图示模型的子树。
而且新的业务也不局限于如下模型,凡是资金流无论交易层级有多少,都可以被归结为如下模型的处理范围。
针对业务模型,业务操作很简单的可以归纳为如下几个典型操作:
1)入账、
2)出账、
3) 转账、
4) 分账、
5) 取消
另外通过资金的依赖,可以分为无状态依赖和有状态依赖两种:
1) 无状态资金处理-没有任何的状态依赖,即罚款,
2) 有状态资金处理-用户的支付金额,需要为业务进行细分再分给相应的商户和骑士等账户,
1) 金额的增加
2) 金额的扣减
总结,业务和账户操作呈现喇叭型业务模型,或者倒锥形型业务模型
1) 底层操作接口简单
2) 生成数据格式统一
3) 支撑业务多样化
要接入业务众多,因此账户也变得异常的丰富。
如:青岛众包配送收入账户, 实际来讲,就是青岛市(城市)的众包配送(业务)收入账户(主体:财务)
简单的账户构建元素组合,即可完成丰富的账户信息描述。
至于每个账户,因为金额操作的需求,需要设定不同的账户类型,
1) 现金账户,完成现金业务交易;
2) 冻结账户和淘宝的交易资金冻结功能相同,订单下单,资金入冻结账户,交易完成资金从冻结账户转出到现金账户;
3) 监察账户,提现账户...等就不做详细介绍了。