|
|
|
@@ -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)) { |
|
|
|
//等级积分配置存在时进行计算 |
|
|
|
|