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/resources/mapper/user/ScoreDetailsMapper.xml | 5 ++
gc-user/src/main/java/com/xzx/gc/user/service/DistribService.java | 67 +++++++++++++++++++++++++++++++++
gc-user/src/main/java/com/xzx/gc/user/mapper/ScoreDetailsMapper.java | 7 +++
gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java | 2
gc-user/src/main/resources/mapper/user/RedPaperRuleMapper.xml | 4 ++
gc-user/src/main/java/com/xzx/gc/user/mapper/RedPaperRuleMapper.java | 4 ++
gc-user/src/main/java/com/xzx/gc/user/controller/ApiDistribController.java | 7 +++
gc-core/src/main/java/com/xzx/gc/common/constant/CommonEnum.java | 4 +
8 files changed, 98 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 423f909..2f61200 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
@@ -100,7 +100,9 @@
返利环保币比例("regular_money_percent"),
完成数量后返积分("point_reward"),
- 推荐首单奖励("first_score")
+ 推荐首单奖励("first_score"),
+ 朋友圈分享奖励("share_score"),
+ 朋友圈分享限次("share_score_time")
;//枚举结束
private String value;
diff --git a/gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java b/gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java
index 8e2fe94..65b15db 100644
--- a/gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java
+++ b/gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java
@@ -238,7 +238,7 @@
scoreDetails.setOriginalScore(collectScore);
scoreDetails.setChangeScore(returnScore);
scoreDetails.setCreatedTime(new Date());
- scoreDetails.setType(ScoreDetails.SCORE_TYPE_OTHER);
+ scoreDetails.setType(ScoreDetails.SCORE_TYPE_INVITE_FIRST_ORDER);
scoreDetails.setUserId(accountInfo.getUserId());
scoreDetails.setOrderNo(orderId.toString());
scoreDetailsMapper.insert(scoreDetails);
diff --git a/gc-user/src/main/java/com/xzx/gc/user/controller/ApiDistribController.java b/gc-user/src/main/java/com/xzx/gc/user/controller/ApiDistribController.java
index 25e1a5f..8bb8d95 100644
--- a/gc-user/src/main/java/com/xzx/gc/user/controller/ApiDistribController.java
+++ b/gc-user/src/main/java/com/xzx/gc/user/controller/ApiDistribController.java
@@ -70,4 +70,11 @@
return JsonResult.success(distribService.findHeadTeamListInPage(headTeamDto));
}
+ @ApiOperation("分享到朋友圈")
+ @PostMapping(value = "/distrib/shareMoments")
+ public JsonResult<String> shareMoments(HttpServletRequest request) {
+ distribService.shareToMoments(getUserId(request));
+ return JsonResult.success("分享成功");
+ }
+
}
diff --git a/gc-user/src/main/java/com/xzx/gc/user/mapper/RedPaperRuleMapper.java b/gc-user/src/main/java/com/xzx/gc/user/mapper/RedPaperRuleMapper.java
index 95d9dc8..9de084f 100644
--- a/gc-user/src/main/java/com/xzx/gc/user/mapper/RedPaperRuleMapper.java
+++ b/gc-user/src/main/java/com/xzx/gc/user/mapper/RedPaperRuleMapper.java
@@ -4,9 +4,13 @@
import com.xzx.gc.util.GcMapper;
import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
public interface RedPaperRuleMapper extends GcMapper<RedPaperRule> {
RedPaperRule getOne(@Param("now") String now, @Param("ruleType") String ruleType, @Param("partnerId") String partnerId);
RedPaperRule selectByRuleName(@Param("ruleStr")String ruleStr);
+
+ List<RedPaperRule> selectByRuleType(@Param("type") String type);
}
\ No newline at end of file
diff --git a/gc-user/src/main/java/com/xzx/gc/user/mapper/ScoreDetailsMapper.java b/gc-user/src/main/java/com/xzx/gc/user/mapper/ScoreDetailsMapper.java
new file mode 100644
index 0000000..ac7d554
--- /dev/null
+++ b/gc-user/src/main/java/com/xzx/gc/user/mapper/ScoreDetailsMapper.java
@@ -0,0 +1,7 @@
+package com.xzx.gc.user.mapper;
+
+import com.xzx.gc.entity.ScoreDetails;
+import com.xzx.gc.util.GcMapper;
+
+public interface ScoreDetailsMapper extends GcMapper<ScoreDetails> {
+}
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);
+ }
}
diff --git a/gc-user/src/main/resources/mapper/user/RedPaperRuleMapper.xml b/gc-user/src/main/resources/mapper/user/RedPaperRuleMapper.xml
index 6bcc8b1..f7f71ef 100644
--- a/gc-user/src/main/resources/mapper/user/RedPaperRuleMapper.xml
+++ b/gc-user/src/main/resources/mapper/user/RedPaperRuleMapper.xml
@@ -21,4 +21,8 @@
<select id="selectByRuleName" resultType="com.xzx.gc.entity.RedPaperRule">
select * from xzx_user_redpaper_rule where rule_name = #{ruleStr}
</select>
+
+ <select id="selectByRuleType" resultType="com.xzx.gc.entity.RedPaperRule">
+ select * from xzx_user_redpaper_rule where rule_type=#{type}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/gc-user/src/main/resources/mapper/user/ScoreDetailsMapper.xml b/gc-user/src/main/resources/mapper/user/ScoreDetailsMapper.xml
new file mode 100644
index 0000000..a99744b
--- /dev/null
+++ b/gc-user/src/main/resources/mapper/user/ScoreDetailsMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="">
+
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.1