From fdb91cc72f7cbe8c095a1ce6442c9259ff01ff06 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 05 Aug 2021 16:47:12 +0800
Subject: [PATCH] add invite award
---
gc-core/src/main/java/com/xzx/gc/entity/ScoreDetails.java | 3 ++-
gc-user/src/main/java/com/xzx/gc/user/service/DistribService.java | 40 ++++++++++++++++++++++++++++++++++++++++
gc-user/src/main/resources/mapper/user/AccountMapper.xml | 5 +++++
gc-user/src/main/java/com/xzx/gc/user/mapper/AccountMapper.java | 2 ++
gc-core/src/main/java/com/xzx/gc/common/constant/CommonEnum.java | 3 ++-
gc-user/src/main/java/com/xzx/gc/user/service/UserLoginService.java | 4 ++++
6 files changed, 55 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 2f61200..8be4562 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
@@ -102,7 +102,8 @@
推荐首单奖励("first_score"),
朋友圈分享奖励("share_score"),
- 朋友圈分享限次("share_score_time")
+ 朋友圈分享限次("share_score_time"),
+ 邀请奖励("register_score")
;//枚举结束
private String value;
diff --git a/gc-core/src/main/java/com/xzx/gc/entity/ScoreDetails.java b/gc-core/src/main/java/com/xzx/gc/entity/ScoreDetails.java
index 8c81b93..a604357 100644
--- a/gc-core/src/main/java/com/xzx/gc/entity/ScoreDetails.java
+++ b/gc-core/src/main/java/com/xzx/gc/entity/ScoreDetails.java
@@ -16,7 +16,7 @@
//用户ID
private String userId;
- //交易类型 1-用户充值2-集物员支付3-用户兑换所得4-用户消费5-消费退回6-管理员充值7-其他
+ //交易类型 1-用户充值2-集物员支付3-用户兑换所得4-用户消费5-消费退回6-管理员充值7-其他 8-邀请后首单返利 9-分享朋友圈 10-邀请奖励
private Integer type;
public static final Integer SCORE_TYPE_USER_RECHARGE = 1;
public static final Integer SCORE_TYPE_PAY = 2;
@@ -27,6 +27,7 @@
public static final Integer SCORE_TYPE_OTHER = 7;
public static final Integer SCORE_TYPE_INVITE_FIRST_ORDER = 8;
public static final Integer SCORE_TYPE_SHARE_MOMENTS = 9;
+ public static final Integer SCORE_TYPE_INVITE = 10;
//原始积分
private BigDecimal originalScore;
diff --git a/gc-user/src/main/java/com/xzx/gc/user/mapper/AccountMapper.java b/gc-user/src/main/java/com/xzx/gc/user/mapper/AccountMapper.java
index 6c0335f..c8c6f09 100644
--- a/gc-user/src/main/java/com/xzx/gc/user/mapper/AccountMapper.java
+++ b/gc-user/src/main/java/com/xzx/gc/user/mapper/AccountMapper.java
@@ -78,5 +78,7 @@
String selectJDSLExportByHeadUserId(@Param("accountId")String id, @Param("record")ExportDistribDataListDto distribDataListDto);
List<AccountInfo> selectAccountInfoByIds(@Param("list") List<String> list);
+
+ AccountInfo selectAccountInfoByPhone(@Param("phone") String phone);
}
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 d877616..10489b6 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
@@ -528,6 +528,46 @@
}
}
+ public void inviteAward(String phone) {
+ AccountInfo accountInfo = accountMapper.selectAccountInfoByPhone(phone);
+
+ List<RedPaperRule> redPaperRules = redPaperRuleMapper.selectByRuleType("10");
+ if (CollUtil.isEmpty(redPaperRules)) {
+ return;
+ }
+
+ RedPaperRule rule = redPaperRules.get(0);
+ String invite = getRuleValue(rule, CommonEnum.邀请奖励.getValue());
+
+ if (StrUtil.isBlank(invite)) {
+ return;
+ }
+
+ BigDecimal returnScore = new BigDecimal(invite);
+ 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);
+ 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);
+ }
+
private String getRuleValue(RedPaperRule redPaperRule, String key) {
List<String> rules = StrUtil.split(redPaperRule.getSharingProfitType(), ',');
List<String> values = StrUtil.split(redPaperRule.getShareRatio(), ',');
diff --git a/gc-user/src/main/java/com/xzx/gc/user/service/UserLoginService.java b/gc-user/src/main/java/com/xzx/gc/user/service/UserLoginService.java
index 50c4e8c..9d57d57 100644
--- a/gc-user/src/main/java/com/xzx/gc/user/service/UserLoginService.java
+++ b/gc-user/src/main/java/com/xzx/gc/user/service/UserLoginService.java
@@ -93,6 +93,8 @@
@Autowired
private AccountService accountService;
+ @Autowired
+ private DistribService distribService;
@@ -246,6 +248,8 @@
userShareInfo.setRegisterTime(DateUtil.now());
userShareInfoMapper.insertSelective(userShareInfo);
log.info("用户绑定成功,邀请人:{},被邀请人:{}", userShareInfo.getMobilePhone(), userShareInfo.getRegisterMobilePhone());
+
+ distribService.inviteAward(userShareInfo.getMobilePhone());
}else{
log.warn("邀请人:{}不是普通用户",userShareInfo.getMobilePhone());
}
diff --git a/gc-user/src/main/resources/mapper/user/AccountMapper.xml b/gc-user/src/main/resources/mapper/user/AccountMapper.xml
index e30a1fb..a417c05 100644
--- a/gc-user/src/main/resources/mapper/user/AccountMapper.xml
+++ b/gc-user/src/main/resources/mapper/user/AccountMapper.xml
@@ -554,4 +554,9 @@
#{id}
</foreach>
</select>
+
+ <select id="selectAccountInfoByPhone" resultType="com.xzx.gc.entity.AccountInfo">
+ select a.* from xzx_account_info a, xzx_user_info b
+ where a.user_id=b.user_id and b.mobile_phone=#{phone}
+ </select>
</mapper>
--
Gitblit v1.9.1