活动奖励改为发送指定奖励
This commit is contained in:
parent
07b0a29d6c
commit
8ba98a46f4
@ -202,5 +202,15 @@ public enum PropsActivityTypeEnum {
|
|||||||
*/
|
*/
|
||||||
GAME_KTV_WEEK_RANK_REWARD,
|
GAME_KTV_WEEK_RANK_REWARD,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 游戏王徽章奖励
|
||||||
|
*/
|
||||||
|
GAME_KING_BADGE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 游戏王荣誉奖励
|
||||||
|
*/
|
||||||
|
GAME_KING_HONOR,
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,16 +4,17 @@ import com.google.common.collect.Sets;
|
|||||||
import com.red.circle.common.business.enums.SendPropsOrigin;
|
import com.red.circle.common.business.enums.SendPropsOrigin;
|
||||||
import com.red.circle.mq.business.model.event.BadgeOperateEvent;
|
import com.red.circle.mq.business.model.event.BadgeOperateEvent;
|
||||||
import com.red.circle.mq.rocket.business.producer.UserMqMessageService;
|
import com.red.circle.mq.rocket.business.producer.UserMqMessageService;
|
||||||
|
import com.red.circle.other.app.common.props.SingleGroupRewardPoolCommon;
|
||||||
import com.red.circle.other.app.dto.clientobject.sys.ActivityConfigVO;
|
import com.red.circle.other.app.dto.clientobject.sys.ActivityConfigVO;
|
||||||
import com.red.circle.other.infra.database.mongo.entity.ranking.RankingRewardSnapshot;
|
import com.red.circle.other.infra.database.mongo.entity.ranking.RankingRewardSnapshot;
|
||||||
import com.red.circle.other.infra.database.mongo.service.ranking.RankingRewardSnapshotService;
|
import com.red.circle.other.infra.database.mongo.service.ranking.RankingRewardSnapshotService;
|
||||||
import com.red.circle.other.infra.database.rds.entity.badge.BadgeConfig;
|
|
||||||
import com.red.circle.other.infra.database.rds.service.badge.BadgeConfigService;
|
|
||||||
import com.red.circle.other.inner.endpoint.material.props.PropsBackpackClient;
|
import com.red.circle.other.inner.endpoint.material.props.PropsBackpackClient;
|
||||||
|
import com.red.circle.other.inner.enums.activity.PropsActivityTypeEnum;
|
||||||
import com.red.circle.other.inner.enums.material.PropsCommodityType;
|
import com.red.circle.other.inner.enums.material.PropsCommodityType;
|
||||||
import com.red.circle.other.inner.model.cmd.material.DeletePropsCmd;
|
import com.red.circle.other.inner.model.cmd.material.DeletePropsCmd;
|
||||||
import com.red.circle.other.inner.model.cmd.material.GivePropsBackpackCmd;
|
import com.red.circle.other.inner.model.cmd.material.GivePropsBackpackCmd;
|
||||||
import com.red.circle.other.inner.model.dto.material.PropsActivityRewardConfigInfoDTO;
|
import com.red.circle.other.inner.model.dto.activity.props.ActivityRewardPropsDTO;
|
||||||
|
import com.red.circle.other.inner.model.dto.sys.ActivityConfigDTO;
|
||||||
import com.red.circle.tool.core.collection.CollectionUtils;
|
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -34,7 +35,7 @@ public class RankingRewardGrantCmdExe {
|
|||||||
private final RankingRewardSnapshotService snapshotService;
|
private final RankingRewardSnapshotService snapshotService;
|
||||||
private final PropsBackpackClient propsBackpackClient;
|
private final PropsBackpackClient propsBackpackClient;
|
||||||
private final UserMqMessageService userMqMessageService;
|
private final UserMqMessageService userMqMessageService;
|
||||||
private final BadgeConfigService badgeConfigService;
|
private final SingleGroupRewardPoolCommon singleGroupRewardPoolCommon;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理排名奖励变化.
|
* 处理排名奖励变化.
|
||||||
@ -202,54 +203,46 @@ public class RankingRewardGrantCmdExe {
|
|||||||
* 获取指定排名的奖励列表.
|
* 获取指定排名的奖励列表.
|
||||||
*/
|
*/
|
||||||
private List<RankingRewardSnapshot.RewardItem> getRewardsForRank(Integer rank, ActivityConfigVO activityConfig) {
|
private List<RankingRewardSnapshot.RewardItem> getRewardsForRank(Integer rank, ActivityConfigVO activityConfig) {
|
||||||
if (activityConfig == null || CollectionUtils.isEmpty(activityConfig.getButOneRewards())) {
|
if (activityConfig == null || activityConfig.getConfig() == null) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ActivityConfigDTO config = activityConfig.getConfig();
|
||||||
|
|
||||||
String rankRange = getRankRange(rank);
|
List<ActivityRewardPropsDTO> badgeList = singleGroupRewardPoolCommon.listRewardProps(
|
||||||
|
config.getSysOrigin(), PropsActivityTypeEnum.GAME_KING_BADGE);
|
||||||
|
List<ActivityRewardPropsDTO> honorList = singleGroupRewardPoolCommon.listRewardProps(
|
||||||
|
config.getSysOrigin(), PropsActivityTypeEnum.GAME_KING_HONOR);
|
||||||
|
|
||||||
|
if (rank < 1 || rank > 10) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<RankingRewardSnapshot.RewardItem> rewards = new ArrayList<>();
|
||||||
|
|
||||||
return activityConfig.getButOneRewards().stream()
|
int index = rank - 1;
|
||||||
.filter(r -> rankRange.equals(r.getRankRange()))
|
|
||||||
.flatMap(r -> {
|
if (CollectionUtils.isNotEmpty(badgeList) && index < badgeList.size()) {
|
||||||
if (CollectionUtils.isEmpty(r.getRewards())) {
|
ActivityRewardPropsDTO badge = badgeList.get(index);
|
||||||
return java.util.stream.Stream.empty();
|
RankingRewardSnapshot.RewardItem badgeItem = new RankingRewardSnapshot.RewardItem()
|
||||||
}
|
.setType(badge.getType())
|
||||||
return r.getRewards().stream()
|
.setDetailType(badge.getDetailType())
|
||||||
.filter(this::isSupportedRewardType)
|
.setContent(badge.getContent())
|
||||||
.map(this::convertToRewardItem);
|
.setQuantity(badge.getQuantity());
|
||||||
})
|
rewards.add(badgeItem);
|
||||||
.collect(Collectors.toList());
|
}
|
||||||
}
|
|
||||||
|
if (CollectionUtils.isNotEmpty(honorList) && index < honorList.size()) {
|
||||||
/**
|
ActivityRewardPropsDTO honor = honorList.get(index);
|
||||||
* 判断是否为支持的奖励类型.
|
RankingRewardSnapshot.RewardItem honorItem = new RankingRewardSnapshot.RewardItem()
|
||||||
*/
|
.setType(honor.getType())
|
||||||
private boolean isSupportedRewardType(PropsActivityRewardConfigInfoDTO dto) {
|
.setDetailType(honor.getDetailType())
|
||||||
return ("PROPS".equals(dto.getType()) && "AVATAR_FRAME".equals(dto.getDetailType())) ||
|
.setContent(honor.getContent())
|
||||||
("BADGE".equals(dto.getType()) && "HONOR_ACTIVITY".equals(dto.getDetailType()));
|
.setQuantity(honor.getQuantity());
|
||||||
}
|
rewards.add(honorItem);
|
||||||
|
}
|
||||||
/**
|
|
||||||
* 转换为奖励项.
|
return rewards;
|
||||||
*/
|
|
||||||
private RankingRewardSnapshot.RewardItem convertToRewardItem(PropsActivityRewardConfigInfoDTO dto) {
|
|
||||||
return new RankingRewardSnapshot.RewardItem()
|
|
||||||
.setType(dto.getType())
|
|
||||||
.setDetailType(dto.getDetailType())
|
|
||||||
.setContent(dto.getContent())
|
|
||||||
.setQuantity(dto.getQuantity())
|
|
||||||
.setBadgeName(dto.getBadgeName());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取排名范围.
|
|
||||||
*/
|
|
||||||
private String getRankRange(Integer rank) {
|
|
||||||
if (rank == 1) return "1";
|
|
||||||
if (rank == 2) return "2";
|
|
||||||
if (rank == 3) return "3";
|
|
||||||
if (rank <= 10) return "4-10";
|
|
||||||
return "other";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -260,13 +253,12 @@ public class RankingRewardGrantCmdExe {
|
|||||||
ActivityConfigVO activityConfig) {
|
ActivityConfigVO activityConfig) {
|
||||||
List<RankingRewardSnapshot.RankingUserSnapshot> snapshotUsers = currentRankingUsers.stream()
|
List<RankingRewardSnapshot.RankingUserSnapshot> snapshotUsers = currentRankingUsers.stream()
|
||||||
.map(user -> {
|
.map(user -> {
|
||||||
String rankRange = getRankRange(user.getRank());
|
|
||||||
List<RankingRewardSnapshot.RewardItem> rewards = getRewardsForRank(user.getRank(), activityConfig);
|
List<RankingRewardSnapshot.RewardItem> rewards = getRewardsForRank(user.getRank(), activityConfig);
|
||||||
|
|
||||||
return new RankingRewardSnapshot.RankingUserSnapshot()
|
return new RankingRewardSnapshot.RankingUserSnapshot()
|
||||||
.setUserId(user.getUserId())
|
.setUserId(user.getUserId())
|
||||||
.setRank(user.getRank())
|
.setRank(user.getRank())
|
||||||
.setRankRange(rankRange)
|
.setRankRange(String.valueOf(user.getRank()))
|
||||||
.setScore(user.getScore())
|
.setScore(user.getScore())
|
||||||
.setRewards(rewards);
|
.setRewards(rewards);
|
||||||
})
|
})
|
||||||
|
|||||||
@ -74,7 +74,7 @@ public class RankingActivityServiceImpl implements RankingActivityService {
|
|||||||
|
|
||||||
String cachedJson = redisService.getString(cacheKey);
|
String cachedJson = redisService.getString(cacheKey);
|
||||||
if (cachedJson != null) {
|
if (cachedJson != null) {
|
||||||
return JSON.parseArray(cachedJson, RankingUserVO.class);
|
// return JSON.parseArray(cachedJson, RankingUserVO.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
RankingListQueryCmd top4Cmd = new RankingListQueryCmd();
|
RankingListQueryCmd top4Cmd = new RankingListQueryCmd();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user