public void rewardWeeklyUpdate() {
CronService.getInstance().schedule(new Runnable() {
public void run() {
List<Integer> rankPlayers = DAOManager.getDAO(AbyssRankDAO.class).loadWeeklyRewardPlayers(9);
loadOrUpdateWeeklyReward(rankPlayers);
}
}, RankingConfig.WEEKLY_REWARDS);
}
private void loadOrUpdateWeeklyReward(List<Integer> rankPlayers) {
for (Integer playerId : rankPlayers) {
AbyssRank rank = DAOManager.getDAO(AbyssRankDAO.class).loadAbyssRank(playerId);
Player player = World.getInstance().findPlayer(playerId);
int medalReward = rank.getRank().getMedalReward();
int apReward = rank.getRank().getAbyssPointReward();
String name = DAOManager.getDAO(PlayerDAO.class).getPlayerNameByObjId(playerId);
// Lost Glory point's
int rankId = rank.getRank().getId();
if ((rankId > 14) && (rank.getGp() > 0) && (rank.getWeeklyGP() < 12550)) {
rank.setGP(rank.getGp() - 5210);
DAOManager.getDAO(AbyssRankDAO.class).updateGp(playerId, rank);
SystemMailService.getInstance().sendMail("Система", name, "Рейтинг бездны", "Требуемый еженедельный вклад не внесен. Списано 5210 очков славы.", 0, 0, 0, 0, LetterType.NORMAL);
}
else if ((rankId > 9 && rankId < 15) && (rank.getGp() > 0) && (rank.getWeeklyGP() < 1450)) {
rank.setGP(0);
DAOManager.getDAO(AbyssRankDAO.class).updateGp(playerId, rank);
SystemMailService.getInstance().sendMail("Система", name, "Рейтинг бездны", "Требуемый еженедельный вклад не внесен. Очки славы обнулены.", 0, 0, 0, 0, LetterType.NORMAL);
}
}
AbyssRankUpdateService.this.performUpdate();
ThreadPoolManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
rankPlayers.clear();
}
}, 2000);
}
public void scheduleUpdate() {
ThreadPoolManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
log.info("AbyssRankUpdateService: ranks update scheduled.");
ServerVariablesDAO dao = DAOManager.getDAO(ServerVariablesDAO.class);
int nextTime = dao.load("abyssRankUpdate");
if (nextTime < System.currentTimeMillis() / 1000L)
performUpdate();
CronService.getInstance().schedule(new Runnable() {
public void run() {
AbyssRankUpdateService.this.performUpdate();
}
}, RankingConfig.TOP_RANKING_UPDATE_RULE, true);
}
}, 1000);
}
public void performUpdate() {
long startTime = System.currentTimeMillis();
updateLimitedRanks();
AbyssRankingCache.getInstance().reloadRankings();
Long.valueOf((System.currentTimeMillis() - startTime) / 1000L);
}