七界bug处理

back_recharge
duhui 2023-03-27 13:44:07 +08:00
parent d7dbcf5828
commit 4e2338c7a7
4 changed files with 33 additions and 22 deletions

View File

@ -1,18 +1,13 @@
package com.ljsd.jieling.core.function; package com.ljsd.jieling.core.function;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.core.FunctionManager; import com.ljsd.jieling.core.FunctionManager;
import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction; import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.cross.CSPlayer; import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.item.ItemLogic;
import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankEnum; import com.ljsd.jieling.logic.rank.RankEnum;
@ -63,14 +58,12 @@ public class SevenWorldFunction implements FunctionManager {
LOGGER.error("七界发奖玩家缓存找不到uid{},排名:{}",uid,rank); LOGGER.error("七界发奖玩家缓存找不到uid{},排名:{}",uid,rank);
continue; continue;
} }
// 清除道具标记
SevenWorldLogic.setClearMark(uid);
if (TimeUtils.now() > (player.getOffLineTime()+TimeUtils.WEEK)){ if (TimeUtils.now() > (player.getOffLineTime()+TimeUtils.WEEK)){
LOGGER.error("七界发奖玩家登陆时间超过七天uid{},排名:{},最后登陆时间:{},当前时间:{}",uid,rank,TimeUtils.getTimeStamp2(player.getOffLineTime()),TimeUtils.nowStr()); LOGGER.error("七界发奖玩家登陆时间超过七天uid{},排名:{},最后登陆时间:{},当前时间:{}",uid,rank,TimeUtils.getTimeStamp2(player.getOffLineTime()),TimeUtils.nowStr());
continue; continue;
} }
User user = UserManager.getUserNotCache(uid);
if (user == null){
continue;
}
String title = SErrorCodeEerverConfig.getI18NMessage("Qijie_mail_title"); String title = SErrorCodeEerverConfig.getI18NMessage("Qijie_mail_title");
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("Qijie_mail_txt", new Object[]{rank},new int[0],"#"); String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("Qijie_mail_txt", new Object[]{rank},new int[0],"#");
// 排行奖励 // 排行奖励
@ -80,10 +73,8 @@ public class SevenWorldFunction implements FunctionManager {
if (rank >= value.getMinRank() && rank <= value.getMaxRank()){ if (rank >= value.getMinRank() && rank <= value.getMaxRank()){
// 发邮件奖励 // 发邮件奖励
String reward = StringUtil.parseArrayToString(value.getRankingReward()); String reward = StringUtil.parseArrayToString(value.getRankingReward());
MailLogic.getInstance().sendMail(user.getId(),title,content,reward,TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); MailLogic.getInstance().sendMailToRedis(uid,title,content,reward,TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
// 清除道具 LOGGER.info("七界试炼发奖uid{},排名:{},奖励:{},",uid,rank,reward);
ItemLogic.getInstance().functionEndClearItem(user.getId(), FunctionIdEnum.CrossSevenWorld.getFunctionType(), BIReason.SEVEN_WORLD_FUNCTION_END);
LOGGER.info("七界试炼发奖并删除道具uid{},排名:{},奖励:{},",user.getId(),rank,reward);
break; break;
} }
} }

View File

@ -4,18 +4,16 @@ import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.InnerMessageUtil; import com.ljsd.jieling.util.InnerMessageUtil;
import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MessageUtil;
import rpc.protocols.MessageTypeProto;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto; import rpc.protocols.PlayerInfoProto;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.LongStream;
@Component @Component
public class ServerZeroHandler extends BaseHandler { public class ServerZeroHandler extends BaseHandler {
@ -29,8 +27,9 @@ public class ServerZeroHandler extends BaseHandler {
User user = UserManager.getUser(session.getUid()); User user = UserManager.getUser(session.getUid());
List<Integer> array = new ArrayList<>(); List<Integer> array = new ArrayList<>();
array.add(session.getUid()); array.add(session.getUid());
InnerMessageUtil.broadcastWithRandom(user1 -> GlobalDataManaager.flushGoodsTimes(user1),array,3,5); InnerMessageUtil.broadcastWithRandom(GlobalDataManaager::flushGoodsTimes, array,3,5);
user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0); user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0);
LOGGER.info("零点,{}触发了零点功能结算功能",session.getUid());
GlobalDataManaager.checkNeedReFlush(session, UserManager.getUser(session.getUid()), PlayerInfoProto.FivePlayerUpdateIndication.newBuilder()); GlobalDataManaager.checkNeedReFlush(session, UserManager.getUser(session.getUid()), PlayerInfoProto.FivePlayerUpdateIndication.newBuilder());
// int indicationIndex = session.getIndicationIndex(); // int indicationIndex = session.getIndicationIndex();

View File

@ -441,6 +441,8 @@ public class GlobalDataManaager implements IManager {
RidingSwardLogic.getInstance().zeroClearRidingSwardByUser(user); RidingSwardLogic.getInstance().zeroClearRidingSwardByUser(user);
// 公会援助 // 公会援助
GuildLogic.getInstance().guildHelpDayHandler(user); GuildLogic.getInstance().guildHelpDayHandler(user);
// 七界道具清理
SevenWorldLogic.getClearMark(user.getId());
WeekCardLogic.getInstance().weekCardInfoIndication(user,0,0); WeekCardLogic.getInstance().weekCardInfoIndication(user,0,0);
ChallengeLogic.getInstance().ChallengeInfoIndication(session); ChallengeLogic.getInstance().ChallengeInfoIndication(session);

View File

@ -8,23 +8,19 @@ import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.ktbeans.ReportEventEnum; import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.Hero; import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.TeamEnum; import com.ljsd.jieling.logic.dao.TeamEnum;
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.FightDispatcher; import com.ljsd.jieling.logic.fight.FightDispatcher;
import com.ljsd.jieling.logic.fight.GameFightType; import com.ljsd.jieling.logic.fight.GameFightType;
import com.ljsd.jieling.logic.fight.PVEFightEvent; import com.ljsd.jieling.logic.fight.PVEFightEvent;
import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.fight.result.FightResult;
import com.ljsd.jieling.logic.item.ItemLogic; import com.ljsd.jieling.logic.item.ItemLogic;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.MissionType; import com.ljsd.jieling.logic.mission.MissionType;
import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.player.PlayerLogic;
@ -39,7 +35,6 @@ import config.*;
import manager.STableManager; import manager.STableManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import rpc.protocols.CommonProto; import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto; import rpc.protocols.MessageTypeProto;
@ -139,6 +134,8 @@ public class SevenWorldLogic {
*/ */
public PlayerInfoProto.SevenWorldInfoResponse getSevenWorldInfo(int uid, PlayerInfoProto.SevenWorldInfoRequest proto) throws Exception { public PlayerInfoProto.SevenWorldInfoResponse getSevenWorldInfo(int uid, PlayerInfoProto.SevenWorldInfoRequest proto) throws Exception {
User user = verify(uid); User user = verify(uid);
// 七界道具清理
SevenWorldLogic.getClearMark(user.getId());
// 当前周几 // 当前周几
int week = TimeUtils.getDayOfWeek(); int week = TimeUtils.getDayOfWeek();
// 客户端传层数不为0表示切换层数 // 客户端传层数不为0表示切换层数
@ -375,6 +372,28 @@ public class SevenWorldLogic {
rankEnum.addRank(uid,"",score); rankEnum.addRank(uid,"",score);
} }
/**
*
*/
public static void setClearMark(int uid){
String key2 = RedisUtil.getInstence().getKey2(RedisKey.SEVEN_WORLD_MARK, String.valueOf(uid));
RedisUtil.getInstence().set(key2,"1");
LOGGER.info("七界发奖后添加清理标记uid{}key{}",uid,key2);
}
/**
*
*/
public static void getClearMark(int uid){
String key2 = RedisUtil.getInstence().getKey2(RedisKey.SEVEN_WORLD_MARK, String.valueOf(uid));
if (key2 == null){
return;
}
ItemLogic.getInstance().functionEndClearItem(uid, FunctionIdEnum.CrossSevenWorld.getFunctionType(), BIReason.SEVEN_WORLD_FUNCTION_END);
LOGGER.info("七界发奖后首次获取信息清理道具uid{}",uid);
RedisUtil.getInstence().remove(key2);
}
/** /**
* *
* @param user * @param user