玩家离线时间存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.redis.RedisKey;
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.TeamEnum;
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.UserInfo;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.thrift.idl.CrossArenaManager;
import com.ljsd.jieling.tools.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.List;
import java.util.Map;
@ -40,9 +32,9 @@ public class CrossServiceLogic {
private CrossServiceLogic(){}
/**
* key,
*
* *2
*/
public static final int EXPIRE = 604800;
public static final int EXPIRE = 604800*2;
public static class Instance {
public final static CrossServiceLogic instance = new CrossServiceLogic();
@ -108,12 +100,7 @@ public class CrossServiceLogic {
private static CSPlayer formatUserToPlayer(User user){
CSPlayer csPlayer = RedisUtil.getInstence().getObject(getKey(user.getId()), CSPlayer.class);
int newScore=0,oldScore =0,crossYxldMaxLevel=0 ;
if (csPlayer != null) {
newScore = csPlayer.getCrossYuxulundaoNewScore();
oldScore = csPlayer.getCrossYuxulundaoOldScore();
crossYxldMaxLevel = csPlayer.getCrossYxldMaxLevel();
} else {
if (csPlayer == null) {
csPlayer = new CSPlayer();
}
PlayerManager p = user.getPlayerInfoManager();
@ -128,10 +115,7 @@ public class CrossServiceLogic {
csPlayer.setServerId(GameApplication.serverId);
csPlayer.setSex(p.getSex());
csPlayer.setUserMount(p.getUserMount());
csPlayer.setCrossYuxulundaoNewScore(newScore);
csPlayer.setCrossYuxulundaoOldScore(oldScore);
csPlayer.setGuildId(p.getGuildId());
csPlayer.setCrossYxldMaxLevel(crossYxldMaxLevel);
//玉虚三个队伍总战力
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();

View File

@ -1,6 +1,5 @@
package com.ljsd.jieling.logic.arena;
import com.ljsd.GameApplication;
import com.ljsd.fight.ArenaRecord;
import com.ljsd.fight.FightType;
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.WelfareRedPacketType;
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.MessageUtil;
import config.*;
@ -581,16 +579,18 @@ public class ArenaLogic {
curSeason=0;
}
int rank = 1;
int nowTime =(int) (TimeUtils.now()/1000);
for(ZSetOperations.TypedTuple<String> item : arenaRankInfo){
String value = item.getValue();
int uid = Integer.parseInt(value);
User user = UserManager.getUserNotCache(uid);
// 超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));
RedisUtil.getInstence().del(recordKey);
// RedisUtil.getInstence().zsetRemoveOne(seasonKey, Integer.toString(user.getId()));
continue;
}
User user = UserManager.getUserNotCache(uid);
if (user == null){
continue;
}
if(type == GlobalsDef.ARENA_DAILY_REWARD){
@ -616,7 +616,7 @@ public class ArenaLogic {
}
String rewardByRank = getRewardByRank(rank++, type);
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();
@ -665,42 +665,18 @@ public class ArenaLogic {
public void playWithSb(ISession session,int challengeUid,int myteamId,int cross) throws Exception {
User mine = UserManager.getUser(session.getUid());
int myforce = HeroLogic.getInstance().calTeamTotalForce(mine, myteamId, false);
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);
CommonProto.FightTeamInfo fightTeamInfo = BehaviorUtil.getFightTeamInfo(mine, myteamId,true);
}else{
//跨服切磋
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(challengeUid);
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);
User defUser = PlayerLogic.getInstance().getUserByRpc(challengeUid);
if (defUser == null){
throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);
}
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){
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()));
int proudTime = get==null?1:Integer.parseInt((String)get);
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()
.setUid(csPlayer.getUserId())
.setLevel(csPlayer.getLevel())

View File

@ -83,22 +83,7 @@ public class CSPlayer {
private int luoFuForce = 0;
// public CSPlayer(User user) {
// 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();
// }
private long offLineTime;// 离线时间
public CSPlayer() {
}
@ -247,4 +232,12 @@ public class CSPlayer {
public void setLuoFuForce(int 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.UserManager;
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.player.PlayerLogic;
import com.ljsd.jieling.network.server.ProtocolsManager;
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 config.SSpecialConfig;
import manager.STableManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import util.MathUtils;
import util.StringUtil;
@ -105,7 +104,7 @@ public class FriendLogic {
}
friendList.add(friend);
}
PlayerInfoProto.GetFriendInfoResponse getFriendInfoResponse = PlayerInfoProto.GetFriendInfoResponse
PlayerInfoProto.GetFriendInfoResponse getFriendInfoResponse = PlayerInfoProto.GetFriendInfoResponse
.newBuilder().addAllFriends(friendList)
.build();
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_FRIEND_INFO_REPONSE_VALUE, getFriendInfoResponse, true);
@ -143,7 +142,7 @@ public class FriendLogic {
continue;
}
int minLevel = level - randomLevel;
minLevel = minLevel <= 5 ? 5 : minLevel;
minLevel = Math.max(minLevel, 5);
int maxLevel = level + randomLevel;
int recommandLevel = recommandIdUser.getPlayerInfoManager().getLevel();
if(recommandLevel < minLevel || recommandLevel > maxLevel){
@ -640,7 +639,7 @@ public class FriendLogic {
}
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;
}
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){
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 {
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id);
if(csPlayer==null){
@ -2035,93 +2036,95 @@ public class PlayerLogic {
}
//获取跨服非玉虚玩家队伍信息
@Deprecated
public PlayerInfoProto.GetPlayerOneTeamInfoResponse getCrossOneTeamInfo(int id,int teamId) throws Exception {
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id);
if(csPlayer==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
//如果是本服玩家 直接本服调用数据
if(GameApplication.serverId == csPlayer.getServerId()){
User user = UserManager.getUserNotCache(id);
if (user == null){
throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);
}
return PlayerLogic.getInstance().getOneTeamInfo(id, teamId);
}
//基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
CommonProto.TeamOneInfo.Builder oneTeamInfo = CommonProto.TeamOneInfo.newBuilder()
.setHead(csPlayer.getHead())
.setHeadFrame(csPlayer.getHeadFrame())
.setUserTitle(csPlayer.getUserTitle())
.setLevel(csPlayer.getLevel())
.setName(csPlayer.getName())
.setGuildName(Optional.ofNullable(mapEntry).map(GuildInfo::getName).orElse("")) //csPlayer.getGuildName()
.setPracticeLevel(csPlayer.getPracticeLevel())
.setUid(id).setCrossTeamScore(csPlayer.getCrossYuxulundaoNewScore())
.setServerName(serverName);
CrossArenaManager crossArenaManager = getCrossArenaManagerData(csPlayer) ;
if(crossArenaManager == null){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
}
//rpc 数据调用测试
CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
List<com.ljsd.jieling.thrift.idl.TeamPosHeroInfo> teamPosHeroInfos = crossArenaManager.getTeams().get(teamId);
if(teamPosHeroInfos!=null){
for (com.ljsd.jieling.thrift.idl.TeamPosHeroInfo heroInfo:teamPosHeroInfos) {
com.ljsd.jieling.thrift.idl.ArenaOfHero hero = crossArenaManager.getHeros().get(heroInfo.getHeroId());
teamOneTeamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder()
.setHeroid(hero.getId())
.setHeroTid(hero.getTemplateId())
.setLevel(hero.getLevel())
.setStar(hero.getStar())
.setPosition(heroInfo.getPosition())
.setSkinId(hero.getSkin())
.setGodSoulLv(hero.getGodSoulLv())
.setPropertyId(hero.getPropertyId())
.build());
}
}
if(crossArenaManager.getPokemons()!=null){
Map<String, com.ljsd.jieling.thrift.idl.Pokemon> pokemonMap = crossArenaManager.getPokemons();
Map<Integer, String> teamMap = crossArenaManager.getPokemonTeamMap();
for(Map.Entry<Integer, String> entry :teamMap.entrySet()){
// clone 深度复制
com.ljsd.jieling.thrift.idl.Pokemon pokemon = pokemonMap.get(entry.getValue());
pokemon.setTmpId(pokemon.getTmpId());
pokemon.setId(pokemon.getId());
pokemon.setLevel(pokemon.getLevel());
pokemon.setStar(pokemon.getStar());
teamOneTeamInfo.addPokemonInfos(CBean2Proto.getSimpleTeamInfoByPokeMon(pokemon, entry.getKey()));
}
}
LOGGER.info("=====================跨服获取阵容:{}",teamId);
Integer integer = crossArenaManager.getTotalForceByTeam().getOrDefault(teamId,0);
teamOneTeamInfo.setTotalForce(integer);
if(crossArenaManager.getSeals()!= null){
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.ArenaOfHero arenaOfHero = crossArenaManager.getHeros().get(value.getSubId());
if(value.getState()==0){
continue;
}
teamOneTeamInfo.addSealShow(CommonProto.PurpleSealShowInfo.newBuilder().setType(value.getType()).setId(value.getSealId()).setHeroTId(arenaOfHero==null?0:arenaOfHero.getTemplateId()));
}
}
//builder.setTeam(teamOneTeamInfo.build());
//builder.addCrossTeam(teamOneTeamInfo.build());
//四象心法数据
teamOneTeamInfo.addAllSixiangxinfaInfo(RpcData2sixiangData(crossArenaManager.getSixiangInfos()));
//命格
teamOneTeamInfo.addAllLifeGridInfo(RpcData2LifeGridInfos(crossArenaManager));
//玩家坐骑信息
teamOneTeamInfo.addAllUserMountInfo(getUserMountList(crossArenaManager.getUserMountValidTime()));
//身外化身
teamOneTeamInfo.addAllTransformationCardInfo(getTransformationInfoListFromRpc(crossArenaManager.getTransformationList()));
oneTeamInfo.setTeam(teamOneTeamInfo);
PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo(oneTeamInfo);
return playerTeamInfo.build();
// CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id);
// if(csPlayer==null){
// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
// }
// //如果是本服玩家 直接本服调用数据
// if(GameApplication.serverId == csPlayer.getServerId()){
// User user = UserManager.getUserNotCache(id);
// if (user == null){
// throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);
// }
// return PlayerLogic.getInstance().getOneTeamInfo(id, teamId);
// }
// //基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用
// String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
// GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
// CommonProto.TeamOneInfo.Builder oneTeamInfo = CommonProto.TeamOneInfo.newBuilder()
// .setHead(csPlayer.getHead())
// .setHeadFrame(csPlayer.getHeadFrame())
// .setUserTitle(csPlayer.getUserTitle())
// .setLevel(csPlayer.getLevel())
// .setName(csPlayer.getName())
// .setGuildName(Optional.ofNullable(mapEntry).map(GuildInfo::getName).orElse("")) //csPlayer.getGuildName()
// .setPracticeLevel(csPlayer.getPracticeLevel())
// .setUid(id).setCrossTeamScore(csPlayer.getCrossYuxulundaoNewScore())
// .setServerName(serverName);
//
// CrossArenaManager crossArenaManager = getCrossArenaManagerData(csPlayer) ;
// if(crossArenaManager == null){
// throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
// }
// //rpc 数据调用测试
// CommonProto.TeamOneTeamInfo.Builder teamOneTeamInfo = CommonProto.TeamOneTeamInfo.newBuilder();
// List<com.ljsd.jieling.thrift.idl.TeamPosHeroInfo> teamPosHeroInfos = crossArenaManager.getTeams().get(teamId);
// if(teamPosHeroInfos!=null){
// for (com.ljsd.jieling.thrift.idl.TeamPosHeroInfo heroInfo:teamPosHeroInfos) {
// com.ljsd.jieling.thrift.idl.ArenaOfHero hero = crossArenaManager.getHeros().get(heroInfo.getHeroId());
// teamOneTeamInfo.addTeam(CommonProto.TeamSimpleInfo.newBuilder()
// .setHeroid(hero.getId())
// .setHeroTid(hero.getTemplateId())
// .setLevel(hero.getLevel())
// .setStar(hero.getStar())
// .setPosition(heroInfo.getPosition())
// .setSkinId(hero.getSkin())
// .setGodSoulLv(hero.getGodSoulLv())
// .setPropertyId(hero.getPropertyId())
// .build());
// }
// }
// if(crossArenaManager.getPokemons()!=null){
// Map<String, com.ljsd.jieling.thrift.idl.Pokemon> pokemonMap = crossArenaManager.getPokemons();
// Map<Integer, String> teamMap = crossArenaManager.getPokemonTeamMap();
// for(Map.Entry<Integer, String> entry :teamMap.entrySet()){
// // clone 深度复制
// com.ljsd.jieling.thrift.idl.Pokemon pokemon = pokemonMap.get(entry.getValue());
// pokemon.setTmpId(pokemon.getTmpId());
// pokemon.setId(pokemon.getId());
// pokemon.setLevel(pokemon.getLevel());
// pokemon.setStar(pokemon.getStar());
// teamOneTeamInfo.addPokemonInfos(CBean2Proto.getSimpleTeamInfoByPokeMon(pokemon, entry.getKey()));
// }
// }
// LOGGER.info("=====================跨服获取阵容:{}",teamId);
// Integer integer = crossArenaManager.getTotalForceByTeam().getOrDefault(teamId,0);
// teamOneTeamInfo.setTotalForce(integer);
// if(crossArenaManager.getSeals()!= null){
// 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.ArenaOfHero arenaOfHero = crossArenaManager.getHeros().get(value.getSubId());
// if(value.getState()==0){
// continue;
// }
// teamOneTeamInfo.addSealShow(CommonProto.PurpleSealShowInfo.newBuilder().setType(value.getType()).setId(value.getSealId()).setHeroTId(arenaOfHero==null?0:arenaOfHero.getTemplateId()));
// }
// }
// //builder.setTeam(teamOneTeamInfo.build());
// //builder.addCrossTeam(teamOneTeamInfo.build());
// //四象心法数据
// teamOneTeamInfo.addAllSixiangxinfaInfo(RpcData2sixiangData(crossArenaManager.getSixiangInfos()));
// //命格
// teamOneTeamInfo.addAllLifeGridInfo(RpcData2LifeGridInfos(crossArenaManager));
// //玩家坐骑信息
// teamOneTeamInfo.addAllUserMountInfo(getUserMountList(crossArenaManager.getUserMountValidTime()));
// //身外化身
// teamOneTeamInfo.addAllTransformationCardInfo(getTransformationInfoListFromRpc(crossArenaManager.getTransformationList()));
// oneTeamInfo.setTeam(teamOneTeamInfo);
// PlayerInfoProto.GetPlayerOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerOneTeamInfoResponse.newBuilder().setTeamInfo(oneTeamInfo);
// 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){
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
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()
.setUid(csPlayer.getUserId())
.setLevel(csPlayer.getLevel())

View File

@ -76,13 +76,6 @@ public class CrossArenaRank extends AbstractRank {
if (query == null){
return;
}
// 旧数据兼容
if (query.getLuoFuForce() == 0){
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(query.getUserId(), false);
if (redis != null){
query = redis;
}
}
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index)
.setParam1(query.getLuoFuForce())
@ -96,13 +89,6 @@ public class CrossArenaRank extends AbstractRank {
@Override
public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder 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());
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.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.handler.map.MapLogic;
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.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.ActivityLogic;
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.UserManager;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.User;
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.store.StoreLogic;
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.protocol.INetConnet;
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 rpc.protocols.PlayerInfoProto;
import com.ljsd.jieling.protocol.INetWorkHandler;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import util.NetUtils;
import util.StringUtil;
import util.TimeUtils;
@ -46,7 +44,6 @@ import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
/**
* Description: session
@ -433,6 +430,10 @@ public class SessionManager implements INetSession<ISession>, INetReceived<ISess
// 在线时间戳
PlayerManager playerInfoManager = user.getPlayerInfoManager();
playerInfoManager.setOffLineTime(TimeUtils.now());
CSPlayer player = CrossServiceLogic.getPlayerByRedis(user.getId());
player.setOffLineTime(TimeUtils.now());
CrossServiceLogic.update(player);
// 总在线时间
long onlineTime = playerInfoManager.getOffLineTime() - session.getUserLoginTime();
playerInfoManager.addOnlineTime(onlineTime);