魂印解锁条件修改,redis模糊查询删除

master_otnew
PC-202302260912\Administrator 2023-12-04 15:59:53 +08:00
parent 0d7d840f20
commit e98e3ea8d1
7 changed files with 1416 additions and 1453 deletions

View File

@ -7,20 +7,11 @@ import com.ljsd.jieling.db.mongo.core.ServerAreaInfo;
import com.ljsd.jieling.db.mongo.core.ServerAreaInfoManager;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.DeathPathLogic;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.util.ItemUtil;
import config.SErrorCodeEerverConfig;
import io.netty.util.internal.ConcurrentSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.ZSetOperations;
import util.TimeUtils;
import java.util.HashMap;
@ -91,6 +82,10 @@ public class AreaManager {
}
/**
*
* @return
*/
public boolean processAddServerAreaIsChange() {
try {
if(!isInit.get()){
@ -107,7 +102,6 @@ public class AreaManager {
if (serverArenaInfoManagerCache != null) {
serverAreaInfoMapFromDBCache = serverArenaInfoManagerCache.getServerAreaInfoMap();
}
boolean needAddRobotInRank = false;
ServerAreaInfo mineServerAreaInfo = null;
Map<Integer, ServerAreaInfo> serverAreaInfoMapFromDB = serverArenaInfoManager.getServerAreaInfoMap();
for (ServerAreaInfo serverAreaInfoDb : serverAreaInfoMapFromDB.values()) {
@ -229,91 +223,91 @@ public class AreaManager {
}
private void processAllRank(){
try {
//合并排行榜
//查找本服所有排行榜
Set<String> keys = RedisUtil.getInstence().getDimKey(areaId+ "*" + "RANK*",200);
keys.forEach(k->{
Set<ZSetOperations.TypedTuple<String>> set= RedisUtil.getInstence().getAllZsetRange(k);
String newKey = k;
if(k.startsWith(String.valueOf(areaId))){
int length =k.length();
newKey = newAreaId+k.substring(String.valueOf(areaId).length(),length);
}
if(null != set){
for(ZSetOperations.TypedTuple<String> item : set){
String id = item.getValue();
Double score = item.getScore();
RedisUtil.getInstence().zsetAddOne(newKey,id,score);
}
}
LOGGER.info("合并排行榜"+k+" --> "+newKey);
});
}catch (Exception e){
LOGGER.info("合并排行榜异常" + e.toString());
}
// try {
// //合并排行榜
//
// //查找本服所有排行榜
// Set<String> keys = RedisUtil.getInstence().getDimKey(areaId+ "*" + "RANK*",200);
// keys.forEach(k->{
//
// Set<ZSetOperations.TypedTuple<String>> set= RedisUtil.getInstence().getAllZsetRange(k);
// String newKey = k;
// if(k.startsWith(String.valueOf(areaId))){
// int length =k.length();
// newKey = newAreaId+k.substring(String.valueOf(areaId).length(),length);
// }
// if(null != set){
// for(ZSetOperations.TypedTuple<String> item : set){
// String id = item.getValue();
// Double score = item.getScore();
// RedisUtil.getInstence().zsetAddOne(newKey,id,score);
// }
// }
// LOGGER.info("合并排行榜"+k+" --> "+newKey);
// });
// }catch (Exception e){
// LOGGER.info("合并排行榜异常" + e.toString());
// }
}
private void processChangeName(){
try {
//合并名称
//查找本服所有名称
Set<String> keys = RedisUtil.getInstence().getDimKey(areaId+ ":" + RedisKey.C_User_Name_Key+"*",200);
keys.forEach(k->{
Object oldUserId = RedisUtil.getInstence().get(k);
if (oldUserId == null){
return;
}
int oldUid = Integer.parseInt(oldUserId.toString());
String newKey = k;
if(k.startsWith(String.valueOf(areaId))){
int length =k.length();
newKey = newAreaId+k.substring(String.valueOf(areaId).length(),length);
}
Object extUserId = RedisUtil.getInstence().get(newKey);
String tempName = newKey;
if(extUserId!=null){
int i=0;
while (i<1000&&extUserId!=null){
i++;
tempName = newKey+"_S"+i;
extUserId = RedisUtil.getInstence().get(tempName);
}
try {
//修改玩家名称 发送邮件
User oldUser = UserManager.getUser(oldUid);
if (null == oldUser) {
return ;
}
PlayerManager playerInfoManager = oldUser.getPlayerInfoManager();
playerInfoManager.setNickName(playerInfoManager.getNickName()+"_S"+i);
CrossServiceLogic.getInstance().saveBasicPlayerToRedis(oldUser);//改名
//sendmail
String title = SErrorCodeEerverConfig.getI18NMessage("hefugaiming_mail_geren_title");
String content = SErrorCodeEerverConfig.getI18NMessage("hefugaiming_mail_geren_txt");
int[][] values = new int[1][2];
values[0][0] = Global.CHANGENAME;
values[0][1] = 1;
String mailReward = ItemUtil.getMailReward(values);
int nowTime = (int) (TimeUtils.now() / 1000);
MailLogic.getInstance().sendMail(oldUid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
}catch (Exception e){
LOGGER.info("合并命名异常" + e.toString());
}
}
RedisUtil.getInstence().set(tempName, String.valueOf(oldUid),RedisKey.REDIS_OVER_FOREVER);
});
}catch (Exception e){
LOGGER.info("合并命名异常" + e.toString());
}
// try {
// //合并名称
//
// //查找本服所有名称
// Set<String> keys = RedisUtil.getInstence().getDimKey(areaId+ ":" + RedisKey.C_User_Name_Key+"*",200);
// keys.forEach(k->{
//
// Object oldUserId = RedisUtil.getInstence().get(k);
// if (oldUserId == null){
// return;
// }
// int oldUid = Integer.parseInt(oldUserId.toString());
//
// String newKey = k;
// if(k.startsWith(String.valueOf(areaId))){
// int length =k.length();
// newKey = newAreaId+k.substring(String.valueOf(areaId).length(),length);
// }
// Object extUserId = RedisUtil.getInstence().get(newKey);
// String tempName = newKey;
// if(extUserId!=null){
// int i=0;
// while (i<1000&&extUserId!=null){
// i++;
// tempName = newKey+"_S"+i;
// extUserId = RedisUtil.getInstence().get(tempName);
// }
// try {
// //修改玩家名称 发送邮件
// User oldUser = UserManager.getUser(oldUid);
// if (null == oldUser) {
// return ;
// }
// PlayerManager playerInfoManager = oldUser.getPlayerInfoManager();
// playerInfoManager.setNickName(playerInfoManager.getNickName()+"_S"+i);
// CrossServiceLogic.getInstance().saveBasicPlayerToRedis(oldUser);//改名
// //sendmail
// String title = SErrorCodeEerverConfig.getI18NMessage("hefugaiming_mail_geren_title");
// String content = SErrorCodeEerverConfig.getI18NMessage("hefugaiming_mail_geren_txt");
// int[][] values = new int[1][2];
// values[0][0] = Global.CHANGENAME;
// values[0][1] = 1;
// String mailReward = ItemUtil.getMailReward(values);
// int nowTime = (int) (TimeUtils.now() / 1000);
// MailLogic.getInstance().sendMail(oldUid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
// }catch (Exception e){
// LOGGER.info("合并命名异常" + e.toString());
// }
// }
//
// RedisUtil.getInstence().set(tempName, String.valueOf(oldUid),RedisKey.REDIS_OVER_FOREVER);
//
// });
// }catch (Exception e){
// LOGGER.info("合并命名异常" + e.toString());
// }
}

View File

@ -1336,6 +1336,7 @@ public class RedisUtil {
}
// 保存需要清理的key
saveRemoveKeyHandler(result);
LOGGER.info("获取rediskey{}-{}-{}",type,key,judge);
return result;
}

View File

@ -4,7 +4,6 @@ import com.ljsd.GameApplication;
import com.ljsd.fight.CheckFight;
import com.ljsd.jieling.core.CoreLogic;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.mongo.AreaManager;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
@ -59,7 +58,7 @@ public class MinuteTask extends Thread {
//TODO 每分钟逻辑通过监听事件处理 已经迁移活动和热更新
Poster.getPoster().dispatchEvent(new MinuteTaskEvent());
AreaManager.getInstance().processAddServerAreaIsChange();
// AreaManager.getInstance().processAddServerAreaIsChange();
MessageUtil.checkAndSendMsg();
STableManager.updateTablesWithTableNames(true);
//计算世界等级
@ -129,8 +128,6 @@ public class MinuteTask extends Thread {
QuestionLogic.getInstence().checkQuestion();
MailLogic.getInstance().checkReadyToMail();
CrossDeathPathLogic.getInstance().sendChangeIndicationByCross();
//TODO
//CrossYuxulundaoLogic.getInstance().initRank();
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("Exception::=>{}", e.toString());
@ -159,6 +156,13 @@ public class MinuteTask extends Thread {
e.printStackTrace();
}
try {
GuilidManager.checkNeedReleaseGuild();
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("Exception::=>{}", e.toString());
}
try {
GuildFightLogic.minuteCheckForCarFight();
} catch (Exception e) {

View File

@ -1,7 +1,6 @@
package com.ljsd.jieling.thread.task;
import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.dao.GuilidManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -15,7 +14,6 @@ public class SecondsTask extends Thread {
@Override
public void run() {
try {
GuilidManager.checkNeedReleaseGuild();
GlobalDataManaager.getInstance().checkSystemFunctioIsOpen();
// ChampionshipLogic.minuteCheck(false);
} catch (Exception e) {

View File

@ -1,5 +1,6 @@
package config;
import manager.STableManager;
import manager.Table;
import java.util.Map;
@ -12,13 +13,14 @@ public class SEquipSignSetting implements BaseConfig {
private int slotPosition;
private int[] openRules;
public static Map<Integer, SEquipSignSetting> signSettingMap;
@Override
public void init() throws Exception {
}
public static Map<Integer, SEquipSignSetting> getMap(){
return STableManager.getConfig(SEquipSignSetting.class);
}
public int getId() {
return id;

View File

@ -22,110 +22,59 @@ public class SSpecialConfig implements BaseConfig {
private String value;
public static final String PHONE_BINDING = "Phone_Binding";
public static final String DIAL_PERSCORE = "DIAL_PERSCORE";//探宝转盘每转一次获得的积分
public static final String MANDATORY_ASTROLOGICAL = "Mandatory_Astrological";//强制占星跳到第四颗星
public static final String ARENA_RANKINGSHOWNUM = "Arena_RankingShowNum";//竞技场排行榜上榜显示排名
public static final String TRIAL_RANKINGSHOWNUM = "Trial_RankingShowNum";//试炼副本排行榜上榜显示排名
public static final String BEASTS_RANKINGSHOWNUM = "Beasts_RankingShowNum";//兽潮来袭排行榜上榜显示排名
public static final String ADVENTURE_RANKINGSHOWNUM = "Adventure_RankingShowNum";//外敌入侵排行榜上榜显示排名
public static final String COMBAT_RANKINGSHOWNUM = "Combat_RankingShowNum";//战力排行榜上榜显示排名
public static final String EQUIPSIGN_LIMIT = "EquipSign_limit";//仓库中的魂印上限
public static final String EquipTalismana_limit = "EquipTalismana_limit";//仓库中的法宝上限
public static final String FRIENDAMOUNT_LIMIT = "FriendAmount_limit";//好友上限
public static final String FRIENDAPPLYAMOUNT_LIMIT = "FriendApplyAmount_limit";//好友申请上限
public static final String Friend_Gift = "Friend_Gift";//好友赠送友情点
public static final String Level_RankingShowNum = "Level_RankingShowNum";//关卡排行
public static final String FriendBlackAmount_limit = "FriendBlackAmount_limit";//黑名单上限
public static final String MaxXiuweiLevel = "MaxXiuweiLevel";//修为等级最大值
public static final String FightForPerXiuweiLevel = "FightForPerXiuweiLevel";//修为单级别所需战力
public static final String FightForPerXiuweiForces = "FightForPerXiuweiForces";//修为各阶段最大战力
public static final String DailyNumForStarsOfHardStage = "DailyNumForStarsOfHardStage";//每有1困难关卡星级每日可领取玉衡龙魂丹数量
public static final String BasicNumOfHardStage = "BasicNumOfHardStage";//每日领取玉衡龙魂丹基础数量
public static final String lamp_lottery_content_parm = "lamp_lottery_content_parm";//资质13及以上——系统消息
public static final String lamp_rankup_hero_content_parm = "lamp_rankup_hero_content_parm";//10星及以上——系统消息
public static final String lamp_awaken_hero_content_parm = "lamp_awaken_hero_content_parm";//英雄觉醒——系统消息
public static final String lamp_lottery_differ_content_parm = "lamp_lottery_differ_content_parm";//5及以上——系统消息
// public static final String lamp_activate_differ_content_parm = "lamp_activate_differ_content_parm";//5及以上——系统消息
public static final String lamp_rankup_differ_content_parm = "lamp_rankup_differ_content_parm";//10阶以上——系统消息
public static final String lamp_lottery_equip_content_parm = "lamp_lottery_equip_content_parm";//5及以上——系统消息
public static final String lamp_lottery_equipsign_content_parm = "lamp_lottery_equipsign_content_parm";//5及以上——系统消息
public static final String lamp_lottery_equiptalisman_content_parm = "lamp_lottery_equiptalisman_content_parm";//5及以上——系统消息
public static final String lamp_rankup_equipsign_content_parm = "lamp_rankup_equipsign_content_parm";//5级及以上——系统消息
public static final String lamp_rankup_equiptalisman_content_parm = "lamp_rankup_equiptalisman_content_parm";//8星及以上——系统消息
public static final String SUNLONG_DAILYTASKS = "Sunlong_DailyTasks";//孙龙的宝藏每日、每周、每月任务个数
public static final String SUNLONG_COST = "Sunlong_Cost";//孙龙的宝藏购买等级
public static final String SUNLONG_INTEGRAL = "Sunlong_Integral";//孙龙的宝藏每日积分礼包
public static final String SUNLONG_REWARD = "Sunlong_Reward";//青龙秘宝每周补给
public static final String LAMP_TEXT_SPEED = "lamp_text_speed";//跑马灯速度
public static final String TIME_LIMIT_RECRUITMENT_INTEGRAL = "time_limit_recruitment_integral";//限时抽卡一次积分
public static final String TIME_LIMIT_RECRUITMENT_FREEINTEGRAL = "time_limit_recruitment_FreeIntegral";//东海寻仙每获得150分赠送一次免费招募
public static final String HERO_RETURN_PERCENT = "hero_return_percent";//回溯返还材料比例 实际百分比为填写数值/10000
public static final String HERO_SACRIFICE_PERCENT = "hero_sacrifice_percent";//献祭返还材料比例 实际百分比为填写数值/10000
public static final String HERO_RESOLVE_LICENCE = "hero_resolve_licence";//分解英雄时,处于编队中会有提示
public static final String Sign_Location = "Sign_Location";//魂印位置开启条件(玩家等级)
public static final String Gold_touch = "Gold_touch";//三个点金对应vip
public static final String Gold_touch_refresh = "Gold_touch_refresh";//点金刷新时间
public static final String GUILD_TECHNOLOGY_RETURN_PERCENT = "guild_technology_return_percent";//公会技能重置返还材料比例 实际百分比为填写数值/10000
public static final String LOTTERY_ENERGY_COST = "lottery_energy_cost";//钻石抽积攒仙缘能量(原非酋气息)抽奖消耗
public static final String EXPEDITION_REBORN = "expedition_reborn";// 大闹天宫复活道具id
public static final String REWARD_OF_WORSHIP = "reward_of_worship";//膜拜获得金币奖励
public static final String DISCOUNT_LEVEL= "discount_level";//限时折扣推送等级#推送间隔等级
public static final String GUILD_WAR_ISOPEN = "Guild_war_isopen";//老公会战是否开启
public static final String LUCKYTURNDAILYLIMIT = "LuckyTurnDailyLimit";//幸运探宝每日上限
public static final String HONGMENG_LATTICE_WAIT_TIME = "Hongmeng_Lattice_Waitingtime";//鸿蒙阵每个格子冷却时间s
public static final String HONGMENG_LATTICE_PRICE = "Hongmeng_Lattice_Price";//鸿蒙阵格子刷新价格s
public static final String HONGMENG_UPGRADE_LIMIT = "Hongmeng_upgrade_limit";//鸿蒙阵升级开启限制
public static final String HONGMENG_ONEHERO_OPENLEVEL = "Hongmeng_Onehero_OpenLevel";//鸿蒙阵每个觉醒神将提升的等级
public static final String HONGMENG_GUARD_LIMIT = "Hongmeng_Guard_limit";//鸿蒙守卫|升级|突破|升星|觉醒|神将归元|恭送神将|被吞噬|法宝强化|法宝归元|强化宝物|神将置换
public static final String HONGMENG_TAKE_LIMIT = "Hongmeng_Take_limit";//共鸣神将|升级|突破|升星|觉醒|神将归元|恭送神将|被吞噬|法宝强化|法宝归元|强化宝物|神将置换
public static final String HONGMENG_MESSENGER_LIMIT = "Hongmeng_Messenger_limit";//鸿蒙使者|升级|突破|升星|觉醒|神将归元|恭送神将|被吞噬|法宝强化|法宝归元|强化宝物|神将置换
public static final String REPLACE_ITEM_ID = "replace_item_id";//置换玉道具ID
public static final String REPLACE_COST = "replace_cost";//置换玉消耗
public static final String RecallCostDiamond = "RecallCostDiamond";// 回退消耗妖晶数量
public static final String XUANYUAN_OPEN_TIME = "xuanyuan_open_time";//轩辕开始时间(星期)
public static final String EXCHANGE_FORCE_TYPE = "exchange_focus_type";//货币转换类型
public static final String SKY_TREASURE_SCORE_INGIFT = "sky_treasure_score_ingift";//天宫密保购买默认获得积分
public static final String FREETRAVEL_EVENT_TIME = "FreeTravel_event_Time";//事件持续时间(分钟)-2个小时
public static final String DISCOUNT_MONSTER_LEVEL = "discount_monster_level";// 心魔试炼折扣礼包触发条件
public static final String DISCOUNT_MAIN = "discount_main";//关卡礼包
public static final String ANIMAL_BROADCAST_QUALITY = "animal_broadcast_quality";
public static final String ITEM_1004_RETRIEVE = "item_1004_retrieve";// 结算补发道具16 # 50
public static final String SKILL_EFFECT_TGMB = "skill_effect_tgmb";//天宫秘宝购买特权带来的攻击提升万分比(只在天宫生效)
public static final String GUILD_LEADER_PASS_TIME = "GuildLeaderPassTime";//会长不上线移交时长
public static final String GUILD_DISMISS_TIME ="GuildDismissTime";//公会全员不上线解散时长
public static final String SHEN_ZHUANG = "ShenZhuang";//神装礼包推送等级
public static final String FU_XING = "FuXing";//福星高照可购买天数和可领取天数
public static final String FU_XING_STORE = "FuXingStore";//福星高照购买解锁奖励
public static final String YIJIANGOUMAI = "YiJianGouMai";//一件购买
public static final String WELFAREREDPACKET_LIMIT = "RedPackMaxGainNum";//每日领取红包数量上限
public static final String SWEEP_ONEKEY = "floodprivilegeid";//一键扫荡
public static final String CARDWISHBLOCKRATE = "CardWishBlockRate";//钻石抽卡心愿单格子命中万分比
public static final String UNLOCKCARDWISH = "UnlockCardWish";//解锁钻石心愿抽卡所需要的抽卡次数
public static final String EndlessRespawnItemAndTime ="EndlessRespawnItemAndTime";//每次重置无尽副本提供的九元露数量
public static final String NUMOFCHOOSEREDSIGN ="NumOfChooseRedSign";//乾坤宝盒选择心愿红色魂印数量
public static final String LING_LONG_COST = "LingLongCost";//玲珑宝镜消耗道具ID
public static final String Data_Of_Unlock_All_Wish_Hero = "DataOfUnlockAllWishHero";//在这个日期前开服的服务器默认解锁所有卡池内神将作为心愿不走hero表加入心愿时长的判断
public static final String DATA_OF_UNLOCK_THE_EVEREST = "DataOfUnlockTheEverest";
public static final String PRE_LOAD_REWARD = "PreLoadReward";
public static final String QIJIEHOLYCONFIG = "QIJIEHOLYCONFIG";//七界试炼遗物开启层数
public static final String LIKE_ABILITY = "LikeAbility";//好感度功能,每日赠予礼物次数上限
public static final String DAYS_FOR_RECHARGE_SUM = "DaysForRechargeSum";//近期累计充值金额累计时长
public static final String DAYS_FOR_RECHARGE_SINGLE = "DaysForRechargeSingle";//近期最大单笔充值金额累计时长
public static final String PER_CHANGING_CART_PROP = "PerChangingCartProp";//每激活一张变身卡所增加的全体属性
public static final String ChangeGodHeroContentParm = "ChangeGodHeroContentParm";//英雄飞升星级 12以上
public static final String EXPLORERE_LIVETIME = "ExploreReliveTime";//探索时我方阵亡后复活时长
public static final String BUILDING_TIME_REDUCE = "BuildingTimeReduce";//浮生特权每日每次减少建筑升级时间:秒
@ -133,18 +82,15 @@ public class SSpecialConfig implements BaseConfig {
public static final String GodSignOpenStar = "GodSignOpenStar";//神印格子开启所需神将星级
public static final String HotRanking_Natural = "HotRanking_Natural";//热度排行榜——神将品质(达到这个品质可以显示在热度榜上)
public static final String ChangingPosUnlock = "ChangingPosUnlock";//3个变身卡化身位解锁所需的化身之力等级
public static final String EquipTalismanaUpperLimit = "EquipTalismanaUpperLimit ";//法宝等级上限
public static final String EquipRankResetCost = "EquipRankResetCost";//摘星阁装备强化精炼重置消耗
public static final String lingmai_basic_configuration = "lingmai_basic_configuration";//灵脉秘境最大占矿时间s)
public static final String Duoduita_accumulation_time = "Duoduita_accumulation_time";//多队塔累积奖励时长 (分钟)
public static final String DUoduita_mop_time = "DUoduita_mop_time";//多队塔扫荡奖励时长 (分钟)
public static final String Gem_Lottery = "Gem_Lottery";//宝石单抽所需道具
public static final String Gem_Lottery10 = "Gem_Lottery10";//宝石十连所需道具
public static final String Gem_Senior_Lottery = "Gem_Senior_Lottery";//高级宝石单抽所需道具
public static final String Gem_Senior_Lottery10 = "Gem_Senior_Lottery10";//高级宝石十连所需道具
@Override
public void init() throws Exception {