|
|
@@ -1,12 +1,15 @@
|
|
|
package com.etotem.cfc.service;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.etotem.cfc.entity.CfRateTier;
|
|
|
import com.etotem.cfc.entity.PromotionTier;
|
|
|
import com.etotem.cfc.entity.PromotionTierChangeLog;
|
|
|
import com.etotem.cfc.entity.PromotionTierConfig;
|
|
|
import com.etotem.cfc.mapper.PromotionTierChangeLogMapper;
|
|
|
import com.etotem.cfc.mapper.PromotionTierConfigMapper;
|
|
|
import com.etotem.cfc.mapper.PromotionTierMapper;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
@@ -16,6 +19,8 @@ import java.util.List;
|
|
|
@Service
|
|
|
public class PromotionTierService {
|
|
|
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(PromotionTierService.class);
|
|
|
+
|
|
|
@Resource
|
|
|
private PromotionTierMapper tierMapper;
|
|
|
|
|
|
@@ -25,6 +30,9 @@ public class PromotionTierService {
|
|
|
@Resource
|
|
|
private PromotionTierConfigMapper tierConfigMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private CfReferralService cfReferralService;
|
|
|
+
|
|
|
/**
|
|
|
* 获取用户当前推广等级
|
|
|
*/
|
|
|
@@ -59,17 +67,14 @@ public class PromotionTierService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 更新团队规模(当有新推荐人加入时调用)
|
|
|
+ * 团队规模 +delta(新推荐绑定后对所有祖先增量)。level 参数已废弃(改为全层级)。
|
|
|
*/
|
|
|
- public void updateTeamSize(Long userId, int level, int delta) {
|
|
|
+ public void updateTeamSize(Long userId, int delta) {
|
|
|
PromotionTier tier = getCurrentTier(userId);
|
|
|
if (tier == null) {
|
|
|
tier = new PromotionTier();
|
|
|
tier.setUserId(userId);
|
|
|
tier.setTier("R0");
|
|
|
- tier.setTeamSize1st(0);
|
|
|
- tier.setTeamSize2nd(0);
|
|
|
- tier.setTeamSize3rd(0);
|
|
|
tier.setTotalTeamSize(0);
|
|
|
tier.setTotalReferralEarnings(0);
|
|
|
tier.setTotalShareEarnings(0);
|
|
|
@@ -77,22 +82,33 @@ public class PromotionTierService {
|
|
|
tier.setUpdatedAt(new Date());
|
|
|
tierMapper.insert(tier);
|
|
|
}
|
|
|
-
|
|
|
- if (level == 1) {
|
|
|
- tier.setTeamSize1st(tier.getTeamSize1st() + delta);
|
|
|
- } else if (level == 2) {
|
|
|
- tier.setTeamSize2nd(tier.getTeamSize2nd() + delta);
|
|
|
- } else if (level == 3) {
|
|
|
- tier.setTeamSize3rd(tier.getTeamSize3rd() + delta);
|
|
|
- }
|
|
|
- tier.setTotalTeamSize(
|
|
|
- (tier.getTeamSize1st() != null ? tier.getTeamSize1st() : 0) +
|
|
|
- (tier.getTeamSize2nd() != null ? tier.getTeamSize2nd() : 0) +
|
|
|
- (tier.getTeamSize3rd() != null ? tier.getTeamSize3rd() : 0)
|
|
|
- );
|
|
|
+ tier.setTotalTeamSize((tier.getTotalTeamSize() == null ? 0 : tier.getTotalTeamSize()) + delta);
|
|
|
tier.setLastChangeAt(new Date());
|
|
|
tier.setUpdatedAt(new Date());
|
|
|
tierMapper.updateById(tier);
|
|
|
+ refreshRate(userId);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 按全层级团队规模刷新等级与返佣比例(读 cf_rate_tier)
|
|
|
+ */
|
|
|
+ public void refreshRate(Long userId) {
|
|
|
+ try {
|
|
|
+ int teamSize = cfReferralService.getTotalTeamSize(userId);
|
|
|
+ CfRateTier tier = cfReferralService.matchRateTier(teamSize);
|
|
|
+ PromotionTier pt = getCurrentTier(userId);
|
|
|
+ if (pt == null) return;
|
|
|
+ if (tier != null) {
|
|
|
+ pt.setTier(tier.getTierName());
|
|
|
+ pt.setRatePercent(tier.getRatePercent());
|
|
|
+ } else {
|
|
|
+ pt.setRatePercent(0);
|
|
|
+ }
|
|
|
+ pt.setUpdatedAt(new Date());
|
|
|
+ tierMapper.updateById(pt);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("refreshRate失败 userId={}", userId, e);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -153,9 +169,6 @@ public class PromotionTierService {
|
|
|
tier = new PromotionTier();
|
|
|
tier.setUserId(userId);
|
|
|
tier.setTier(tierCode);
|
|
|
- tier.setTeamSize1st(0);
|
|
|
- tier.setTeamSize2nd(0);
|
|
|
- tier.setTeamSize3rd(0);
|
|
|
tier.setTotalTeamSize(0);
|
|
|
tier.setTotalReferralEarnings(0);
|
|
|
tier.setTotalShareEarnings(0);
|