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