增量统计系统设计

统计系统

标签(空格分隔):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阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容