用户佩戴勋章操作逻辑优化
This commit is contained in:
parent
ecfb0bdc31
commit
7a7ec382ea
@ -1,6 +1,5 @@
|
|||||||
package com.red.circle.other.app.listener;
|
package com.red.circle.other.app.listener;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.red.circle.component.mq.MessageEventProcess;
|
import com.red.circle.component.mq.MessageEventProcess;
|
||||||
import com.red.circle.component.mq.MessageEventProcessDescribe;
|
import com.red.circle.component.mq.MessageEventProcessDescribe;
|
||||||
@ -20,13 +19,13 @@ import com.red.circle.other.infra.database.rds.entity.badge.BadgeConfig;
|
|||||||
import com.red.circle.other.infra.database.rds.service.badge.BadgeBackpackService;
|
import com.red.circle.other.infra.database.rds.service.badge.BadgeBackpackService;
|
||||||
import com.red.circle.other.infra.database.rds.service.badge.BadgeConfigService;
|
import com.red.circle.other.infra.database.rds.service.badge.BadgeConfigService;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.red.circle.other.inner.enums.material.BadgeBackpackExpireTypeEnum;
|
import com.red.circle.other.inner.enums.material.BadgeBackpackExpireTypeEnum;
|
||||||
import com.red.circle.other.inner.model.dto.user.props.UserUseBadgeDTO;
|
import com.red.circle.other.inner.model.dto.material.UseBadgeDTO;
|
||||||
import com.red.circle.tool.core.collection.CollectionUtils;
|
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||||
import com.red.circle.tool.core.date.TimestampUtils;
|
import com.red.circle.tool.core.date.TimestampUtils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -117,23 +116,21 @@ public class BadgeOperateListener implements MessageListener {
|
|||||||
BadgeBackpack badgeBackpack = new BadgeBackpack();
|
BadgeBackpack badgeBackpack = new BadgeBackpack();
|
||||||
badgeBackpack.setId(existBadge.getId());
|
badgeBackpack.setId(existBadge.getId());
|
||||||
badgeBackpack.setUseProps(Boolean.TRUE);
|
badgeBackpack.setUseProps(Boolean.TRUE);
|
||||||
|
|
||||||
|
if (days != null && days > 0) {
|
||||||
|
badgeBackpack.setExpireTime(TimestampUtils.nowPlusDays(days.intValue()));
|
||||||
|
badgeBackpack.setExpireType(BadgeBackpackExpireTypeEnum.TEMPORARY.name());
|
||||||
|
}
|
||||||
|
|
||||||
badgeBackpackService.updateSelectiveById(badgeBackpack);
|
badgeBackpackService.updateSelectiveById(badgeBackpack);
|
||||||
return null;
|
} else {
|
||||||
}
|
|
||||||
|
|
||||||
BadgeBackpack badgeBackpack = badgeBackpackService.getByUserIdByBadgeId(userId, badgeId);
|
|
||||||
if (Objects.isNull(badgeBackpack)) {
|
|
||||||
badgeBackpackService.save(buildSaveUserBadgeBackpack(badgeId, userId, days));
|
badgeBackpackService.save(buildSaveUserBadgeBackpack(badgeId, userId, days));
|
||||||
|
|
||||||
// 我的勋章
|
|
||||||
Set<Long> badgeIdSet = getUseBadgeIdSet(userId);
|
|
||||||
|
|
||||||
UserProfile userProfile = userProfileGateway.getByUserId(userId);
|
|
||||||
userRunProfileService.updateUserWearBadgesOverlay(userId,
|
|
||||||
userBadgeCommon.listUseBadge(userId, userProfile.getSysOriginChild(), badgeIdSet)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
|
// 刷新用户佩戴的勋章
|
||||||
|
refreshUserWearBadges(userId);
|
||||||
|
|
||||||
|
return null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,20 +140,39 @@ public class BadgeOperateListener implements MessageListener {
|
|||||||
.eq(BadgeBackpack::getUserId, userId)
|
.eq(BadgeBackpack::getUserId, userId)
|
||||||
.eq(BadgeBackpack::getUseProps, Boolean.TRUE)
|
.eq(BadgeBackpack::getUseProps, Boolean.TRUE)
|
||||||
.list();
|
.list();
|
||||||
return ownBadgeList.stream().map(BadgeBackpack::getBadgeId).collect(Collectors.toSet());
|
if (CollectionUtils.isEmpty(ownBadgeList)) {
|
||||||
|
return Collections.emptySet();
|
||||||
|
}
|
||||||
|
return ownBadgeList.stream().map(BadgeBackpack::getBadgeId).collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 移除徽章.
|
* 移除徽章.
|
||||||
*/
|
*/
|
||||||
private void handleRemoveBadge(Long userId, Long badgeId) {
|
private void handleRemoveBadge(Long userId, Long badgeId) {
|
||||||
badgeBackpackService.deleteBadges(userId, Sets.newHashSet(badgeId));
|
String lockKey = "badge:operate:remove:" + userId + ":" + badgeId;
|
||||||
|
|
||||||
|
distributedLockUtil.executeWithLock(lockKey, () -> {
|
||||||
|
badgeBackpackService.deleteBadges(userId, Sets.newHashSet(badgeId));
|
||||||
|
// 刷新用户佩戴的勋章
|
||||||
|
refreshUserWearBadges(userId);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshUserWearBadges(Long userId) {
|
||||||
Set<Long> badgeIdSet = getUseBadgeIdSet(userId);
|
Set<Long> badgeIdSet = getUseBadgeIdSet(userId);
|
||||||
|
|
||||||
UserProfile userProfile = userProfileGateway.getByUserId(userId);
|
UserProfile userProfile = userProfileGateway.getByUserId(userId);
|
||||||
userRunProfileService.updateUserWearBadgesOverlay(userId,
|
|
||||||
userBadgeCommon.listUseBadge(userId, userProfile.getSysOriginChild(), badgeIdSet)
|
if (userProfile == null) {
|
||||||
|
log.warn("用户信息不存在, userId: {}", userId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<UseBadgeDTO> useBadgeDTOList = userBadgeCommon.listUseBadge(userId, userProfile.getSysOriginChild(), badgeIdSet);
|
||||||
|
userRunProfileService.updateUserWearBadgesOverlay(
|
||||||
|
userId,
|
||||||
|
CollectionUtils.isNotEmpty(useBadgeDTOList) ? useBadgeDTOList : Collections.emptyList()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user