预算指令集
2022-04-27 20:37:14 4 举报
预算指令集
作者其他创作
大纲/内容
返回
定义适配规则
调用
TransferCommandExecutor
派生
D1
调整
组合
AdjustCommandExecutor
释放指令集
1、接口提供方-请求参数
TransferCommand
occupyMoney:占用金额
TransferSubAvailableCommand
冻结
业务逻辑指令集架构设计解析:1、接口提供方:com.im.budget.biz.processor.BudgetTradeFacade#doTrade 接口参数:TradeRequest2、接口调用方: ①调整指令 AdjustCommand,调整指令分为:调增 AdjustAddCommand 和调减 AdjustSubCommand ②冻结指令 FreezeCommand ③占用指令 TakeOffCommand ④释放指令 UnFreezeCommand ⑤调拨指令 TransferCommand,调拨指令细分为: 增加预算金额:TransferAddBudgetCommand 增加可用金额:TransferAddAvailableCommand 增加已分配金额:TransferAddAssignedCommand 减少预算金额:TransferSubBudgetCommand 减少可用金额:TransferSubAvailableCommand 减少已分配金额:TransferSubAssignedCommand 3、适配器:TradeExecutorService 适配器适配到对应指令器 4、指令器:CommandExecutor 指令器调用对应指令集5、锁:锁账户。6、事务问题。
账户锁
指令集
B
调拨
请求
占用
数据ID
数据名称
数据类型
备注
ID
主键
bigint(20)
TRADE_NO
交易单号
varchar(64)
BUDGET_LINE_NO
预算行编码
varchar(100)
BUDGET_PERIOD
期间
MONEY
操作金额
varchar(5000)
FREEZE_STATE
冻结状态
int(1)
状态:默认0 1冻结 2 释放 3失败
FREEZE_TIME
冻结时间
datetime
UNFREEZE_TIME
释放时间
CREATE_TIME
创建时间
UPDATE_TIME
修改时间
ERROR_CODE
错误编码
varchar(50)
ERROR_MSG
错误信息
varchar(1000)
DELETE_FLAG
删除标记
删除状态 1-删除,默认0
REMARK1
备注1
varchar(500)
备注字段1
备注2
备注字段2
VERSION
版本号
版本号,默认1开始递增
4、指令器
AdjustRecord 调整记录明细表
budgetMoney:预算金额
B1
D:freezeMoney - 100,D:availableMoney +100,insert UnFreezeRecord,commit
释放
释放指令:减少当级的冻结金额,计算可用余额,例如:A,B,C,D 释放D的冻结金额,则存在冻结余额-100,可用金额+100。
TransferAddAssignedCommand
List<ITradeItem>
CommandExecutor
统一命令集方式工单表
freezeMoney:冻结金额
availableMoney:可用金额
D:occupyMoney + 100,if(have Freeze ){ D:freezeMoney -100}else{ D:availableMoney -100}insert TakeOffRecord,commit
TransferAddAvailableCommand
指令器
对外接口
List<TradeCommand>
适配器
FreezeCommand
占用指令:增加当级的占用金额,计算可用余额,和涉及减少冻结金额,例如:A,B,C,D 增加D的占用金额+100,若存在冻结记录,则冻结金额-100,可用金额不变,若不存在冻结记录,则可用金额-100
TAKE_STATE
占用状态
状态 1处理中 2 成功 3失败
TRANSFER_STATE
调拨状态
3、适配器
D:budgetMoney + 100,D:availableMoney + 100,C:assignedMoney +100,insert AdjustRecord,commit
冻结指令集
调整指令:增加或减少当级的预算金额,计算可用余额,和涉及父级的已分配金额的调整,例如:A,B,C,D 调整D的预算金额+100,则可能会对C 的已分配金额+100。
D
TransferAddBudgetCommand
FreezeRecord 冻结记录明细表
B2
冻结指令:增加当级的冻结金额,和计算可用余额,例如:A,B,C,D 增加D的冻结金额+100,则可用余额-100。
assignedMoney:已分配金额
TransferSubAssignedCommand
TradeExecutorService
UnFreezeCommandExecutor
AdjustSubCommand
TradeRequest
TakeOffCommand
AdjustAddCommand
AdjustCommand
TransferSubBudgetCommand
TakeOffCommandExecutor
调拨指令集
2、接口调用方-指令对象
REQUEST_ID
请求ID
REQUEST_BODY
请求参数
RESPONSE_BODY
返回参数
预算行编号
BILL_STATE
状态
状态 1确认接收 2 成功 3失败
TransferRecord 调拨记录明细表
A
FreezeCommandExecutor
D:freezeMoney + 100,D:availableMoney -100,insert FreezeRecord,commit
TradeCommand
占用指令集
C1
C
D2
UnFreezeCommand
ADJUST_STATE
调整状态
TakeOffRecord 占用记录明细表
C2
调拨指令:存在A,B1,C1,D1,B2,C2,D2 若对 D1 -> D2 预算金额调拨100,则对调出D1的预算金额-100;调入D2的预算金额+100。对于调出的D1,则存在D1的上级C1,以及上级的上级,直到没有上级为止,减少当级预算行的预算金额-100,重新计算当级的可用金额,和已分配金额;对于调入的对D2,则存在D2的上级C2,以及上级的上级,直到没有上级为止,增加当级预算行的预算金额+100,重新计算当级的可用金额,和已分配金额。
数据库
调整指令集
0 条评论
下一页