国内最全IT社区平台
联系我们
|
收藏本站
首页
php框架
框架设计
Yii
Symfony
CakePHP
codeigniter
ZendFramework
ThinkPHP
web前端
网络优化
特效
jscript
htmlcss
jquery
程序人生
散文
随笔
程序员工资吐槽
程序员人生规划
程序员面试
php开源
php教程
destoon
综合技术
ecshop
Discuz
帝国CMS
DedeCMS
PHPCMS
WordPress
数据库
数据库应用
FoxPro
sybase
Oracle
Sqlserver
MySql
access
服务器
互联网
招商加盟
工具
程序员求签
程序员老黄历
颜色选择器
编程教程
您当前位置:
首页
>
php框架
>
框架设计
> [置顶] 大学毕业4年-回顾和总结(10)-资金账务系统的架构设计(产品视角+技术视角)(图文并茂)
[置顶] 大学毕业4年-回顾和总结(10)-资金账务系统的架构设计(产品视角+技术视角)(图文并茂)
来源:程序员人生 发布时间:2016-06-06 16:58:44 阅读次数:4269次
背景
2014年和2015年开发P2P网贷系统的时候,某大牛有设计了1套简洁实用的资金账户系统。
系统设计主要是为了服务于P2P网贷等系统,资金账务系统可以作为1个独立的子系统对外提供服务。
本系统,我基本没有写过几行代码,更多是学习,理解他人的架构设计。
之前,有写过相干总结。
大学毕业4年之际,想把之前各方面的积累都好好总结1番。
从本篇开始,写点之前做过的产品和技术架构等。不玩高大上,要简单直白。
友谊提示
:
注释,是不会太多的。英文过关的朋友,基本都看得懂。“约定优于配置”,“约定优于注释”。
产品核心功能
业界“最好实践”
殊途同归
:支付宝、微信支付、京东商城,和钱相干的功能,最核心的都是:资金账户、交易(充值、提现、转账、支付)、查询(资金流水、分类查询、交易明细)。
支付宝图
:
雷观
:
技术研发,懂产品对提升自己的架构能力,可以说是有巨大帮助的。
1.开户
功能描写:创建1个账户。
账号和账户是不同的概念,前者侧重普通系统登录,后者侧重“资金类系统”。
2.交易
充值:为1个账户增加1笔钱。
提现:从1个账户减少1笔钱。
转账:把1个账户中的钱,转移到另外1个账户。
批量转账:转账的增强版。
冻结资金:把1个账户的资金,冻结1部份,可用余额会减少相同的数额。
解冻资金:把1个账户的资金,解冻1部份,可用余额会增加相同的数额。
3.查询
基本信息查询:查询1个账户的总金额、可用余额、冻结余额等信息。
批量查询:查询多个账户的金额等信息。
开户-冻结账户-解冻账户
冻结资金、解冻资金等日志
交易明细:包括了充值、提现、交易等所有的账户资金变动日志。
4.冻结账户/解冻账户
冻结;把1个账户给冻结了,冻结的账户可能没法进行提现等操作。
解冻:把账户从冻结状态,变成正常状态。
技术架构
技术架构图/产品架构图
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
:只有1个LockAccountVO,可能要锁账户时的临时VO。这个地方略显高端!!!
查询类功能service
:
交易类功能trans
:
不足的地方
当时做P2P网贷系统的时候,资金账务系统只实现了这些“利用类”的核心功能。
刚刚把产品架构图画好了,和某电商大牛交换了下,他觉得漏掉了2个核心功能:对账和结算。
先记下来,下周认真学习下。
总结
1.资金账务系统,是比较通用的。
2.先有产品设计,再有技术架构,再细节设计和编码。
3.面向接口编程。
4.外界系统,只需要知道接口就能够了。
5.资金账务类系统,需要1点业务能力。部份功能,需要懂财务会计等概念。
1转眼,2016年5月,马上就要过去了。
这个月,写得大多是“创业投资和商业模式” 类的文章,效果还是非常好的。
但是,目前还是“技术立身” ,写点技术类的总结,压压惊,嘿嘿!!!
小雷FansUnion
-
1个有创业和投资经验的资深程序员-全球最大中文IT社区CSDN知名博主
-
排名第
120
投资
案例:
好狗狗
、
皇包车
、
职业梦
、
比呀比
、
易途8
2016年5月29日
湖北-武汉-晴
雷观
:
技术研发,懂产品对提升自己的架构能力,可以说是有巨大帮助的。
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
------分隔线----------------------------
上一篇
一起talk C栗子吧(第一百五十九回:C语言实例--基于AF_INET域的数据报套接字通信)
下一篇
[置顶] 架构设计:系统间通信(33)——其他消息中间件及场景应用(下3)
分享到:
------分隔线----------------------------
为码而活
积分:
4237
15
粉丝
7
关注
栏目热点
设计模式思考----适配器模式
使用mongodb shard cluster构建高可用的系统架构
动态代理实现Spring Aop
软件设计最近发展趋势对话录
浅谈MVC与三层架构
音视频二次开发 IP组播技术
Struts2之拦截器原理分析及使用-下
[置顶] Java线程状态