Helius
2021-08-05 fdb91cc72f7cbe8c095a1ce6442c9259ff01ff06
add invite award
6 files modified
57 ■■■■■ changed files
gc-core/src/main/java/com/xzx/gc/common/constant/CommonEnum.java 3 ●●●● patch | view | raw | blame | history
gc-core/src/main/java/com/xzx/gc/entity/ScoreDetails.java 3 ●●●● patch | view | raw | blame | history
gc-user/src/main/java/com/xzx/gc/user/mapper/AccountMapper.java 2 ●●●●● patch | view | raw | blame | history
gc-user/src/main/java/com/xzx/gc/user/service/DistribService.java 40 ●●●●● patch | view | raw | blame | history
gc-user/src/main/java/com/xzx/gc/user/service/UserLoginService.java 4 ●●●● patch | view | raw | blame | history
gc-user/src/main/resources/mapper/user/AccountMapper.xml 5 ●●●●● patch | view | raw | blame | history
gc-core/src/main/java/com/xzx/gc/common/constant/CommonEnum.java
@@ -102,7 +102,8 @@
    推荐首单奖励("first_score"),
    朋友圈分享奖励("share_score"),
    朋友圈分享限次("share_score_time")
    朋友圈分享限次("share_score_time"),
    邀请奖励("register_score")
    ;//枚举结束
    private String value;
gc-core/src/main/java/com/xzx/gc/entity/ScoreDetails.java
@@ -16,7 +16,7 @@
    //用户ID
    private String userId;
    //交易类型 1-用户充值2-集物员支付3-用户兑换所得4-用户消费5-消费退回6-管理员充值7-其他
    //交易类型 1-用户充值2-集物员支付3-用户兑换所得4-用户消费5-消费退回6-管理员充值7-其他 8-邀请后首单返利 9-分享朋友圈 10-邀请奖励
    private Integer type;
    public static final Integer SCORE_TYPE_USER_RECHARGE = 1;
    public static final Integer SCORE_TYPE_PAY = 2;
@@ -27,6 +27,7 @@
    public static final Integer SCORE_TYPE_OTHER = 7;
    public static final Integer SCORE_TYPE_INVITE_FIRST_ORDER = 8;
    public static final Integer SCORE_TYPE_SHARE_MOMENTS = 9;
    public static final Integer SCORE_TYPE_INVITE = 10;
    //原始积分
    private BigDecimal originalScore;
gc-user/src/main/java/com/xzx/gc/user/mapper/AccountMapper.java
@@ -78,5 +78,7 @@
    String selectJDSLExportByHeadUserId(@Param("accountId")String id, @Param("record")ExportDistribDataListDto distribDataListDto);
    List<AccountInfo> selectAccountInfoByIds(@Param("list") List<String> list);
    AccountInfo selectAccountInfoByPhone(@Param("phone") String phone);
}
gc-user/src/main/java/com/xzx/gc/user/service/DistribService.java
@@ -528,6 +528,46 @@
        }
    }
    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;
        }
        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(), ',');
gc-user/src/main/java/com/xzx/gc/user/service/UserLoginService.java
@@ -93,6 +93,8 @@
    @Autowired
    private AccountService accountService;
    @Autowired
    private DistribService distribService;
@@ -246,6 +248,8 @@
                                userShareInfo.setRegisterTime(DateUtil.now());
                                userShareInfoMapper.insertSelective(userShareInfo);
                                log.info("用户绑定成功,邀请人:{},被邀请人:{}", userShareInfo.getMobilePhone(), userShareInfo.getRegisterMobilePhone());
                                distribService.inviteAward(userShareInfo.getMobilePhone());
                            }else{
                                log.warn("邀请人:{}不是普通用户",userShareInfo.getMobilePhone());
                            }
gc-user/src/main/resources/mapper/user/AccountMapper.xml
@@ -554,4 +554,9 @@
            #{id}
        </foreach>
    </select>
    <select id="selectAccountInfoByPhone" resultType="com.xzx.gc.entity.AccountInfo">
        select a.* from xzx_account_info a, xzx_user_info b
        where a.user_id=b.user_id and b.mobile_phone=#{phone}
    </select>
</mapper>