增量統(tǒng)計(jì)系統(tǒng)設(shè)計(jì)

統(tǒng)計(jì)系統(tǒng)

標(biāo)簽(空格分隔):NNK商戶開放平臺


目錄

  • 1.統(tǒng)計(jì)系統(tǒng)設(shè)計(jì)
  • 1.1 模塊功能圖
  • 1.2 統(tǒng)計(jì)數(shù)據(jù)模型(訂單狀態(tài)變動(dòng)模型)
  • 2.數(shù)據(jù)庫設(shè)計(jì)
  • 2.1 統(tǒng)計(jì)模塊(statistics.sql)
  • 3.模塊接口設(shè)計(jì)
  • 3.1 統(tǒng)計(jì)任務(wù)管理
  • 3.2 交易統(tǒng)計(jì)
  • 3.4 上游統(tǒng)計(jì)
  • 3.5 資金統(tǒng)計(jì)

1. 統(tǒng)計(jì)系統(tǒng)設(shè)計(jì)

1.1 模塊功能圖

系統(tǒng)模塊.png

1.2 統(tǒng)計(jì)數(shù)據(jù)模型(訂單狀態(tài)變動(dòng)模型)

狀態(tài)變動(dòng)圖.png
統(tǒng)計(jì)日期 變動(dòng)狀態(tài) 數(shù)量
2016-01-01 訂單不存在 0
2016-01-02 1.NULL->3.中間狀態(tài) 1
2016-01-03 3.中間狀態(tài)->5.中間狀態(tài) 1
2016-01-04 5.中間狀態(tài)->6.當(dāng)前狀態(tài) 1

【1.NULL】:訂單未創(chuàng)建之前的狀態(tài)描述
【2.初始狀態(tài)】:剛創(chuàng)建時(shí)的訂單狀態(tài),此狀態(tài)為固定狀態(tài),可看作是邏輯狀態(tài),以訂單表-創(chuàng)建時(shí)間為操作時(shí)間;
【3.4.5.中間狀態(tài)】:中間變化的訂單狀態(tài),記錄在訂單快照表上,以快照表-訂單更新時(shí)間為操作時(shí)間,快照記錄的情況有:后臺修改已完成訂單的狀態(tài)時(shí)會記錄、統(tǒng)計(jì)到處于處理中的訂單會被記錄,中間狀態(tài)不一定存在;
【6.當(dāng)前狀態(tài)】:訂單表當(dāng)前的記錄狀態(tài),以訂單表-更新時(shí)間為操作時(shí)間
說明:以上表示一筆訂單的狀態(tài)變化流程,下面利用【訂單狀態(tài)變動(dòng)模型】模擬一筆訂單統(tǒng)計(jì)的結(jié)果

統(tǒng)計(jì)日期 變動(dòng)狀態(tài) 數(shù)量
2016-01-01 訂單不存在 0
2016-01-02 1.NULL->3.中間狀態(tài) 1
2016-01-03 3.中間狀態(tài)->5.中間狀態(tài) 1
2016-01-04 5.中間狀態(tài)->6.當(dāng)前狀態(tài) 1

2. 數(shù)據(jù)庫設(shè)計(jì)

2.1 統(tǒng)計(jì)模塊(statistics.sql)

  1. 統(tǒng)計(jì)數(shù)據(jù)項(xiàng)表:ecsys_statistics_itemInfo
  2. 交易統(tǒng)計(jì)維度表:ecsys_statistics_tradeDimensionInfo
  3. 交易統(tǒng)計(jì)快照表:ecsys_statistics_tradeSnapshotInfo
    說明:統(tǒng)計(jì)時(shí)記錄未處理完成的訂單,業(yè)務(wù)系統(tǒng)針對處理完成訂單修改時(shí)記錄快照

針對交易訂單表:更新任何字段都需要更新updateTime,針對已處理完成的訂單更新時(shí)需記錄快照

  1. 上游統(tǒng)計(jì)維度表:ecsys_statistics_externDimensionInfo
  2. 上游統(tǒng)計(jì)快照表:ecsys_statistics_externSnapshotInfo
  3. 資金統(tǒng)計(jì)表:ecsys_statistics_balanceInfo
  4. 對賬單記錄表:ecsys_statistics_StatementInfo

3. 模塊接口設(shè)計(jì)

3.1 統(tǒng)計(jì)任務(wù)管理

  1. 執(zhí)行統(tǒng)計(jì)任務(wù)
    說明:可調(diào)用此接口執(zhí)行統(tǒng)計(jì)任務(wù),如交易統(tǒng)計(jì),上游統(tǒng)計(jì),資金統(tǒng)計(jì)等,可指定一些通用的任務(wù)參數(shù),如統(tǒng)計(jì)時(shí)段,數(shù)據(jù)查詢頻率時(shí)長等。
    交易統(tǒng)計(jì)流程
    【環(huán)節(jié)1-統(tǒng)計(jì)時(shí)段內(nèi)創(chuàng)建的訂單】
    (1)以ecsys_tradeOrder_orderInfo.nnkOrderCreateTime為條件查詢時(shí)段內(nèi)訂單,進(jìn)入步驟-2
    (2)判斷ecsys_tradeOrder_orderInfo.updateTime是否在時(shí)段內(nèi)
    如果是,則進(jìn)入【環(huán)節(jié)4:建立訂單狀態(tài)變動(dòng)模型】
    如果否,則進(jìn)入步驟-3
    (3)根據(jù)ecsys_tradeOrder_orderInfo.nnkOrderId查詢ecsys_statistics_tradeSnapshotInfo快照記錄,得到交易訂單和快照記錄集合,進(jìn)入【環(huán)節(jié)4:建立訂單狀態(tài)變動(dòng)模型】


    【環(huán)節(jié)2-統(tǒng)計(jì)時(shí)段內(nèi)ecsys_tradeOrder_orderInfo變動(dòng)的訂單】
    (1)在ecsys_tradeOrder_orderInfo中,查詢條件:updateTime在時(shí)段內(nèi),nnkOrderCreateTime不在時(shí)段內(nèi)的訂單,進(jìn)步步驟-2
    (2)根據(jù)ecsys_tradeOrder_orderInfo.nnkOrderId查詢ecsys_statistics_tradeSnapshotInfo快照記錄,得到交易訂單和快照記錄集合,進(jìn)入【環(huán)節(jié)4:建立訂單狀態(tài)變動(dòng)模型】
    (3)把nnkOrderId記錄緩存標(biāo)記已處理


    【環(huán)節(jié)3-統(tǒng)計(jì)時(shí)段內(nèi)ecsys_statistics_tradeSnapshotInfo變動(dòng)的訂單】
    (1)在ecsys_statistics_tradeSnapshotInfo中,查詢條件:snapshotCreateTime在時(shí)段內(nèi),nnkOrderCreateTime不在時(shí)段內(nèi)的快照訂單,進(jìn)入步驟-2
    (2)根據(jù)【環(huán)節(jié)2-3緩存】查詢訂單是否已處理,
    如果已處理,則結(jié)束
    如果未處理,則進(jìn)入步驟-3
    (3)根據(jù)nnkOrderId在ecsys_statistics_tradeSnapshotInfo中查詢其他快照記錄,在ecsys_tradeOrder_orderInfo中查詢交易記錄,得到交易訂單和其快照記錄集合,進(jìn)入【環(huán)節(jié)4:建立訂單狀態(tài)變動(dòng)模型】
    (4)把nnkOrderId記錄緩存標(biāo)記已處理


    【環(huán)節(jié)4-建立訂單狀態(tài)變動(dòng)模型】
    (1)根據(jù)接受交易訂單或快照記錄建立【訂單狀態(tài)變動(dòng)模型】,進(jìn)入步驟-2
    (2)根據(jù)【訂單狀態(tài)變動(dòng)模型】得到時(shí)段內(nèi)最初的記錄,取時(shí)段之前最近的記錄,如果不存在則取NULL,進(jìn)入步驟-3
    (3)根據(jù)【訂單狀態(tài)變動(dòng)模型】得到時(shí)段內(nèi)最后的記錄,取時(shí)段內(nèi)最后一條記錄,如果不存在則取NULL,進(jìn)入步驟-4
    (4)根據(jù)以上處理得到了時(shí)段內(nèi),最初以及最后的記錄,判斷最初與最后記錄狀態(tài)不同相同 且 最后記錄不為NULL
    如果條件成立,則按【統(tǒng)計(jì)條件】分類統(tǒng)計(jì):【最初記錄狀態(tài)-> 最后記錄狀態(tài) +1】,并把統(tǒng)計(jì)結(jié)果記錄緩存,進(jìn)入步驟-5
    如果條件不成立,則進(jìn)入步驟-5
    (5)判斷訂單是否處理完成,如果未處理完成,則記錄到ecsys_statistics_tradeSnapshotInfo快照表中


    【環(huán)節(jié)5-統(tǒng)計(jì)最后處理】
    (1)把緩存內(nèi)的統(tǒng)計(jì)結(jié)果,存儲到交易統(tǒng)計(jì)維度表(ecsys_statistics_tradeDimensionInfo)與統(tǒng)計(jì)數(shù)據(jù)項(xiàng)表(ecsys_statistics_itemInfo),如果交易統(tǒng)計(jì)維度表存在對應(yīng)的【統(tǒng)計(jì)條件】記錄則使用現(xiàn)有的,如不存在則新增;


    上游統(tǒng)計(jì)流程:同【交易統(tǒng)計(jì)】流程類似
    資金統(tǒng)計(jì)流程:根據(jù)任務(wù)條件:(統(tǒng)計(jì)時(shí)段、數(shù)據(jù)查詢頻率時(shí)長),在資金流水表(ecsys_account_balanceSubLog),按統(tǒng)計(jì)條件(交易日期、賬戶ID、渠道ID、資金流水類型)分類統(tǒng)計(jì)變化的資金,變化凍結(jié)的資金,然后把統(tǒng)計(jì)結(jié)果存儲到資金統(tǒng)計(jì)表(ecsys_statistics_balanceInfo)上
  2. 取消統(tǒng)計(jì)任務(wù)
    說明:可調(diào)用此接口取消正在執(zhí)行的統(tǒng)計(jì)任務(wù),需要調(diào)用正在執(zhí)行此任務(wù)的APP的接口(調(diào)用執(zhí)行統(tǒng)計(jì)任務(wù)的時(shí)候需要記錄APP_ID),并指明統(tǒng)計(jì)任務(wù)ID。

3.2 交易統(tǒng)計(jì)

  1. 查詢交易統(tǒng)計(jì)記錄
    說明:
    根據(jù)統(tǒng)計(jì)條件:渠道ID、業(yè)務(wù)類型、產(chǎn)品類型、產(chǎn)品單位數(shù)量、產(chǎn)品供應(yīng)商、產(chǎn)品省份、產(chǎn)品區(qū)號、統(tǒng)計(jì)日期范圍(可選擇合計(jì)或不合計(jì))
    得到統(tǒng)計(jì)結(jié)果數(shù)據(jù):(接單訂單統(tǒng)計(jì)項(xiàng)、成功訂單統(tǒng)計(jì)項(xiàng)、部分成功訂單統(tǒng)計(jì)項(xiàng)、超額成功訂單統(tǒng)計(jì)項(xiàng)、失敗訂單統(tǒng)計(jì)項(xiàng)、待定訂單統(tǒng)計(jì)項(xiàng)),其中每個(gè)統(tǒng)計(jì)項(xiàng)都包括:(訂單筆數(shù)總計(jì)、產(chǎn)品單位數(shù)量總計(jì)、已支付金額總計(jì))。

流程:
(1)交易統(tǒng)計(jì)維度表(ecsys_statistics_tradeDimensionInfo)與統(tǒng)計(jì)數(shù)據(jù)項(xiàng)表(ecsys_statistics_itemInfo)連表查詢,根據(jù)【統(tǒng)計(jì)條件】查詢出對應(yīng)記錄,由于可能查詢的記錄數(shù)很多,所以請考慮分段查詢;
(2)根據(jù)以上統(tǒng)計(jì)記錄,計(jì)算每筆統(tǒng)計(jì)記錄的【統(tǒng)計(jì)結(jié)果數(shù)據(jù)】,此處需判斷訂單是否接單成功,是否處理成功等,請按【交易統(tǒng)計(jì)維度表】的原始狀態(tài)和當(dāng)前狀態(tài)來判斷,其中根據(jù)原始狀態(tài)得到的【統(tǒng)計(jì)結(jié)果數(shù)據(jù)】為負(fù)數(shù)(狀態(tài)為NULL不計(jì)入),根據(jù)當(dāng)前狀態(tài)得到的【統(tǒng)計(jì)結(jié)果數(shù)據(jù)】為正數(shù),兩者都需要判斷統(tǒng)計(jì);
(3)根據(jù)以上得到的【統(tǒng)計(jì)結(jié)果數(shù)據(jù)】,按【統(tǒng)計(jì)條件】再分類統(tǒng)計(jì),得到最終統(tǒng)計(jì)結(jié)果后返回。

  1. 查詢交易快照記錄

3.3 上游統(tǒng)計(jì)

  1. 查詢上游統(tǒng)計(jì)記錄
    說明:同【查詢交易統(tǒng)計(jì)記錄】流程類似
  2. 查詢上游快照記錄

3.4 資金統(tǒng)計(jì)

  1. 查詢資金統(tǒng)計(jì)記錄
    說明:在資金統(tǒng)計(jì)表(ecsys_statistics_balanceInfo)中,根據(jù)查詢條件:賬戶ID、渠道ID、資金流水類型、統(tǒng)計(jì)日期范圍(可選擇合計(jì)或不合計(jì)),統(tǒng)計(jì)總資金流水、總凍結(jié)資金流水,總流水次數(shù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容