增量統計系統設計

統計系統

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


目錄

  • 1.統計系統設計
  • 1.1 模塊功能圖
  • 1.2 統計數據模型(訂單狀態變動模型)
  • 2.數據庫設計
  • 2.1 統計模塊(statistics.sql)
  • 3.模塊接口設計
  • 3.1 統計任務管理
  • 3.2 交易統計
  • 3.4 上游統計
  • 3.5 資金統計

1. 統計系統設計

1.1 模塊功能圖

系統模塊.png

1.2 統計數據模型(訂單狀態變動模型)

狀態變動圖.png
統計日期 變動狀態 數量
2016-01-01 訂單不存在 0
2016-01-02 1.NULL->3.中間狀態 1
2016-01-03 3.中間狀態->5.中間狀態 1
2016-01-04 5.中間狀態->6.當前狀態 1

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

統計日期 變動狀態 數量
2016-01-01 訂單不存在 0
2016-01-02 1.NULL->3.中間狀態 1
2016-01-03 3.中間狀態->5.中間狀態 1
2016-01-04 5.中間狀態->6.當前狀態 1

2. 數據庫設計

2.1 統計模塊(statistics.sql)

  1. 統計數據項表:ecsys_statistics_itemInfo
  2. 交易統計維度表:ecsys_statistics_tradeDimensionInfo
  3. 交易統計快照表:ecsys_statistics_tradeSnapshotInfo
    說明:統計時記錄未處理完成的訂單,業務系統針對處理完成訂單修改時記錄快照

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

  1. 上游統計維度表:ecsys_statistics_externDimensionInfo
  2. 上游統計快照表:ecsys_statistics_externSnapshotInfo
  3. 資金統計表:ecsys_statistics_balanceInfo
  4. 對賬單記錄表:ecsys_statistics_StatementInfo

3. 模塊接口設計

3.1 統計任務管理

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


    【環節2-統計時段內ecsys_tradeOrder_orderInfo變動的訂單】
    (1)在ecsys_tradeOrder_orderInfo中,查詢條件:updateTime在時段內,nnkOrderCreateTime不在時段內的訂單,進步步驟-2
    (2)根據ecsys_tradeOrder_orderInfo.nnkOrderId查詢ecsys_statistics_tradeSnapshotInfo快照記錄,得到交易訂單和快照記錄集合,進入【環節4:建立訂單狀態變動模型】
    (3)把nnkOrderId記錄緩存標記已處理


    【環節3-統計時段內ecsys_statistics_tradeSnapshotInfo變動的訂單】
    (1)在ecsys_statistics_tradeSnapshotInfo中,查詢條件:snapshotCreateTime在時段內,nnkOrderCreateTime不在時段內的快照訂單,進入步驟-2
    (2)根據【環節2-3緩存】查詢訂單是否已處理,
    如果已處理,則結束
    如果未處理,則進入步驟-3
    (3)根據nnkOrderId在ecsys_statistics_tradeSnapshotInfo中查詢其他快照記錄,在ecsys_tradeOrder_orderInfo中查詢交易記錄,得到交易訂單和其快照記錄集合,進入【環節4:建立訂單狀態變動模型】
    (4)把nnkOrderId記錄緩存標記已處理


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


    【環節5-統計最后處理】
    (1)把緩存內的統計結果,存儲到交易統計維度表(ecsys_statistics_tradeDimensionInfo)與統計數據項表(ecsys_statistics_itemInfo),如果交易統計維度表存在對應的【統計條件】記錄則使用現有的,如不存在則新增;


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

3.2 交易統計

  1. 查詢交易統計記錄
    說明:
    根據統計條件:渠道ID、業務類型、產品類型、產品單位數量、產品供應商、產品省份、產品區號、統計日期范圍(可選擇合計或不合計)
    得到統計結果數據:(接單訂單統計項、成功訂單統計項、部分成功訂單統計項、超額成功訂單統計項、失敗訂單統計項、待定訂單統計項),其中每個統計項都包括:(訂單筆數總計、產品單位數量總計、已支付金額總計)。

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

  1. 查詢交易快照記錄

3.3 上游統計

  1. 查詢上游統計記錄
    說明:同【查詢交易統計記錄】流程類似
  2. 查詢上游快照記錄

3.4 資金統計

  1. 查詢資金統計記錄
    說明:在資金統計表(ecsys_statistics_balanceInfo)中,根據查詢條件:賬戶ID、渠道ID、資金流水類型、統計日期范圍(可選擇合計或不合計),統計總資金流水、總凍結資金流水,總流水次數
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,516評論 2 379

推薦閱讀更多精彩內容