怎样设计T+1交易模式
假设用户发起两笔交易记录,时间分别为:2017-09-25 1:00 存100元 和2017-09-25 2:00 存200元的交易,
此时用户的总余额为:300元,可用余额为:0元,
然后所有的交易记录都必须等待24个小时之后才能取出或做其他的投资,到2017-09-26 1:00之后 用户可用金额为100元 ,2017-09-26 2:00之后可用余额为:300元,
假如2017-09-26 2:20 用户提现用掉了50元 ,此时可用余额为250元
怎样实时的计算出当前用户的可用余额
如果用定时服务计算的时候,计算结果会有延迟……
求解,万分感谢
这类问题需要结合实际需求来设计的。
1.简单,而且数据量不是很大,需要精准的24小时判断,就可以在数据上加一个生效时间,每次使用或者计算的时候,利用这个时间来操作。
2.复杂点的,需要建立一个中间的账户,来存这些24小时内的数据,生效的数据再转入到实际账户,至于如何控制生效,就需要根据实际业务来设计了,可以利用人工确认,或者作业的方式来处理了。
T+1不是24小时.是等一天
想把这个时间做成不是标准的T+1,而是做成每条记录都是相距相同时间之后才可操作这笔记录,没想到好的实现方式
针对账户设计多个子账户关联,你总余额的从一个子账户里面去,可用余额从另一个子账户取。在完成结算核对后没问题了直接覆盖
这样会衍生一个新的问题,假如我一笔交易记录 到了可结算时间,会更新不及时的,例如:2017-09-25 1:00 到2017-09-26 1:00 从不可用到可用 这个子账户金额的同步
@下个路口: 你这个是涉及到财务的问题,需要T+N大部分都是因为结算需要,需要在结算和各方核对数据后才能入账,再没有走这步前是不能入账的也就不能完成你的逻辑的。
如果是我的话 会针对每笔交易做一个延迟24H的计算
z在保证性能的条件下,怎样对每一笔交易做延迟24H小时的计算?定时服务扫描?
没感觉出多少实时性,这个数据都是静态的(24H内),你无非就是获取时判断存入记录和当前的时差而已,且时间需要一致性,比如用db时间,当然你是设备的话可以用卫星时间。
这不是很简单的吗 每一笔交易存入的时候 加一个定时计划 到了24小时把 这个存入的金额转换为可用金额
1 用作业,或定时服务去处理当前时间满足要求的交易,频率根据你要求是的实时度设置,
2 如果能保持业务数据正确,余额=固定余额+实时计算余额 固定余额:已做结算的(存入单子是T-2的记录,每天结算一次),实时计算余额:获取未做结算的(存入时间+24 >=当前时间)
作业来处理
财务上来讲T+N,是因为需要财务人工对账审核。所有才有这个说话,财务人懒,T+1变T+7都不是问题。。。。。
如果单纯要达到你这个目标很简单。
1.定时任务,间隔时间提高。
2.单独一个表记录锁定资金。和解锁时间,查询可用余额的时候,sum这个表,在加上可用余额。如果锁定资金有则触发同步到可以资金,并清空锁定资金。在配合1使用
3.利用mq定时消息,定时24小时候后消费消息,几乎可以算实时。
说了这么多,你最好要搞清楚你真正的业务是什么。别理解错了。