fix
Helius
2021-12-15 5f49840dcf78085b888cab90f61b1efd68c54d4d
gc-user/src/main/java/com/xzx/gc/user/service/DistribService.java
@@ -106,6 +106,9 @@
    public void join(String headId, String userId) {
        log.info("#加入团队:{}, {}#", headId, userId);
        AccountInfo headInfo = accountMapper.selectOneByUserId(headId);
        if (headInfo == null) {
            return;
        }
        if (AccountInfo.IS_HEAD_N.equals(headInfo.getIsHead())) {
            throw new RestException(-3, "不是团长");
        }
@@ -188,6 +191,7 @@
        stringBuffer.append(pointReward);
        redPaperRule.setStatus((short) 0);
        redPaperRule.setRuleName("分销规则");
        redPaperRule.setRuleType("9");
        redPaperRule.setSharingProfitType("frist_reward,order_num_frist,regular_point,regular_money_percent,point_reward");
        redPaperRule.setShareRatio(stringBuffer.toString());
        redPaperRuleMapper.insert(redPaperRule);
@@ -483,6 +487,11 @@
        }
        RedPaperRule rule = redPaperRules.get(0);
        if (rule.getStatus() == 0) {
            log.info("规则被禁用, 不执行返利");
            return;
        }
        String shareTimes = getRuleValue(rule, CommonEnum.朋友圈分享限次.getValue());
        String shareScore = getRuleValue(rule, CommonEnum.朋友圈分享奖励.getValue());
@@ -495,7 +504,7 @@
                throw new RestException("达到24小时内最大分享次数");
            }
            if (StrUtil.isNotBlank(shareScore)) {
            if (StrUtil.isBlank(shareScore)) {
                return;
            }
@@ -510,7 +519,7 @@
            scoreDetails.setOriginalScore(collectScore);
            scoreDetails.setChangeScore(returnScore);
            scoreDetails.setCreatedTime(new Date());
            scoreDetails.setType(ScoreDetails.SCORE_TYPE_INVITE_FIRST_ORDER);
            scoreDetails.setType(ScoreDetails.SCORE_TYPE_SHARE_MOMENTS);
            scoreDetails.setUserId(accountInfo.getUserId());
            scoreDetailsMapper.insert(scoreDetails);
@@ -524,10 +533,60 @@
            sysMessage.setFlag("2");
            sysMessageMapper.insert(sysMessage);
            redisUtil.setex(key, times.toString(), 84400);
            Date tomorrow = DateUtil.parse(DateUtil.tomorrow().toString("yyyy-MM-dd") + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
            long time = DateUtil.between(new Date(), tomorrow, DateUnit.SECOND, false);
            redisUtil.setex(key, times.toString(), (int) time);
        }
    }
    public void inviteAward(String phone) {
        AccountInfo accountInfo = accountMapper.selectAccountInfoByPhone(phone);
        List<RedPaperRule> redPaperRules = redPaperRuleMapper.selectByRuleType("10");
        if (CollUtil.isEmpty(redPaperRules)) {
            return;
        }
        RedPaperRule rule = redPaperRules.get(0);
        String invite = getRuleValue(rule, CommonEnum.邀请奖励.getValue());
        if (StrUtil.isBlank(invite)) {
            return;
        }
        List<UserShareInfo> hasInvite = userShareInfoMapper.selectByPhone(phone);
        if (CollUtil.isNotEmpty(hasInvite)) {
            if (hasInvite.size() >= 10) {
                log.info("超过10个,邀请无效:{}", phone);
                return;
            }
        }
        BigDecimal returnScore = new BigDecimal(invite);
        BigDecimal collectScore = StrUtil.isNotBlank(accountInfo.getCollectScore()) ? new BigDecimal(accountInfo.getCollectScore()) : BigDecimal.ZERO;
        accountInfo.setCollectScore(collectScore.add(returnScore).setScale(0, RoundingMode.DOWN).toString());
        accountMapper.updateByPrimaryKey(accountInfo);
        ScoreDetails scoreDetails = new ScoreDetails();
        scoreDetails.setCurrentScore(new BigDecimal(accountInfo.getCollectScore()));
        scoreDetails.setOriginalScore(collectScore);
        scoreDetails.setChangeScore(returnScore);
        scoreDetails.setCreatedTime(new Date());
        scoreDetails.setType(ScoreDetails.SCORE_TYPE_INVITE);
        scoreDetails.setUserId(accountInfo.getUserId());
        scoreDetailsMapper.insert(scoreDetails);
        SysMessage sysMessage = new SysMessage();
        sysMessage.setCreateTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
        sysMessage.setCreateUserId(accountInfo.getUserId());
        sysMessage.setUserId(accountInfo.getUserId());
        sysMessage.setMessageType("4");
        sysMessage.setMessageSubTypeName("邀请奖励");
        sysMessage.setMessage("邀请奖励, 积分:" + returnScore);
        sysMessage.setFlag("2");
        sysMessageMapper.insert(sysMessage);
    }
    private String getRuleValue(RedPaperRule redPaperRule, String key) {
        List<String> rules = StrUtil.split(redPaperRule.getSharingProfitType(), ',');
        List<String> values = StrUtil.split(redPaperRule.getShareRatio(), ',');