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