賬戶系統(tǒng)設(shè)計(jì)從入門到精通
▲?點(diǎn)擊上方“李寬wideplum”關(guān)注公眾號(hào)
點(diǎn)擊發(fā)消息,回復(fù)“微信”,加我的個(gè)人微信
賬戶作為支付交易的最基礎(chǔ)設(shè)施,可見其重要性,其核心不是設(shè)計(jì)本身,而是他的理念以和規(guī)范以和基本原則;可以幫助你從0到1全面掌握賬戶系統(tǒng)的設(shè)計(jì)方法,最后附帶后臺(tái)設(shè)計(jì)的幾頁關(guān)鍵頁面原型......深吸一口氣,讓我們開始吧!

全文9434個(gè)字,閱讀預(yù)計(jì)需要10分鐘
1.什么是賬戶
我們先看看標(biāo)準(zhǔn)定義
賬戶是根據(jù)會(huì)計(jì)科目設(shè)置的,具有一定格式和結(jié)構(gòu),用于反映會(huì)計(jì)要素的增減變動(dòng)情況及其結(jié)果的載體。
增減變動(dòng)的會(huì)計(jì)分錄的書寫規(guī)范
借:科目A 金額1
貸:科目B 金額1
賬戶結(jié)構(gòu)規(guī)范
賬戶的基本結(jié)構(gòu)應(yīng)同時(shí)具備以下內(nèi)容:
1)賬戶的名稱,即會(huì)計(jì)科目;
2)日期和摘要,即記載經(jīng)濟(jì)業(yè)務(wù)的日期和概括說明經(jīng)濟(jì)業(yè)務(wù)的內(nèi)容;
3)增加方和減少方的金額及余額;
4)憑證號(hào)數(shù),即說明記載賬戶記錄的依據(jù)。

財(cái)務(wù)知識(shí)不是很充足的同學(xué)可能對(duì)以上的賬戶定義很難理解和繞口;我們從業(yè)務(wù)的角度來看賬戶,后面的電子賬戶我們都會(huì)從業(yè)務(wù)角度去看,拋棄財(cái)務(wù)視角
從業(yè)務(wù)視角來看賬戶其實(shí)就是用于記錄某個(gè)主體的某類型資金的余額以及余額變動(dòng)明細(xì)的數(shù)據(jù)載體
所以賬戶有3個(gè)關(guān)鍵的點(diǎn)
賬戶余額:這個(gè)賬戶有多少錢
賬戶流水:這個(gè)賬戶資金進(jìn)進(jìn)出出的明細(xì)記錄
賬戶交易:怎么把錢放進(jìn)去,怎么把錢取出來

抓住了上面3個(gè)點(diǎn)我們基本就抓住了賬戶設(shè)計(jì)的核心了,是不是很簡(jiǎn)單
基于這3個(gè)點(diǎn)去構(gòu)建賬戶的輔助設(shè)施,比如賬戶主體,賬戶種類,賬戶余額結(jié)構(gòu),賬戶流水的記錄字段,賬戶的功能權(quán)限,賬戶的出入賬,賬戶服務(wù)(賬戶開通注銷,凍結(jié)解凍,余額流水查詢等)等
2.賬戶的種類
從財(cái)務(wù)科目分類來看內(nèi)部賬戶,賬戶可以分資產(chǎn)類賬戶,負(fù)債類賬戶,損益類賬戶,共同類賬戶,然后就是不同的科目

但是站在業(yè)務(wù)的視角,我們更多是基于業(yè)務(wù)場(chǎng)景來對(duì)賬戶進(jìn)行命名,比如商戶的結(jié)算款會(huì)結(jié)算到商戶結(jié)算賬戶,支付公司在銀行開的賬戶叫備付金賬戶,備付金賬戶又分存管戶,收付戶,匯繳戶;個(gè)人賬戶,企業(yè)賬戶;會(huì)員子賬戶,商戶子賬戶,中間擔(dān)保戶

所以從賬戶命名上我們基本就知道了這個(gè)賬戶是干嘛用的;就像你有10張卡,一張是放工資的你叫他工資卡,一張是公積金的你叫公積金卡等等,所以這時(shí)候我們基于業(yè)務(wù)命名,目的是為了區(qū)分賬戶用途
但是收回來我們發(fā)現(xiàn),無論賬戶叫什么名字,都是有賬戶余額,賬戶流水,賬戶交易;無論卡叫什么名字都是銀行卡;所以賬戶的本質(zhì)屬性不變,設(shè)計(jì)辦法基本相通,唯一會(huì)有不同的是附屬內(nèi)容,比如支出戶只能打款不能收款,中間擔(dān)保戶不能為負(fù)等等,權(quán)限不同,主體不同,交易特點(diǎn)不同.....

小樣,你以為穿個(gè)馬甲我就不認(rèn)識(shí)你啦,你裝錢的,能進(jìn)能出,記得明明白白;別管你叫啥我都知道怎么設(shè)計(jì),不管我叫你啥我都這么設(shè)計(jì)

3.賬戶的結(jié)構(gòu)
賬戶結(jié)構(gòu)

賬戶主體
這個(gè)賬戶是誰的,個(gè)人的?企業(yè)的??jī)?nèi)部業(yè)務(wù)線的?
賬戶結(jié)構(gòu)樹
就像會(huì)計(jì)科目,就像商品類目,由于賬戶可能種類繁多所以有時(shí)也需要一個(gè)結(jié)構(gòu)樹,比如:

賬戶類型
賬戶的分類,比如個(gè)人賬戶/對(duì)公賬戶,結(jié)算賬戶/付款賬戶,收款賬戶/打款賬戶
賬戶名稱
錢多少不重要,名字一定要有氣質(zhì):陳老師全球通國際清算私房錢賬戶
賬戶余額
賬戶余額一般為了業(yè)務(wù)需要,會(huì)設(shè)計(jì)多個(gè)金額屬性,比如凍結(jié)金額,可用金額,可提金額

賬戶流水
賬戶的資金變動(dòng)記錄,記錄對(duì)手賬戶,收支方向,金額,費(fèi)用類型等基本信息
賬務(wù)號(hào) 費(fèi)用 收支 金額 商品 剩余金額 備注 1111 私房錢 支出 100 冰激凌 0 給老婆吃
賬戶服務(wù)
開通/關(guān)閉
權(quán)限設(shè)置
入賬
扣賬
調(diào)賬
凍結(jié)/解凍
余額查詢
流水查詢
賬戶底線原則
支付成功才入賬,扣賬成功才出款,一分不少真安全

4.如何設(shè)計(jì)類型
賬戶名稱,結(jié)算戶,付款戶,支出戶
原則:名稱是便于區(qū)分業(yè)務(wù),賬戶本質(zhì)相同
就像有的公司叫產(chǎn)品經(jīng)理,有的公司就產(chǎn)品策劃,有的公司叫需求分析師;但本質(zhì)大家干的都是產(chǎn)品設(shè)計(jì)工作
基于主體類型命名賬戶:個(gè)人賬戶,企業(yè)賬戶
基于業(yè)務(wù)類型命名賬戶:電商商家結(jié)算戶,快遞商家結(jié)算戶
基于資金屬性命名賬戶:工資賬戶,公積金賬戶,手續(xù)費(fèi)賬戶
基于賬戶職能命名賬戶:待清算賬戶,中間擔(dān)保賬戶
等等,現(xiàn)在應(yīng)該清楚設(shè)計(jì)賬戶時(shí)如何給賬戶命名了吧,簡(jiǎn)單易記,容易區(qū)分

5.賬戶的附屬設(shè)施
有了電池是不是還需要充電線,有了油罐是不是還得有加油設(shè)備,安全設(shè)備;同樣有了賬戶是不是還得有附屬模塊才能實(shí)現(xiàn)賬戶的資金管理職能

費(fèi)用類型
每筆交易都有業(yè)務(wù)場(chǎng)景,比如下單付款,投訴罰款,用戶充值,余額提現(xiàn),賬戶年費(fèi)等等,一個(gè)是為了讓用戶知道這是筆什么交易,另一個(gè)就是財(cái)務(wù)能夠知道編寫什么科目的會(huì)計(jì)憑證
| 費(fèi)用編碼 | 費(fèi)用名稱 | 創(chuàng)建人 | 創(chuàng)建時(shí)間 |
| 1002 | 化妝品消費(fèi) | PM陳老師 | 2021.3.14 |
| 1001 | 私房錢存入 | PM陳老師 | 2021.5.20 |
入賬規(guī)則
上游有業(yè)務(wù)系統(tǒng)比如賬務(wù)系統(tǒng)請(qǐng)求一筆費(fèi)用的入賬,那么如那個(gè)賬戶呢,收支方向如何呢?所以入賬規(guī)則就是來確定這筆入賬怎么入的問題,規(guī)則主要有2部分組成
| 條件參數(shù) | 費(fèi)用編碼:1001 費(fèi)用名稱:私房錢存入 業(yè)務(wù)線:藏錢事業(yè)部 |
| 入賬規(guī)則 | 收支:收入 賬戶父類:家庭賬戶 賬戶子類:PM陳老師私房錢戶 |
| 入賬規(guī)則ID | 111 |
凍結(jié)規(guī)則
有些費(fèi)用入賬后是需要暫時(shí)凍結(jié)的,比如用戶領(lǐng)的活動(dòng)獎(jiǎng)金,必須在凍結(jié)7個(gè)工作日之后才能解凍;某業(yè)務(wù)線的商家結(jié)算收入,統(tǒng)一在次月15號(hào)可提走;所以一條入賬規(guī)則需要關(guān)聯(lián)一個(gè)凍結(jié)規(guī)則
| 入賬規(guī)則ID | 111 |
| 凍結(jié)規(guī)則ID | 11101 |
| 凍結(jié)規(guī)則 | 是否凍結(jié):凍結(jié) 凍結(jié)模式:固定時(shí)長(zhǎng) 凍結(jié)設(shè)置:7天 是否有效:是 |
費(fèi)用/入賬規(guī)則/凍結(jié)規(guī)則關(guān)系
一個(gè)費(fèi)用入賬時(shí),可能記一筆賬,也可能記多筆;比如商戶傭金費(fèi)用,則會(huì)入兩筆賬:成本賬戶入一筆扣款,商家傭金賬戶入一筆收入;而扣款不用凍結(jié),收入需要凍結(jié)7天

對(duì)外服務(wù)
任何系統(tǒng)都不是孤島,賬戶系統(tǒng)同樣,要將能力賦能給上游實(shí)現(xiàn)自己的價(jià)值;賬戶向外提供的服務(wù)基礎(chǔ)的應(yīng)該包含:開戶,注銷,查詢(余額,流水,狀態(tài)),交易(支付,退款,充值,提現(xiàn),凍結(jié))等

賬戶管理后臺(tái)
賬戶系統(tǒng)需要提供一個(gè)業(yè)務(wù)后臺(tái)給到相關(guān)的運(yùn)營(yíng)人員,財(cái)務(wù)等角色;后臺(tái)可以查看所有的賬戶以及賬戶的狀態(tài),所屬主體以及余額情況;還可以操作賬戶進(jìn)行注銷
還需要能夠查看所有的出入賬流水,配置相關(guān)費(fèi)用,配置入賬規(guī)則和凍結(jié)規(guī)則

6.賬戶系統(tǒng)架構(gòu)圖
功能架構(gòu)

業(yè)務(wù)架構(gòu)

7.賬戶入賬流程圖

8.賬戶系統(tǒng)后臺(tái)
上面基本已經(jīng)很清楚了,賬戶系統(tǒng)后臺(tái)頁面文章不再詳述,原型可以到星球進(jìn)行下載
9.賬戶的應(yīng)用
賬戶除了管錢之外還可以在此之上構(gòu)建一些應(yīng)用產(chǎn)品比如下面這兩個(gè)
錢包
像微信錢包,就是用戶的一個(gè)虛擬賬戶,在錢包里可以看到余額,可以充值余額,也可以將余額里的錢提現(xiàn)到銀行卡
余額支付
賬戶可以作為一種支付方式,包裝出一個(gè)支付通道,利用平臺(tái)自己的賬戶進(jìn)行平臺(tái)商品的購買支付,當(dāng)然這個(gè)要考慮合規(guī)性
10.合規(guī)淺談
果然最后說的都是重頭戲,賬戶作為一種資金池形態(tài),要嚴(yán)格做好其合規(guī)性,如果平臺(tái)沒有資質(zhì)牌照,那么自建可以但是用戶賬戶的真實(shí)資金一定要放到監(jiān)管賬戶當(dāng)中進(jìn)行監(jiān)管,避免違規(guī)沉淀資金池,其他合規(guī)風(fēng)險(xiǎn)讀者朋友們自己思考一下吧
第二部分:賬戶主體
賬戶本身記錄的是資產(chǎn)或者負(fù)債或者費(fèi)用,那么必然就需要一個(gè)主體承載,誰的錢,誰的債,誰的費(fèi)用,誰的愛!世界上沒有一片樹葉沒有歸屬,就算秋風(fēng)落了葉,那它要不屬于天空或是歸屬大地,所以賬戶歸于誰,而這個(gè)誰是誰就是今天我們要聊的主體
1.什么是主體
主體可以是人,可以是公司,可以是一個(gè)組織,我們暫且認(rèn)為主體就是一個(gè)具有基本特征和屬性的一個(gè)可定義的對(duì)象
2.主體的廣義定義
基于對(duì)象出發(fā),那么主體可以認(rèn)為是自然界存在的實(shí)體物質(zhì)和虛無的對(duì)象;比如一個(gè)人是一個(gè)主體,一個(gè)公司是一個(gè)主體,一個(gè)組織是一個(gè)主體;公司的一條業(yè)務(wù)線是一個(gè)主體,公司的一個(gè)部門也是一個(gè)主體,一個(gè)城市也是一個(gè)主體,一座房子也是一個(gè)主體等等
那么這么多主體有什么意義呢,其實(shí)就是說明賬戶的主體可以非常廣義,比如一個(gè)城市的GDP,可以通過一個(gè)統(tǒng)計(jì)報(bào)表得到,同樣也可以為每個(gè)城市設(shè)置一個(gè)GDP賬戶,那么這個(gè)賬戶的主體就是一座城市;北京GDP賬戶2020年年末余額4萬億!
所以主要是一個(gè)可以被定義的對(duì)象,我們就可以將它作為賬戶的主體來管理,就可以為之開通某種意義上的賬戶,賬戶也可以是廣義的,不只是金錢余額,也可以是水量余額,點(diǎn)量余額,好感度余額等等,從而賬戶的廣義我們是不是就可以認(rèn)為:賬戶可以記錄一個(gè)可被量化的數(shù)量以及變化過程的記錄工具;那么我們就可以用賬戶的設(shè)計(jì)理念去設(shè)計(jì)更多的事物的數(shù)量以及變化過程
3.狹義賬戶主體
我們回歸賬戶主體本身,就是賬戶的歸屬對(duì)象;最常見的主體就是個(gè)人和企業(yè);銀行卡的主體有個(gè)人主體和法人主體;
對(duì)于一個(gè)公司內(nèi)部來說為了經(jīng)營(yíng)分析或者管理的需要又會(huì)虛擬出更多的主體類型,比如營(yíng)銷賬戶的這類費(fèi)用賬戶的主體可以是業(yè)務(wù)線或者部門或者小組,來記錄部門和小組的預(yù)算以及預(yù)算的消耗
站在人民銀行的角度看賬戶主體我們知道就是:網(wǎng)聯(lián),銀聯(lián),各商業(yè)銀行,各城市處理中心,各特批處理機(jī)構(gòu)等
站在銀行角度看銀行賬戶主體就是:個(gè)人,企業(yè),支付機(jī)構(gòu)等
站在一個(gè)普通企業(yè)看賬戶主體就是:個(gè)人用戶,企業(yè)用戶,內(nèi)部業(yè)務(wù)線,子公司等
4.主體的唯一ID
就像個(gè)人我們的唯一ID可以是身份證,我們?cè)陂_銀行卡的時(shí)候就是用的身份證ID作為這個(gè)主體的唯一ID,在辦理社保的時(shí)候也是用身份證ID作為身份的唯一ID;唯一ID的條件就是能夠唯一識(shí)別這個(gè)主體
比如個(gè)人的唯一ID可以是身份證,手機(jī)號(hào),社保號(hào),一個(gè)平臺(tái)的userID及時(shí)在這個(gè)平臺(tái)的唯一ID;
企業(yè)的唯一ID可以是統(tǒng)一社會(huì)信用編號(hào),也可以是對(duì)公戶的卡號(hào)等;如果企業(yè)入駐了一個(gè)平臺(tái)那么這個(gè)平臺(tái)為這個(gè)企業(yè)生成的企業(yè)編碼也可以唯一識(shí)別這個(gè)企業(yè)
唯一ID的用途就是唯一識(shí)別這個(gè)主體,但是有時(shí)候可能這個(gè)主體的唯一身份ID不夠用,比如這個(gè)人在淘寶即是個(gè)人用戶又是商家用戶,那么他在開戶時(shí)可能就不能只用身份證了,而是用userID 去開付款戶 和?bussid? 去開結(jié)算戶?
5.主體的身份認(rèn)證
安全起見,我們需要核查主體的身份,像銀行開戶需要本人到場(chǎng)+身份證核驗(yàn);二類戶的開通需要多要素鑒權(quán)識(shí)別主體身份的合法性
對(duì)于企業(yè)來說企業(yè)的營(yíng)業(yè)執(zhí)照,法人簽字,蓋章或者對(duì)公戶小額打款來驗(yàn)證企業(yè)的真實(shí)身份
6.主體的創(chuàng)建
對(duì)于一個(gè)平臺(tái)而言,其賬戶系統(tǒng)的主體無非以下幾種
個(gè)人用戶:具有身份證或者手機(jī)號(hào)唯一識(shí)別的一個(gè)自然人個(gè)體
企業(yè)用戶:具有企業(yè)信用編號(hào)唯一識(shí)別的一個(gè)法人主體
內(nèi)部主體用戶:為了管理需要內(nèi)部的子公司主體或者業(yè)務(wù)線主體或者部門
主體下業(yè)務(wù)線子用戶:一個(gè)子公司下面的一個(gè)業(yè)務(wù)線或者部門
所以我們?cè)趧?chuàng)建主體的同時(shí)就需要定義每一類主體的唯一識(shí)別ID
在開戶的時(shí)候,就需要使用這個(gè)唯一識(shí)別ID作為賬戶主體的唯一識(shí)別ID
7.主體的信息管理
一個(gè)平臺(tái)的各類主體信息一般是放在用戶中心或者crm系統(tǒng),這些系統(tǒng)去調(diào)用賬戶中心進(jìn)行開戶,在這些系統(tǒng)內(nèi)對(duì)于一個(gè)主體我們需要管理他的基本信息,比如ID信息,屬性信息,權(quán)限信息,關(guān)系信息;有什么信息就增加字段管理即可,也可以將信息分類,每一類記錄的不同的表中,比如身份信息,認(rèn)證信息,賬戶開通信息等

8.為主體開戶
有了主體以后,賬戶的開通可以是人工也可以是上游系統(tǒng)調(diào)用開戶接口開通相關(guān)賬戶和賬戶權(quán)限

比如接口要傳入下面的信息
請(qǐng)求成功后賬戶系統(tǒng)就會(huì)先在賬戶主體表中插入基本主體信息,如果需要其他信息,在后面加字段即可

根據(jù)主體ID可以去賬戶表查詢開通的所有賬戶
然后基于開戶請(qǐng)求我們?cè)谫~戶中心表中創(chuàng)建對(duì)應(yīng)的賬戶,賬戶中心表中要有主體的用于開戶唯一ID
| 主體ID | 賬戶ID | 賬戶類型 |
| 123 | 33333333 | 傭金賬戶 |
| 123 | 2222222 | 紅包賬戶 |
| 123 | 111111111 | 積分賬戶 |
同時(shí)在賬戶余額表中創(chuàng)建賬戶余額
| 賬戶ID | 賬戶類型 | 總余額 | 凍結(jié)余額 | 可用余額 |
| 33333333 | 傭金賬戶 | 0 | 0 | 0 |
同時(shí)在賬戶的權(quán)限表中設(shè)置賬戶權(quán)限
| 賬戶ID | 付款權(quán)限 | 透支權(quán)限 |
| 33333333 | 是 | 否 |
賬戶中心經(jīng)過一些列的處理后賬戶就開通了,然后返回給開戶方
出參
我們從上面的開戶過程可以看出來,賬戶內(nèi)部和主體之間是一個(gè)復(fù)雜的對(duì)應(yīng)關(guān)系
9.主體與賬戶的關(guān)系
通過8我們知道,主體和賬戶以及賬戶內(nèi)部有復(fù)雜的對(duì)應(yīng)關(guān)系
主體vs賬戶是一對(duì)多的關(guān)系,一個(gè)主體可以開通多個(gè)賬戶,每一個(gè)賬戶又會(huì)關(guān)聯(lián)余額表,權(quán)限表,流水表

主體的開戶ID去關(guān)聯(lián)賬戶的賬戶ID,賬戶ID去關(guān)聯(lián)賬戶的余額表中的余額,權(quán)限表中的權(quán)限
第三部分:賬戶結(jié)構(gòu)
1.簡(jiǎn)單賬戶結(jié)構(gòu)
賬戶結(jié)構(gòu)一個(gè)是本身的結(jié)構(gòu)有什么組成,另一個(gè)就是賬戶體系內(nèi)賬戶與賬戶之間的構(gòu)成模型,我們主要說后者,我們看幾個(gè)最簡(jiǎn)單的賬戶結(jié)構(gòu)
只有一類賬戶,比如整個(gè)賬戶系統(tǒng)只有一類賬戶:張三-工資賬戶

有多個(gè)類型的賬戶,比如下圖,但本質(zhì)上依然很簡(jiǎn)單,很容易管理

2.簡(jiǎn)單余額結(jié)構(gòu)
余額結(jié)構(gòu)就是針對(duì)賬戶內(nèi)部來說,賬戶的余額如何劃分,就像火鍋,有一個(gè)鍋,鴛鴦鍋,九宮格,一樣,賬戶作為一個(gè)容器,其內(nèi)部依然可以劃分成多個(gè)存儲(chǔ)空間
只有一個(gè)余額的余額結(jié)構(gòu),你會(huì)發(fā)現(xiàn)微信錢包的余額就只有一個(gè),有多少就是多少,簡(jiǎn)單粗暴
| 賬戶余額 |
| 0.00 |
這樣的余額結(jié)構(gòu)必然支持的交易種類就很簡(jiǎn)單,收入,支出;無法支撐其他的針對(duì)余額的處理
3.復(fù)雜賬戶結(jié)構(gòu)
隨著業(yè)務(wù)的復(fù)雜度增加,各類功能性以及運(yùn)營(yíng)需求增加,簡(jiǎn)單的賬戶結(jié)構(gòu)開始變得復(fù)雜,以支撐更復(fù)雜的業(yè)務(wù)模型,比如紅包可能每個(gè)業(yè)務(wù)線都要推出一種紅包營(yíng)銷形態(tài),比如保險(xiǎn)業(yè)務(wù)線,游戲業(yè)務(wù)線;而紅包又被拆分成了現(xiàn)金紅包,虛擬幣紅包等這樣的話紅包賬戶結(jié)構(gòu)就成了多層級(jí)的賬戶結(jié)構(gòu);如下

看著是不是很像會(huì)計(jì)科目的結(jié)構(gòu),最下一層是不是很像葉子科目,當(dāng)然第二層和第三層換一下位置也可以;這種情況下賬戶結(jié)構(gòu)就很復(fù)雜了,而且自然存在了總賬戶和明細(xì)賬戶之分
還有一種是賬戶結(jié)構(gòu)分總分機(jī)構(gòu),但二級(jí)賬戶的種類繁多,功能劃分較細(xì),這類賬戶結(jié)構(gòu)具有支撐復(fù)雜的記賬能力,以及業(yè)務(wù)處理能力,這類賬戶結(jié)構(gòu)常見在二清監(jiān)管戶體系,比如下面具有眾多子賬戶的賬戶體系,協(xié)同完成資金的監(jiān)管和分賬職能
一朋友咨詢我人力資源代理平臺(tái)的賬戶該如何設(shè)計(jì),業(yè)務(wù)模型就是平臺(tái)幫助很多企業(yè)代收代發(fā)工資,并且支付公積金和社保等多種資金款項(xiàng),我設(shè)計(jì)了四個(gè)方案,你覺得那個(gè)方案好呢



4.復(fù)雜余額結(jié)構(gòu)
因?yàn)橘Y金清算周期或者業(yè)務(wù)流轉(zhuǎn)節(jié)點(diǎn)多,或者其他風(fēng)控要求,需要對(duì)賬戶余額進(jìn)行復(fù)雜的處理操作,比如有的能提,有的不能提,最常見的結(jié)構(gòu)就是三個(gè)余額屬性
| 總余額 | 凍結(jié)余額 | 可用余額 |
| 100.00 | 20.00 | 80.00 |
核算恒等式:總余額=凍結(jié)余額+可用余額
這樣的話,就可以對(duì)賬戶余額進(jìn)行一些處理,比如發(fā)的紅包7天后才能提現(xiàn),那么紅包入賬戶時(shí)就會(huì)先入凍結(jié)余額,7日后解凍之可用余額
5.賬戶結(jié)構(gòu)和余額結(jié)構(gòu)的關(guān)系
從上面我們可以看到,賬戶可以分多級(jí),余額可以分多塊,那么有什么關(guān)系呢
多級(jí)之間:x級(jí)總賬戶總余額=sum( x-1 級(jí)子賬戶所有賬戶總余額之和 )
某個(gè)賬戶:總賬戶余額=凍結(jié)余額+可用余額
上面另個(gè)恒等式可以用于校驗(yàn)賬戶系統(tǒng)記錄的合法性,是不是覺得跟會(huì)計(jì)系統(tǒng)科目之間的試算平衡很類似
6.賬戶管理表的設(shè)計(jì)
通過前面的賬戶主體,賬戶結(jié)構(gòu),賬戶余額結(jié)構(gòu),我們基本可以設(shè)計(jì)出賬戶表的基本字段了,只要包含這幾部分信息:賬戶主體信息,賬戶結(jié)構(gòu)信息,余額信息,賬戶狀態(tài)信息,我們?cè)O(shè)計(jì)如下,除了核心字段以外,其他想展示的字段可以去相關(guān)表中查詢,比如主體姓名,可以用主體ID去主體表中查詢

7.余額的變化
我們簡(jiǎn)單說一下,后面在將流水和余額更新時(shí)會(huì)細(xì)講;賬務(wù)請(qǐng)求賬戶入賬時(shí),基于凍結(jié)規(guī)則我們可以知道該筆入賬是否需要凍結(jié),如果需要凍結(jié)的話就更新凍結(jié)余額,后面再解凍,如果不需要凍結(jié)的話就直接更新可用余額

作業(yè):思考一下,如果你是螞蟻財(cái)富的賬戶產(chǎn)品經(jīng)理,你會(huì)如何設(shè)計(jì)賬戶結(jié)構(gòu)和余額結(jié)構(gòu),來滿足業(yè)務(wù)模型呢?歡迎在產(chǎn)品群或者星球提交作業(yè)!(備注小心有坑哦)

第四部分:費(fèi)用管理和入賬配置
有了賬戶那么賬戶里就需要存入和存出,充值和提現(xiàn),轉(zhuǎn)賬和消費(fèi);這樣賬戶才會(huì)流動(dòng)起來,才有了生命力;那么在交易場(chǎng)景里費(fèi)用就顯得十分重要了,多少錢,什么費(fèi)......我們以滴滴司機(jī)的結(jié)算賬戶為例來討論本節(jié)內(nèi)容
1.交易場(chǎng)景
任何一筆收支都依賴于一個(gè)場(chǎng)景,而且這個(gè)場(chǎng)景基本涵蓋所有后續(xù)清結(jié)算的信息,
比如用戶叫了一輛快車,張師傅接了單子,從立水橋南到奧森公園;這就是一個(gè)交易場(chǎng)景,我們可以稱為”快車打車場(chǎng)景“,在這個(gè)場(chǎng)景下我們可以知道用戶是誰,在哪打的車,什么車型,起步價(jià)多少,每公里多少,司機(jī)是誰等;
如果車到了,超過了4分鐘用戶不用車取消了,那么這時(shí)候就需要支付一個(gè)取消費(fèi)用,這又是一個(gè)場(chǎng)景,我們可以稱為“超時(shí)取消場(chǎng)景”
我們將平臺(tái)的所有交易場(chǎng)景進(jìn)行枚舉,如果要新增場(chǎng)景,那么要預(yù)先在場(chǎng)景中心申請(qǐng)場(chǎng)景編號(hào),才能開展上線業(yè)務(wù)
2.費(fèi)用
在上面的場(chǎng)景中,就會(huì)產(chǎn)生交易,因此產(chǎn)生一些列的費(fèi)用,
比如打車單訂單費(fèi)用,完單后要給司機(jī)做結(jié)算就有了訂單結(jié)算費(fèi)用,平臺(tái)要抽取一定服務(wù)費(fèi)就有了“平臺(tái)服務(wù)費(fèi)用”,如果高峰期給司機(jī)發(fā)一定補(bǔ)貼的話就有了“高峰補(bǔ)貼費(fèi)”等等;
費(fèi)用就是站在業(yè)務(wù)角度定義資金的業(yè)務(wù)屬性,基于業(yè)務(wù)側(cè)的費(fèi)用我們可以關(guān)聯(lián)到后續(xù)的財(cái)務(wù)科目,這樣的話費(fèi)用是從業(yè)務(wù)發(fā)生那一刻就產(chǎn)生并且定義了,而且最后關(guān)聯(lián)到會(huì)計(jì)科目,這樣業(yè)務(wù)和財(cái)務(wù)實(shí)現(xiàn)信息一體,對(duì)于業(yè)務(wù)記賬以及轉(zhuǎn)財(cái)務(wù)賬提供巨大的遍歷

3.計(jì)算
這需要一個(gè)強(qiáng)大的計(jì)算系統(tǒng),我們?cè)谥Ц断盗星褰Y(jié)算模塊會(huì)做重點(diǎn)介紹;這里點(diǎn)到為止
下單前的預(yù)計(jì)算,為用戶選擇起點(diǎn)和重點(diǎn)后預(yù)先計(jì)算可能需要的訂單費(fèi)用

進(jìn)行中的實(shí)時(shí)計(jì)算,這個(gè)大家都打過車就不再說了
結(jié)束后的計(jì)算,計(jì)算出本單實(shí)際產(chǎn)生的費(fèi)用

我們可以看出訂單總費(fèi)用包含三部分:起步價(jià)+里程費(fèi)+時(shí)長(zhǎng)費(fèi);你可能會(huì)問,一個(gè)訂單為什么要拆成這么多費(fèi)用呢?我們簡(jiǎn)單想一下,這三個(gè)費(fèi)用的特點(diǎn),而且這三個(gè)費(fèi)用在不同的城市,不同的時(shí)段,不同的用戶,不同的車型都會(huì)發(fā)生變化,所以我們可以理解為,費(fèi)用的細(xì)化是精細(xì)化運(yùn)營(yíng)的必然結(jié)果,另外用戶也需要知道為什么收這么多錢
訂單的清結(jié)算,訂單完結(jié)后就需要給司機(jī)做結(jié)算,那么還需要進(jìn)行一次計(jì)算,那就是這一單應(yīng)該給司機(jī)多少錢,平臺(tái)抽多少錢,要不要實(shí)時(shí)扣稅,有沒有其他費(fèi)用,比如保險(xiǎn)費(fèi),我們得出如下的清算結(jié)果

4.賬戶結(jié)構(gòu)和余額結(jié)構(gòu)
簡(jiǎn)單點(diǎn),每個(gè)司機(jī)只有一個(gè)結(jié)算賬戶,在某支付平臺(tái)開通的二類支付賬戶,沒有其他類型的賬戶,接單的收入,補(bǔ)貼獎(jiǎng)金全部結(jié)算到該賬戶,司機(jī)可以進(jìn)行提現(xiàn)

因?yàn)闉榱孙L(fēng)控客訴問題,我們?yōu)樗緳C(jī)設(shè)置一個(gè)7天的訂單結(jié)算凍結(jié)期,這樣的話我們的賬戶余額分成了凍結(jié)余額和可用余額,可用余額可以用于提現(xiàn)
5.費(fèi)用管理設(shè)計(jì)
上面我們講了交易場(chǎng)景和費(fèi)用的定義,現(xiàn)在我們就來設(shè)計(jì)費(fèi)用費(fèi)用管理,設(shè)計(jì)費(fèi)用有三個(gè)關(guān)鍵點(diǎn)
費(fèi)用編碼? 費(fèi)用名稱? 費(fèi)用結(jié)構(gòu)
這里的設(shè)計(jì)辦法有2種
一級(jí)枚舉型,就是費(fèi)用之間沒有關(guān)系,對(duì)所有費(fèi)用進(jìn)行枚舉,有規(guī)律設(shè)置編碼

多級(jí)結(jié)構(gòu),就是像會(huì)計(jì)科目一樣,有總科目,明細(xì)科目,明細(xì)科目可以設(shè)置多級(jí)

以上兩種方式可能第二種更好一些,特別是在核算和統(tǒng)計(jì)時(shí),可以進(jìn)行總分分別進(jìn)行統(tǒng)計(jì)分析和核算
6.入賬規(guī)則管理
我們?cè)O(shè)置好了費(fèi)用,那么在每個(gè)節(jié)點(diǎn)都會(huì)產(chǎn)生費(fèi)用,或者計(jì)算出相關(guān)的費(fèi)用,比如司機(jī)收入,那么清分之后就需要計(jì)入相關(guān)的賬戶,比如司機(jī)收入要計(jì)入司機(jī)的結(jié)算賬戶;那么還可能一個(gè)費(fèi)用要計(jì)入多個(gè)賬戶,比如復(fù)試記賬時(shí),又比如司機(jī)獎(jiǎng)金可能要同時(shí)計(jì)入平臺(tái)的運(yùn)營(yíng)賬戶和司機(jī)的結(jié)算賬戶

入賬規(guī)則設(shè)計(jì)有兩個(gè)關(guān)鍵點(diǎn)
一個(gè)是匹配條件:要基于入賬請(qǐng)求傳參的條件來匹配到相關(guān)的入賬規(guī)則條目,比如我們需要定義每類記賬請(qǐng)求需要什么條件,比如司機(jī)收入入賬,一個(gè)條件就夠了
費(fèi)用類型? ?司機(jī)收入
另一個(gè)是入賬規(guī)則:就是這個(gè)條目指定入什么賬戶,比如司機(jī)收入匹配到的規(guī)則應(yīng)該是要入司機(jī)結(jié)算賬戶,則入賬規(guī)則是
賬戶主體:司機(jī)
主體ID:司機(jī)ID
賬戶類型:結(jié)算賬戶
這樣我們就得到了一條入賬配置規(guī)則

基于上面的規(guī)則,上游系統(tǒng)在申請(qǐng)入賬時(shí)必須傳幾個(gè)參數(shù):費(fèi)用類型,主體類型,主體id;基于司機(jī)收入這個(gè)費(fèi)用,我們就匹配出一條規(guī)則,應(yīng)該入司機(jī)的結(jié)算賬戶,利用司機(jī)ID找到相關(guān)的結(jié)算賬戶ID然后計(jì)入賬戶

第五部分:凍結(jié)配置與賬戶流水
當(dāng)業(yè)務(wù)系統(tǒng)請(qǐng)求入賬以后基于費(fèi)用類型以及入賬規(guī)則我們就可以知道應(yīng)該入哪個(gè)賬戶;這時(shí)候問題就來了,因?yàn)橘~戶余額也是分結(jié)構(gòu)的,有凍結(jié)和可用,那么要是想先凍結(jié)起來怎么辦呢?
我們先回顧一下上一篇的最后一個(gè)圖,在凍結(jié)處理里我畫了一個(gè)虛線圈,本篇文章我們就把他做實(shí)了

1.凍結(jié)規(guī)則
我們?cè)?/span>賬戶系統(tǒng)設(shè)計(jì)詳解里講過凍結(jié)模塊,這里我們?cè)偌?xì)講一下;凍結(jié)就是一個(gè)費(fèi)用請(qǐng)求入賬時(shí)要基于業(yè)務(wù)要求決定需不需要暫時(shí)凍結(jié)起來,還是直接就可以使用;那么如何設(shè)計(jì)凍結(jié)規(guī)則呢
凍結(jié)規(guī)則是基于入賬規(guī)則設(shè)置的,也就是這筆入賬需不需要凍結(jié),如何凍結(jié),是全部?jī)鼋Y(jié)還是部分凍結(jié);這里我們以全部?jī)鼋Y(jié)為例
所以一個(gè)入賬規(guī)則要關(guān)聯(lián)一個(gè)凍結(jié)規(guī)則,入賬的時(shí)候就需要同時(shí)獲取凍結(jié)規(guī)則;入賬規(guī)則和凍結(jié)規(guī)則是一對(duì)一的關(guān)系,費(fèi)用類型和入賬規(guī)則是一對(duì)多的關(guān)系

凍結(jié)規(guī)則有2部分組成,一個(gè)是關(guān)聯(lián)的入賬規(guī)則;另一個(gè)是凍結(jié)規(guī)則;也就是說在配置入賬規(guī)則的同時(shí)就需要關(guān)聯(lián)性的去配置一條凍結(jié)規(guī)則
| 入賬規(guī)則ID | 111 |
| 凍結(jié)規(guī)則ID | 11101 |
| 凍結(jié)規(guī)則 | 是否凍結(jié):凍結(jié) 凍結(jié)模式:固定時(shí)長(zhǎng) 凍結(jié)設(shè)置:7天 是否有效:是 |

凍結(jié)規(guī)則的配置有幾個(gè)關(guān)鍵點(diǎn)
凍結(jié)模式:就是按照固定時(shí)長(zhǎng)凍結(jié)還是凍結(jié)到固定時(shí)間點(diǎn)
凍結(jié)時(shí)間:如果選擇固定時(shí)長(zhǎng)的話就填一個(gè)時(shí)間值,如果是固定時(shí)間的話就選擇一個(gè)可循環(huán)的時(shí)間點(diǎn)函數(shù),比如次月10號(hào),就配置成M+1月10號(hào)
2.賬戶流水
賬戶有2個(gè)核心部分組成,一個(gè)是賬戶余額我們已經(jīng)講過了,另一個(gè)就是賬戶流水,賬戶流水就是記錄了賬戶的變動(dòng)歷史明細(xì),我們收窄為“資金的變動(dòng)明細(xì)”
為了記錄資金的變動(dòng)明細(xì),我們就需要記錄最基本的明細(xì)信息,一般必須包含以下信息
這樣我們就將業(yè)務(wù)的記賬請(qǐng)求通過入賬規(guī)則處理,凍結(jié)規(guī)則處理,進(jìn)入到賬戶系統(tǒng)并且生成賬戶流水了

3.更新賬戶余額
這里有一個(gè)賬務(wù)處理任務(wù)流,每筆入賬都需要從頭執(zhí)行到尾,不能遺漏,任何一個(gè)處理失敗了這筆入賬就宣布失敗進(jìn)行入賬的失敗處理,我們先設(shè)定一個(gè)最簡(jiǎn)單的任務(wù)流
檢查賬戶流水合法性??通過
賬戶流水表插入賬戶流水? ?完成
基于賬戶流水信息更新余額表對(duì)應(yīng)賬戶的凍結(jié)余額或者可用余額??完成
? ? ??賬戶ID:
? ? ??總余額=總余額+本次發(fā)生額
? ? ? 凍結(jié)余額=凍結(jié)余額+本次發(fā)生額(凍結(jié)時(shí))
? ? ? 可用余額=可用余額+本次發(fā)生額(不凍結(jié)時(shí))
自洽校驗(yàn):總余額=凍結(jié)余額+可用余額? ? ?通過
入賬成功
經(jīng)過一些列的處理,入賬成功了,通知請(qǐng)求方,本次入賬結(jié)束
4.余額解凍
因?yàn)槿胭~的時(shí)候有的流水處于凍結(jié)狀態(tài),那么我們就需要按照凍結(jié)的規(guī)則進(jìn)行解凍,這時(shí)候就需要一個(gè)凍結(jié)解凍處理的任務(wù)進(jìn)行掃描執(zhí)行,至于掃描的模式要基于凍結(jié)模式去設(shè)計(jì),我們以凍結(jié)固定時(shí)長(zhǎng)最小單位為天為例,那么任務(wù)就需要每日凌晨去掃描遍歷所有處于凍結(jié)狀態(tài)的賬戶流水,滿足解凍條件的變更凍結(jié)狀態(tài)為未凍結(jié),然后對(duì)余額進(jìn)行處理;這又是一個(gè)處理的任務(wù)流

任務(wù)掃描遍歷凍結(jié)狀態(tài)的賬戶流水
滿足條件的賬戶流水變更凍結(jié)狀態(tài)為未凍結(jié)狀態(tài)
扣減賬戶的凍結(jié)余額并同時(shí)增加賬戶的可用余額
解凍完成
第六部分:后臺(tái)設(shè)計(jì)
1.賬戶列表

2.賬戶信息管理

3.賬戶流水管理


·················END·················
李寬視頻號(hào)
