开服冲榜活动,单个排行榜结束保存数据
parent
fce4cfe8c6
commit
998ab5ce14
|
@ -1464,34 +1464,30 @@ public class RedisUtil {
|
||||||
*/
|
*/
|
||||||
public String getKey(String type,String key,boolean judge) {
|
public String getKey(String type,String key,boolean judge) {
|
||||||
String result = null;
|
String result = null;
|
||||||
if (!judge) {
|
if (!judge || RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) ||
|
||||||
result = type + RedisKey.Delimiter_colon + key;
|
|
||||||
} else if (
|
|
||||||
RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) ||
|
|
||||||
RedisKey.PIDGIDTEMP.equals(type) || RedisKey.SERVER_WORLDLEVE_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.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) ||
|
"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_INFO.equals(type) || RedisKey.FAMILY_LOGS.equals(type) ||
|
||||||
RedisKey.SERVER_SPLIT_MAIL_INFO.equals(type) || RedisKey.CROSS_ARENA_ROBOT_INFO.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.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.WORLD_ARENA_MY_PRON.equals(type) || RedisKey.WORLD_ARENA_RRECORD.equals(type) ||
|
||||||
RedisKey.TOKEN.equals(type) || RedisKey.USER_SERVER_INFO.equals(type) ||
|
RedisKey.TOKEN.equals(type) || RedisKey.USER_SERVER_INFO.equals(type) ||
|
||||||
RedisKey.CDKEY.equals(type) || RedisKey.ServerArenaJob.equals(type) ||
|
RedisKey.CDKEY.equals(type) || RedisKey.ServerArenaJob.equals(type))
|
||||||
RedisKey.CROSS_SERVER_GROUP.equals(type)
|
{
|
||||||
) {
|
|
||||||
result = type + RedisKey.Delimiter_colon + key;
|
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) {
|
if (key.length() == 8) {
|
||||||
Integer serverId = RedisUtil.getInstence().getObject(RedisKey.CUser_ServerId_Key, key, Integer.class, GlobalsDef.REDIS_OVER_TIME_DAY * 10);
|
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)) {
|
boolean bol = !AreaManager.getInstance().checkServerIdAllowPermit(serverId);
|
||||||
result = serverId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
|
if (serverId != null || bol) {
|
||||||
} else if (serverId != null) {
|
|
||||||
result = serverId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
|
result = serverId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) ||
|
if (RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) ||
|
||||||
RedisKey.PIDGIDTEMP.equals(type) || RedisKey.SERVER_WORLDLEVE_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) ||
|
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_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_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_LINGMAISECRET_INFO.equals(type) || RedisKey.CROSS_LINGMAISECRET_RECORD.equals(type)
|
||||||
|| RedisKey.CROSS_LINGMAI_RANK_PERSON.equals(type)
|
|| RedisKey.CROSS_LINGMAI_RANK_PERSON.equals(type))
|
||||||
) {
|
{
|
||||||
return type + RedisKey.Delimiter_colon + key;
|
result = type + RedisKey.Delimiter_colon + key;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
result = AreaManager.areaId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
|
result = AreaManager.areaId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.ljsd.jieling.logic.activity;
|
package com.ljsd.jieling.logic.activity;
|
||||||
|
|
||||||
|
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||||
import com.ljsd.jieling.globals.Global;
|
import com.ljsd.jieling.globals.Global;
|
||||||
import com.ljsd.jieling.jbean.ActivityMission;
|
import com.ljsd.jieling.jbean.ActivityMission;
|
||||||
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||||
|
@ -15,6 +16,7 @@ import config.SChongRank;
|
||||||
import config.SChongRankInfo;
|
import config.SChongRankInfo;
|
||||||
import config.SErrorCodeEerverConfig;
|
import config.SErrorCodeEerverConfig;
|
||||||
import config.SGlobalActivity;
|
import config.SGlobalActivity;
|
||||||
|
import org.luaj.vm2.ast.Str;
|
||||||
import org.springframework.data.redis.core.ZSetOperations;
|
import org.springframework.data.redis.core.ZSetOperations;
|
||||||
import util.TimeUtils;
|
import util.TimeUtils;
|
||||||
|
|
||||||
|
@ -75,6 +77,64 @@ public class OpenServerCompeteRankActivity extends AbstractActivity {
|
||||||
return rankEndTime-TimeUtils.now();
|
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
|
* @param rankType
|
||||||
|
@ -85,9 +145,15 @@ public class OpenServerCompeteRankActivity extends AbstractActivity {
|
||||||
AbstractRank abstractRank = RankContext.getRankEnum(rankType);
|
AbstractRank abstractRank = RankContext.getRankEnum(rankType);
|
||||||
Set<ZSetOperations.TypedTuple<String>> rankInfo = abstractRank.getRankByKey("", 0, -1);
|
Set<ZSetOperations.TypedTuple<String>> rankInfo = abstractRank.getRankByKey("", 0, -1);
|
||||||
if (rankInfo == null){
|
if (rankInfo == null){
|
||||||
LOGGER.info("===========================冲榜发奖提前结束,排行榜为null:{}-{}",id,rankType);
|
LOGGER.error("===========================冲榜发奖提前结束,排行榜数据为null:{}-{}",id,rankType);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// 备份排行榜
|
||||||
|
boolean backRankBol = backRank(rankType, rankInfo);
|
||||||
|
if (!backRankBol){
|
||||||
|
LOGGER.error("===========================冲榜发奖提前结束,备份排行榜失败:{}-{}",id,rankType);
|
||||||
|
}
|
||||||
|
// 遍历发奖
|
||||||
int rank = 1;
|
int rank = 1;
|
||||||
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
|
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
|
||||||
int uid = Integer.parseInt(item.getValue());
|
int uid = Integer.parseInt(item.getValue());
|
||||||
|
|
|
@ -40,6 +40,14 @@ public enum RankEnum {
|
||||||
SOUL_SEAL_RANK(103, RedisKey.SOUL_SEAL_RANK,MainLevelRank::new,false),//魂印排行榜
|
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:无
|
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 rankType;
|
||||||
|
|
||||||
|
private int backRankType;
|
||||||
|
|
||||||
private int globalActivity;
|
private int globalActivity;
|
||||||
|
|
||||||
private int openTime;
|
private int openTime;
|
||||||
|
@ -51,7 +53,11 @@ public class SChongRankInfo implements BaseConfig {
|
||||||
return rankType;
|
return rankType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getOpenTime() {
|
public int getBackRankType() {
|
||||||
|
return backRankType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getOpenTime() {
|
||||||
return openTime;
|
return openTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue