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

@ -34,12 +34,14 @@ public class LuckyGiftDataQryCmd {
private final LuckyGiftProbabilityService luckyGiftProbabilityService;
private final LuckyGiftProbabilityDetailsService luckyGiftProbabilityDetailsService;
public GameLuckyGiftDataCO execute(GameLuckyGiftCmd cmd) {
GiftConfigDTO giftConfigCache = giftCacheService.getById(cmd.getGiftId());
if (Objects.isNull(giftConfigCache) || Objects.isNull(giftConfigCache.getStandardId())) {
return null;
}
public GameLuckyGiftDataCO execute(GameLuckyGiftCmd cmd) {
GiftConfigDTO giftConfigCache = giftCacheService.getById(cmd.getGiftId());
if (Objects.isNull(giftConfigCache)
|| Boolean.TRUE.equals(giftConfigCache.getDel())
|| Objects.isNull(giftConfigCache.getStandardId())) {
return null;
}
LuckyGiftProbability giftProbability = getOneByStandardIdByQuantity(cmd, giftConfigCache);
if (Objects.isNull(giftProbability)) {

View File

@ -82,12 +82,14 @@ public class LuckyGiftMultipleRuleQryCmd {
luckyGiftCounts.stream().map(GameLuckyGiftCount::getUserId).collect(Collectors.toSet())));
}
private List<GameLuckyGiftMultipleCO> listMaxMultiple(Long giftId) {
GiftConfigDTO configCache = giftCacheService.getById(giftId);
if (Objects.isNull(configCache)) {
return Lists.newArrayList();
}
private List<GameLuckyGiftMultipleCO> listMaxMultiple(Long giftId) {
GiftConfigDTO configCache = giftCacheService.getById(giftId);
if (Objects.isNull(configCache)
|| Boolean.TRUE.equals(configCache.getDel())
|| Objects.isNull(configCache.getStandardId())) {
return Lists.newArrayList();
}
List<LuckyGiftProbability> giftProbabilities = listProbabilityByStandardId(configCache);
if (CollectionUtils.isEmpty(giftProbabilities)) {

View File

@ -54,13 +54,14 @@ public class LuckyGiftGiveCmdExe {
ResponseAssert.notNull(RoomErrorCode.ROOM_NOT_EXISTS, cmd.getRoomId());
GiftConfigDTO giftConfig = giftCacheService.getById(cmd.getGiftId());
ResponseAssert.notNull(GiftErrorCode.GIFT_NOT_FOUND, giftConfig);
// 判断版本号从而保证使用幸运礼物必须升级版本
ResponseAssert.isTrue(CommonErrorCode.NOT_ACCEPT_REQUEST,
Objects.equals(giftConfig.getGiftTab(), GiftTabEnum.LUCKY_GIFT.name()) ||
GiftConfigDTO giftConfig = giftCacheService.getById(cmd.getGiftId());
ResponseAssert.notNull(GiftErrorCode.GIFT_NOT_FOUND, giftConfig);
ResponseAssert.isFalse(GiftErrorCode.GIFT_NOT_FOUND, Boolean.TRUE.equals(giftConfig.getDel()));
// 判断版本号从而保证使用幸运礼物必须升级版本
ResponseAssert.isTrue(CommonErrorCode.NOT_ACCEPT_REQUEST,
Objects.equals(giftConfig.getGiftTab(), GiftTabEnum.LUCKY_GIFT.name()) ||
Objects.equals(giftConfig.getGiftTab(), GiftTabEnum.MAGIC.name()));
// 过滤赠送人非法值

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

@ -24,24 +24,26 @@ public class GameLuckyGiftStandardConfigServiceImpl extends
GameLuckyGiftStandardConfigService {
@Override
public List<GameLuckyGiftStandardConfig> getLuckyGiftStandard(String sysOrigin) {
return query()
.eq(GameLuckyGiftStandardConfig::getSysOrigin, sysOrigin)
.last(PageConstant.formatLimit(500))
.list();
}
public List<GameLuckyGiftStandardConfig> getLuckyGiftStandard(String sysOrigin) {
return query()
.eq(GameLuckyGiftStandardConfig::getSysOrigin, sysOrigin)
.eq(GameLuckyGiftStandardConfig::getDel, Boolean.FALSE)
.last(PageConstant.formatLimit(500))
.list();
}
@Override
public PageResult<GameLuckyGiftStandardConfig> getStandardConfig(
GameLuckGiftStandardConfigQryCmd query) {
return query()
.eq(StringUtils.isNotBlank(query.getSysOrigin()), GameLuckyGiftStandardConfig::getSysOrigin,
query.getSysOrigin())
.like(StringUtils.isNotBlank(query.getRemarks()), GameLuckyGiftStandardConfig::getRemarks,
query.getRemarks())
.orderByDesc(GameLuckyGiftStandardConfig::getCreateTime)
.page(query.getPageQuery());
}
return query()
.eq(StringUtils.isNotBlank(query.getSysOrigin()), GameLuckyGiftStandardConfig::getSysOrigin,
query.getSysOrigin())
.like(StringUtils.isNotBlank(query.getRemarks()), GameLuckyGiftStandardConfig::getRemarks,
query.getRemarks())
.eq(GameLuckyGiftStandardConfig::getDel, Boolean.FALSE)
.orderByDesc(GameLuckyGiftStandardConfig::getCreateTime)
.page(query.getPageQuery());
}
@Override
public void deleteStandardConfig(Long id, Long userId) {

View File

@ -60,13 +60,14 @@ public class LuckyGiftProbabilityDetailsServiceImpl extends
}
@Override
public List<LuckyGiftProbabilityDetails> listByProbabilityId(Long probabilityId) {
return query()
.eq(LuckyGiftProbabilityDetails::getProbabilityId, probabilityId)
.last(PageConstant.formatLimit(50))
.list();
}
public List<LuckyGiftProbabilityDetails> listByProbabilityId(Long probabilityId) {
return query()
.eq(LuckyGiftProbabilityDetails::getProbabilityId, probabilityId)
.eq(LuckyGiftProbabilityDetails::getDel, Boolean.FALSE)
.last(PageConstant.formatLimit(50))
.list();
}
@Override
public void deleteByProbabilityIds(Set<Long> probabilityIds) {
@ -74,22 +75,28 @@ public class LuckyGiftProbabilityDetailsServiceImpl extends
}
@Override
public Map<Long, List<LuckyGiftProbabilityDetails>> getLuckyGiftProbabilityDetails(
String sysOrigin) {
return Optional.ofNullable(
query().eq(LuckyGiftProbabilityDetails::getSysOrigin, sysOrigin).list())
.map(probabilityDetails ->
probabilityDetails.stream().collect(
Collectors.groupingBy(LuckyGiftProbabilityDetails::getProbabilityId)))
.orElse(Maps.newHashMap());
}
public Map<Long, List<LuckyGiftProbabilityDetails>> getLuckyGiftProbabilityDetails(
String sysOrigin) {
return Optional.ofNullable(
query()
.eq(LuckyGiftProbabilityDetails::getSysOrigin, sysOrigin)
.eq(LuckyGiftProbabilityDetails::getDel, Boolean.FALSE)
.list())
.map(probabilityDetails ->
probabilityDetails.stream().collect(
Collectors.groupingBy(LuckyGiftProbabilityDetails::getProbabilityId)))
.orElse(Maps.newHashMap());
}
@Override
public List<LuckyGiftProbabilityDetails> getDetailByProbabilityId(Long probabilityId) {
return Optional.ofNullable(
query().eq(LuckyGiftProbabilityDetails::getProbabilityId, probabilityId).list()).orElse(
Lists.newArrayList());
}
public List<LuckyGiftProbabilityDetails> getDetailByProbabilityId(Long probabilityId) {
return Optional.ofNullable(
query()
.eq(LuckyGiftProbabilityDetails::getProbabilityId, probabilityId)
.eq(LuckyGiftProbabilityDetails::getDel, Boolean.FALSE)
.list()).orElse(
Lists.newArrayList());
}
@Override
public void add(Long probabilityId,

View File

@ -29,37 +29,47 @@ public class LuckyGiftProbabilityServiceImpl extends
LuckyGiftProbabilityService {
@Override
public List<LuckyGiftProbability> listByStandardId(Long standardId) {
return query()
.eq(LuckyGiftProbability::getStandardId, standardId)
.last(PageConstant.formatLimit(5))
.list();
}
public List<LuckyGiftProbability> listByStandardId(Long standardId) {
return query()
.eq(LuckyGiftProbability::getStandardId, standardId)
.eq(LuckyGiftProbability::getDel, Boolean.FALSE)
.last(PageConstant.formatLimit(5))
.list();
}
@Override
public LuckyGiftProbability getOneByStandardIdByQuantity(Long standardId, Integer quantity) {
return query()
.eq(LuckyGiftProbability::getGiftQuantity, quantity)
.eq(LuckyGiftProbability::getStandardId, standardId)
.last(PageConstant.LIMIT_ONE)
.getOne();
}
return query()
.eq(LuckyGiftProbability::getGiftQuantity, quantity)
.eq(LuckyGiftProbability::getStandardId, standardId)
.eq(LuckyGiftProbability::getDel, Boolean.FALSE)
.last(PageConstant.LIMIT_ONE)
.getOne();
}
@Override
public Map<Long, List<LuckyGiftProbability>> getLuckyGiftProbabilityMap(Set<Long> standardIds) {
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()
.collect(Collectors.groupingBy(LuckyGiftProbability::getStandardId)))
.orElse(Maps.newHashMap());
}
@Override
public Map<Long, List<LuckyGiftProbability>> getLuckyGiftProbabilityMap(Set<Long> standardIds) {
return Optional.ofNullable(query().in(LuckyGiftProbability::getStandardId, standardIds).list())
.map(probabilityList -> probabilityList.stream()
.collect(Collectors.groupingBy(LuckyGiftProbability::getStandardId)))
.orElse(Maps.newHashMap());
}
@Override
public List<LuckyGiftProbability> getLuckyGiftProbabilityByStandardId(Long id) {
return query()
.eq(Objects.nonNull(id), LuckyGiftProbability::getStandardId, id).list();
}
public List<LuckyGiftProbability> getLuckyGiftProbabilityByStandardId(Long id) {
return query()
.eq(Objects.nonNull(id), LuckyGiftProbability::getStandardId, id)
.eq(LuckyGiftProbability::getDel, Boolean.FALSE)
.list();
}
@Override
public Boolean deleteByStandardId(Long id) {
@ -69,13 +79,14 @@ public class LuckyGiftProbabilityServiceImpl extends
@Override
public List<LuckyGiftProbability> getLuckyGiftProbabilityConfig(
GameLuckGiftProbabilityConfigQryCmd query) {
return query().eq(
StringUtils.isNotBlank(query.getSysOrigin()), LuckyGiftProbability::getSysOrigin,
query.getSysOrigin())
.eq(Objects.nonNull(query.getStandardId()), LuckyGiftProbability::getStandardId,
query.getStandardId())
.orderByAsc(LuckyGiftProbability::getSort)
.list();
}
}
return query().eq(
StringUtils.isNotBlank(query.getSysOrigin()), LuckyGiftProbability::getSysOrigin,
query.getSysOrigin())
.eq(Objects.nonNull(query.getStandardId()), LuckyGiftProbability::getStandardId,
query.getStandardId())
.eq(LuckyGiftProbability::getDel, Boolean.FALSE)
.orderByAsc(LuckyGiftProbability::getSort)
.list();
}
}

View File

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

View File

@ -276,20 +276,35 @@ public class GiftConfigServiceImpl extends BaseServiceImpl<GiftConfigDAO, GiftCo
}
@Override
public List<GiftConfig> getLuckyGiftByStandardId(Long standardId, String giftTab) {
return Optional.ofNullable(query()
.eq(GiftConfig::getGiftTab, giftTab)
.eq(GiftConfig::getStandardId, standardId)
.eq(GiftConfig::getDel, Boolean.FALSE)
.last(PageConstant.MAX_LIMIT)
.list())
.orElse(Lists.newArrayList());
}
@Override
public List<GiftConfig> listConfessionGifts(String sysOrigin) {
return query()
.eq(GiftConfig::getSysOrigin, sysOrigin)
public List<GiftConfig> getLuckyGiftByStandardId(Long standardId, String giftTab) {
return Optional.ofNullable(query()
.eq(GiftConfig::getGiftTab, giftTab)
.eq(GiftConfig::getStandardId, standardId)
.eq(GiftConfig::getDel, Boolean.FALSE)
.last(PageConstant.MAX_LIMIT)
.list())
.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
public List<GiftConfig> listConfessionGifts(String sysOrigin) {
return query()
.eq(GiftConfig::getSysOrigin, sysOrigin)
.eq(GiftConfig::getDel, Boolean.FALSE)
.eq(GiftConfig::getExplanationGift, Boolean.TRUE)
.orderByDesc(GiftConfig::getSort)

View File

@ -81,12 +81,18 @@ public class GameLuckyGiftConfigClientServiceImpl implements GameLuckyGiftConfig
}
@Override
public List<LuckyGiftStandardMapDTO> listProbability(String sysOrigin) {
List<GameLuckyGiftStandardConfig> luckyGiftStandards = gameLuckyGiftStandardConfigService.getLuckyGiftStandard(
sysOrigin);
if (CollectionUtils.isEmpty(luckyGiftStandards)) {
return Lists.newArrayList();
}
public List<LuckyGiftStandardMapDTO> listProbability(String sysOrigin) {
Set<Long> activeStandardIds = giftConfigService.listEffectiveLuckyGiftStandardIds(sysOrigin);
if (CollectionUtils.isEmpty(activeStandardIds)) {
return Lists.newArrayList();
}
List<GameLuckyGiftStandardConfig> luckyGiftStandards = gameLuckyGiftStandardConfigService.getLuckyGiftStandard(
sysOrigin).stream()
.filter(luckyGiftStandard -> activeStandardIds.contains(luckyGiftStandard.getId()))
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(luckyGiftStandards)) {
return Lists.newArrayList();
}
Map<Long, List<LuckyGiftProbability>> probabilityMap = luckyGiftProbabilityService.getLuckyGiftProbabilityMap(
luckyGiftStandards.stream().map(GameLuckyGiftStandardConfig::getId).collect(
Collectors.toSet()));