rankingActivity活动定时任务处理

This commit is contained in:
tianfeng 2025-11-16 11:19:55 +08:00
parent ad095d0b6b
commit 766be4ec80
10 changed files with 51 additions and 9 deletions

View File

@ -100,6 +100,13 @@ public interface SysActivityConfigClientApi {
ResultResponse<ActivityConfigDTO> effectiveActivityConf( ResultResponse<ActivityConfigDTO> effectiveActivityConf(
@RequestBody @Validated ActivityConfigBackQryCmd query); @RequestBody @Validated ActivityConfigBackQryCmd query);
/**
* 查询有效的活动配置.
*/
@PostMapping("/conf/bytemplate")
ResultResponse<ActivityConfigDTO> effectiveActivityByTemplate(
@RequestParam Long templateId, @RequestParam String activityType);
/** /**
* 获取模版信息. * 获取模版信息.

View File

@ -44,6 +44,11 @@ public class ActivityConfigDTO extends DTO {
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long templateId; private Long templateId;
/**
* 活动类型
*/
private String activityType;
/** /**
* 开始时间. * 开始时间.
*/ */

View File

@ -192,10 +192,10 @@ public class WeeklyRewardsSentManager {
} }
public void sendLastRankingActivity(Long templateId) { public void sendLastRankingActivity(Long templateId, String activityType) {
try { try {
// 1. 获取活动配置信息 // 1. 获取活动配置信息
ActivityConfigDTO activityConfigDTO = getActivityConfig(templateId); ActivityConfigDTO activityConfigDTO = getActivityConfig(templateId, activityType);
// 国王皇后活动单独发放 // 国王皇后活动单独发放
long kingQueenTemplateId = getKingQueenTemplateId(); long kingQueenTemplateId = getKingQueenTemplateId();
if (activityConfigDTO == null || activityConfigDTO.getTemplateId() == kingQueenTemplateId) { if (activityConfigDTO == null || activityConfigDTO.getTemplateId() == kingQueenTemplateId) {
@ -214,13 +214,12 @@ public class WeeklyRewardsSentManager {
String sysOrigin = SysOriginPlatformEnum.LIKEI.name(); String sysOrigin = SysOriginPlatformEnum.LIKEI.name();
// 获取枚举 // 获取枚举
RankingActivityType activityType = RankingActivityType.HEROES_DAY;
RankingCycleType cycleType = RankingCycleType.WEEKLY; RankingCycleType cycleType = RankingCycleType.WEEKLY;
// 4. 获取奖励配置并更新 // 4. 获取奖励配置并更新
List<ActivityConfigRewardsDTO> kingRewardList = activityConfigDTO.getButOneRewards(); List<ActivityConfigRewardsDTO> kingRewardList = activityConfigDTO.getButOneRewards();
List<RankingActivityRecord> records = rankingActivityGateway.getRankingList( List<RankingActivityRecord> records = rankingActivityGateway.getRankingList(
sysOrigin, sysOrigin,
activityType, RankingActivityType.valueOf(activityType),
cycleType, cycleType,
lastWeekDate, lastWeekDate,
null, null,
@ -276,12 +275,12 @@ public class WeeklyRewardsSentManager {
/** /**
* 获取活动配置信息 * 获取活动配置信息
*/ */
private ActivityConfigDTO getActivityConfig(Long templateId) { private ActivityConfigDTO getActivityConfig(Long templateId, String activityType) {
try { try {
ActivityConfigBackQryCmd query = new ActivityConfigBackQryCmd(); ActivityConfigBackQryCmd query = new ActivityConfigBackQryCmd();
query.setSysOrigin(SysOriginPlatformEnum.LIKEI.name()); query.setSysOrigin(SysOriginPlatformEnum.LIKEI.name());
query.setTemplateId(templateId); query.setTemplateId(templateId);
return ResponseAssert.requiredSuccess(sysActivityConfigClient.effectiveActivityConf(query)); return ResponseAssert.requiredSuccess(sysActivityConfigClient.effectiveActivityByTemplate(templateId, activityType));
} catch (Exception e) { } catch (Exception e) {
log.error("[KingQueen] 获取活动配置失败, 错误信息: {}", e.getMessage(), e); log.error("[KingQueen] 获取活动配置失败, 错误信息: {}", e.getMessage(), e);
return null; return null;

View File

@ -27,7 +27,7 @@ public class RankingActivityRewardTask {
/** /**
* 每周一 0点0分执行. * 每周一 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) @TaskCacheLock(key = "RANKING_ACTIVITY_REWARD_TASK", expireSecond = 86400)
public void sendRankingActivityReward() { public void sendRankingActivityReward() {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
@ -39,7 +39,7 @@ public class RankingActivityRewardTask {
List<ActivityConfig> lastWeekActivities = List<ActivityConfig> lastWeekActivities =
activityConfigService.listRecentlyEndedActivities("LIKEI", 10); activityConfigService.listRecentlyEndedActivities("LIKEI", 10);
lastWeekActivities.forEach(activityConfig -> { lastWeekActivities.forEach(activityConfig -> {
weeklyRewardsSentManager.sendLastRankingActivity(activityConfig.getTemplateId()); weeklyRewardsSentManager.sendLastRankingActivity(activityConfig.getTemplateId(), activityConfig.getActivityType());
}); });
log.warn("========== rankingActivity 活动奖励发放定时任务完成,耗时:{} ms ==========", log.warn("========== rankingActivity 活动奖励发放定时任务完成,耗时:{} ms ==========",

View File

@ -43,6 +43,11 @@ public class ActivityConfig implements Serializable {
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long templateId; private Long templateId;
/**
* 活动类型
*/
private String activityType;
/** /**
* 开始时间. * 开始时间.
*/ */

View File

@ -69,5 +69,7 @@ public interface ActivityConfigService {
*/ */
ActivityConfig getEffectiveActivityConf(ActivityConfigBackQryCmd query); ActivityConfig getEffectiveActivityConf(ActivityConfigBackQryCmd query);
ActivityConfig getShowcaseActivityConf(Long templateId, String activityType);
List<ActivityConfig> listRecentlyEndedActivities(String sysOrigin, Integer limit); List<ActivityConfig> listRecentlyEndedActivities(String sysOrigin, Integer limit);
} }

View File

@ -239,12 +239,23 @@ public class ActivityConfigServiceImpl implements ActivityConfigService {
, ActivityConfig.class); , 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 @Override
public List<ActivityConfig> listRecentlyEndedActivities(String sysOrigin, Integer limit) { public List<ActivityConfig> listRecentlyEndedActivities(String sysOrigin, Integer limit) {
Date now = TimestampUtils.now(); Date now = TimestampUtils.now();
Criteria criteria = Criteria.where("sysOrigin").is(sysOrigin) Criteria criteria = Criteria.where("sysOrigin").is(sysOrigin)
.and("showcase").is(true) // .and("showcase").is(true)
.and("startTime").lte(now); .and("startTime").lte(now);
return mongoTemplate.find( return mongoTemplate.find(

View File

@ -19,6 +19,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
/** /**
@ -96,6 +97,11 @@ public class SysActivityConfigClientEndpoint implements SysActivityConfigClientA
return ResultResponse.success(sysActivityConfigClientService.getEffectiveActivityConf(query)); return ResultResponse.success(sysActivityConfigClientService.getEffectiveActivityConf(query));
} }
@Override
public ResultResponse<ActivityConfigDTO> effectiveActivityByTemplate(Long templateId, String activityType) {
return ResultResponse.success(sysActivityConfigClientService.getShowcaseActivityConf(templateId, activityType));
}
@Override @Override
public ResultResponse<Map<Long, ActivityTemplateValueDTO>> mapByIds(Set<Long> collect) { public ResultResponse<Map<Long, ActivityTemplateValueDTO>> mapByIds(Set<Long> collect) {
return ResultResponse.success(sysActivityConfigClientService.mapByIds(collect)); return ResultResponse.success(sysActivityConfigClientService.mapByIds(collect));

View File

@ -72,6 +72,8 @@ public interface SysActivityConfigClientService {
*/ */
ActivityConfigDTO getEffectiveActivityConf(ActivityConfigBackQryCmd query); ActivityConfigDTO getEffectiveActivityConf(ActivityConfigBackQryCmd query);
ActivityConfigDTO getShowcaseActivityConf(Long templateId, String activityType);
/** /**
* 获取模版信息. * 获取模版信息.
*/ */

View File

@ -96,6 +96,11 @@ public class SysActivityConfigClientServiceImpl implements SysActivityConfigClie
return sysActivityConfigInnerConvertor.toActivityConfigDTO(activityConfigService.getEffectiveActivityConf(query)); return sysActivityConfigInnerConvertor.toActivityConfigDTO(activityConfigService.getEffectiveActivityConf(query));
} }
@Override
public ActivityConfigDTO getShowcaseActivityConf(Long templateId, String activityType) {
return sysActivityConfigInnerConvertor.toActivityConfigDTO(activityConfigService.getShowcaseActivityConf(templateId, activityType));
}
@Override @Override
public Map<Long, ActivityTemplateValueDTO> mapByIds(Set<Long> collect) { public Map<Long, ActivityTemplateValueDTO> mapByIds(Set<Long> collect) {
return sysActivityConfigInnerConvertor.toMapActivityTemplateValueDTO( return sysActivityConfigInnerConvertor.toMapActivityTemplateValueDTO(