Commit a5025a23 authored by Smile's avatar Smile Committed by wux

会员等级修改,1.定时任务从高等级往下匹配,2.可手动设置等级

parent 0a8ae6ea
...@@ -50,28 +50,34 @@ public class MemberUserLevelDetailsController { ...@@ -50,28 +50,34 @@ public class MemberUserLevelDetailsController {
@ApiOperation("更新等级详情") @ApiOperation("更新等级详情")
public CommonResult<Boolean> update(@Valid @RequestBody MemberUserLevelDetailsQueryVO reqVO) { public CommonResult<Boolean> update(@Valid @RequestBody MemberUserLevelDetailsQueryVO reqVO) {
Long id = reqVO.getId(); MemberUserLevelDetailsDO memberUserLevelDetailsDO;
if (reqVO.getId() != null){
MemberUserLevelDetailsDO memberUserLevelDetailsDO = memberUserLevelDetailsService.getById(id); memberUserLevelDetailsDO = memberUserLevelDetailsService.getById(reqVO.getId());
if (memberUserLevelDetailsDO == null) { if (memberUserLevelDetailsDO == null) {
return error(ErrorCodeConstants.LEVEL_DETAILs_NOT_EXISTS); return error(ErrorCodeConstants.LEVEL_DETAILs_NOT_EXISTS);
} }
LambdaQueryWrapper<MemberUserLevelConfigDO> wrapper = new LambdaQueryWrapper<>(); }else {
wrapper.eq(MemberUserLevelConfigDO::getLevel, reqVO.getLevel()); memberUserLevelDetailsDO = new MemberUserLevelDetailsDO();
// 执行查询 }
MemberUserLevelConfigDO configDO = memberUserLevelConfigMapper.selectOne(wrapper); MemberUserLevelConfigDO configDO = new MemberUserLevelConfigDO();
if (configDO==null){ if (memberUserLevelDetailsDO.getConfigId()!=null){
configDO = memberUserLevelConfigMapper.selectById(memberUserLevelDetailsDO.getConfigId());
if (configDO == null) {
return error(ErrorCodeConstants.LEVEL_RULE_NOT_EXISTS); return error(ErrorCodeConstants.LEVEL_RULE_NOT_EXISTS);
} }
if(configDO.getLevel().equals(reqVO.getLevel())){
memberUserLevelDetailsDO.setConfigId(null);
}
}
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
memberUserLevelDetailsDO.setLevel(reqVO.getLevel()); memberUserLevelDetailsDO.setLevel(reqVO.getLevel());
memberUserLevelDetailsDO.setMemberId(reqVO.getMemberId());
memberUserLevelDetailsDO.setValidityPeriod(reqVO.getValidityPeriod()); memberUserLevelDetailsDO.setValidityPeriod(reqVO.getValidityPeriod());
memberUserLevelDetailsDO.setSpecificSettings(reqVO.getSpecificSettings()); memberUserLevelDetailsDO.setSpecificSettings(reqVO.getSpecificSettings());
memberUserLevelDetailsDO.setRemarks(reqVO.getRemarks()); memberUserLevelDetailsDO.setRemarks(reqVO.getRemarks());
memberUserLevelDetailsDO.setConfigId(configDO.getId());
memberUserLevelDetailsDO.setUpdateTime(new Date()); memberUserLevelDetailsDO.setUpdateTime(new Date());
memberUserLevelDetailsDO.setUpdater(String.valueOf(loginUser.getId())); memberUserLevelDetailsDO.setUpdater(String.valueOf(loginUser.getId()));
memberUserLevelDetailsService.updateById(memberUserLevelDetailsDO); memberUserLevelDetailsService.saveOrUpdate(memberUserLevelDetailsDO);
//添加操作日志 //添加操作日志
MemberUserLevelOperateLogDO memberUserLevelOperateLogDo = MemberUserLevelOperateLogDO.builder() MemberUserLevelOperateLogDO memberUserLevelOperateLogDo = MemberUserLevelOperateLogDO.builder()
......
...@@ -153,7 +153,7 @@ public class MemberUserController { ...@@ -153,7 +153,7 @@ public class MemberUserController {
queryWrapper.eq("member_id",user.getId()); queryWrapper.eq("member_id",user.getId());
MemberUserLevelDetailsDO memberUserLevelDetailsDO = memberUserLevelDetailsMapper.selectOne(queryWrapper); MemberUserLevelDetailsDO memberUserLevelDetailsDO = memberUserLevelDetailsMapper.selectOne(queryWrapper);
MemberUserScoreLevelVO scoreLevelVO; MemberUserScoreLevelVO scoreLevelVO;
if (memberUserLevelDetailsDO != null){ if (memberUserLevelDetailsDO != null && memberUserLevelDetailsDO.getConfigId() != null) {
MemberUserLevelConfigDO realLevel = memberUserLevelConfigService.getById(memberUserLevelDetailsDO.getConfigId()); MemberUserLevelConfigDO realLevel = memberUserLevelConfigService.getById(memberUserLevelDetailsDO.getConfigId());
scoreLevelVO = MemberUserScoreLevelVO.builder().memberId(user.getId()) scoreLevelVO = MemberUserScoreLevelVO.builder().memberId(user.getId())
.memberCode(user.getMemberCode()) .memberCode(user.getMemberCode())
...@@ -164,7 +164,7 @@ public class MemberUserController { ...@@ -164,7 +164,7 @@ public class MemberUserController {
.levelName(realLevel.getName()) .levelName(realLevel.getName())
.level(realLevel.getLevel()) .level(realLevel.getLevel())
.build(); .build();
}else { } else {
scoreLevelVO = MemberUserScoreLevelVO.builder().memberId(user.getId()) scoreLevelVO = MemberUserScoreLevelVO.builder().memberId(user.getId())
.memberCode(user.getMemberCode()) .memberCode(user.getMemberCode())
.holdScore(user.getHoldScore()) .holdScore(user.getHoldScore())
...@@ -172,7 +172,7 @@ public class MemberUserController { ...@@ -172,7 +172,7 @@ public class MemberUserController {
.usedScore(user.getUsedScore()) .usedScore(user.getUsedScore())
.levelIcon(null) .levelIcon(null)
.levelName(null) .levelName(null)
.level(null) .level(memberUserLevelDetailsDO!=null?memberUserLevelDetailsDO.getLevel():null)
.build(); .build();
} }
// MemberUserLevelConfigBaseRespVO userScoreLevelVO = memberUserLevelConfigService.getLevelByCount(user.getTotalScore()); // MemberUserLevelConfigBaseRespVO userScoreLevelVO = memberUserLevelConfigService.getLevelByCount(user.getTotalScore());
......
...@@ -26,6 +26,7 @@ import org.springframework.context.annotation.Lazy; ...@@ -26,6 +26,7 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -67,7 +68,7 @@ public class userLevelDetailsTask implements JobHandler { ...@@ -67,7 +68,7 @@ public class userLevelDetailsTask implements JobHandler {
if (CollectionUtils.isEmpty(todoList)) { if (CollectionUtils.isEmpty(todoList)) {
return "success"; return "success";
} else { } else {
todoList.forEach(userLevelConfigDO -> { todoList.stream().sorted(Comparator.comparing(MemberUserLevelConfigDO::getLevel).reversed()).forEach(userLevelConfigDO -> {
log.info("规则名称:{}",userLevelConfigDO.getRuleNumber()); log.info("规则名称:{}",userLevelConfigDO.getRuleNumber());
MemberUserScoreLogQueryVO memberUserScoreLogQueryVO=new MemberUserScoreLogQueryVO(); MemberUserScoreLogQueryVO memberUserScoreLogQueryVO=new MemberUserScoreLogQueryVO();
LambdaQuery<MemberUserScoreLogDO> memberUserScoreLogDoLambdaQuery = new LambdaQuery<>(); LambdaQuery<MemberUserScoreLogDO> memberUserScoreLogDoLambdaQuery = new LambdaQuery<>();
...@@ -196,7 +197,7 @@ public class userLevelDetailsTask implements JobHandler { ...@@ -196,7 +197,7 @@ public class userLevelDetailsTask implements JobHandler {
memberUserLevelOperateService.save(memberUserLevelOperateLogDo); memberUserLevelOperateService.save(memberUserLevelOperateLogDo);
log.info("客户等级小于当前等级,等级详情进入升级操作,规则id:{},用户id:{}",memberUserLevelConfigDO.getRuleNumber(),memberId); log.info("客户等级小于当前等级,等级详情进入升级操作,规则id:{},用户id:{}",memberUserLevelConfigDO.getRuleNumber(),memberId);
return true; return true;
}else if(memberUserLevelDetailsBackVO.getLevel()==memberUserLevelConfigDO.getLevel()&&!memberUserLevelDetailsBackVO.getRuleNumber().equals(memberUserLevelConfigDO.getRuleNumber())){ }else if(memberUserLevelDetailsBackVO.getLevel()==memberUserLevelConfigDO.getLevel()&&memberUserLevelDetailsBackVO.getConfigId()!=null&&!memberUserLevelDetailsBackVO.getConfigId().equals(memberUserLevelConfigDO.getId())){
//级别相同比较sort顺序 //级别相同比较sort顺序
MemberUserLevelConfigDO memberUserLevelConfigOldDo = memberUserLevelConfigService.getById(memberUserLevelDetailsBackVO.getConfigId()); MemberUserLevelConfigDO memberUserLevelConfigOldDo = memberUserLevelConfigService.getById(memberUserLevelDetailsBackVO.getConfigId());
if (memberUserLevelConfigOldDo.getSort()>memberUserLevelConfigDO.getSort()){ if (memberUserLevelConfigOldDo.getSort()>memberUserLevelConfigDO.getSort()){
...@@ -288,7 +289,7 @@ public class userLevelDetailsTask implements JobHandler { ...@@ -288,7 +289,7 @@ public class userLevelDetailsTask implements JobHandler {
memberUserLevelOperateService.save(memberUserLevelOperateLogDo); memberUserLevelOperateService.save(memberUserLevelOperateLogDo);
log.info("客户等级小于当前等级,等级详情进入升级操作,规则id:{},用户id:{}",memberUserLevelConfigDO.getRuleNumber(),memberId); log.info("客户等级小于当前等级,等级详情进入升级操作,规则id:{},用户id:{}",memberUserLevelConfigDO.getRuleNumber(),memberId);
return true; return true;
}else if(memberUserLevelDetailsBackVO.getLevel()==memberUserLevelConfigDO.getLevel()&&!memberUserLevelDetailsBackVO.getRuleNumber().equals(memberUserLevelConfigDO.getRuleNumber())){ }else if(memberUserLevelDetailsBackVO.getLevel()==memberUserLevelConfigDO.getLevel()&&memberUserLevelDetailsBackVO.getConfigId()!=null&&!memberUserLevelDetailsBackVO.getConfigId().equals(memberUserLevelConfigDO.getId())){
//级别相同比较sort顺序 //级别相同比较sort顺序
MemberUserLevelConfigDO memberUserLevelConfigOldDo = memberUserLevelConfigService.getById(memberUserLevelDetailsBackVO.getConfigId()); MemberUserLevelConfigDO memberUserLevelConfigOldDo = memberUserLevelConfigService.getById(memberUserLevelDetailsBackVO.getConfigId());
if (memberUserLevelConfigOldDo.getSort()>memberUserLevelConfigDO.getSort()){ if (memberUserLevelConfigOldDo.getSort()>memberUserLevelConfigDO.getSort()){
......
...@@ -23,8 +23,8 @@ public class MemberUserLevelDetailsBackVO { ...@@ -23,8 +23,8 @@ public class MemberUserLevelDetailsBackVO {
@ApiModelProperty(value = "会员等级配置id") @ApiModelProperty(value = "会员等级配置id")
private Long configId; private Long configId;
@ApiModelProperty(value = "会员等级配置编号") @ApiModelProperty(value = "会员编号")
private String ruleNumber; private String memberCode;
@ApiModelProperty(value = "会员id") @ApiModelProperty(value = "会员id")
private Long memberId; private Long memberId;
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
SELECT SELECT
muld.id as id, muld.id as id,
muld.config_id as configId, muld.config_id as configId,
mulc.rule_number as ruleNumber , mu.code as memberCode ,
muld.member_id as memberId, muld.member_id as memberId,
muld.updater as updater, muld.updater as updater,
muld.remarks as remarks, muld.remarks as remarks,
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
muld.validity_period as validityPeriod, muld.validity_period as validityPeriod,
muld.specific_settings as specificSettings muld.specific_settings as specificSettings
FROM member_user_level_details muld FROM member_user_level_details muld
left join member_user_level_config mulc left join member_user mu
on muld.config_id =mulc.id on muld.member_id =mu.id
where 1=1 where 1=1
and muld.member_id = #{query.memberId} and muld.member_id = #{query.memberId}
order by muld.create_time desc order by muld.create_time desc
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
<select id="getPageCount" resultType="java.lang.Integer"> <select id="getPageCount" resultType="java.lang.Integer">
select count(*) select count(*)
FROM member_user_level_details muld FROM member_user_level_details muld
left join member_user_level_config mulc left join member_user mu
on muld.config_id =mulc.id on muld.member_id =mu.id
where 1=1 where 1=1
and muld.member_id = #{query.memberId} and muld.member_id = #{query.memberId}
</select> </select>
......
...@@ -1058,7 +1058,9 @@ currency.not.exist = currency not exist ...@@ -1058,7 +1058,9 @@ currency.not.exist = currency not exist
date.format.error = date format error, for example : 2024-01-01 12:11:11 date.format.error = date format error, for example : 2024-01-01 12:11:11
redeem.cancel.status.error = record status must be redeeming redeem.cancel.status.error = record status must be redeeming
level.bound.range.error = upper count must greater than lower count level.bound.range.error = upper count must greater than lower count
level.bound.range.conflict = score range exist conflict level.bound.range.conflict = score range exist conflict'
level.rule.not.exists = Membership level rule does not exist
level.details.not.exists = Membership level details do not exist
score.operate.idempotent.error = idempotent key conflict score.operate.idempotent.error = idempotent key conflict
score.rule.not.exists = score rule not exists score.rule.not.exists = score rule not exists
......
...@@ -1057,6 +1057,8 @@ date.format.error=Format de date incorrect, format correct : 2024-01-01 12:11:11 ...@@ -1057,6 +1057,8 @@ date.format.error=Format de date incorrect, format correct : 2024-01-01 12:11:11
redeem.cancel.status.error=Seules les enregistrements avec un statut "en \u00E9change" peuvent \u00EAtre annul\u00E9s redeem.cancel.status.error=Seules les enregistrements avec un statut "en \u00E9change" peuvent \u00EAtre annul\u00E9s
level.bound.range.error=La valeur sup\u00E9rieure doit \u00EAtre sup\u00E9rieure \u00E0 la valeur inf\u00E9rieure level.bound.range.error=La valeur sup\u00E9rieure doit \u00EAtre sup\u00E9rieure \u00E0 la valeur inf\u00E9rieure
level.bound.range.conflict=Conflit dans la plage des points de fid\u00E9lit\u00E9 level.bound.range.conflict=Conflit dans la plage des points de fid\u00E9lit\u00E9
level.rule.not.exists = La r\u00E8gle du niveau de membre n'existe pas
level.details.not.exists = Les d\u00E9tails du niveau de membre n'existent pas
score.operate.idempotent.error=Conflit de cl\u00E9 idempotente score.operate.idempotent.error=Conflit de cl\u00E9 idempotente
score.rule.not.exists=La r\u00E8gle de points n'existe pas score.rule.not.exists=La r\u00E8gle de points n'existe pas
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment