背景
2014年和2015年开发P2P网贷系统的时候,某大牛有设计了一套简洁实用的资金账户系统。
系统设计主要是为了服务于P2P网贷等系统,资金账务系统可以作为一个独立的子系统对外提供服务。
     本系统,我基本没有写过几行代码,更多是学习,理解别人的架构设计。

之前,有写过相关总结。
     大学毕业4年之际,想把之前各方面的积累都好好总结一番。
     从本篇开始,写点以前做过的产品和技术架构等。不玩高大上,要简单直白。

友情提示注释,是不会太多的。英文过关的朋友,基本都看得懂。“约定优于配置”,“约定优于注释”。

 产品核心功能

业界“最佳实践”
殊途同归:支付宝、微信支付、京东商城,和钱相关的功能,最核心的都是:资金账户、交易(充值、提现、转账、支付)、查询(资金流水、分类查询、交易明细)。

支付宝图:

雷观技术研发,懂产品对提升自己的架构能力,可以说是有巨大帮助的。

 1.开户
功能描述:创建一个账户。
账号和账户是不同的概念,前者侧重普通系统登录,后者侧重“资金类系统”。
 
2.交易
充值:为一个账户增加一笔钱。
提现:从一个账户减少一笔钱。
转账:把一个账户中的钱,转移到另外一个账户。
批量转账:转账的增强版。
冻结资金:把一个账户的资金,冻结一部分,可用余额会减少相同的数额。
解冻资金:把一个账户的资金,解冻一部分,可用余额会增加相同的数额。

3.查询
基本信息查询:查询一个账户的总金额、可用余额、冻结余额等信息。
批量查询:查询多个账户的金额等信息。
开户-冻结账户-解冻账户
冻结资金、解冻资金等日志
交易明细:包含了充值、提现、交易等所有的账户资金变动日志。

4.冻结账户/解冻账户
冻结;把一个账户给冻结了,冻结的账户可能无法进行提现等操作。
解冻:把账户从冻结状态,变为正常状态。

技术架构
    技术架构图/产品架构图
   

3种模式:本地jar包或者源码、WebService、Dubbo。
当使用WebService/Dubbo的时候,需要注意“分布式事务”。我们在做的时候,没有过多考虑。

数据库设计

账户表

内部账户表

账户资金冻结记录

账户资金流水

充值返回通知

充值记录

交易记录

提现

详细设计 

接口包

外界调用账务服务,先引入接口包就,再引入实现类jar。如果是WebService和Dubbo,只需要引入接口jar包就行了。

facade: 对外提供的服务,是通过facade包下的3个接口来暴露的。
enums:枚举类
model:各种模型
result:结果集,code+实体。错误码code,也可以通过Exception+code来实现。
util:工具类。

AccountOpenFacade:主要提供开户类的功能,外部账户、内部账户等是有点区分的。

AccountQueryFacade:查询类功能,查询账户、资金流水、资金冻结记录等。

AccountTransFacade:交易类功能,充值、提现、冻结、取消冻结、转账。

实现包

facade.impl: 对外提供服务的实现类
account:账户模型,账户本身也可以有多重实现,这个还真是没有想到。比如,DummyAccount可以空实现,有的时候会用到。
constants:常量
dal: 数据库CRUD
exception:异常
service:内部业务逻辑,主要是查询类的。
trans: 内部业务逻辑,主要是交易类的。
util:工具类。
vo:只有一个LockAccountVO,可能要锁账户时的临时VO。这个地方略显高端!!!

查询类功能service:

交易类功能trans:

不足之处
    当时做P2P网贷系统的时候,资金账务系统只实现了这些“应用类”的核心功能。 
   刚刚把产品架构图画好了,和某电商大牛交流了下,他觉得漏掉了2个核心功能:对账和结算。
   先记下来,下周认真学习下。

总结
1.资金账务系统,是比较通用的。
   2.先有产品设计,再有技术架构,再细节设计和编码。
   3.面向接口编程。
   4.外界系统,只需要知道接口就可以了。
   5.资金账务类系统,需要一点业务能力。部分功能,需要懂财务会计等概念。
 
 一转眼,2016年5月,马上就要过去了。
这个月,写得大多是“创业投资和商业模式” 类的文章,效果还是非常好的。
但是,目前还是“技术立身” ,写点技术类的总结,压压惊,嘿嘿!!!

小雷FansUnion-一个有创业和投资经验的资深程序员-全球最大中文IT社区CSDN知名博主-排名第120
投资案例:好狗狗、皇包车、职业梦、比呀比、易途8
2016年5月29日 
湖北-武汉-晴

雷观技术研发,懂产品对提升自己的架构能力,可以说是有巨大帮助的。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

大学毕业4年-回顾和总结 10 -资金账务系统的架构设计(产品视角+技术视角)(图文并茂)相关推荐

  1. 大学毕业4年-回顾和总结(1)-钱,金钱观

    友情提示大学毕业4年-回顾和总结系列文章,会比较多.感兴趣的同学,需要一点耐心.爆料和精华,需要一点时间. 男人的责任 毕业了,挣钱是最基本的事情了. 每个人都需要挣钱,养活自己,养活家人.一人吃饱, ...

  2. 大学毕业4年-回顾和总结(9)-股权投资1年,给自己一个答卷(好狗狗、皇包车、职业梦、比呀比、易途8)(创业有风险,投资需谨慎)...

    小雷友情提示 : 创业有风险,投资需谨慎. 现在是2016年5月22日,23点55分,星期天,阴历四月十六.     扯扯淡 最近几年,世事变幻真是太快,发生了太多的故事,暂时不想分享太多敏感信息. ...

  3. 大学毕业4年-回顾和总结 9 -股权投资1年,给自己一个答卷 好狗狗 皇包车 职业梦 比呀比 易途8 创业有风险,投资

    小雷友情提示 : 创业有风险,投资需谨慎. 现在是2016年5月22日,23点55分,星期天,阴历四月十六.     扯扯淡 最近几年,世事变幻真是太快,发生了太多的故事,暂时不想分享太多敏感信息. ...

  4. 大学毕业4年-回顾和总结(7)-全局观

    时间过得很快,2016年4月过半了,大学毕业4年系列,已经是第7篇了.  在2017年之前,我对自己的承诺,一定,一定可以兑现.   我的承诺 :在2017年之前,对大学毕业4年以来的所有努力和探索, ...

  5. 【郭东白架构课 模块一:生存法则】10|法则四:架构设计中怎么判断和利用技术趋势?

    你好,我是郭东白. 上节课我们讲了为什么要顺应技术的生命周期.但是"往者不可谏,来者犹可追",我们就不能抓住一个技术萌芽和发展的机会吗?今天我们就来探讨一下这个问题. 技术未来的趋 ...

  6. 大学毕业4年-回顾和总结(2)-钱,收入和支出

    过年回家,长辈最喜欢问两件事.第一件事,谈朋友没有啊.第二件事,现在一个月搞多少钱.      如果你和他们说,一个月工资是1万,那么他们立刻认为,你现在手上应该有十多万了.      上班族听了,心 ...

  7. 大学毕业4年-回顾和总结(5)-投资理财方法论

    前2篇,大致谈了理财观和一些收益,本篇第5篇,谈点方法论.     方法论,是根据以往实践经验和朋友交流的一些理论,仅供参考.     方法论,可以指导投资理财,提高获得收益的可能性,但不可能保证投资 ...

  8. 10、自上而下的电路架构设计

    A Model is Worth a Thousand Pictures 一个模型胜过千张图片 Bryan Shova, IDSA (1) 引言 \qquad 2016年,IPL (Interoper ...

  9. 大学毕业4年-未来展望-序

    再过3个月,就毕业四年了.     It's so fast...我只想说~ 大学毕业4年-回顾和总结 系列,更多是对过去四年的总结.仔细想了想,未来打算还是单独写个系列比较妥当.     就名为&q ...

最新文章

  1. 这个算法网站,强推。
  2. Linux常见命令(五)——rmdir
  3. 7 Papers Radios | 6年前的ResNet重回巅峰;AI辩手登上Nature封面
  4. python isalpha()
  5. 取第N个排序的元素之Mysql存储过程动态SQL order by offset实现案例
  6. 一周冲刺计划2//第一天
  7. hadoop day 6
  8. 虚拟机 Ubuntu安装gcc和g++
  9. C++ 正则表达式教程:C++ 中的正则表达式与示例
  10. 如何设计一张合格的日志表
  11. Python打字练习程序
  12. 游戏制作之路(51)地形细节工具
  13. 认证理论与技术——身份认证技术
  14. 看《赘婿》我不仅收获了快乐,还收获了独特的目标管理方法(OKRs-E)
  15. Java基于ssm的大学生社团管理系统 计算机毕业设计
  16. 计算机程序漏洞用英语怎么说,漏洞用英语怎么说
  17. 教您一招解决Word不能复制粘贴问题
  18. 菜鸟学习SpringBoot——(一)构建一个简单的单体Springboot项目
  19. Tuxera NTFS的禁用和卸载
  20. 电商后台管理系统项目的优化

热门文章

  1. Win10系统桌面颜色变为灰黑色恢复正常颜色方法
  2. 【1.01】VBA基础
  3. Windows挂载Linux网络共享文件夹
  4. 【Python爬虫】第三课 网页爬取
  5. 网易云音乐登录报错 status: 400, body: { code: -460, message: ‘网络太拥挤,请稍候再试!‘ } 解决
  6. 1.2_CentOS 7 终端系统识别挂载 USB 的 NTFS 分区
  7. Vue、ElementUI
  8. c语言大学教程答案pdf,C++大学教程(第九版) 保罗·戴特尔(Paul Deitel)等著 完整中文pdf扫描版[197MB]...
  9. 网络赛1-D - Find Integer HDU - 6441
  10. 亚商投资顾问 早餐FM/1116全球6G发展大会开幕