HashBaseTable的学习笔记

HashBasedTable<Integer, Integer, Model> countModel = HashBasedTable.create();


使用: countModel.put(x,x,boj);调用put方法添加值;

 public HashBasedTable<Integer, Integer, Model>  setModel (HashBasedTable<Integer, Integer, AccountModel> countModel, Integer.......){

countModel.put(userId,coinType, acc);

return countModel;

);


public void updateAccountsAndSaveFlows(HashBasedTable<Integer, Integer, AccountModel> accountMap,
HashBasedTable<Integer, Integer, List<FlowBase>> flowMap) throws AntConcurrenceException {
Set<Integer> userIdKeys = accountMap.rowKeySet();

Object[] keyArr =  userIdKeys.toArray();
Arrays.sort(keyArr);
for(Object userId: keyArr ){
Integer id = Integer.parseInt(userId.toString());
Map<Integer, AccountModel> coinAccMap = accountMap.row(id);

for(Entry<Integer, AccountModel> entry :coinAccMap.entrySet()){
AccountModel increment = entry.getValue();
AccountSpot account = queryByUserIdAndType(id,entry.getKey());
List<FlowBase> flowList = flowMap.get(userId,entry.getKey());

if(account==null){
account = new AccountSpot();
account.setUserId(id);
account.setType(increment.getCoinType());
account.setAvailBalance(increment.getAvailIncrement());
account.setFrozenBlance(increment.getFrozenIncrement());
account.setVersion(0);
}
updateAccoutAndSaveFlows(account,increment.getAvailIncrement(),increment.getFrozenIncrement(),flowList);
}

}

}

public void updateAccoutAndSaveFlows(AccountSpot spot,BigDecimal availIncrement,BigDecimal frozenIncrement, List<FlowBase> flowList)
throws AntConcurrenceException {
//更新账户信息
updateAccountSpot(spot,availIncrement,frozenIncrement);

/*记录流水列表*/
BigDecimal accAmount = spot.getAvailBalance();

if(flowList!=null&&!flowList.isEmpty()){

/*循环更新流水表中的操作后账户余额*/
for(int i = 0;i<flowList.size();i++){
//操作后账户余额
accAmount = BigDecimalUtils.add(accAmount, flowList.get(i).getAmount());
flowList.get(i).setAccAmount(accAmount);
}

for(FlowBase flow:flowList){
flowDao.save(flow);
}
}
}

public FlowBase save(FlowBase flow) {
if(flow instanceof FlowHlc){
int userId = flow.getUserId();
String tableName = getTableNameByCoin(userId,CoinType.HLC.code());
if(!commonDao.checkTableExist(tableName)) createFlowTable(tableName);
insertFlow(tableName,flow);
}else if(flow instanceof FlowHyc){
int userId = flow.getUserId();
String tableName = getTableNameByCoin(userId,CoinType.HYC.code());;
if(!commonDao.checkTableExist(tableName)) createFlowTable(tableName);
insertFlow(tableName,flow);
}else{
dao.save(flow);
}
return flow;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值