From c1b462af63ae1d293bf967d3c3da07d9348f8e76 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 05 Aug 2021 15:18:51 +0800 Subject: [PATCH] add /distrib/shareMoments --- gc-user/src/main/java/com/xzx/gc/user/service/DistribService.java | 67 +++++++++++++++++++++++++++++++++ 1 files changed, 67 insertions(+), 0 deletions(-) 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 598264b..1e1ab40 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 @@ -6,7 +6,9 @@ import cn.hutool.core.date.DateUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.xzx.gc.common.constant.CommonEnum; import com.xzx.gc.common.exception.RestException; +import com.xzx.gc.common.utils.RedisUtil; import com.xzx.gc.common.utils.StringUtils; import com.xzx.gc.entity.*; import com.xzx.gc.user.dto.*; @@ -30,6 +32,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.HashMap; import java.util.List; @@ -55,6 +58,10 @@ private UserShareInfoMapper userShareInfoMapper; @Autowired private SysMessageMapper sysMessageMapper; + @Autowired + private RedisUtil redisUtil; + @Autowired + private ScoreDetailsMapper scoreDetailsMapper; public ViewSettingVo viewSetting(String ruleStr) { ViewSettingVo viewSettingVo = new ViewSettingVo(); @@ -468,4 +475,64 @@ redPaperRuleMapper.updateByPrimaryKey(redPaperRule); } } + + public void shareToMoments(String userId) { + List<RedPaperRule> redPaperRules = redPaperRuleMapper.selectByRuleType("10"); + if (CollUtil.isEmpty(redPaperRules)) { + return; + } + + RedPaperRule rule = redPaperRules.get(0); + String shareTimes = getRuleValue(rule, CommonEnum.朋友圈分享限次.getValue()); + + String shareScore = getRuleValue(rule, CommonEnum.朋友圈分享奖励.getValue()); + String key = "moments:times:" + userId; + Integer times = redisUtil.getAsInt("moments:times:" + userId); + times = times == null ? 1 : times + 1; + + if (StrUtil.isNotBlank(shareTimes)) { + if (times > Integer.parseInt(shareTimes)) { + throw new RestException("达到24小时内最大分享次数"); + } + + if (StrUtil.isNotBlank(shareScore)) { + return; + } + + AccountInfo accountInfo = accountMapper.selectOneByUserId(userId); + BigDecimal returnScore = new BigDecimal(shareScore); + 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_FIRST_ORDER); + 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); + + redisUtil.setex(key, times.toString(), 84400); + } + } + + private String getRuleValue(RedPaperRule redPaperRule, String key) { + List<String> rules = StrUtil.split(redPaperRule.getSharingProfitType(), ','); + List<String> values = StrUtil.split(redPaperRule.getShareRatio(), ','); + + int i = rules.indexOf(key); + return values.get(i); + } } -- Gitblit v1.9.1