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>