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(
@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)
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 {
// 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<ActivityConfigRewardsDTO> kingRewardList = activityConfigDTO.getButOneRewards();
List<RankingActivityRecord> 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;

View File

@ -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<ActivityConfig> lastWeekActivities =
activityConfigService.listRecentlyEndedActivities("LIKEI", 10);
lastWeekActivities.forEach(activityConfig -> {
weeklyRewardsSentManager.sendLastRankingActivity(activityConfig.getTemplateId());
weeklyRewardsSentManager.sendLastRankingActivity(activityConfig.getTemplateId(), activityConfig.getActivityType());
});
log.warn("========== rankingActivity 活动奖励发放定时任务完成,耗时:{} ms ==========",

View File

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

View File

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

View File

@ -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<ActivityConfig> 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(

View File

@ -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<ActivityConfigDTO> effectiveActivityByTemplate(Long templateId, String activityType) {
return ResultResponse.success(sysActivityConfigClientService.getShowcaseActivityConf(templateId, activityType));
}
@Override
public ResultResponse<Map<Long, ActivityTemplateValueDTO>> mapByIds(Set<Long> collect) {
return ResultResponse.success(sysActivityConfigClientService.mapByIds(collect));

View File

@ -72,6 +72,8 @@ public interface SysActivityConfigClientService {
*/
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));
}
@Override
public ActivityConfigDTO getShowcaseActivityConf(Long templateId, String activityType) {
return sysActivityConfigInnerConvertor.toActivityConfigDTO(activityConfigService.getShowcaseActivityConf(templateId, activityType));
}
@Override
public Map<Long, ActivityTemplateValueDTO> mapByIds(Set<Long> collect) {
return sysActivityConfigInnerConvertor.toMapActivityTemplateValueDTO(