fix
Helius
2021-07-22 27f7acd6b3d661049b945c7367f34bd8811c459e
gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java
@@ -42,6 +42,8 @@
    private AccountMapper accountMapper;
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private ScoreDetailsMapper scoreDetailsMapper;
    public void distribRecord(Long orderId, String userId) {
        UserHeadRelate userHeadRelate = userHeadRelateMapper.selectRelateByUserId(userId);
@@ -55,7 +57,13 @@
        }
        Integer count = userHeadDetailsMapper.selectDetailsCount(userId);
        UserInfo userInfo = userMapper.selectByPrimaryKey(userId);
//        UserInfo userInfo = userMapper.selectByPrimaryKey(userId);
        AccountInfo accountInfo = accountMapper.selectAccountInfoByUserId(userHeadRelate.getHeadUserId());
        if (AccountInfo.IS_PROHIBIT_Y.equals(accountInfo.getIsProhibit())) {
            return;
        }
        List<String> remark = new ArrayList<>();
        BigDecimal totalReturnScore = BigDecimal.ZERO;
        BigDecimal totalReturnCoin = BigDecimal.ZERO;
@@ -68,7 +76,7 @@
            // 首单返利
            if (StrUtil.isNotBlank(value) && !"0".equals(value)) {
                BigDecimal money = new BigDecimal(value);
                totalReturnScore = totalReturnScore.add(money);
                totalReturnCoin = totalReturnCoin.add(money);
                remark.add("首单返利:" + money);
            }
        }
@@ -78,7 +86,7 @@
            if (StrUtil.isNotBlank(value) && !"0".equals(value)) {
                // 首单完成后,在value单内,返利积分或者环保币
                if (count - 1 <= Integer.parseInt(value)) {
                if (count - 1 < Integer.parseInt(value)) {
                    String scoreStr = getRuleValue(redPaperRule, CommonEnum.返利固定积分.getValue());
                    String coinStr = getRuleValue(redPaperRule, CommonEnum.返利环保币比例.getValue());
                    // 根据积分返利固定积分
@@ -91,7 +99,7 @@
                    // 根据订单总积分, 1:40比例,换算成环保币,返对应百分比
                    if (StrUtil.isNotBlank(coinStr) && !"0".equals(coinStr)) {
                        BigDecimal coinRatio = new BigDecimal(coinStr).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_DOWN);
                        BigDecimal totalCoin = totalScore.multiply(new BigDecimal(40));
                        BigDecimal totalCoin = totalScore.divide(new BigDecimal(50), 2, BigDecimal.ROUND_DOWN);
                        BigDecimal returnCoin = totalCoin.multiply(coinRatio).setScale(2, BigDecimal.ROUND_DOWN);
                        totalReturnCoin = totalReturnCoin.add(returnCoin);
@@ -121,8 +129,25 @@
        userHeadDetailsMapper.insert(userHeadDetails);
        userHeadRelate.setAmount(userHeadRelate.getAmount().add(totalReturnCoin));
        userHeadRelate.setScore(userHeadDetails.getScore().add(totalReturnScore));
        userHeadRelate.setScore(userHeadRelate.getScore().add(totalReturnScore));
        userHeadRelateMapper.updateByPrimaryKey(userHeadRelate);
        accountInfo.setMoney(new BigDecimal(accountInfo.getMoney()).add(totalReturnCoin).setScale(2, BigDecimal.ROUND_DOWN).toString());
        BigDecimal collectScore = StrUtil.isNotBlank(accountInfo.getCollectScore()) ? new BigDecimal(accountInfo.getCollectScore()) : BigDecimal.ZERO;
        accountInfo.setCollectScore(collectScore.add(totalReturnScore).setScale(0, BigDecimal.ROUND_DOWN).toString());
        accountMapper.updateByPrimaryKey(accountInfo);
        if (totalReturnScore.compareTo(BigDecimal.ZERO) > 0) {
            ScoreDetails scoreDetails = new ScoreDetails();
            scoreDetails.setCurrentScore(new BigDecimal(accountInfo.getCollectScore()));
            scoreDetails.setOriginalScore(collectScore);
            scoreDetails.setChangeScore(totalReturnScore);
            scoreDetails.setCreatedTime(new Date());
            scoreDetails.setType(ScoreDetails.SCORE_TYPE_OTHER);
            scoreDetails.setUserId(userHeadRelate.getHeadUserId());
            scoreDetails.setOrderNo(order.getOrderNo());
            scoreDetailsMapper.insert(scoreDetails);
        }
        SysMessage sysMessage = new SysMessage();
        sysMessage.setCreateTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
@@ -130,7 +155,7 @@
        sysMessage.setUserId(userHeadRelate.getHeadUserId());
        sysMessage.setMessageType("4");
        sysMessage.setMessageSubTypeName("返利消息");
        sysMessage.setMessage("收到用户:" + Base64.decodeStr(userInfo.getNickName()) + "的订单返利, 积分:" + totalReturnScore +", 环保币:" + totalReturnCoin);
        sysMessage.setMessage("收到用户:" + accountInfo.getAccountName().replaceAll("(\\w{3})\\w*(\\w{4})", "$1****$2") + "的订单返利, 积分:" + totalReturnScore +", 环保币:" + totalReturnCoin);
        sysMessage.setFlag("2");
        sysMessageMapper.insert(sysMessage);
    }