NOBLE_VIP冗余定时任务处理
This commit is contained in:
parent
3089fabac0
commit
530cd0567e
@ -42,6 +42,7 @@ import com.red.circle.wallet.inner.model.cmd.GoldReceiptCmd;
|
|||||||
import com.red.circle.wallet.inner.model.dto.WalletReceiptResDTO;
|
import com.red.circle.wallet.inner.model.dto.WalletReceiptResDTO;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@ -55,19 +56,14 @@ import static com.red.circle.common.business.core.enums.SysOriginPlatformEnum.LI
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@ConditionalOnProperty(name = "scheduler.noble-daily-reward", havingValue = "true", matchIfMissing = true)
|
||||||
public class DailyTask {
|
public class DailyTask {
|
||||||
|
|
||||||
private final PropsActivitySendCommon sendPropsManager;
|
|
||||||
private final RedisService redisService;
|
|
||||||
private final PropsActivityRuleConfigService propsActivityRuleConfigService;
|
|
||||||
private final RoomFanVotesActivityCountService roomFanVotesActivityCountService;
|
|
||||||
private final FamilyDailyTaskTriggerRecordService familyDailyTaskTriggerRecordService;
|
private final FamilyDailyTaskTriggerRecordService familyDailyTaskTriggerRecordService;
|
||||||
private final PropsStoreGateway propsStoreGateway;
|
private final PropsStoreGateway propsStoreGateway;
|
||||||
private final RunningWaterUserPropsService runningWaterUserPropsService;
|
private final RunningWaterUserPropsService runningWaterUserPropsService;
|
||||||
private final RunningWaterUserPropsDAO runningWaterUserPropsDAO;
|
|
||||||
private final PropsBackpackService propsBackpackService;
|
private final PropsBackpackService propsBackpackService;
|
||||||
private final WalletGoldClient walletGoldClient;
|
private final WalletGoldClient walletGoldClient;
|
||||||
private final PropsPurchasingCmdExe propsPurchasingCmdExe;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 每日处理数据.
|
* 每日处理数据.
|
||||||
@ -82,139 +78,6 @@ public class DailyTask {
|
|||||||
log.info("exec daily_process_task end with {}",System.currentTimeMillis()-startTime);
|
log.info("exec daily_process_task end with {}",System.currentTimeMillis()-startTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 每日19:31处理 [印度,孟加拉,巴基斯坦] 区域粉丝人气票活动发奖.
|
|
||||||
*/
|
|
||||||
@Scheduled(cron = "0 31 19 1/1 * ?", zone = "Asia/Riyadh")
|
|
||||||
@TaskCacheLock(key = "ROOM_FAN_VOTES_ACTIVITY_IN_TASK", expireSecond = 10000)
|
|
||||||
public void roomFanVotesActivityInTask() {
|
|
||||||
long startTime = System.currentTimeMillis();
|
|
||||||
log.info("exec room_fan_votes_activity_in_task start");
|
|
||||||
log.warn("Start - 每日19:31处理 [印度,孟加拉,巴基斯坦] 区域粉丝人气票活动发奖");
|
|
||||||
// 重置倒计时
|
|
||||||
cacheCountDown(CacheKeysEnum.ROOM_FAN_VOTES_ACTIVITY_IN_COUNT_DOWN);
|
|
||||||
|
|
||||||
SysOriginPlatformEnum.getVoiceSystems().forEach(sysOrigin -> {
|
|
||||||
sendFanVotesReward(sysOrigin.name(), "IN");
|
|
||||||
sendFanVotesReward(sysOrigin.name(), "PK");
|
|
||||||
sendFanVotesReward(sysOrigin.name(), "BD");
|
|
||||||
});
|
|
||||||
|
|
||||||
log.warn("End - 每日19:31处理 [印度,孟加拉,巴基斯坦] 区域粉丝人气票活动发奖");
|
|
||||||
log.info("exec room_fan_votes_activity_in_task end with {}",System.currentTimeMillis()-startTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 每日18:30[印度,孟加拉,巴基斯坦] 重置倒计时,重置榜单.
|
|
||||||
*/
|
|
||||||
@Scheduled(cron = "0 30 18 1/1 * ?", zone = "Asia/Riyadh")
|
|
||||||
@TaskCacheLock(key = "ROOM_FAN_VOTES_ACTIVITY_IN_START_TASK", expireSecond = 10000)
|
|
||||||
public void roomFanVotesActivityInStartTask() {
|
|
||||||
long startTime = System.currentTimeMillis();
|
|
||||||
log.info("exec room_fan_votes_activity_in_start_task start");
|
|
||||||
// 重置倒计时 60分钟
|
|
||||||
long countDown = Duration.between(ZonedDateTimeUtils.nowAsiaRiyadh(),
|
|
||||||
ZonedDateTimeUtils.nowAsiaRiyadh().plusHours(1)).toMillis() - 1000;
|
|
||||||
redisService.setString(CacheKeysEnum.ROOM_FAN_VOTES_ACTIVITY_IN_COUNT_DOWN.name(),
|
|
||||||
countDown, countDown, TimeUnit.MILLISECONDS);
|
|
||||||
|
|
||||||
List<String> codes = List.of("IN", "PK", "BD");
|
|
||||||
|
|
||||||
// 将昨天数据修改历史
|
|
||||||
roomFanVotesActivityCountService.upHistory(codes);
|
|
||||||
|
|
||||||
// 删除昨天之前的数据
|
|
||||||
roomFanVotesActivityCountService.del(codes);
|
|
||||||
log.info("exec room_fan_votes_activity_in_start_task end with {}",System.currentTimeMillis()-startTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 每日16:31处理 [印尼] 区域粉丝人气票活动发奖.
|
|
||||||
*/
|
|
||||||
@Scheduled(cron = "0 31 16 1/1 * ?", zone = "Asia/Riyadh")
|
|
||||||
@TaskCacheLock(key = "ROOM_FAN_VOTES_ACTIVITY_ID_TASK", expireSecond = 10000)
|
|
||||||
public void roomFanVotesActivityIdTask() {
|
|
||||||
long startTime = System.currentTimeMillis();
|
|
||||||
log.info("exec room_fan_votes_activity_id_task start");
|
|
||||||
log.warn("Start - 每日16:31处理 [印尼] 区域粉丝人气票活动发奖");
|
|
||||||
|
|
||||||
// 重置倒计时
|
|
||||||
cacheCountDown(CacheKeysEnum.ROOM_FAN_VOTES_ACTIVITY_ID_COUNT_DOWN);
|
|
||||||
SysOriginPlatformEnum.getVoiceSystems()
|
|
||||||
.forEach(sysOrigin -> sendFanVotesReward(sysOrigin.name(), "ID"));
|
|
||||||
|
|
||||||
log.warn("End - 每日16:31处理 [印尼] 区域粉丝人气票活动发奖");
|
|
||||||
log.info("exec room_fan_votes_activity_id_task end with {}",System.currentTimeMillis()-startTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 每日15:30[印尼] 重置倒计时,重置榜单.
|
|
||||||
*/
|
|
||||||
@Scheduled(cron = "0 30 15 1/1 * ?", zone = "Asia/Riyadh")
|
|
||||||
@TaskCacheLock(key = "ROOM_FAN_VOTES_ACTIVITY_ID_START_TASK", expireSecond = 10000)
|
|
||||||
public void roomFanVotesActivityIdStartTask() {
|
|
||||||
long startTime = System.currentTimeMillis();
|
|
||||||
log.info("exec room_fan_votes_activity_id_start_task start");
|
|
||||||
// 重置倒计时 60分钟
|
|
||||||
long countDown = Duration.between(ZonedDateTimeUtils.nowAsiaRiyadh(),
|
|
||||||
ZonedDateTimeUtils.nowAsiaRiyadh().plusHours(1)).toMillis() - 1000;
|
|
||||||
redisService.setString(CacheKeysEnum.ROOM_FAN_VOTES_ACTIVITY_ID_COUNT_DOWN.name(),
|
|
||||||
countDown, countDown, TimeUnit.MILLISECONDS);
|
|
||||||
|
|
||||||
List<String> codes = List.of("ID");
|
|
||||||
|
|
||||||
// 将昨天数据修改历史
|
|
||||||
roomFanVotesActivityCountService.upHistory(codes);
|
|
||||||
|
|
||||||
// 删除昨天之前的数据
|
|
||||||
roomFanVotesActivityCountService.del(codes);
|
|
||||||
log.info("exec room_fan_votes_activity_id_start_task end with {}",System.currentTimeMillis()-startTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 每日22:31处理 [阿拉伯] 区域粉丝人气票活动发奖.
|
|
||||||
*/
|
|
||||||
@Scheduled(cron = "0 31 22 1/1 * ?", zone = "Asia/Riyadh")
|
|
||||||
@TaskCacheLock(key = "ROOM_FAN_VOTES_ACTIVITY_AR_TASK", expireSecond = 10000)
|
|
||||||
public void roomFanVotesActivityArTask() {
|
|
||||||
long startTime = System.currentTimeMillis();
|
|
||||||
log.info("exec room_fan_votes_activity_ar_task start");
|
|
||||||
log.warn("Start - 每日22:31处理 [阿拉伯] 区域粉丝人气票活动发奖");
|
|
||||||
|
|
||||||
// 重置倒计时
|
|
||||||
cacheCountDown(CacheKeysEnum.ROOM_FAN_VOTES_ACTIVITY_AR_COUNT_DOWN);
|
|
||||||
|
|
||||||
SysOriginPlatformEnum.getVoiceSystems()
|
|
||||||
.forEach(sysOrigin -> sendFanVotesReward(sysOrigin.name(), "AR"));
|
|
||||||
|
|
||||||
log.warn("End - 每日22:31处理 [阿拉伯] 区域粉丝人气票活动发奖");
|
|
||||||
log.info("exec room_fan_votes_activity_ar_task end with {}",System.currentTimeMillis()-startTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 每日21:30[阿拉伯] 重置倒计时,重置榜单.
|
|
||||||
*/
|
|
||||||
@Scheduled(cron = "0 30 21 1/1 * ?", zone = "Asia/Riyadh")
|
|
||||||
@TaskCacheLock(key = "ROOM_FAN_VOTES_ACTIVITY_AR_START_TASK", expireSecond = 10000)
|
|
||||||
public void roomFanVotesActivityArStartTask() {
|
|
||||||
long startTime = System.currentTimeMillis();
|
|
||||||
log.info("exec room_fan_votes_activity_ar_start_task start");
|
|
||||||
// 重置倒计时 60分钟
|
|
||||||
long countDown = Duration.between(ZonedDateTimeUtils.nowAsiaRiyadh(),
|
|
||||||
ZonedDateTimeUtils.nowAsiaRiyadh().plusHours(1)).toMillis() - 1000;
|
|
||||||
redisService.setString(CacheKeysEnum.ROOM_FAN_VOTES_ACTIVITY_AR_COUNT_DOWN.name(),
|
|
||||||
countDown, countDown, TimeUnit.MILLISECONDS);
|
|
||||||
|
|
||||||
List<String> codes = List.of("AR");
|
|
||||||
|
|
||||||
// 将昨天数据修改历史
|
|
||||||
roomFanVotesActivityCountService.upHistory(codes);
|
|
||||||
|
|
||||||
// 删除昨天之前的数据
|
|
||||||
roomFanVotesActivityCountService.del(codes);
|
|
||||||
log.info("exec room_fan_votes_activity_ar_start_task end with {}",System.currentTimeMillis()-startTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 贵族每日金币奖励发放 - 沙特时间每日0点执行.
|
* 贵族每日金币奖励发放 - 沙特时间每日0点执行.
|
||||||
*/
|
*/
|
||||||
@ -446,71 +309,4 @@ public class DailyTask {
|
|||||||
return hasValidRecord ? currentValidEndTime : null;
|
return hasValidRecord ? currentValidEndTime : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendFanVotesReward(String code, String sysOrigin) {
|
|
||||||
|
|
||||||
List<RoomFanVotesActivityCount> votesCounts = roomFanVotesActivityCountService
|
|
||||||
.listCurrent(code, sysOrigin, 10);
|
|
||||||
if (CollectionUtils.isEmpty(votesCounts)) {
|
|
||||||
log.warn("[execute] {} 区域粉丝人气票活动发奖,没有房间获奖", code);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<PropsActivityRuleConfig> resources = listRuleConfigs(sysOrigin);
|
|
||||||
if (CollectionUtils.isEmpty(resources) || resources.size() < 3) {
|
|
||||||
log.warn("[execute] {} 区域粉丝人气票活动发奖,资源数据不对", code);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
log.warn("[execute] {} 区域粉丝人气票活动发奖,获奖数据:{}", code, votesCounts);
|
|
||||||
|
|
||||||
try {
|
|
||||||
for (int index = 0; index < votesCounts.size(); index++) {
|
|
||||||
|
|
||||||
if (index > 2) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
RoomFanVotesActivityCount count = votesCounts.get(index);
|
|
||||||
|
|
||||||
if (Objects.equals(count.getAlreadySent(), Boolean.TRUE)) {
|
|
||||||
log.warn("[execute] {} 区域粉丝人气票活动发奖,已发过奖,无需重复再发:{}", code, count);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
PropsActivityRuleConfig resource = resources.get(index);
|
|
||||||
// 发送奖励
|
|
||||||
sendPropsManager.sendActivityGroup(SendRewardGroup.builder()
|
|
||||||
.trackId(resource.getId())
|
|
||||||
.sysOrigin(SysOriginPlatformEnum.valueOf(sysOrigin))
|
|
||||||
.acceptUserId(count.getUserId())
|
|
||||||
.resourceGroupId(resource.getResourceGroupId())
|
|
||||||
.origin(SendPropsOrigin.ROOM_FAN_VOTES_ACTIVITY)
|
|
||||||
.build());
|
|
||||||
}
|
|
||||||
} catch (Exception ex) {
|
|
||||||
log.warn("[execute] {} 区域粉丝人气票活动发奖: {}", code, ex.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改区域为已经领取
|
|
||||||
roomFanVotesActivityCountService.upAlreadySent(code);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<PropsActivityRuleConfig> listRuleConfigs(String sysOrigin) {
|
|
||||||
|
|
||||||
return propsActivityRuleConfigService.listPlatformByActivityType(
|
|
||||||
sysOrigin,
|
|
||||||
PropsActivityTypeEnum.ROOM_FAN_VOTES_ACTIVITY);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 缓存区域粉丝人气票活动倒计时.
|
|
||||||
*/
|
|
||||||
private void cacheCountDown(CacheKeysEnum keysEnum) {
|
|
||||||
|
|
||||||
long countDown = Duration.between(ZonedDateTimeUtils.nowAsiaRiyadh(),
|
|
||||||
ZonedDateTimeUtils.nowAsiaRiyadh().plusDays(1)).toMillis() - 3660000;
|
|
||||||
redisService.setString(keysEnum.name(), countDown, countDown, TimeUnit.MILLISECONDS);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user