admin
2019-11-16 a6f34b99ee20e528b766c8ed5a61bd9c5aa0e7ae
fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackBalanceServiceImpl.java
@@ -29,34 +29,29 @@
      return redPackBalanceMapper.selectByPrimaryKey(uid);
   }
   @Override
   public BigDecimal getBalance(Long uid) {
      if (uid == null || uid == 0)
         return null;
      RedPackBalance redPackBalance = redPackBalanceMapper.selectByPrimaryKey(uid);
      if (redPackBalance != null)
         return redPackBalance.getMoney();
      return null;
   }
   @Override
   public void addRedPack(Long uid, BigDecimal money) {
      if (uid == null || uid == 0 || money == null)
   private void verify(RedPackBalance redPackBalance) throws RedPackBalanceException{
      if (redPackBalance == null)
         return;
      RedPackBalance redPackBalance = redPackBalanceMapper.selectForUpdate(uid);
      if (redPackBalance == null) {
         redPackBalance = new RedPackBalance();
         redPackBalance.setId(uid);
         redPackBalance.setMoney(money);
         redPackBalance.setCreateTime(new Date());
         redPackBalance.setUpdateTime(new Date());
         redPackBalanceMapper.insertSelective(redPackBalance);
      } else {
         redPackBalanceMapper.addRedPack(uid, money);
      }
      if (redPackBalance.getState() != null && redPackBalance.getState() == RedPackBalance.STATE_LOCKED)
         throw new RedPackBalanceException(1, "红包已封禁,感谢使用");
   }
   @Override
   public BigDecimal getBalance(Long uid) throws RedPackBalanceException{
      if (uid == null || uid == 0)
         return new BigDecimal(0);
      RedPackBalance redPackBalance = redPackBalanceMapper.selectByPrimaryKey(uid);
      if (redPackBalance != null) {
         // 验证
         verify(redPackBalance);
         return redPackBalance.getMoney();
      }
      return new BigDecimal(0);
   }
   @Override
   @Transactional(rollbackFor = Exception.class)
@@ -65,8 +60,21 @@
         throw new RedPackBalanceException(1, "参数传递不完整");
      // 加入明细
      redPackDetailService.insertSelective(detail);
      // 减少红包
      redPackBalanceMapper.addRedPack(uid, money);
      // 添加红包
      RedPackBalance redPackBalance = redPackBalanceMapper.selectForUpdate(uid);
      if (redPackBalance == null) {
         redPackBalance = new RedPackBalance();
         redPackBalance.setId(uid);
         redPackBalance.setMoney(money);
         redPackBalance.setState(RedPackBalance.STATE_INIT);
         redPackBalance.setCreateTime(new Date());
         redPackBalance.setUpdateTime(new Date());
         redPackBalanceMapper.insertSelective(redPackBalance);
      } else {
         // 验证
         verify(redPackBalance);
         redPackBalanceMapper.addRedPack(uid, money);
      }
   }
   @Override
@@ -84,6 +92,9 @@
      if (balance.getMoney().compareTo(money) < 0)
         throw new RedPackBalanceException(2, "红包余额不足");
      // 验证
      verify(balance);
      // 减少红包
      redPackBalanceMapper.subRedPack(uid, money);
   }