| | |
| | | return Result.ok(allWalletCoinVo);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void updateWalletBalance(Long id, BigDecimal availableBalance, BigDecimal totalBalance,BigDecimal frozenBalance) {
|
| | | if(id==null){
|
| | | return;
|
| | | }
|
| | | // 这里需要加锁 保证同一个时间只有一个线程操作一个钱包
|
| | | String key = "UPDATE_WALLET_COIN_"+id;
|
| | | while (true){
|
| | | boolean b = redisUtils.setNotExist(key, 1, 5);
|
| | | if(b){
|
| | | System.out.println("我拿到了锁");
|
| | | // 拿到了锁才能扣
|
| | | memberWalletCoinDao.updateWalletBalance(id,availableBalance,totalBalance,frozenBalance);
|
| | | // 扣完释放锁
|
| | | redisUtils.del(key);
|
| | | break;
|
| | | }else {
|
| | | System.out.println("我没有拿到锁");
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | }
|