• SiteAnalyzer, технический и SEO-анализ сайтов

Списывание ОС(Gp)

Держи. Закинешь в сервис AbyssRankUpdateService

loadOrUpdateWeeklyReward метод настрой под себя

Код:
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);
	}

DAO

Код:
	public abstract List<Integer> loadWeeklyRewardPlayers(int rank);
  
	public abstract void updateGp(int playerId, AbyssRank rank);

Sql5

Код:
public static final String SELECT_WEEKLY_REWARD = "SELECT player_id FROM abyss_rank WHERE rank > ?";
	public static final String UPDATE_WEEKLY_REWARD = "UPDATE abyss_rank SET gp = ? WHERE player_id = ?";

	@Override
	public List<Integer> loadWeeklyRewardPlayers(int rank) {
		List<Integer> players = new ArrayList<Integer>();
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = DatabaseFactory.getConnection();
			stmt = con.prepareStatement(SELECT_WEEKLY_REWARD);
			stmt.setInt(1, rank);
			ResultSet resultSet = stmt.executeQuery();
			while (resultSet.next()) {
				int playerId = resultSet.getInt("player_id");
				if (!players.contains(playerId))
					players.add(playerId);
			}
		}
		catch (Exception e) {
			log.error(e.getMessage(), e);
		}
		finally {
			DatabaseFactory.close(stmt, con);
		}
		return players;
	}
   
	@Override
	public void updateGp(int playerId, final AbyssRank rank) {
		Connection con = null;
		try {
			con = DatabaseFactory.getConnection();
			PreparedStatement stmt = con.prepareStatement(UPDATE_WEEKLY_REWARD);
			stmt.setInt(1, rank.getGp());
			stmt.setInt(2, playerId); // Default
			stmt.execute();
			stmt.close();
		}
		catch (SQLException e) {
			log.error("updateGp", e);
		}
		finally {
			DatabaseFactory.close(con);
		}
	}
Спасибо!:beer2-38:
 
Назад
Сверху