开服冲榜活动,单个排行榜结束保存数据
parent
fce4cfe8c6
commit
998ab5ce14
|
@ -1464,34 +1464,30 @@ public class RedisUtil {
|
|||
*/
|
||||
public String getKey(String type,String key,boolean judge) {
|
||||
String result = null;
|
||||
if (!judge) {
|
||||
result = type + RedisKey.Delimiter_colon + key;
|
||||
} else if (
|
||||
RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) ||
|
||||
if (!judge || RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) ||
|
||||
RedisKey.PIDGIDTEMP.equals(type) || RedisKey.SERVER_WORLDLEVE_INFO.equals(type) ||
|
||||
RedisKey.FAMILY_RED_PACKAGE.equals(type) || "red_remain_list".equals(type) ||
|
||||
RedisKey.FAMILY_RED_PACKAGE_INCRE_ID.equals(type) || /*RedisKey.GUILD_FORCE_RANK.equals(type) ||*/
|
||||
RedisKey.FAMILY_RED_PACKAGE_INCRE_ID.equals(type) || RedisKey.CROSS_SERVER_GROUP.equals(type) ||
|
||||
"red_already_list".equals(type) || RedisKey.CAR_DEALY_GUILD_FIGHT_PEOPLE_NUM.equals(type) ||
|
||||
RedisKey.SERVER_SPLIT_INFO.equals(type) || RedisKey.FAMILY_LOGS.equals(type) ||
|
||||
RedisKey.SERVER_SPLIT_MAIL_INFO.equals(type) || RedisKey.CROSS_ARENA_ROBOT_INFO.equals(type) ||
|
||||
RedisKey.CROSS_SERVICE_ARENA.equals(type) || RedisKey.WORLD_ARENA_RANK_MY_MATH.equals(type) ||
|
||||
RedisKey.WORLD_ARENA_MY_PRON.equals(type) || RedisKey.WORLD_ARENA_RRECORD.equals(type) ||
|
||||
RedisKey.TOKEN.equals(type) || RedisKey.USER_SERVER_INFO.equals(type) ||
|
||||
RedisKey.CDKEY.equals(type) || RedisKey.ServerArenaJob.equals(type) ||
|
||||
RedisKey.CROSS_SERVER_GROUP.equals(type)
|
||||
) {
|
||||
RedisKey.CDKEY.equals(type) || RedisKey.ServerArenaJob.equals(type))
|
||||
{
|
||||
result = type + RedisKey.Delimiter_colon + key;
|
||||
} else if (!RedisKey.newAreaCacChe.contains(type) && !RedisKey.rankCacChe.contains(type)) {
|
||||
}
|
||||
else if (!RedisKey.newAreaCacChe.contains(type) && !RedisKey.rankCacChe.contains(type))
|
||||
{
|
||||
if (key.length() == 8) {
|
||||
Integer serverId = RedisUtil.getInstence().getObject(RedisKey.CUser_ServerId_Key, key, Integer.class, GlobalsDef.REDIS_OVER_TIME_DAY * 10);
|
||||
if (serverId != null && !AreaManager.getInstance().checkServerIdAllowPermit(serverId)) {
|
||||
result = serverId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
|
||||
} else if (serverId != null) {
|
||||
boolean bol = !AreaManager.getInstance().checkServerIdAllowPermit(serverId);
|
||||
if (serverId != null || bol) {
|
||||
result = serverId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) ||
|
||||
RedisKey.PIDGIDTEMP.equals(type) || RedisKey.SERVER_WORLDLEVE_INFO.equals(type) ||
|
||||
RedisKey.SERVER_SPLIT_INFO.equals(type) || RedisKey.GUILD_RED_PACKAGE_RANK.equals(type) ||
|
||||
|
@ -1501,10 +1497,11 @@ public class RedisUtil {
|
|||
RedisKey.CROSS_YUXULUNDAO_RANK.equals(type) || RedisKey.CROSS_YUXULUNDAO_ROBOT_INFO.equals(type) ||
|
||||
RedisKey.CROSS_YUXULUNDAO_RECORD.equals(type) || RedisKey.CROSS_YUXULUNDAO_RANK_PERSON.equals(type)
|
||||
|| RedisKey.CROSS_LINGMAISECRET_INFO.equals(type) || RedisKey.CROSS_LINGMAISECRET_RECORD.equals(type)
|
||||
|| RedisKey.CROSS_LINGMAI_RANK_PERSON.equals(type)
|
||||
) {
|
||||
return type + RedisKey.Delimiter_colon + key;
|
||||
|| RedisKey.CROSS_LINGMAI_RANK_PERSON.equals(type))
|
||||
{
|
||||
result = type + RedisKey.Delimiter_colon + key;
|
||||
}
|
||||
|
||||
if (result == null) {
|
||||
result = AreaManager.areaId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||
|
@ -15,6 +16,7 @@ import config.SChongRank;
|
|||
import config.SChongRankInfo;
|
||||
import config.SErrorCodeEerverConfig;
|
||||
import config.SGlobalActivity;
|
||||
import org.luaj.vm2.ast.Str;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
import util.TimeUtils;
|
||||
|
||||
|
@ -75,6 +77,64 @@ public class OpenServerCompeteRankActivity extends AbstractActivity {
|
|||
return rankEndTime-TimeUtils.now();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断活动是否开启
|
||||
* @param rankType 排行榜类型
|
||||
* @return
|
||||
*/
|
||||
public boolean isOpen(int rankType){
|
||||
SChongRankInfo info = SChongRankInfo.getMap().getOrDefault(id,new HashMap<>()).get(rankType);
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
if (info == null || activity == null){
|
||||
return false;
|
||||
}
|
||||
long startTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),0, 1);
|
||||
long rankStartTime = startTime + info.getOpenTime()*1000L;
|
||||
long rankEndTime = startTime + info.getCloseTime()*1000L;
|
||||
long now = TimeUtils.now();
|
||||
|
||||
return now >= rankStartTime && now < rankEndTime;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取发送时间: 单位/秒
|
||||
* @param rankType 排行榜类型
|
||||
* @return
|
||||
*/
|
||||
public int getCleanRankTime(int rankType){
|
||||
SChongRankInfo info = SChongRankInfo.getMap().getOrDefault(id,new HashMap<>()).get(rankType);
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
if (info == null || activity == null){
|
||||
return 0;
|
||||
}
|
||||
int endTime = (int)(ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),0, 2)/1000);
|
||||
return endTime-TimeUtils.nowInt();
|
||||
}
|
||||
|
||||
/**
|
||||
* 备份排行榜
|
||||
* @param rankType
|
||||
* @param rankInfo
|
||||
*/
|
||||
private boolean backRank(int rankType,Set<ZSetOperations.TypedTuple<String>> rankInfo){
|
||||
try {
|
||||
SChongRankInfo chongRankInfo = SChongRankInfo.getMap().get(id).get(rankType);
|
||||
if (chongRankInfo == null){
|
||||
return false;
|
||||
}
|
||||
AbstractRank backRank = RankContext.getRankEnum(chongRankInfo.getBackRankType());
|
||||
|
||||
String key = RedisUtil.getInstence().getKey(backRank.getRedisKey(),"");
|
||||
RedisUtil.getInstence().zsetAddAall(key,rankInfo);
|
||||
int time = getCleanRankTime(rankType);
|
||||
RedisUtil.getInstence().expire(key,time);
|
||||
}catch (Exception e){
|
||||
LOGGER.error("===========================冲榜发奖备份排行榜报错:{}-{}-{}",id,rankType,e.getMessage());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发奖
|
||||
* @param rankType
|
||||
|
@ -85,9 +145,15 @@ public class OpenServerCompeteRankActivity extends AbstractActivity {
|
|||
AbstractRank abstractRank = RankContext.getRankEnum(rankType);
|
||||
Set<ZSetOperations.TypedTuple<String>> rankInfo = abstractRank.getRankByKey("", 0, -1);
|
||||
if (rankInfo == null){
|
||||
LOGGER.info("===========================冲榜发奖提前结束,排行榜为null:{}-{}",id,rankType);
|
||||
LOGGER.error("===========================冲榜发奖提前结束,排行榜数据为null:{}-{}",id,rankType);
|
||||
return;
|
||||
}
|
||||
// 备份排行榜
|
||||
boolean backRankBol = backRank(rankType, rankInfo);
|
||||
if (!backRankBol){
|
||||
LOGGER.error("===========================冲榜发奖提前结束,备份排行榜失败:{}-{}",id,rankType);
|
||||
}
|
||||
// 遍历发奖
|
||||
int rank = 1;
|
||||
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
|
||||
int uid = Integer.parseInt(item.getValue());
|
||||
|
|
|
@ -40,6 +40,14 @@ public enum RankEnum {
|
|||
SOUL_SEAL_RANK(103, RedisKey.SOUL_SEAL_RANK,MainLevelRank::new,false),//魂印排行榜
|
||||
|
||||
|
||||
//***************************************** 以下开服冲榜活动保留数据排行榜 *****************************************//
|
||||
BACK_HERO_STAR_RANK(100101,"BACK_HERO_STAR_RANK",MainLevelRank::new,false),//英雄星级排行榜
|
||||
BACK_MAIN_LEVEL_RANK(1003,"BACK_MAIN_LEVEL_RANK", MainLevelRank::new,false),//关卡排行榜
|
||||
BACK_FORCE_CURR_RANK(10022,"BACK_FORCE_CURR_RANK",ForceCurrRank::new,false),//战力排行榜
|
||||
BACK_EQUIP_SCORE_RANK(100102, "BACK_EQUIP_SCORE_RANK",MainLevelRank::new,false),//装备排行榜
|
||||
BACK_SOUL_SEAL_RANK(100103, "BACK_SOUL_SEAL_RANK",MainLevelRank::new,false),//魂印排行榜
|
||||
BACK_MONSTER_ATTACK_RANK(1004,"BACK_MONSTER_ATTACK_RANK",MonsterAttackRank::new,false),//心魔排行榜
|
||||
BACK_SHAN_HE_SHE_JI_STAR_RANK(10030,"BACK_SHAN_HE_SHE_JI_STAR_RANK",ShanHeSheJiTuStarRank::new,false),//山河社稷星星排行榜
|
||||
|
||||
//***************************************** 以下为跨服排行榜 *****************************************//
|
||||
GUILD_RED_PACKAGE_RANK(13,RedisKey.GUILD_RED_PACKAGE_RANK,GuildRedPackageRank::new,true),//param1:红包总价格 param2:无 param3:无
|
||||
|
|
|
@ -13,6 +13,8 @@ public class SChongRankInfo implements BaseConfig {
|
|||
|
||||
private int rankType;
|
||||
|
||||
private int backRankType;
|
||||
|
||||
private int globalActivity;
|
||||
|
||||
private int openTime;
|
||||
|
@ -51,7 +53,11 @@ public class SChongRankInfo implements BaseConfig {
|
|||
return rankType;
|
||||
}
|
||||
|
||||
public int getOpenTime() {
|
||||
public int getBackRankType() {
|
||||
return backRankType;
|
||||
}
|
||||
|
||||
public int getOpenTime() {
|
||||
return openTime;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue