Просмотр исходного кода

[优化]积分处理逻辑

release_toaliyun_real
Burce 6 лет назад
Родитель
Сommit
25c88d4c87
2 измененных файлов: 31 добавлений и 24 удалений
  1. +2
    -4
      mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java
  2. +29
    -20
      mallinkService/src/main/java/com/iformall/utils/CreditUtil.java

+ 2
- 4
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;
}


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


Загрузка…
Отмена
Сохранить