From 25c88d4c8739767a4e70e806874c47d1c058cefa Mon Sep 17 00:00:00 2001 From: Burce Date: Tue, 17 Sep 2019 17:21:24 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=E7=A7=AF=E5=88=86=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WxCreditHistoryServiceImpl.java | 6 +-- .../java/com/iformall/utils/CreditUtil.java | 49 +++++++++++-------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index e91ffa2a0..018be9848 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -235,8 +235,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { if (record.getCreditType().equals(EnumScoreType.CONSUMPTION.getCode()) || record.getCreditType().equals(EnumScoreType.SPEND_CREDIT.getCode())) { //等级积分配置 try { - Integer levelScale = wxLevelConfigMapper.getScale(wxCUser.getTenantId(), wxCUser.getScore()); - creditChangeNum = CreditUtil.calUserCredit(creditChangeNumOrigin, wxCUser, levelScale, wxCUserBasicInfo, wxScoreRulesService); + creditChangeNum = CreditUtil.calUserCredit(creditChangeNumOrigin, wxCUser, wxCUserBasicInfo, wxScoreRulesService,wxLevelConfigMapper); if (Objects.nonNull(CreditUtil.getIsBirthDayScale())) { hasBirthDateCredit = true; } @@ -352,8 +351,7 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { if (Objects.nonNull(userId)) { WxCUser wxCUser = wxCUserMapper.selectByPrimaryKey(userId); WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectByPrimaryKey(userId); - Integer birthdayScale = (wxCUser == null ? null : wxLevelConfigMapper.getScale(tenantId, wxCUser.getScore())); - creditNew = CreditUtil.calUserCredit(credit, wxCUser, birthdayScale, wxCUserBasicInfo, wxScoreRulesService); + creditNew = CreditUtil.calUserCredit(credit, wxCUser, wxCUserBasicInfo, wxScoreRulesService,wxLevelConfigMapper); } else { creditNew = credit; } diff --git a/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java b/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java index 48ffd24b1..d4cb138ae 100644 --- a/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/CreditUtil.java @@ -1,6 +1,7 @@ package com.iformall.utils; import com.iformall.domain.po.*; +import com.iformall.mapper.WxLevelConfigMapper; import com.iformall.service.WxScoreRulesService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -18,29 +19,20 @@ public class CreditUtil { * * @param creditOrigin 原始积分 * @param wxCUser C端用户信息 - * @param levelScaleConfig 等级倍率配置 * @param wxCUserBasicInfo C端用户信息 * @param wxScoreRulesService + * @param wxLevelConfigMapper * @return */ - public static int calUserCredit(int creditOrigin, WxCUser wxCUser, Integer levelScaleConfig, WxCUserBasicInfo wxCUserBasicInfo, WxScoreRulesService wxScoreRulesService) { - // 获取等级积分倍率, - int levelScale = getLevelScale(wxCUser, levelScaleConfig); - - // 获取生日积分倍率: - int birthdayScale = getBirthdayScale(wxCUserBasicInfo, wxScoreRulesService); - - int creditNew = new BigDecimal(creditOrigin) - .multiply(new BigDecimal(levelScale)) - .multiply(new BigDecimal(birthdayScale)) - .divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)) - .divide(new BigDecimal(WxLevelConfig.DEFAULT_SCALE) - , BigDecimal.ROUND_HALF_UP).intValue(); + public static int calUserCredit(int creditOrigin, WxCUser wxCUser, WxCUserBasicInfo wxCUserBasicInfo, WxScoreRulesService wxScoreRulesService, WxLevelConfigMapper wxLevelConfigMapper) { Long userId = null; Integer score = null; + String tenantId = null; + Integer levelScaleConfig = WxLevelConfig.DEFAULT_SCALE ; if (Objects.nonNull(wxCUser)) { userId = wxCUser.getId(); score = wxCUser.getScore(); + tenantId = wxCUser.getTenantId(); } if (Objects.isNull(userId)) { userId = wxCUserBasicInfo.getId(); @@ -49,6 +41,27 @@ public class CreditUtil { if (Objects.isNull(score)) { score = wxCUserBasicInfo.getPoins(); } + + if (StringUtils.isBlank(tenantId)) { + tenantId = wxCUserBasicInfo.getTenantId(); + } + + if(Objects.nonNull(wxCUser)) { + levelScaleConfig = wxLevelConfigMapper.getScale(tenantId, score) ; + } + // 获取等级积分倍率, + int levelScale = getLevelScale(score, levelScaleConfig); + + // 获取生日积分倍率: + int birthdayScale = getBirthdayScale(wxCUserBasicInfo, wxScoreRulesService); + + int creditNew = new BigDecimal(creditOrigin) + .multiply(new BigDecimal(levelScale)) + .multiply(new BigDecimal(birthdayScale)) + .divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)) + .divide(new BigDecimal(WxLevelConfig.DEFAULT_SCALE) + , BigDecimal.ROUND_HALF_UP).intValue(); + log.info("积分倍率计算, 用户:{},成长值:{},等级积分倍率:{},生日积分倍率:{},原积分:{},新积分:{}", userId, score, levelScale, birthdayScale, creditOrigin, creditNew); return creditNew; } @@ -56,16 +69,12 @@ public class CreditUtil { /** * 根据会员信息获取等级积分倍率 * - * @param wxCUser * @param levelScaleConfig * @return */ - private static int getLevelScale(WxCUser wxCUser, Integer levelScaleConfig) { + private static int getLevelScale(Integer score, Integer levelScaleConfig) { int levelScale = WxLevelConfig.DEFAULT_SCALE; - if (Objects.isNull(wxCUser)) { - return levelScale; - } - Integer score = wxCUser.getScore(); + //积分不为空时进行计算 if (Objects.nonNull(score)) { //等级积分配置存在时进行计算