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

生日积分:记录倍率日期

release_toaliyun_real
Burce 6 лет назад
Родитель
Сommit
53cb925bb3
2 измененных файлов: 48 добавлений и 25 удалений
  1. +8
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java
  2. +40
    -23
      mallinkService/src/main/java/com/iformall/utils/CreditUtil.java

+ 8
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java Просмотреть файл

@@ -218,8 +218,8 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
int creditChangeNum = creditChangeNumOrigin ; int creditChangeNum = creditChangeNumOrigin ;
if (record.getCreditType().equals(EnumScoreType.CONSUMPTION.getCode()) || record.getCreditType().equals(EnumScoreType.SPEND_CREDIT.getCode())) { if (record.getCreditType().equals(EnumScoreType.CONSUMPTION.getCode()) || record.getCreditType().equals(EnumScoreType.SPEND_CREDIT.getCode())) {
//等级积分配置 //等级积分配置
int birthdayScale = wxLevelConfigMapper.getScale(wxCUser.getTenantId(), wxCUser.getScore()) ;
creditChangeNum = CreditUtil.calUserCredit(creditChangeNumOrigin, wxCUser, birthdayScale, wxCUserBasicInfo, wxScoreRulesService);
int levelScale = wxLevelConfigMapper.getScale(wxCUser.getTenantId(), wxCUser.getScore()) ;
creditChangeNum = CreditUtil.calUserCredit(creditChangeNumOrigin, wxCUser, levelScale, wxCUserBasicInfo, wxScoreRulesService);
} }


if (creditChangeNum != 0) { if (creditChangeNum != 0) {
@@ -251,8 +251,14 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
WxCUserBasicInfo wxCUserBasicInfoNew = new WxCUserBasicInfo(); WxCUserBasicInfo wxCUserBasicInfoNew = new WxCUserBasicInfo();
wxCUserBasicInfoNew.setId(wxCUserBasicInfo.getId()); wxCUserBasicInfoNew.setId(wxCUserBasicInfo.getId());
wxCUserBasicInfoNew.setCredit(record.getCreditAmount()); wxCUserBasicInfoNew.setCredit(record.getCreditAmount());
//如果享受了生日积分倍率,记录日期
if(Objects.nonNull(CreditUtil.getIsBirthDayScale())) {
wxCUserBasicInfoNew.setScoreDate(new Date());
}
wxCUserBasicInfoMapper.updateByPrimaryKeySelective(wxCUserBasicInfoNew); wxCUserBasicInfoMapper.updateByPrimaryKeySelective(wxCUserBasicInfoNew);
CreditUtil.clear();
} }

} else { } else {
//wxCreditHistoryMapper.updateByPrimaryKeySelective(record); //wxCreditHistoryMapper.updateByPrimaryKeySelective(record);
} }


+ 40
- 23
mallinkService/src/main/java/com/iformall/utils/CreditUtil.java Просмотреть файл

@@ -10,22 +10,24 @@ import java.util.Objects;
@Slf4j @Slf4j
public class CreditUtil { public class CreditUtil {


private static ThreadLocal<Long> isBirthDayScale = new ThreadLocal<>();

/** /**
* 计算用户积分 * 计算用户积分
* *
* @param creditOrigin 原始积分 * @param creditOrigin 原始积分
* @param wxCUser C端用户信息 * @param wxCUser C端用户信息
* @param scaleFromDb 等级倍率
* @param levelScaleConfig 等级倍率配置
* @param wxCUserBasicInfo C端用户信息 * @param wxCUserBasicInfo C端用户信息
* @param wxScoreRulesService * @param wxScoreRulesService
* @return * @return
*/ */
public static int calUserCredit(int creditOrigin, WxCUser wxCUser, Integer scaleFromDb, WxCUserBasicInfo wxCUserBasicInfo, WxScoreRulesService wxScoreRulesService) {
public static int calUserCredit(int creditOrigin, WxCUser wxCUser, Integer levelScaleConfig, WxCUserBasicInfo wxCUserBasicInfo, WxScoreRulesService wxScoreRulesService) {
if (Objects.isNull(wxCUser) || Objects.isNull(wxCUserBasicInfo)) { if (Objects.isNull(wxCUser) || Objects.isNull(wxCUserBasicInfo)) {
return 0; return 0;
} }
// 获取等级积分倍率:默认为1.0
int levelScale = getLevelScale(wxCUser, scaleFromDb);
// 获取等级积分倍率,
int levelScale = getLevelScale(wxCUser, levelScaleConfig);


// 获取生日积分倍率: // 获取生日积分倍率:
int birthdayScale = getBirthdayScale(wxCUserBasicInfo, wxScoreRulesService); int birthdayScale = getBirthdayScale(wxCUserBasicInfo, wxScoreRulesService);
@@ -42,20 +44,21 @@ public class CreditUtil {


/** /**
* 根据会员信息获取等级积分倍率 * 根据会员信息获取等级积分倍率
*
* @param wxCUser * @param wxCUser
* @param scaleFromDb
* @param levelScaleConfig
* @return * @return
*/ */
private static int getLevelScale(WxCUser wxCUser, Integer scaleFromDb) {
private static int getLevelScale(WxCUser wxCUser, Integer levelScaleConfig) {
int levelScale = WxLevelConfig.DEFAULT_SCALE; int levelScale = WxLevelConfig.DEFAULT_SCALE;
Integer score = wxCUser.getScore(); Integer score = wxCUser.getScore();
//积分不为空时进行计算 //积分不为空时进行计算
if (Objects.nonNull(score)) { if (Objects.nonNull(score)) {
//等级积分配置存在时进行计算 //等级积分配置存在时进行计算
if (Objects.nonNull(scaleFromDb)) {
levelScale = scaleFromDb;
if (Objects.nonNull(levelScaleConfig)) {
levelScale = levelScaleConfig;
} else { } else {
log.info("积分倍率计算:等级积分倍率配置=null");
//log.info("积分倍率计算:等级积分倍率配置=null");
} }
} }
log.info("积分倍率计算:会员等级积分倍率配置={}", levelScale); log.info("积分倍率计算:会员等级积分倍率配置={}", levelScale);
@@ -64,6 +67,7 @@ public class CreditUtil {


/** /**
* 根据会员信息获取倍率 * 根据会员信息获取倍率
*
* @param wxCUserBasicInfo * @param wxCUserBasicInfo
* @param wxScoreRulesService * @param wxScoreRulesService
* @return * @return
@@ -73,33 +77,46 @@ public class CreditUtil {
//判断是否生日当天,一年一天有效 //判断是否生日当天,一年一天有效
//发过生日券的用户 //发过生日券的用户
if (Objects.nonNull(wxCUserBasicInfo.getScoreDate()) && DateUtils.birthdaysBetween(wxCUserBasicInfo.getScoreDate()) == 0) { if (Objects.nonNull(wxCUserBasicInfo.getScoreDate()) && DateUtils.birthdaysBetween(wxCUserBasicInfo.getScoreDate()) == 0) {
birthdayScale = getBirthdayScoreScale(wxCUserBasicInfo.getTenantId(), wxScoreRulesService);
//没有发过生日券的用户
} else if(Objects.nonNull(wxCUserBasicInfo.getBirthdate()) && DateUtils.birthdaysBetween(wxCUserBasicInfo.getBirthdate()) == 0) {
birthdayScale = getBirthdayScoreScale(wxCUserBasicInfo.getTenantId(), wxScoreRulesService);
//没有发过生日券的用户
} else if (Objects.nonNull(wxCUserBasicInfo.getBirthdate()) && DateUtils.birthdaysBetween(wxCUserBasicInfo.getBirthdate()) == 0) {
birthdayScale = getBirthdayScoreScale(wxCUserBasicInfo.getTenantId(), wxScoreRulesService); birthdayScale = getBirthdayScoreScale(wxCUserBasicInfo.getTenantId(), wxScoreRulesService);
} else { } else {
log.info("积分倍率计算:未设置生日或生日条件未匹配={}", wxCUserBasicInfo.getScoreDate()); log.info("积分倍率计算:未设置生日或生日条件未匹配={}", wxCUserBasicInfo.getScoreDate());
} }
return birthdayScale ;
//配置了生日积分倍率,保存到上下文
if (!Objects.equals(birthdayScale, WxScoreRules.DEFAULT_SCALE)) {
isBirthDayScale.set(wxCUserBasicInfo.getId());
}
return birthdayScale;
} }


/** /**
* 获取生日积分倍率 * 获取生日积分倍率
*
* @param tenantId * @param tenantId
* @param wxScoreRulesService * @param wxScoreRulesService
* @return * @return
*/ */
public static int getBirthdayScoreScale(String tenantId, WxScoreRulesService wxScoreRulesService) { public static int getBirthdayScoreScale(String tenantId, WxScoreRulesService wxScoreRulesService) {
int birthdayScale = WxScoreRules.DEFAULT_SCALE;
WxScoreRules rules = wxScoreRulesService.getCreditRules(tenantId);
if (Objects.nonNull(rules) && Objects.nonNull(rules.getScale())) {
//规则存使用积分倍率
birthdayScale = rules.getScale();
} else {
//没有配置积分规则
log.info("积分倍率计算:会员生日积分倍率配置=null");
}
int birthdayScale = WxScoreRules.DEFAULT_SCALE;
WxScoreRules rules = wxScoreRulesService.getCreditRules(tenantId);
if (Objects.nonNull(rules) && Objects.nonNull(rules.getScale())) {
//规则存使用积分倍率
birthdayScale = rules.getScale();
} else {
//没有配置积分规则
//log.info("积分倍率计算:会员生日积分倍率配置=null");
}
log.info("会员生日积分倍率配置:{}", birthdayScale); log.info("会员生日积分倍率配置:{}", birthdayScale);
return birthdayScale ;
return birthdayScale;
}

public static Long getIsBirthDayScale() {
return isBirthDayScale.get();
}

public static void clear() {
CreditUtil.isBirthDayScale.remove();
} }
} }

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