fix(other): hide down-shelved lucky gifts

This commit is contained in:
hy001 2026-04-21 22:15:20 +08:00
parent bd27726301
commit b792e7feb2
10 changed files with 206 additions and 114 deletions

View File

@ -37,7 +37,9 @@ public class LuckyGiftDataQryCmd {
public GameLuckyGiftDataCO execute(GameLuckyGiftCmd cmd) { public GameLuckyGiftDataCO execute(GameLuckyGiftCmd cmd) {
GiftConfigDTO giftConfigCache = giftCacheService.getById(cmd.getGiftId()); GiftConfigDTO giftConfigCache = giftCacheService.getById(cmd.getGiftId());
if (Objects.isNull(giftConfigCache) || Objects.isNull(giftConfigCache.getStandardId())) { if (Objects.isNull(giftConfigCache)
|| Boolean.TRUE.equals(giftConfigCache.getDel())
|| Objects.isNull(giftConfigCache.getStandardId())) {
return null; return null;
} }

View File

@ -85,7 +85,9 @@ public class LuckyGiftMultipleRuleQryCmd {
private List<GameLuckyGiftMultipleCO> listMaxMultiple(Long giftId) { private List<GameLuckyGiftMultipleCO> listMaxMultiple(Long giftId) {
GiftConfigDTO configCache = giftCacheService.getById(giftId); GiftConfigDTO configCache = giftCacheService.getById(giftId);
if (Objects.isNull(configCache)) { if (Objects.isNull(configCache)
|| Boolean.TRUE.equals(configCache.getDel())
|| Objects.isNull(configCache.getStandardId())) {
return Lists.newArrayList(); return Lists.newArrayList();
} }

View File

@ -57,6 +57,7 @@ public class LuckyGiftGiveCmdExe {
GiftConfigDTO giftConfig = giftCacheService.getById(cmd.getGiftId()); GiftConfigDTO giftConfig = giftCacheService.getById(cmd.getGiftId());
ResponseAssert.notNull(GiftErrorCode.GIFT_NOT_FOUND, giftConfig); ResponseAssert.notNull(GiftErrorCode.GIFT_NOT_FOUND, giftConfig);
ResponseAssert.isFalse(GiftErrorCode.GIFT_NOT_FOUND, Boolean.TRUE.equals(giftConfig.getDel()));
// 判断版本号从而保证使用幸运礼物必须升级版本 // 判断版本号从而保证使用幸运礼物必须升级版本
ResponseAssert.isTrue(CommonErrorCode.NOT_ACCEPT_REQUEST, ResponseAssert.isTrue(CommonErrorCode.NOT_ACCEPT_REQUEST,

View File

@ -0,0 +1,44 @@
package com.red.circle.other.app.command.game.luckygift;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import com.red.circle.other.app.common.gift.GameLuckyGiftCommon;
import com.red.circle.other.app.dto.cmd.game.GameLuckyGiftCmd;
import com.red.circle.other.infra.database.cache.service.other.GameLuckyGiftCacheService;
import com.red.circle.other.infra.database.cache.service.other.GiftCacheService;
import com.red.circle.other.infra.database.rds.service.game.LuckyGiftProbabilityDetailsService;
import com.red.circle.other.infra.database.rds.service.game.LuckyGiftProbabilityService;
import com.red.circle.other.inner.model.dto.material.GiftConfigDTO;
import org.junit.jupiter.api.Test;
class LuckyGiftDataQryCmdTest {
@Test
void execute_shouldReturnNullWhenGiftIsDownShelved() {
GiftCacheService giftCacheService = mock(GiftCacheService.class);
GameLuckyGiftCommon gameLuckyGiftCommon = mock(GameLuckyGiftCommon.class);
GameLuckyGiftCacheService gameLuckyGiftCacheService = mock(GameLuckyGiftCacheService.class);
LuckyGiftProbabilityService luckyGiftProbabilityService = mock(LuckyGiftProbabilityService.class);
LuckyGiftProbabilityDetailsService luckyGiftProbabilityDetailsService = mock(
LuckyGiftProbabilityDetailsService.class);
LuckyGiftDataQryCmd qryCmd = new LuckyGiftDataQryCmd(
giftCacheService,
gameLuckyGiftCommon,
gameLuckyGiftCacheService,
luckyGiftProbabilityService,
luckyGiftProbabilityDetailsService
);
when(giftCacheService.getById(11L)).thenReturn(new GiftConfigDTO()
.setId(11L)
.setDel(Boolean.TRUE)
.setStandardId(99L));
GameLuckyGiftCmd cmd = new GameLuckyGiftCmd();
cmd.setGiftId(11L);
assertNull(qryCmd.execute(cmd));
}
}

View File

@ -27,6 +27,7 @@ public class GameLuckyGiftStandardConfigServiceImpl extends
public List<GameLuckyGiftStandardConfig> getLuckyGiftStandard(String sysOrigin) { public List<GameLuckyGiftStandardConfig> getLuckyGiftStandard(String sysOrigin) {
return query() return query()
.eq(GameLuckyGiftStandardConfig::getSysOrigin, sysOrigin) .eq(GameLuckyGiftStandardConfig::getSysOrigin, sysOrigin)
.eq(GameLuckyGiftStandardConfig::getDel, Boolean.FALSE)
.last(PageConstant.formatLimit(500)) .last(PageConstant.formatLimit(500))
.list(); .list();
} }
@ -39,6 +40,7 @@ public class GameLuckyGiftStandardConfigServiceImpl extends
query.getSysOrigin()) query.getSysOrigin())
.like(StringUtils.isNotBlank(query.getRemarks()), GameLuckyGiftStandardConfig::getRemarks, .like(StringUtils.isNotBlank(query.getRemarks()), GameLuckyGiftStandardConfig::getRemarks,
query.getRemarks()) query.getRemarks())
.eq(GameLuckyGiftStandardConfig::getDel, Boolean.FALSE)
.orderByDesc(GameLuckyGiftStandardConfig::getCreateTime) .orderByDesc(GameLuckyGiftStandardConfig::getCreateTime)
.page(query.getPageQuery()); .page(query.getPageQuery());
} }

View File

@ -64,6 +64,7 @@ public class LuckyGiftProbabilityDetailsServiceImpl extends
return query() return query()
.eq(LuckyGiftProbabilityDetails::getProbabilityId, probabilityId) .eq(LuckyGiftProbabilityDetails::getProbabilityId, probabilityId)
.eq(LuckyGiftProbabilityDetails::getDel, Boolean.FALSE)
.last(PageConstant.formatLimit(50)) .last(PageConstant.formatLimit(50))
.list(); .list();
} }
@ -77,7 +78,10 @@ public class LuckyGiftProbabilityDetailsServiceImpl extends
public Map<Long, List<LuckyGiftProbabilityDetails>> getLuckyGiftProbabilityDetails( public Map<Long, List<LuckyGiftProbabilityDetails>> getLuckyGiftProbabilityDetails(
String sysOrigin) { String sysOrigin) {
return Optional.ofNullable( return Optional.ofNullable(
query().eq(LuckyGiftProbabilityDetails::getSysOrigin, sysOrigin).list()) query()
.eq(LuckyGiftProbabilityDetails::getSysOrigin, sysOrigin)
.eq(LuckyGiftProbabilityDetails::getDel, Boolean.FALSE)
.list())
.map(probabilityDetails -> .map(probabilityDetails ->
probabilityDetails.stream().collect( probabilityDetails.stream().collect(
Collectors.groupingBy(LuckyGiftProbabilityDetails::getProbabilityId))) Collectors.groupingBy(LuckyGiftProbabilityDetails::getProbabilityId)))
@ -87,7 +91,10 @@ public class LuckyGiftProbabilityDetailsServiceImpl extends
@Override @Override
public List<LuckyGiftProbabilityDetails> getDetailByProbabilityId(Long probabilityId) { public List<LuckyGiftProbabilityDetails> getDetailByProbabilityId(Long probabilityId) {
return Optional.ofNullable( return Optional.ofNullable(
query().eq(LuckyGiftProbabilityDetails::getProbabilityId, probabilityId).list()).orElse( query()
.eq(LuckyGiftProbabilityDetails::getProbabilityId, probabilityId)
.eq(LuckyGiftProbabilityDetails::getDel, Boolean.FALSE)
.list()).orElse(
Lists.newArrayList()); Lists.newArrayList());
} }

View File

@ -33,6 +33,7 @@ public class LuckyGiftProbabilityServiceImpl extends
return query() return query()
.eq(LuckyGiftProbability::getStandardId, standardId) .eq(LuckyGiftProbability::getStandardId, standardId)
.eq(LuckyGiftProbability::getDel, Boolean.FALSE)
.last(PageConstant.formatLimit(5)) .last(PageConstant.formatLimit(5))
.list(); .list();
} }
@ -43,13 +44,20 @@ public class LuckyGiftProbabilityServiceImpl extends
return query() return query()
.eq(LuckyGiftProbability::getGiftQuantity, quantity) .eq(LuckyGiftProbability::getGiftQuantity, quantity)
.eq(LuckyGiftProbability::getStandardId, standardId) .eq(LuckyGiftProbability::getStandardId, standardId)
.eq(LuckyGiftProbability::getDel, Boolean.FALSE)
.last(PageConstant.LIMIT_ONE) .last(PageConstant.LIMIT_ONE)
.getOne(); .getOne();
} }
@Override @Override
public Map<Long, List<LuckyGiftProbability>> getLuckyGiftProbabilityMap(Set<Long> standardIds) { public Map<Long, List<LuckyGiftProbability>> getLuckyGiftProbabilityMap(Set<Long> standardIds) {
return Optional.ofNullable(query().in(LuckyGiftProbability::getStandardId, standardIds).list()) if (Objects.isNull(standardIds) || standardIds.isEmpty()) {
return Maps.newHashMap();
}
return Optional.ofNullable(query()
.in(LuckyGiftProbability::getStandardId, standardIds)
.eq(LuckyGiftProbability::getDel, Boolean.FALSE)
.list())
.map(probabilityList -> probabilityList.stream() .map(probabilityList -> probabilityList.stream()
.collect(Collectors.groupingBy(LuckyGiftProbability::getStandardId))) .collect(Collectors.groupingBy(LuckyGiftProbability::getStandardId)))
.orElse(Maps.newHashMap()); .orElse(Maps.newHashMap());
@ -58,7 +66,9 @@ public class LuckyGiftProbabilityServiceImpl extends
@Override @Override
public List<LuckyGiftProbability> getLuckyGiftProbabilityByStandardId(Long id) { public List<LuckyGiftProbability> getLuckyGiftProbabilityByStandardId(Long id) {
return query() return query()
.eq(Objects.nonNull(id), LuckyGiftProbability::getStandardId, id).list(); .eq(Objects.nonNull(id), LuckyGiftProbability::getStandardId, id)
.eq(LuckyGiftProbability::getDel, Boolean.FALSE)
.list();
} }
@Override @Override
@ -74,6 +84,7 @@ public class LuckyGiftProbabilityServiceImpl extends
query.getSysOrigin()) query.getSysOrigin())
.eq(Objects.nonNull(query.getStandardId()), LuckyGiftProbability::getStandardId, .eq(Objects.nonNull(query.getStandardId()), LuckyGiftProbability::getStandardId,
query.getStandardId()) query.getStandardId())
.eq(LuckyGiftProbability::getDel, Boolean.FALSE)
.orderByAsc(LuckyGiftProbability::getSort) .orderByAsc(LuckyGiftProbability::getSort)
.list(); .list();
} }

View File

@ -136,6 +136,8 @@ public interface GiftConfigService extends BaseService<GiftConfig> {
List<GiftConfig> getLuckyGiftByStandardId(Long id, String name); List<GiftConfig> getLuckyGiftByStandardId(Long id, String name);
Set<Long> listEffectiveLuckyGiftStandardIds(String sysOrigin);
/** /**
* 获取平台表白礼物. * 获取平台表白礼物.
* *

View File

@ -286,6 +286,21 @@ public class GiftConfigServiceImpl extends BaseServiceImpl<GiftConfigDAO, GiftCo
.orElse(Lists.newArrayList()); .orElse(Lists.newArrayList());
} }
@Override
public Set<Long> listEffectiveLuckyGiftStandardIds(String sysOrigin) {
return Optional.ofNullable(query()
.eq(GiftConfig::getSysOrigin, sysOrigin)
.eq(GiftConfig::getGiftTab, GiftTabEnum.LUCKY_GIFT)
.eq(GiftConfig::getDel, Boolean.FALSE)
.isNotNull(GiftConfig::getStandardId)
.list())
.map(gifts -> gifts.stream()
.map(GiftConfig::getStandardId)
.filter(Objects::nonNull)
.collect(Collectors.toSet()))
.orElse(CollectionUtils.newHashSet());
}
@Override @Override
public List<GiftConfig> listConfessionGifts(String sysOrigin) { public List<GiftConfig> listConfessionGifts(String sysOrigin) {
return query() return query()

View File

@ -82,8 +82,14 @@ public class GameLuckyGiftConfigClientServiceImpl implements GameLuckyGiftConfig
@Override @Override
public List<LuckyGiftStandardMapDTO> listProbability(String sysOrigin) { public List<LuckyGiftStandardMapDTO> listProbability(String sysOrigin) {
Set<Long> activeStandardIds = giftConfigService.listEffectiveLuckyGiftStandardIds(sysOrigin);
if (CollectionUtils.isEmpty(activeStandardIds)) {
return Lists.newArrayList();
}
List<GameLuckyGiftStandardConfig> luckyGiftStandards = gameLuckyGiftStandardConfigService.getLuckyGiftStandard( List<GameLuckyGiftStandardConfig> luckyGiftStandards = gameLuckyGiftStandardConfigService.getLuckyGiftStandard(
sysOrigin); sysOrigin).stream()
.filter(luckyGiftStandard -> activeStandardIds.contains(luckyGiftStandard.getId()))
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(luckyGiftStandards)) { if (CollectionUtils.isEmpty(luckyGiftStandards)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }