From fdb91cc72f7cbe8c095a1ce6442c9259ff01ff06 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 05 Aug 2021 16:47:12 +0800 Subject: [PATCH] add invite award --- gc-core/src/main/java/com/xzx/gc/entity/ScoreDetails.java | 3 ++- gc-user/src/main/java/com/xzx/gc/user/service/DistribService.java | 40 ++++++++++++++++++++++++++++++++++++++++ gc-user/src/main/resources/mapper/user/AccountMapper.xml | 5 +++++ gc-user/src/main/java/com/xzx/gc/user/mapper/AccountMapper.java | 2 ++ gc-core/src/main/java/com/xzx/gc/common/constant/CommonEnum.java | 3 ++- gc-user/src/main/java/com/xzx/gc/user/service/UserLoginService.java | 4 ++++ 6 files changed, 55 insertions(+), 2 deletions(-) diff --git a/gc-core/src/main/java/com/xzx/gc/common/constant/CommonEnum.java b/gc-core/src/main/java/com/xzx/gc/common/constant/CommonEnum.java index 2f61200..8be4562 100644 --- a/gc-core/src/main/java/com/xzx/gc/common/constant/CommonEnum.java +++ b/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; diff --git a/gc-core/src/main/java/com/xzx/gc/entity/ScoreDetails.java b/gc-core/src/main/java/com/xzx/gc/entity/ScoreDetails.java index 8c81b93..a604357 100644 --- a/gc-core/src/main/java/com/xzx/gc/entity/ScoreDetails.java +++ b/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; diff --git a/gc-user/src/main/java/com/xzx/gc/user/mapper/AccountMapper.java b/gc-user/src/main/java/com/xzx/gc/user/mapper/AccountMapper.java index 6c0335f..c8c6f09 100644 --- a/gc-user/src/main/java/com/xzx/gc/user/mapper/AccountMapper.java +++ b/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); } diff --git a/gc-user/src/main/java/com/xzx/gc/user/service/DistribService.java b/gc-user/src/main/java/com/xzx/gc/user/service/DistribService.java index d877616..10489b6 100644 --- a/gc-user/src/main/java/com/xzx/gc/user/service/DistribService.java +++ b/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(), ','); diff --git a/gc-user/src/main/java/com/xzx/gc/user/service/UserLoginService.java b/gc-user/src/main/java/com/xzx/gc/user/service/UserLoginService.java index 50c4e8c..9d57d57 100644 --- a/gc-user/src/main/java/com/xzx/gc/user/service/UserLoginService.java +++ b/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()); } diff --git a/gc-user/src/main/resources/mapper/user/AccountMapper.xml b/gc-user/src/main/resources/mapper/user/AccountMapper.xml index e30a1fb..a417c05 100644 --- a/gc-user/src/main/resources/mapper/user/AccountMapper.xml +++ b/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> -- Gitblit v1.9.1