新增高等级vip自动覆盖佩戴低等级vip

This commit is contained in:
tianfeng 2026-02-05 18:36:50 +08:00
parent 6e77daa61d
commit c9a031b6c2

View File

@ -438,38 +438,42 @@ public class UserRunProfileTransportGatewayImpl implements UserRunProfileTranspo
// 2. 检查当前VIP是否过期
Timestamp now = TimestampUtils.now();
if (currentVip != null && currentVip.getExpireTime().after(now)) {
if (currentVip == null) {
// 当前VIP未过期无需切换
return;
}
// 3. 如果当前VIP已过期卸下它
if (currentVip != null) {
if (currentVip.getExpireTime().before(now)) {
propsBackpackService.unloadUseProps(userId, PropsCommodityType.NOBLE_VIP);
log.info("用户VIP已过期并卸下, userId={}, propsId={}, expireTime={}",
userId, currentVip.getPropsId(), currentVip.getExpireTime());
}
// 4. 使用最高等级的可用VIP
useMaxNobleVip(userId);
useMaxNobleVip(userId, currentVip.getPropsId());
}
/**
* 切换到最高等级VIP
*/
private void useMaxNobleVip(Long userId) {
private void useMaxNobleVip(Long userId, Long currentVipId) {
PropsNobleVipAbilityDTO abilityDTO = propsNobleVipGateway.getUserMaxAbilityDTO(userId);
if (Objects.isNull(abilityDTO)) {
log.info("用户没有可用的VIP道具, userId={}", userId);
return;
}
Long vipId = abilityDTO.getId();
if (Objects.equals(vipId, currentVipId)) {
return;
}
propsBackpackCommon.switchUseProps(userId, abilityDTO.getId());
propsBackpackCommon.switchUseProps(userId, vipId);
propsBackpackCommon.switchUseProps(userId, abilityDTO.getAvatarFrameId());
propsBackpackCommon.switchUseProps(userId, abilityDTO.getDataCardId());
propsBackpackCommon.switchUseProps(userId, abilityDTO.getCarId());
log.info("自动切换到最高等级VIP, userId={}, vipId={}", userId, abilityDTO.getId());
log.info("自动切换到最高等级VIP, userId={}, vipId={}", userId, vipId);
}
private UsePropsDTO mergeUserUsePropsEntity(