fanli/src/main/java/com/yeshi/fanli/controller/admin/RedPackAdminController.java
@@ -17,6 +17,7 @@ import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.common.AdminUser; import com.yeshi.fanli.entity.redpack.RedPackExchange; import com.yeshi.fanli.exception.redpack.RedPackBalanceException; import com.yeshi.fanli.exception.redpack.RedPackExchangeException; import com.yeshi.fanli.service.AdminUserService; import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService; @@ -118,7 +119,13 @@ return; } Long uid = exchange.getUid(); BigDecimal balance = redPackBalanceService.getBalance(uid); BigDecimal balance; try { balance = redPackBalanceService.getBalance(uid); } catch (RedPackBalanceException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户红包功能已被封禁")); return; } UserInfo userInfo = userInfoService.selectByPKey(uid); JSONObject data = new JSONObject(); fanli/src/main/java/com/yeshi/fanli/controller/client/v1/BanLiShopController.java
@@ -183,7 +183,12 @@ pay.setName(getPayName(pay.getPayType())); } } BigDecimal money = redPackBalanceService.getBalance(uid); BigDecimal money = new BigDecimal(0); try { money = redPackBalanceService.getBalance(uid); } catch (RedPackBalanceException e) { e.printStackTrace(); } JSONObject data = new JSONObject(); data.put("goods", goods); data.put("hongBaoBalance", money); fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RedPackControllerV2.java
@@ -34,6 +34,7 @@ import com.yeshi.fanli.entity.redpack.RedPackExchange; import com.yeshi.fanli.entity.redpack.RedPackWinInvite; import com.yeshi.fanli.entity.redpack.RedPackWinInvite.RedPackWinInviteTypeEnum; import com.yeshi.fanli.exception.redpack.RedPackBalanceException; import com.yeshi.fanli.exception.redpack.RedPackExchangeException; import com.yeshi.fanli.exception.redpack.RedPackGiveRecordException; import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; @@ -117,7 +118,14 @@ BigDecimal yesterdayUse = zero; BigDecimal thisMonthUse = zero; BigDecimal lastMonthUse = zero; BigDecimal balance = redPackBalanceService.getBalance(uid); BigDecimal balance = null; try { balance = redPackBalanceService.getBalance(uid); } catch (RedPackBalanceException e) { out.print(JsonUtil.loadFalseResult(1, e.getMsg())); return; } if (balance == null) { balance = zero; } else { @@ -383,7 +391,12 @@ } JSONObject data = new JSONObject(); data.put("balance", redPackBalanceService.getBalance(uid)); try { data.put("balance", redPackBalanceService.getBalance(uid)); } catch (RedPackBalanceException e) { out.print(JsonUtil.loadFalseResult(1, e.getMsg())); return; } data.put("ruleLink", redPackConfigService.getValueByKey("invite_reward_rule_link")); data.put("shareLink", UserInviteUtil.getShareUrl(uid)); fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackBalanceServiceImpl.java
@@ -29,34 +29,29 @@ return redPackBalanceMapper.selectByPrimaryKey(uid); } private void verify(RedPackBalance redPackBalance) throws RedPackBalanceException{ if (redPackBalance == null) return; if (redPackBalance.getState() != null && redPackBalance.getState() == RedPackBalance.STATE_LOCKED) throw new RedPackBalanceException(1, "红包已封禁,感谢使用"); } @Override public BigDecimal getBalance(Long uid) { public BigDecimal getBalance(Long uid) throws RedPackBalanceException{ if (uid == null || uid == 0) return new BigDecimal(0); RedPackBalance redPackBalance = redPackBalanceMapper.selectByPrimaryKey(uid); if (redPackBalance != null) return redPackBalance.getMoney(); if (redPackBalance != null) { // 验证 verify(redPackBalance); return redPackBalance.getMoney(); } return new BigDecimal(0); } @Override public void addRedPack(Long uid, BigDecimal money) { if (uid == null || uid == 0 || money == null) return; 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 { redPackBalanceMapper.addRedPack(uid, money); } } @Override @Transactional(rollbackFor = Exception.class) @@ -76,6 +71,8 @@ redPackBalance.setUpdateTime(new Date()); redPackBalanceMapper.insertSelective(redPackBalance); } else { // 验证 verify(redPackBalance); redPackBalanceMapper.addRedPack(uid, money); } } @@ -95,6 +92,9 @@ if (balance.getMoney().compareTo(money) < 0) throw new RedPackBalanceException(2, "红包余额不足"); // 验证 verify(balance); // 减少红包 redPackBalanceMapper.subRedPack(uid, money); } fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java
@@ -18,10 +18,10 @@ import com.yeshi.fanli.entity.common.AdminUser; import com.yeshi.fanli.entity.money.UserMoneyDetail; import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum; import com.yeshi.fanli.entity.redpack.RedPackBalance; import com.yeshi.fanli.entity.redpack.RedPackDetail; import com.yeshi.fanli.entity.redpack.RedPackDetail.RedPackDetailTypeEnum; import com.yeshi.fanli.entity.redpack.RedPackExchange; import com.yeshi.fanli.exception.redpack.RedPackBalanceException; import com.yeshi.fanli.exception.redpack.RedPackExchangeException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.money.UserMoneyService; @@ -90,20 +90,18 @@ String extractBanlenMin = redPackConfigService.getValueByKey("extract_banlen_min"); RedPackBalance balance = redPackBalanceService.selectByPrimaryKey(uid); if (balance == null) BigDecimal balance = null; try { balance = redPackBalanceService.getBalance(uid); } catch (RedPackBalanceException e1) { throw new RedPackExchangeException(1, e1.getMsg()); } if (balance == null || balance.compareTo(new BigDecimal(extractBanlenMin)) < 0) throw new RedPackExchangeException(1, "余额不足" + extractBanlenMin + "元"); if (balance.getState() != null && balance.getState() == RedPackBalance.STATE_LOCKED) throw new RedPackExchangeException(1, "红包已封禁,感谢使用"); BigDecimal balanceMoney = balance.getMoney(); if (balanceMoney == null || balanceMoney.compareTo(new BigDecimal(extractBanlenMin)) < 0) throw new RedPackExchangeException(1, "余额不足" + extractBanlenMin + "元"); if (balanceMoney.compareTo(amount) < 0) if (balance.compareTo(amount) < 0) throw new RedPackExchangeException(1, "提现余额不足"); String moneyMin = redPackConfigService.getValueByKey("extract_money_min"); String moneyMax = redPackConfigService.getValueByKey("extract_money_max"); @@ -171,16 +169,20 @@ throw new RedPackExchangeException(1,"更新提现明细出错"); } //消息 SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm"); String beizu = "红包提现成功后请到“我的-账户余额”中查看"; MsgRedPackExchangeContentDTO dto = new MsgRedPackExchangeContentDTO(); dto.setTitle("红包提现"); dto.setTime(sd.format(record.getCreateTime())); dto.setHandle("人工审核" + sd.format(new Date())); dto.setMoney("¥" + record.getMoney().setScale(2)); dto.setBalance("¥" + redPackBalanceService.getBalance(record.getUid())); userMoneyMsgNotificationService.redPackMsg(record.getUid(), MsgTypeMoneyTypeEnum.redPackExchangePass, new Gson().toJson(dto), beizu); try { //消息 SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm"); String beizu = "红包提现成功后请到“我的-账户余额”中查看"; MsgRedPackExchangeContentDTO dto = new MsgRedPackExchangeContentDTO(); dto.setTitle("红包提现"); dto.setTime(sd.format(record.getCreateTime())); dto.setHandle("人工审核" + sd.format(new Date())); dto.setMoney("¥" + record.getMoney().setScale(2)); dto.setBalance("¥" + redPackBalanceService.getBalance(record.getUid())); userMoneyMsgNotificationService.redPackMsg(record.getUid(), MsgTypeMoneyTypeEnum.redPackExchangePass, new Gson().toJson(dto), beizu); } catch (RedPackBalanceException e) { throw new RedPackExchangeException(1, e.getMsg()); } } fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackGiveRecordServiceImpl.java
@@ -17,10 +17,10 @@ import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum; import com.yeshi.fanli.entity.bus.user.TokenRecord; import com.yeshi.fanli.entity.bus.user.TokenRecord.TokenTypeEnum; import com.yeshi.fanli.entity.redpack.RedPackBalance; import com.yeshi.fanli.entity.redpack.RedPackDetail; import com.yeshi.fanli.entity.redpack.RedPackDetail.RedPackDetailTypeEnum; import com.yeshi.fanli.entity.redpack.RedPackGiveRecord; import com.yeshi.fanli.exception.redpack.RedPackBalanceException; import com.yeshi.fanli.exception.redpack.RedPackGiveRecordException; import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService; import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService; @@ -111,16 +111,15 @@ if (amount.compareTo(new BigDecimal(giveMin)) < 0 || amount.compareTo(new BigDecimal(giveMax)) > 0) throw new RedPackGiveRecordException(1, "赠送金额至少" + giveMin + "元至多" + giveMax + "元"); RedPackBalance balance = redPackBalanceService.selectByPrimaryKey(uid); if (balance == null) BigDecimal balance = null; try { balance = redPackBalanceService.getBalance(uid); } catch (RedPackBalanceException e1) { throw new RedPackGiveRecordException(1, e1.getMsg()); } if (balance == null || amount.compareTo(balance) > 0) throw new RedPackGiveRecordException(1, "余额不足"); if (balance.getState() != null && balance.getState() == RedPackBalance.STATE_LOCKED) throw new RedPackGiveRecordException(1, "红包已封禁,感谢使用"); if (balance.getMoney() == null || amount.compareTo(balance.getMoney()) > 0) throw new RedPackGiveRecordException(1, "余额不足"); Date nowDate = new Date(); // 赠送记录 fanli/src/main/java/com/yeshi/fanli/service/inter/redpack/RedPackBalanceService.java
@@ -20,14 +20,8 @@ * @param uid * @return */ public BigDecimal getBalance(Long uid); public BigDecimal getBalance(Long uid) throws RedPackBalanceException; /** * 添加红包 * @param uid * @param money */ public void addRedPack(Long uid, BigDecimal money); /** * 添加红包