yujian
2019-11-12 8f5ca1d337950be2a20cdb1a91a29a86fde1b07d
红包封禁功能
7个文件已修改
146 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/admin/RedPackAdminController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/BanLiShopController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RedPackControllerV2.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackBalanceServiceImpl.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackExchangeServiceImpl.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackGiveRecordServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/redpack/RedPackBalanceService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    
    /**
     *     添加红包