玩家离线时间存redis

back_recharge
duhui 2023-02-15 19:00:41 +08:00
parent 4692f2804a
commit e98d7b482b
10 changed files with 174 additions and 208 deletions

View File

@ -0,0 +1,19 @@
package com.ljsd.jieling.handler.equip;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.equip.EquipLogic;
import com.ljsd.jieling.network.session.ISession;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
public class StrongthenFaxiangEquipHandler extends BaseHandler<PlayerInfoProto.StrongthenFaxiangEquipRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.STRONGTHEN_FAXIANG_EQUIP_REQUEST;
}
@Override
public void processWithProto(ISession iSession, PlayerInfoProto.StrongthenFaxiangEquipRequest proto) throws Exception {
EquipLogic.getInstance().strongthenFaxiangEquip(iSession.getUid(),proto.getFaxiangID(), proto.getTargetLv(), proto.getAction());
}
}

View File

@ -0,0 +1,19 @@
package com.ljsd.jieling.handler.equip;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.equip.EquipLogic;
import com.ljsd.jieling.network.session.ISession;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
public class WearFaxiangEquipHandler extends BaseHandler<PlayerInfoProto.WearFaxiangEquipRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.WEAR_FAXIANG_EQUIP_REQUEST;
}
@Override
public void processWithProto(ISession iSession, PlayerInfoProto.WearFaxiangEquipRequest proto) throws Exception {
EquipLogic.getInstance().wearFaxiangEquip(iSession.getUid(),proto.getHeroID(),proto.getFaxiangID(),proto.getAction());
}
}

View File

@ -5,24 +5,16 @@ import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.mongo.core.CServerInfo; import com.ljsd.jieling.db.mongo.core.CServerInfo;
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.logic.arena.ArenaLogic;
import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.TeamEnum; import com.ljsd.jieling.logic.dao.TeamEnum;
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.dao.root.User;
import com.ljsd.jieling.logic.dao.root.UserInfo;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.thrift.idl.CrossArenaManager;
import com.ljsd.jieling.tools.Utils; import com.ljsd.jieling.tools.Utils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import java.net.UnknownHostException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -40,9 +32,9 @@ public class CrossServiceLogic {
private CrossServiceLogic(){} private CrossServiceLogic(){}
/** /**
* key, * key,
* * *2
*/ */
public static final int EXPIRE = 604800; public static final int EXPIRE = 604800*2;
public static class Instance { public static class Instance {
public final static CrossServiceLogic instance = new CrossServiceLogic(); public final static CrossServiceLogic instance = new CrossServiceLogic();
@ -108,12 +100,7 @@ public class CrossServiceLogic {
private static CSPlayer formatUserToPlayer(User user){ private static CSPlayer formatUserToPlayer(User user){
CSPlayer csPlayer = RedisUtil.getInstence().getObject(getKey(user.getId()), CSPlayer.class); CSPlayer csPlayer = RedisUtil.getInstence().getObject(getKey(user.getId()), CSPlayer.class);
int newScore=0,oldScore =0,crossYxldMaxLevel=0 ; if (csPlayer == null) {
if (csPlayer != null) {
newScore = csPlayer.getCrossYuxulundaoNewScore();
oldScore = csPlayer.getCrossYuxulundaoOldScore();
crossYxldMaxLevel = csPlayer.getCrossYxldMaxLevel();
} else {
csPlayer = new CSPlayer(); csPlayer = new CSPlayer();
} }
PlayerManager p = user.getPlayerInfoManager(); PlayerManager p = user.getPlayerInfoManager();
@ -128,10 +115,7 @@ public class CrossServiceLogic {
csPlayer.setServerId(GameApplication.serverId); csPlayer.setServerId(GameApplication.serverId);
csPlayer.setSex(p.getSex()); csPlayer.setSex(p.getSex());
csPlayer.setUserMount(p.getUserMount()); csPlayer.setUserMount(p.getUserMount());
csPlayer.setCrossYuxulundaoNewScore(newScore);
csPlayer.setCrossYuxulundaoOldScore(oldScore);
csPlayer.setGuildId(p.getGuildId()); csPlayer.setGuildId(p.getGuildId());
csPlayer.setCrossYxldMaxLevel(crossYxldMaxLevel);
//玉虚三个队伍总战力 //玉虚三个队伍总战力
int force1 = user.getTeamPosManager().getTeamForceMap().getOrDefault(TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId(),0L).intValue(); int force1 = user.getTeamPosManager().getTeamForceMap().getOrDefault(TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId(),0L).intValue();
int force2 = user.getTeamPosManager().getTeamForceMap().getOrDefault(TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId(),0L).intValue(); int force2 = user.getTeamPosManager().getTeamForceMap().getOrDefault(TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId(),0L).intValue();

View File

@ -1,6 +1,5 @@
package com.ljsd.jieling.logic.arena; package com.ljsd.jieling.logic.arena;
import com.ljsd.GameApplication;
import com.ljsd.fight.ArenaRecord; import com.ljsd.fight.ArenaRecord;
import com.ljsd.fight.FightType; import com.ljsd.fight.FightType;
import com.ljsd.jieling.config.clazzStaticCfg.SArenaRobotStaticConfig; import com.ljsd.jieling.config.clazzStaticCfg.SArenaRobotStaticConfig;
@ -37,7 +36,6 @@ import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
import com.ljsd.jieling.logic.redpacket.WelfareRedPackEvent; import com.ljsd.jieling.logic.redpacket.WelfareRedPackEvent;
import com.ljsd.jieling.logic.redpacket.WelfareRedPacketType; import com.ljsd.jieling.logic.redpacket.WelfareRedPacketType;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.thrift.idl.CrossArenaManager;
import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MessageUtil;
import config.*; import config.*;
@ -581,16 +579,18 @@ public class ArenaLogic {
curSeason=0; curSeason=0;
} }
int rank = 1; int rank = 1;
int nowTime =(int) (TimeUtils.now()/1000);
for(ZSetOperations.TypedTuple<String> item : arenaRankInfo){ for(ZSetOperations.TypedTuple<String> item : arenaRankInfo){
String value = item.getValue(); String value = item.getValue();
int uid = Integer.parseInt(value); int uid = Integer.parseInt(value);
User user = UserManager.getUserNotCache(uid);
// 超7天未登录玩家不再发奖励 // 超7天未登录玩家不再发奖励
if (null == user || start - user.getPlayerInfoManager().getLoginTime() > GlobalsDef.REDIS_OVER_TIME_DAY * 7 * 1000L) { CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(uid);
if (csPlayer.getOffLineTime() != 0 && TimeUtils.now() > (csPlayer.getOffLineTime() + GlobalsDef.REDIS_OVER_TIME_DAY * 7 * 1000L) ){
String recordKey = RedisUtil.getInstence().getKey(RedisKey.ARENA_RRECORD, Integer.toString(uid)); String recordKey = RedisUtil.getInstence().getKey(RedisKey.ARENA_RRECORD, Integer.toString(uid));
RedisUtil.getInstence().del(recordKey); RedisUtil.getInstence().del(recordKey);
// RedisUtil.getInstence().zsetRemoveOne(seasonKey, Integer.toString(user.getId())); continue;
}
User user = UserManager.getUserNotCache(uid);
if (user == null){
continue; continue;
} }
if(type == GlobalsDef.ARENA_DAILY_REWARD){ if(type == GlobalsDef.ARENA_DAILY_REWARD){
@ -616,7 +616,7 @@ public class ArenaLogic {
} }
String rewardByRank = getRewardByRank(rank++, type); String rewardByRank = getRewardByRank(rank++, type);
if(!"".equals(rewardByRank)){ if(!"".equals(rewardByRank)){
MailLogic.getInstance().sendMail(user.getId(),title,content,rewardByRank,nowTime, Global.MAIL_EFFECTIVE_TIME); MailLogic.getInstance().sendMail(user.getId(),title,content,rewardByRank,TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
} }
} }
MongoUtil.getInstence().lastUpdate(); MongoUtil.getInstence().lastUpdate();
@ -665,42 +665,18 @@ public class ArenaLogic {
public void playWithSb(ISession session,int challengeUid,int myteamId,int cross) throws Exception { public void playWithSb(ISession session,int challengeUid,int myteamId,int cross) throws Exception {
User mine = UserManager.getUser(session.getUid()); User mine = UserManager.getUser(session.getUid());
int myforce = HeroLogic.getInstance().calTeamTotalForce(mine, myteamId, false); int myforce = HeroLogic.getInstance().calTeamTotalForce(mine, myteamId, false);
CommonProto.FightTeamInfo fightTeamInfo = BehaviorUtil.getFightTeamInfo(mine,myteamId,true); CommonProto.FightTeamInfo fightTeamInfo = BehaviorUtil.getFightTeamInfo(mine, myteamId,true);
CommonProto.FightTeamInfo deffightTeamInfo;
int deforce;
if(cross==0){
User defUser = UserManager.getUserNotCache(challengeUid);
if (defUser == null){
throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);
}
if(!defUser.getTeamPosManager().getTeamPosForHero().containsKey(1)){
throw new ErrorCodeException(ErrorCode.newDefineCode("对方未设置阵容"));
}
deforce = HeroLogic.getInstance().calTeamTotalForce(defUser, 1, false);
deffightTeamInfo= BehaviorUtil.getFightTeamInfo(defUser,1,false);
}else{ User defUser = PlayerLogic.getInstance().getUserByRpc(challengeUid);
//跨服切磋 if (defUser == null){
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(challengeUid); throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);
if (csPlayer == null){
throw new ErrorCodeException(ErrorCode.newDefineCode("当前玩家没有跨服数据"));
}
deforce = 0;
CrossArenaManager crossArenaManager = null;
if (csPlayer.getServerId() != GameApplication.serverId){
crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
if(crossArenaManager.getTotalForceByTeam().containsKey(myteamId)){
deforce = crossArenaManager.getTotalForceByTeam().get(myteamId);
}
}else{
User defUser = UserManager.getUserNotCache(challengeUid);
if (defUser == null){
throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);
}
deforce = HeroLogic.getInstance().calTeamTotalForce(defUser, myteamId, false);
}
deffightTeamInfo = FightUtil.makeCrossPersonData(csPlayer, myteamId, null, crossArenaManager);
} }
if(!defUser.getTeamPosManager().getTeamPosForHero().containsKey(1)){
throw new ErrorCodeException(ErrorCode.newDefineCode("对方未设置阵容"));
}
int deforce = HeroLogic.getInstance().calTeamTotalForce(defUser, myteamId, false);
CommonProto.FightTeamInfo deffightTeamInfo= BehaviorUtil.getFightTeamInfo(defUser,1,false);
if(myforce<deforce){ if(myforce<deforce){
deffightTeamInfo = CommonProto.FightTeamInfo.newBuilder().mergeFrom(deffightTeamInfo).setFirstCamp(1).build(); deffightTeamInfo = CommonProto.FightTeamInfo.newBuilder().mergeFrom(deffightTeamInfo).setFirstCamp(1).build();
} }
@ -1006,13 +982,6 @@ public class ArenaLogic {
Object get = RedisUtil.getInstence().hget(RedisKey.ARENA_PROUD_COUNT, String.valueOf(csPlayer.getUserId())); Object get = RedisUtil.getInstence().hget(RedisKey.ARENA_PROUD_COUNT, String.valueOf(csPlayer.getUserId()));
int proudTime = get==null?1:Integer.parseInt((String)get); int proudTime = get==null?1:Integer.parseInt((String)get);
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId()); String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
// 旧数据兼容
if (csPlayer.getLuoFuForce() == 0){
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(csPlayer.getUserId(), false);
if (redis != null){
csPlayer = redis;
}
}
CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder() CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder()
.setUid(csPlayer.getUserId()) .setUid(csPlayer.getUserId())
.setLevel(csPlayer.getLevel()) .setLevel(csPlayer.getLevel())

View File

@ -83,22 +83,7 @@ public class CSPlayer {
private int luoFuForce = 0; private int luoFuForce = 0;
// public CSPlayer(User user) { private long offLineTime;// 离线时间
// PlayerManager manager = user.getPlayerInfoManager();
// this.userId = user.getId();
// this.level = manager.getLevel();
// this.name = manager.getNickName();
// this.sex = manager.getSex();
// this.head = manager.getHead();
// this.headFrame = manager.getHeadFrame();
// this.skin = manager.getUserSkin();
// this.userTitle = manager.getUserTitle();
// this.userMount = manager.getUserMount();
// this.practiceLevel = user.getHeroManager().getPracticeLevel();
// this.guildId = manager.getGuildId();
// this.serverId = GameApplication.serverId;
// this.maxFore = user.getPlayerInfoManager().getMaxForce();
// }
public CSPlayer() { public CSPlayer() {
} }
@ -247,4 +232,12 @@ public class CSPlayer {
public void setLuoFuForce(int luoFuForce) { public void setLuoFuForce(int luoFuForce) {
this.luoFuForce = luoFuForce; this.luoFuForce = luoFuForce;
} }
public long getOffLineTime() {
return offLineTime;
}
public void setOffLineTime(long offLineTime) {
this.offLineTime = offLineTime;
}
} }

View File

@ -14,19 +14,18 @@ import com.ljsd.jieling.logic.dao.FriendManager;
import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.PlayerManager;
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.help.HelpHeroLogic;
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.logic.player.PlayerLogic;
import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import com.ljsd.jieling.util.*; import com.ljsd.jieling.util.*;
import config.SSpecialConfig; import config.SSpecialConfig;
import manager.STableManager; import manager.STableManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import util.MathUtils; import util.MathUtils;
import util.StringUtil; import util.StringUtil;
@ -105,7 +104,7 @@ public class FriendLogic {
} }
friendList.add(friend); friendList.add(friend);
} }
PlayerInfoProto.GetFriendInfoResponse getFriendInfoResponse = PlayerInfoProto.GetFriendInfoResponse PlayerInfoProto.GetFriendInfoResponse getFriendInfoResponse = PlayerInfoProto.GetFriendInfoResponse
.newBuilder().addAllFriends(friendList) .newBuilder().addAllFriends(friendList)
.build(); .build();
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_FRIEND_INFO_REPONSE_VALUE, getFriendInfoResponse, true); MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_FRIEND_INFO_REPONSE_VALUE, getFriendInfoResponse, true);
@ -143,7 +142,7 @@ public class FriendLogic {
continue; continue;
} }
int minLevel = level - randomLevel; int minLevel = level - randomLevel;
minLevel = minLevel <= 5 ? 5 : minLevel; minLevel = Math.max(minLevel, 5);
int maxLevel = level + randomLevel; int maxLevel = level + randomLevel;
int recommandLevel = recommandIdUser.getPlayerInfoManager().getLevel(); int recommandLevel = recommandIdUser.getPlayerInfoManager().getLevel();
if(recommandLevel < minLevel || recommandLevel > maxLevel){ if(recommandLevel < minLevel || recommandLevel > maxLevel){
@ -640,7 +639,7 @@ public class FriendLogic {
} }
if(reward.length()!=0){ if(reward.length()!=0){
rewardStr = reward.toString().substring(0,reward.toString().length()-1); rewardStr = reward.substring(0,reward.toString().length()-1);
} }
} }

View File

@ -678,7 +678,7 @@ public class PlayerLogic {
return oneInfo; return oneInfo;
} }
public PlayerInfoProto.GetPlayerOneTeamInfoResponse getOneTeamInfo( int id,int teamId,CrossArenaEnemy info) throws Exception { public PlayerInfoProto.GetPlayerOneTeamInfoResponse getOneTeamInfo(int id,int teamId,CrossArenaEnemy info) throws Exception {
if(id==0){ if(id==0){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
} }
@ -1082,6 +1082,7 @@ public class PlayerLogic {
} }
//获取跨服玩家信息 //获取跨服玩家信息
@Deprecated
public CommonProto.TeamOneInfo getCrossYxldOneTeamInfoNew(int id,List<Integer> team) throws Exception { public CommonProto.TeamOneInfo getCrossYxldOneTeamInfoNew(int id,List<Integer> team) throws Exception {
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id); CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id);
if(csPlayer==null){ if(csPlayer==null){
@ -2035,93 +2036,95 @@ public class PlayerLogic {
} }
//获取跨服非玉虚玩家队伍信息 //获取跨服非玉虚玩家队伍信息
@Deprecated
public PlayerInfoProto.GetPlayerOneTeamInfoResponse getCrossOneTeamInfo(int id,int teamId) throws Exception { public PlayerInfoProto.GetPlayerOneTeamInfoResponse getCrossOneTeamInfo(int id,int teamId) throws Exception {
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id); // CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id);
if(csPlayer==null){ // if(csPlayer==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); // throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
} // }
//如果是本服玩家 直接本服调用数据 // //如果是本服玩家 直接本服调用数据
if(GameApplication.serverId == csPlayer.getServerId()){ // if(GameApplication.serverId == csPlayer.getServerId()){
User user = UserManager.getUserNotCache(id); // User user = UserManager.getUserNotCache(id);
if (user == null){ // if (user == null){
throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT); // throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);
} // }
return PlayerLogic.getInstance().getOneTeamInfo(id, teamId); // return PlayerLogic.getInstance().getOneTeamInfo(id, teamId);
} // }
//基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用 // //基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId()); // String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId()); // GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
CommonProto.TeamOneInfo.Builder oneTeamInfo = CommonProto.TeamOneInfo.newBuilder() // CommonProto.TeamOneInfo.Builder oneTeamInfo = CommonProto.TeamOneInfo.newBuilder()
.setHead(csPlayer.getHead()) // .setHead(csPlayer.getHead())
.setHeadFrame(csPlayer.getHeadFrame()) // .setHeadFrame(csPlayer.getHeadFrame())
.setUserTitle(csPlayer.getUserTitle()) // .setUserTitle(csPlayer.getUserTitle())
.setLevel(csPlayer.getLevel()) // .setLevel(csPlayer.getLevel())
.setName(csPlayer.getName()) // .setName(csPlayer.getName())
.setGuildName(Optional.ofNullable(mapEntry).map(GuildInfo::getName).orElse("")) //csPlayer.getGuildName() // .setGuildName(Optional.ofNullable(mapEntry).map(GuildInfo::getName).orElse("")) //csPlayer.getGuildName()
.setPracticeLevel(csPlayer.getPracticeLevel()) // .setPracticeLevel(csPlayer.getPracticeLevel())
.setUid(id).setCrossTeamScore(csPlayer.getCrossYuxulundaoNewScore()) // .setUid(id).setCrossTeamScore(csPlayer.getCrossYuxulundaoNewScore())
.setServerName(serverName); // .setServerName(serverName);
//
CrossArenaManager crossArenaManager = getCrossArenaManagerData(csPlayer) ; // CrossArenaManager crossArenaManager = getCrossArenaManagerData(csPlayer) ;
if(crossArenaManager == null){ // if(crossArenaManager == null){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE); // throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
} // }
//rpc 数据调用测试 // //rpc 数据调用测试
CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder(); // CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
List<com.ljsd.jieling.thrift.idl.TeamPosHeroInfo> teamPosHeroInfos = crossArenaManager.getTeams().get(teamId); // List<com.ljsd.jieling.thrift.idl.TeamPosHeroInfo> teamPosHeroInfos = crossArenaManager.getTeams().get(teamId);
if(teamPosHeroInfos!=null){ // if(teamPosHeroInfos!=null){
for (com.ljsd.jieling.thrift.idl.TeamPosHeroInfo heroInfo:teamPosHeroInfos) { // for (com.ljsd.jieling.thrift.idl.TeamPosHeroInfo heroInfo:teamPosHeroInfos) {
com.ljsd.jieling.thrift.idl.ArenaOfHero hero = crossArenaManager.getHeros().get(heroInfo.getHeroId()); // com.ljsd.jieling.thrift.idl.ArenaOfHero hero = crossArenaManager.getHeros().get(heroInfo.getHeroId());
teamOneTeamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder() // teamOneTeamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder()
.setHeroid(hero.getId()) // .setHeroid(hero.getId())
.setHeroTid(hero.getTemplateId()) // .setHeroTid(hero.getTemplateId())
.setLevel(hero.getLevel()) // .setLevel(hero.getLevel())
.setStar(hero.getStar()) // .setStar(hero.getStar())
.setPosition(heroInfo.getPosition()) // .setPosition(heroInfo.getPosition())
.setSkinId(hero.getSkin()) // .setSkinId(hero.getSkin())
.setGodSoulLv(hero.getGodSoulLv()) // .setGodSoulLv(hero.getGodSoulLv())
.setPropertyId(hero.getPropertyId()) // .setPropertyId(hero.getPropertyId())
.build()); // .build());
} // }
} // }
if(crossArenaManager.getPokemons()!=null){ // if(crossArenaManager.getPokemons()!=null){
Map<String, com.ljsd.jieling.thrift.idl.Pokemon> pokemonMap = crossArenaManager.getPokemons(); // Map<String, com.ljsd.jieling.thrift.idl.Pokemon> pokemonMap = crossArenaManager.getPokemons();
Map<Integer, String> teamMap = crossArenaManager.getPokemonTeamMap(); // Map<Integer, String> teamMap = crossArenaManager.getPokemonTeamMap();
for(Map.Entry<Integer, String> entry :teamMap.entrySet()){ // for(Map.Entry<Integer, String> entry :teamMap.entrySet()){
// clone 深度复制 // // clone 深度复制
com.ljsd.jieling.thrift.idl.Pokemon pokemon = pokemonMap.get(entry.getValue()); // com.ljsd.jieling.thrift.idl.Pokemon pokemon = pokemonMap.get(entry.getValue());
pokemon.setTmpId(pokemon.getTmpId()); // pokemon.setTmpId(pokemon.getTmpId());
pokemon.setId(pokemon.getId()); // pokemon.setId(pokemon.getId());
pokemon.setLevel(pokemon.getLevel()); // pokemon.setLevel(pokemon.getLevel());
pokemon.setStar(pokemon.getStar()); // pokemon.setStar(pokemon.getStar());
teamOneTeamInfo.addPokemonInfos(CBean2Proto.getSimpleTeamInfoByPokeMon(pokemon, entry.getKey())); // teamOneTeamInfo.addPokemonInfos(CBean2Proto.getSimpleTeamInfoByPokeMon(pokemon, entry.getKey()));
} // }
} // }
LOGGER.info("=====================跨服获取阵容:{}",teamId); // LOGGER.info("=====================跨服获取阵容:{}",teamId);
Integer integer = crossArenaManager.getTotalForceByTeam().getOrDefault(teamId,0); // Integer integer = crossArenaManager.getTotalForceByTeam().getOrDefault(teamId,0);
teamOneTeamInfo.setTotalForce(integer); // teamOneTeamInfo.setTotalForce(integer);
if(crossArenaManager.getSeals()!= null){ // if(crossArenaManager.getSeals()!= null){
for(Map.Entry<Integer, com.ljsd.jieling.thrift.idl.PurpleMansionSeal> entry:crossArenaManager.getSeals().entrySet()){ // for(Map.Entry<Integer, com.ljsd.jieling.thrift.idl.PurpleMansionSeal> entry:crossArenaManager.getSeals().entrySet()){
com.ljsd.jieling.thrift.idl.PurpleMansionSeal value = entry.getValue(); // com.ljsd.jieling.thrift.idl.PurpleMansionSeal value = entry.getValue();
com.ljsd.jieling.thrift.idl.ArenaOfHero arenaOfHero = crossArenaManager.getHeros().get(value.getSubId()); // com.ljsd.jieling.thrift.idl.ArenaOfHero arenaOfHero = crossArenaManager.getHeros().get(value.getSubId());
if(value.getState()==0){ // if(value.getState()==0){
continue; // continue;
} // }
teamOneTeamInfo.addSealShow(CommonProto.PurpleSealShowInfo.newBuilder().setType(value.getType()).setId(value.getSealId()).setHeroTId(arenaOfHero==null?0:arenaOfHero.getTemplateId())); // teamOneTeamInfo.addSealShow(CommonProto.PurpleSealShowInfo.newBuilder().setType(value.getType()).setId(value.getSealId()).setHeroTId(arenaOfHero==null?0:arenaOfHero.getTemplateId()));
} // }
} // }
//builder.setTeam(teamOneTeamInfo.build()); // //builder.setTeam(teamOneTeamInfo.build());
//builder.addCrossTeam(teamOneTeamInfo.build()); // //builder.addCrossTeam(teamOneTeamInfo.build());
//四象心法数据 // //四象心法数据
teamOneTeamInfo.addAllSixiangxinfaInfo(RpcData2sixiangData(crossArenaManager.getSixiangInfos())); // teamOneTeamInfo.addAllSixiangxinfaInfo(RpcData2sixiangData(crossArenaManager.getSixiangInfos()));
//命格 // //命格
teamOneTeamInfo.addAllLifeGridInfo(RpcData2LifeGridInfos(crossArenaManager)); // teamOneTeamInfo.addAllLifeGridInfo(RpcData2LifeGridInfos(crossArenaManager));
//玩家坐骑信息 // //玩家坐骑信息
teamOneTeamInfo.addAllUserMountInfo(getUserMountList(crossArenaManager.getUserMountValidTime())); // teamOneTeamInfo.addAllUserMountInfo(getUserMountList(crossArenaManager.getUserMountValidTime()));
//身外化身 // //身外化身
teamOneTeamInfo.addAllTransformationCardInfo(getTransformationInfoListFromRpc(crossArenaManager.getTransformationList())); // teamOneTeamInfo.addAllTransformationCardInfo(getTransformationInfoListFromRpc(crossArenaManager.getTransformationList()));
oneTeamInfo.setTeam(teamOneTeamInfo); // oneTeamInfo.setTeam(teamOneTeamInfo);
PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo(oneTeamInfo); // PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo(oneTeamInfo);
return playerTeamInfo.build(); // return playerTeamInfo.build();
return null;
} }
} }

View File

@ -274,13 +274,6 @@ public abstract class AbstractRank implements IRank {
public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){ public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId()); String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId()); GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
// 兼容
if (csPlayer.getMainLineForce() == 0){
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(csPlayer.getUserId(), false);
if (redis != null){
csPlayer = redis;
}
}
return CommonProto.UserRank.newBuilder() return CommonProto.UserRank.newBuilder()
.setUid(csPlayer.getUserId()) .setUid(csPlayer.getUserId())
.setLevel(csPlayer.getLevel()) .setLevel(csPlayer.getLevel())

View File

@ -76,13 +76,6 @@ public class CrossArenaRank extends AbstractRank {
if (query == null){ if (query == null){
return; return;
} }
// 旧数据兼容
if (query.getLuoFuForce() == 0){
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(query.getUserId(), false);
if (redis != null){
query = redis;
}
}
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index) .setRank(index)
.setParam1(query.getLuoFuForce()) .setParam1(query.getLuoFuForce())
@ -96,13 +89,6 @@ public class CrossArenaRank extends AbstractRank {
@Override @Override
public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){ public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){
CommonProto.UserRank.Builder oneUserRank = super.getCrossOneUserRank(csPlayer, everyRankInfo); CommonProto.UserRank.Builder oneUserRank = super.getCrossOneUserRank(csPlayer, everyRankInfo);
// 旧数据兼容
if (csPlayer.getLuoFuForce() == 0){
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(csPlayer.getUserId(), false);
if (redis != null){
csPlayer = redis;
}
}
oneUserRank.setForce(csPlayer.getLuoFuForce()); oneUserRank.setForce(csPlayer.getLuoFuForce());
return oneUserRank; return oneUserRank;
} }

View File

@ -8,20 +8,18 @@ import com.ljsd.jieling.db.mongo.MongoUtil;
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.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.ActivityLogic; import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.ActivityType; import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.PlayerManager;
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.explorerMap.ExplorerMapLogic; import com.ljsd.jieling.logic.explorerMap.ExplorerMapLogic;
import com.ljsd.jieling.logic.family.GuildLogic;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.logic.store.StoreLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.netty.cocdex.PacketNetData;
@ -29,15 +27,15 @@ import com.ljsd.jieling.netty.server.IChannel;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocol.INetConnet; import com.ljsd.jieling.protocol.INetConnet;
import com.ljsd.jieling.protocol.INetReceived; import com.ljsd.jieling.protocol.INetReceived;
import com.ljsd.jieling.protocol.INetWorkHandler;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import com.ljsd.jieling.protocol.INetSession; import com.ljsd.jieling.protocol.INetSession;
import rpc.protocols.PlayerInfoProto; import com.ljsd.jieling.protocol.INetWorkHandler;
import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MessageUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import util.NetUtils; import util.NetUtils;
import util.StringUtil; import util.StringUtil;
import util.TimeUtils; import util.TimeUtils;
@ -46,7 +44,6 @@ import java.lang.reflect.Type;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
/** /**
* Description: session * Description: session
@ -433,6 +430,10 @@ public class SessionManager implements INetSession<ISession>, INetReceived<ISess
// 在线时间戳 // 在线时间戳
PlayerManager playerInfoManager = user.getPlayerInfoManager(); PlayerManager playerInfoManager = user.getPlayerInfoManager();
playerInfoManager.setOffLineTime(TimeUtils.now()); playerInfoManager.setOffLineTime(TimeUtils.now());
CSPlayer player = CrossServiceLogic.getPlayerByRedis(user.getId());
player.setOffLineTime(TimeUtils.now());
CrossServiceLogic.update(player);
// 总在线时间 // 总在线时间
long onlineTime = playerInfoManager.getOffLineTime() - session.getUserLoginTime(); long onlineTime = playerInfoManager.getOffLineTime() - session.getUserLoginTime();
playerInfoManager.addOnlineTime(onlineTime); playerInfoManager.addOnlineTime(onlineTime);