Commit d6505e50 authored by zhangfeng's avatar zhangfeng

客户端积分日志

parent 3759d55c
...@@ -27,6 +27,7 @@ import org.springframework.validation.annotation.Validated; ...@@ -27,6 +27,7 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.MEMBER_ID_IS_NULL; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.MEMBER_ID_IS_NULL;
...@@ -47,7 +48,7 @@ public class MemberUserScoreLogServiceImpl extends AbstractService<MemberUserSco ...@@ -47,7 +48,7 @@ public class MemberUserScoreLogServiceImpl extends AbstractService<MemberUserSco
@Resource @Resource
private ScoreRuleService scoreRuleService; private ScoreRuleService scoreRuleService;
@Resource @Resource
RedeemRewardApi redeemRewardApi; private RedeemRewardApi redeemRewardApi;
@Override @Override
...@@ -90,102 +91,126 @@ public class MemberUserScoreLogServiceImpl extends AbstractService<MemberUserSco ...@@ -90,102 +91,126 @@ public class MemberUserScoreLogServiceImpl extends AbstractService<MemberUserSco
public List<AppMemberUserScoreLogRespVO> getUserScoreLogList(AppMemberUserIdQueryVO query) { public List<AppMemberUserScoreLogRespVO> getUserScoreLogList(AppMemberUserIdQueryVO query) {
List<MemberUserScoreLogDO> userScoreLogDOS = userScoreLogMapper.selectList("member_id", query.getId()); List<MemberUserScoreLogDO> userScoreLogDOS = userScoreLogMapper.selectList("member_id", query.getId());
if (userScoreLogDOS == null || userScoreLogDOS.isEmpty()) { if (userScoreLogDOS == null || userScoreLogDOS.isEmpty()) {
return Collections.EMPTY_LIST; return Collections.emptyList();
} }
ArrayList<AppMemberUserScoreLogRespVO> appMemberUserScoreLogRespVOS = new ArrayList<>(); Map<Long, MemberUserScoreLogDO> scoreLogDOMap = userScoreLogDOS.stream()
.collect(Collectors.toMap(MemberUserScoreLogDO::getId, log -> log));
List<AppMemberUserScoreLogRespVO> appMemberUserScoreLogRespVOS = new ArrayList<>();
for (MemberUserScoreLogDO userScoreLogDO : userScoreLogDOS) { for (MemberUserScoreLogDO userScoreLogDO : userScoreLogDOS) {
if (userScoreLogDO.getSourceType() == ScoreSourceTypeEnum.SYSTEM_EXPIRED.getValue()) { if (userScoreLogDO.getSourceType() == ScoreSourceTypeEnum.SYSTEM_EXPIRED.getValue()) {
HashMap hashMap = JsonUtils.parseObject(userScoreLogDO.getExtParam(), HashMap.class); Map extParams = JsonUtils.parseObject(userScoreLogDO.getExtParam(), Map.class);
Object scoreLogIds = hashMap.get("scoreLogIds"); List<Long> scoreLogIdList = JsonUtils.parseArray(extParams.get("scoreLogIds").toString(), Long.class);
List<Long> scoreLogIdList = JsonUtils.parseArray(scoreLogIds.toString(), Long.class);
for (Long scoreLogId : scoreLogIdList) { scoreLogIdList.stream()
for (MemberUserScoreLogDO scoreLogDO : userScoreLogDOS) { .map(scoreLogDOMap::get)
if (scoreLogDO.getId().equals(scoreLogId) && scoreLogDO.getRuleId() != null) { .filter(scoreLogDO -> scoreLogDO != null && scoreLogDO.getRuleId() != null)
.forEach(scoreLogDO -> {
ScoreRuleBackDetailVO scoreRule = scoreRuleService.getScoreRule(scoreLogDO.getRuleId()); ScoreRuleBackDetailVO scoreRule = scoreRuleService.getScoreRule(scoreLogDO.getRuleId());
if (scoreRule != null) { if (scoreRule != null) {
AppMemberUserScoreLogRespVO appMemberUserScoreLogRespVO = appMemberUserScoreLogRespVOS.add(createScoreLogRespVO(userScoreLogDO, scoreLogDO, scoreRule));
new AppMemberUserScoreLogRespVO(userScoreLogDO.getId(),userScoreLogDO.getScoreCount()
,"-",scoreLogDO.getSourceType()
,DictFrameworkUtils.getDictDataFromCache("member_score_source", scoreLogDO.getSourceType().toString()).getLabel()
,DictFrameworkUtils.getDictDataFromCache("member_score_source", scoreLogDO.getSourceType().toString()).getLabelEn()
,userScoreLogDO.getCreateTime()
,scoreRule.getDescEn()
,scoreRule.getDescZh()
,userScoreLogDO.getScoreCount()
,true
);
appMemberUserScoreLogRespVOS.add(appMemberUserScoreLogRespVO);
} }
} });
} } else {
} setScoreRuleLogDetail(userScoreLogDO, appMemberUserScoreLogRespVOS);
continue;
} }
setScoreRuleLogDetail(userScoreLogDO, appMemberUserScoreLogRespVOS);
} }
return appMemberUserScoreLogRespVOS; return appMemberUserScoreLogRespVOS;
} }
private void setScoreRuleLogDetail(MemberUserScoreLogDO userScoreLogDO, ArrayList<AppMemberUserScoreLogRespVO> appMemberUserScoreLogRespVOS) { private AppMemberUserScoreLogRespVO createScoreLogRespVO(MemberUserScoreLogDO userScoreLogDO,
MemberUserScoreLogDO scoreLogDO,
ScoreRuleBackDetailVO scoreRule) {
return new AppMemberUserScoreLogRespVO(
userScoreLogDO.getId(),
userScoreLogDO.getScoreCount(),
"-",
scoreLogDO.getSourceType(),
DictFrameworkUtils.getDictDataFromCache("member_score_source", scoreLogDO.getSourceType().toString()).getLabel(),
DictFrameworkUtils.getDictDataFromCache("member_score_source", scoreLogDO.getSourceType().toString()).getLabelEn(),
userScoreLogDO.getCreateTime(),
scoreRule.getDescEn(),
scoreRule.getDescZh(),
null,
true
);
}
private void setScoreRuleLogDetail(MemberUserScoreLogDO userScoreLogDO, List<AppMemberUserScoreLogRespVO> appMemberUserScoreLogRespVOS) {
AppMemberUserScoreLogRespVO appMemberUserScoreLogRespVO = new AppMemberUserScoreLogRespVO(); AppMemberUserScoreLogRespVO appMemberUserScoreLogRespVO = new AppMemberUserScoreLogRespVO();
appMemberUserScoreLogRespVO.setId(userScoreLogDO.getId()); appMemberUserScoreLogRespVO.setId(userScoreLogDO.getId());
appMemberUserScoreLogRespVO.setSourceType(userScoreLogDO.getSourceType()); appMemberUserScoreLogRespVO.setSourceType(userScoreLogDO.getSourceType());
appMemberUserScoreLogRespVO.setScoreCount(userScoreLogDO.getScoreCount()); appMemberUserScoreLogRespVO.setScoreCount(userScoreLogDO.getScoreCount());
appMemberUserScoreLogRespVO.setOperateType(userScoreLogDO.getOperateType() == 1 ? "+" : "-"); appMemberUserScoreLogRespVO.setOperateType(userScoreLogDO.getOperateType() == 1 ? "+" : "-");
appMemberUserScoreLogRespVO.setCreateTime(userScoreLogDO.getCreateTime()); appMemberUserScoreLogRespVO.setCreateTime(userScoreLogDO.getCreateTime());
// 增加积分日志
if (Objects.equals(userScoreLogDO.getOperateType(), ScoreOperateTypeEnum.ADD.getValue())) { // 获取通用的字典标签
switch (userScoreLogDO.getSourceType()) { String sourceType = userScoreLogDO.getSourceType().toString();
// 人工操作 String sourceTypeZh = DictFrameworkUtils.getDictDataFromCache("member_score_source", sourceType).getLabel();
case 1: String sourceTypeEn = DictFrameworkUtils.getDictDataFromCache("member_score_source", sourceType).getLabelEn();
appMemberUserScoreLogRespVO.setSourceTypeZh(DictFrameworkUtils.getDictDataFromCache("member_score_source", "1").getLabel()); appMemberUserScoreLogRespVO.setSourceTypeZh(sourceTypeZh);
appMemberUserScoreLogRespVO.setSourceTypeEn(DictFrameworkUtils.getDictDataFromCache("member_score_source", "1").getLabelEn()); appMemberUserScoreLogRespVO.setSourceTypeEn(sourceTypeEn);
appMemberUserScoreLogRespVO.setDescZh("人工积分");
appMemberUserScoreLogRespVO.setDescEn("Manually add points"); // 判断是增加还是减少积分操作
break; boolean isAddOperation = Objects.equals(userScoreLogDO.getOperateType(), ScoreOperateTypeEnum.ADD.getValue());
// 活动积分
case 5: if (isAddOperation) {
case 6: handleAddScoreLogDetail(userScoreLogDO, appMemberUserScoreLogRespVO);
case 7:
case 8:
ScoreSourceTypeEnum scoreSourceTypeEnum = ScoreSourceTypeEnum.parseByValue(userScoreLogDO.getSourceType());
appMemberUserScoreLogRespVO.setSourceTypeZh(DictFrameworkUtils.getDictDataFromCache("member_score_source", String.valueOf(scoreSourceTypeEnum.getValue())).getLabel());
appMemberUserScoreLogRespVO.setSourceTypeEn(DictFrameworkUtils.getDictDataFromCache("member_score_source", String.valueOf(scoreSourceTypeEnum.getValue())).getLabelEn());
ScoreRuleBackDetailVO scoreRule = scoreRuleService.getScoreRule(userScoreLogDO.getRuleId());
if (scoreRule != null) {
appMemberUserScoreLogRespVO.setDescEn(scoreRule.getDescEn());
appMemberUserScoreLogRespVO.setDescZh(scoreRule.getDescZh());
}
break;
}
} else { } else {
// 减少积分日志 handleReduceScoreLogDetail(userScoreLogDO, appMemberUserScoreLogRespVO);
switch (userScoreLogDO.getSourceType()) {
// 人工操作
case 1:
appMemberUserScoreLogRespVO.setSourceTypeZh(DictFrameworkUtils.getDictDataFromCache("member_score_source", "1").getLabel());
appMemberUserScoreLogRespVO.setSourceTypeEn(DictFrameworkUtils.getDictDataFromCache("member_score_source", "1").getLabelEn());
appMemberUserScoreLogRespVO.setDescZh("人工积分");
appMemberUserScoreLogRespVO.setDescEn("Manually reduce points");
break;
// 兑换
case 2:
appMemberUserScoreLogRespVO.setSourceTypeZh(DictFrameworkUtils.getDictDataFromCache("member_score_source", "2").getLabel());
appMemberUserScoreLogRespVO.setSourceTypeEn(DictFrameworkUtils.getDictDataFromCache("member_score_source", "2").getLabelEn());
// 查询兑换记录
Map<String, Long> extParam = JsonUtils.parseObject(userScoreLogDO.getExtParam(), HashMap.class);
Long redeemId = extParam.get("redeemId");
if (redeemId != null) {
RedeemDetailForUserDTO redeemDetailForUser = redeemRewardApi.getRedeemDetailForUser(redeemId);
if (redeemDetailForUser != null) {
appMemberUserScoreLogRespVO.setRewardCount(redeemDetailForUser.getRewardCount());
appMemberUserScoreLogRespVO.setDescZh(redeemDetailForUser.getRewardNameZh());
appMemberUserScoreLogRespVO.setDescEn(redeemDetailForUser.getRewardNameEn());
}
}
break;
}
} }
appMemberUserScoreLogRespVOS.add(appMemberUserScoreLogRespVO); appMemberUserScoreLogRespVOS.add(appMemberUserScoreLogRespVO);
} }
private void handleAddScoreLogDetail(MemberUserScoreLogDO userScoreLogDO, AppMemberUserScoreLogRespVO appMemberUserScoreLogRespVO) {
switch (userScoreLogDO.getSourceType()) {
case 1:
appMemberUserScoreLogRespVO.setDescZh("人工积分");
appMemberUserScoreLogRespVO.setDescEn("manually add points");
break;
case 4:
handleRedeemDetail(userScoreLogDO, appMemberUserScoreLogRespVO);
break;
case 5:
case 6:
case 7:
case 8:
ScoreRuleBackDetailVO scoreRule = scoreRuleService.getScoreRule(userScoreLogDO.getRuleId());
if (scoreRule != null) {
appMemberUserScoreLogRespVO.setDescEn(scoreRule.getDescEn());
appMemberUserScoreLogRespVO.setDescZh(scoreRule.getDescZh());
}
break;
}
}
private void handleReduceScoreLogDetail(MemberUserScoreLogDO userScoreLogDO, AppMemberUserScoreLogRespVO appMemberUserScoreLogRespVO) {
switch (userScoreLogDO.getSourceType()) {
case 1:
appMemberUserScoreLogRespVO.setDescZh("人工积分");
appMemberUserScoreLogRespVO.setDescEn("manually reduce points");
break;
case 2:
handleRedeemDetail(userScoreLogDO, appMemberUserScoreLogRespVO);
break;
}
}
private void handleRedeemDetail(MemberUserScoreLogDO userScoreLogDO, AppMemberUserScoreLogRespVO appMemberUserScoreLogRespVO) {
HashMap extParam = JsonUtils.parseObject(userScoreLogDO.getExtParam(), HashMap.class);
Long redeemId = extParam.get("redeemId") != null ? Long.valueOf(extParam.get("redeemId").toString()) : null;
if (redeemId != null) {
RedeemDetailForUserDTO redeemDetailForUser = redeemRewardApi.getRedeemDetailForUser(redeemId);
if (redeemDetailForUser != null) {
appMemberUserScoreLogRespVO.setRewardCount(redeemDetailForUser.getRewardCount());
appMemberUserScoreLogRespVO.setDescZh(redeemDetailForUser.getRewardNameZh());
appMemberUserScoreLogRespVO.setDescEn(redeemDetailForUser.getRewardNameEn());
}
}
}
} }
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