From 766be4ec80de32f4033789d6bbd5ca5cbe310cb4 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Sun, 16 Nov 2025 11:19:55 +0800 Subject: [PATCH] =?UTF-8?q?rankingActivity=E6=B4=BB=E5=8A=A8=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/api/SysActivityConfigClientApi.java | 7 +++++++ .../inner/model/dto/sys/ActivityConfigDTO.java | 5 +++++ .../activity/award/WeeklyRewardsSentManager.java | 11 +++++------ .../app/scheduler/RankingActivityRewardTask.java | 4 ++-- .../database/mongo/entity/sys/ActivityConfig.java | 5 +++++ .../mongo/service/sys/ActivityConfigService.java | 2 ++ .../service/sys/impl/ActivityConfigServiceImpl.java | 13 ++++++++++++- .../sys/SysActivityConfigClientEndpoint.java | 6 ++++++ .../service/sys/SysActivityConfigClientService.java | 2 ++ .../impl/SysActivityConfigClientServiceImpl.java | 5 +++++ 10 files changed, 51 insertions(+), 9 deletions(-) diff --git a/rc-service/rc-inner-api/other-inner/other-inner-api/src/main/java/com/red/circle/other/inner/endpoint/sys/api/SysActivityConfigClientApi.java b/rc-service/rc-inner-api/other-inner/other-inner-api/src/main/java/com/red/circle/other/inner/endpoint/sys/api/SysActivityConfigClientApi.java index c890c3b7..75d0dd0e 100644 --- a/rc-service/rc-inner-api/other-inner/other-inner-api/src/main/java/com/red/circle/other/inner/endpoint/sys/api/SysActivityConfigClientApi.java +++ b/rc-service/rc-inner-api/other-inner/other-inner-api/src/main/java/com/red/circle/other/inner/endpoint/sys/api/SysActivityConfigClientApi.java @@ -100,6 +100,13 @@ public interface SysActivityConfigClientApi { ResultResponse effectiveActivityConf( @RequestBody @Validated ActivityConfigBackQryCmd query); + /** + * 查询有效的活动配置. + */ + @PostMapping("/conf/bytemplate") + ResultResponse effectiveActivityByTemplate( + @RequestParam Long templateId, @RequestParam String activityType); + /** * 获取模版信息. diff --git a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/sys/ActivityConfigDTO.java b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/sys/ActivityConfigDTO.java index 59208065..ac69c580 100644 --- a/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/sys/ActivityConfigDTO.java +++ b/rc-service/rc-inner-api/other-inner/other-inner-model/src/main/java/com/red/circle/other/inner/model/dto/sys/ActivityConfigDTO.java @@ -44,6 +44,11 @@ public class ActivityConfigDTO extends DTO { @JsonSerialize(using = ToStringSerializer.class) private Long templateId; + /** + * 活动类型 + */ + private String activityType; + /** * 开始时间. */ diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/activity/award/WeeklyRewardsSentManager.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/activity/award/WeeklyRewardsSentManager.java index b389a89d..cd3f9b68 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/activity/award/WeeklyRewardsSentManager.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/activity/award/WeeklyRewardsSentManager.java @@ -192,10 +192,10 @@ public class WeeklyRewardsSentManager { } - public void sendLastRankingActivity(Long templateId) { + public void sendLastRankingActivity(Long templateId, String activityType) { try { // 1. 获取活动配置信息 - ActivityConfigDTO activityConfigDTO = getActivityConfig(templateId); + ActivityConfigDTO activityConfigDTO = getActivityConfig(templateId, activityType); // 国王皇后活动单独发放。 long kingQueenTemplateId = getKingQueenTemplateId(); if (activityConfigDTO == null || activityConfigDTO.getTemplateId() == kingQueenTemplateId) { @@ -214,13 +214,12 @@ public class WeeklyRewardsSentManager { String sysOrigin = SysOriginPlatformEnum.LIKEI.name(); // 获取枚举 - RankingActivityType activityType = RankingActivityType.HEROES_DAY; RankingCycleType cycleType = RankingCycleType.WEEKLY; // 4. 获取奖励配置并更新 List kingRewardList = activityConfigDTO.getButOneRewards(); List records = rankingActivityGateway.getRankingList( sysOrigin, - activityType, + RankingActivityType.valueOf(activityType), cycleType, lastWeekDate, null, @@ -276,12 +275,12 @@ public class WeeklyRewardsSentManager { /** * 获取活动配置信息 */ - private ActivityConfigDTO getActivityConfig(Long templateId) { + private ActivityConfigDTO getActivityConfig(Long templateId, String activityType) { try { ActivityConfigBackQryCmd query = new ActivityConfigBackQryCmd(); query.setSysOrigin(SysOriginPlatformEnum.LIKEI.name()); query.setTemplateId(templateId); - return ResponseAssert.requiredSuccess(sysActivityConfigClient.effectiveActivityConf(query)); + return ResponseAssert.requiredSuccess(sysActivityConfigClient.effectiveActivityByTemplate(templateId, activityType)); } catch (Exception e) { log.error("[KingQueen] 获取活动配置失败, 错误信息: {}", e.getMessage(), e); return null; diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/scheduler/RankingActivityRewardTask.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/scheduler/RankingActivityRewardTask.java index e2ffc577..6380dc0f 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/scheduler/RankingActivityRewardTask.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/scheduler/RankingActivityRewardTask.java @@ -27,7 +27,7 @@ public class RankingActivityRewardTask { /** * 每周一 0点0分执行. */ -// @Scheduled(cron = "0 0 0 ? * MON", zone = "Asia/Riyadh") + @Scheduled(cron = "0 0 0 ? * MON", zone = "Asia/Riyadh") @TaskCacheLock(key = "RANKING_ACTIVITY_REWARD_TASK", expireSecond = 86400) public void sendRankingActivityReward() { long startTime = System.currentTimeMillis(); @@ -39,7 +39,7 @@ public class RankingActivityRewardTask { List lastWeekActivities = activityConfigService.listRecentlyEndedActivities("LIKEI", 10); lastWeekActivities.forEach(activityConfig -> { - weeklyRewardsSentManager.sendLastRankingActivity(activityConfig.getTemplateId()); + weeklyRewardsSentManager.sendLastRankingActivity(activityConfig.getTemplateId(), activityConfig.getActivityType()); }); log.warn("========== rankingActivity 活动奖励发放定时任务完成,耗时:{} ms ==========", diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/sys/ActivityConfig.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/sys/ActivityConfig.java index 66649e80..2cf1ab82 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/sys/ActivityConfig.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/entity/sys/ActivityConfig.java @@ -43,6 +43,11 @@ public class ActivityConfig implements Serializable { @JsonSerialize(using = ToStringSerializer.class) private Long templateId; + /** + * 活动类型 + */ + private String activityType; + /** * 开始时间. */ diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/sys/ActivityConfigService.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/sys/ActivityConfigService.java index e392fdcb..115beab4 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/sys/ActivityConfigService.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/sys/ActivityConfigService.java @@ -69,5 +69,7 @@ public interface ActivityConfigService { */ ActivityConfig getEffectiveActivityConf(ActivityConfigBackQryCmd query); + ActivityConfig getShowcaseActivityConf(Long templateId, String activityType); + List listRecentlyEndedActivities(String sysOrigin, Integer limit); } diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/sys/impl/ActivityConfigServiceImpl.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/sys/impl/ActivityConfigServiceImpl.java index 4dd652d5..1df98823 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/sys/impl/ActivityConfigServiceImpl.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/mongo/service/sys/impl/ActivityConfigServiceImpl.java @@ -239,12 +239,23 @@ public class ActivityConfigServiceImpl implements ActivityConfigService { , ActivityConfig.class); } + public ActivityConfig getShowcaseActivityConf(Long templateId, String activityType) { + Criteria criteria = Criteria.where("showcase").is(true); + criteria.and("templateId").is(templateId); + criteria.and("activityType").is(activityType); + + return mongoTemplate.findOne(Query.query(criteria) + .with(Sort.by(Sort.Order.desc("id"))) + .limit(1) + , ActivityConfig.class); + } + @Override public List listRecentlyEndedActivities(String sysOrigin, Integer limit) { Date now = TimestampUtils.now(); Criteria criteria = Criteria.where("sysOrigin").is(sysOrigin) - .and("showcase").is(true) +// .and("showcase").is(true) .and("startTime").lte(now); return mongoTemplate.find( diff --git a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/endpoint/sys/SysActivityConfigClientEndpoint.java b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/endpoint/sys/SysActivityConfigClientEndpoint.java index d4144e0f..8345cf28 100644 --- a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/endpoint/sys/SysActivityConfigClientEndpoint.java +++ b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/endpoint/sys/SysActivityConfigClientEndpoint.java @@ -19,6 +19,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** @@ -96,6 +97,11 @@ public class SysActivityConfigClientEndpoint implements SysActivityConfigClientA return ResultResponse.success(sysActivityConfigClientService.getEffectiveActivityConf(query)); } + @Override + public ResultResponse effectiveActivityByTemplate(Long templateId, String activityType) { + return ResultResponse.success(sysActivityConfigClientService.getShowcaseActivityConf(templateId, activityType)); + } + @Override public ResultResponse> mapByIds(Set collect) { return ResultResponse.success(sysActivityConfigClientService.mapByIds(collect)); diff --git a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/sys/SysActivityConfigClientService.java b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/sys/SysActivityConfigClientService.java index 705134f0..bd66b5e1 100644 --- a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/sys/SysActivityConfigClientService.java +++ b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/sys/SysActivityConfigClientService.java @@ -72,6 +72,8 @@ public interface SysActivityConfigClientService { */ ActivityConfigDTO getEffectiveActivityConf(ActivityConfigBackQryCmd query); + ActivityConfigDTO getShowcaseActivityConf(Long templateId, String activityType); + /** * 获取模版信息. */ diff --git a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/sys/impl/SysActivityConfigClientServiceImpl.java b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/sys/impl/SysActivityConfigClientServiceImpl.java index f0936c88..d9dd47da 100644 --- a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/sys/impl/SysActivityConfigClientServiceImpl.java +++ b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/sys/impl/SysActivityConfigClientServiceImpl.java @@ -96,6 +96,11 @@ public class SysActivityConfigClientServiceImpl implements SysActivityConfigClie return sysActivityConfigInnerConvertor.toActivityConfigDTO(activityConfigService.getEffectiveActivityConf(query)); } + @Override + public ActivityConfigDTO getShowcaseActivityConf(Long templateId, String activityType) { + return sysActivityConfigInnerConvertor.toActivityConfigDTO(activityConfigService.getShowcaseActivityConf(templateId, activityType)); + } + @Override public Map mapByIds(Set collect) { return sysActivityConfigInnerConvertor.toMapActivityTemplateValueDTO(