用户等级升级
当经验值达到配置的值,自动升级等级
方法
public void upLevel(CustomerInfo customerInfo) {
//确定当前经验所达到的等级
List<CustomerLevelEntity> list = customerLevelMapper.getUsableList();
if (CollUtil.isEmpty(list)) {
log.error("系统会员等级未配置,请配置对应数据");
return;
}
CustomerLevelEntity userLevelConfig = null;
for (CustomerLevelEntity customerLevelEntity : list) {
if (customerInfo.getExperience() > customerLevelEntity.getExperience()) {
userLevelConfig = customerLevelEntity;
continue;
}
break;
}
if (ObjectUtil.isNull(userLevelConfig)) {
log.warn("未找到用户对应的会员等级,userId = " + customerInfo.getUserId());
return;
}
// 判断用户是否还在原等级
if (customerInfo.getLevel().equals(userLevelConfig.getGrade())) {
return;
}
// 判断用户等级经过向上调整
List<CustomerLevelEntity> collect = list.stream().filter(e -> e.getGrade().equals(customerInfo.getLevel())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(collect)) {
if (collect.get(0).getGrade() > userLevelConfig.getGrade()) {
return;
}
}
customerInfo.setLevel(userLevelConfig.getGrade());
//更新会员等级
customerInfoMapper.updateByPrimaryKeySelective(customerInfo);
}
}
数据库设计
大佬勿喷,欢迎提意见建议评论!!!!