Helius
2021-08-05 c1b462af63ae1d293bf967d3c3da07d9348f8e76
add /distrib/shareMoments
2 files added
6 files modified
100 ■■■■■ changed files
gc-core/src/main/java/com/xzx/gc/common/constant/CommonEnum.java 4 ●●● patch | view | raw | blame | history
gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java 2 ●●● patch | view | raw | blame | history
gc-user/src/main/java/com/xzx/gc/user/controller/ApiDistribController.java 7 ●●●●● patch | view | raw | blame | history
gc-user/src/main/java/com/xzx/gc/user/mapper/RedPaperRuleMapper.java 4 ●●●● patch | view | raw | blame | history
gc-user/src/main/java/com/xzx/gc/user/mapper/ScoreDetailsMapper.java 7 ●●●●● patch | view | raw | blame | history
gc-user/src/main/java/com/xzx/gc/user/service/DistribService.java 67 ●●●●● patch | view | raw | blame | history
gc-user/src/main/resources/mapper/user/RedPaperRuleMapper.xml 4 ●●●● patch | view | raw | blame | history
gc-user/src/main/resources/mapper/user/ScoreDetailsMapper.xml 5 ●●●●● patch | view | raw | blame | history
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;
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);
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("分享成功");
    }
}
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);
}
gc-user/src/main/java/com/xzx/gc/user/mapper/ScoreDetailsMapper.java
New file
@@ -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> {
}
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);
    }
}
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>
gc-user/src/main/resources/mapper/user/ScoreDetailsMapper.xml
New file
@@ -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>