玉虚论道

back_recharge
xuexinpeng 2021-09-27 00:09:16 +08:00
parent 38c2782933
commit 0f06046daf
9 changed files with 99 additions and 82 deletions

View File

@ -317,9 +317,17 @@ public class MongoUtil {
}
return mongoTemplate;
}
//初始化 数据库映射 无合服操作拦截
public MongoTemplate getMonogTemplate2(int serverId){
MongoTemplate mongoTemplate = mongoTemplateMap.get(serverId);
if(mongoTemplate == null){
String dbName = "jieling_"+serverId;
// new MongoTemplate(this.mongoDbFactory(), this.mappingMongoConverter1())
MappingMongoConverter mappingMongoConverter = (MappingMongoConverter) ConfigurableApplicationContextManager.getBean("mappingMongoConverter1");
MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongoClient, dbName);
mongoTemplate = new MongoTemplate(mongoDbFactory, mappingMongoConverter);
mongoTemplateMap.put(serverId,mongoTemplate);
}
return mongoTemplate;
}
}

View File

@ -172,6 +172,7 @@ public enum ErrorCode implements IErrorCode {
REDPACKET_DAILY_LIMIT(141,"今日福利红包已达领取上限"),
HONGMENG_ING(142,"英雄在鸿蒙阵中,操作失败"),
CHAT_NOT_CROSS(143,"聊天检查,没有跨服分组"),
CROSS_YXLD_OVER(144,"赛季结算中"),
;
private static final Set<Integer> CodeSet = new HashSet<>();

View File

@ -46,6 +46,7 @@ import rpc.protocols.MessageTypeProto;
import util.TimeUtils;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.stream.Collectors;
@ -60,6 +61,14 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
@Override
public void processWithProto(ISession session, ArenaInfoProto.CrossYuXuLunDaoChallengeRequest request) throws Exception {
User user = UserManager.getUser(session.getUid());
Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
if(day ==1 && hour ==23 && minute>30){
throw new ErrorCodeException(ErrorCode.CROSS_YXLD_OVER);
}
ArenaManager arenaManager = user.getArenaManager();
List<Integer> teamId = request.getTeamIdList();
int defUid = request.getChallengeUid();
@ -260,26 +269,33 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
public static int[] getFightResultByPersonToPerson(User myUser, int defUserUid, int[] myteamId, int[] defTeamId, ArenaRecord arenaRecord, ArenaInfoProto.CrossYuXuLunDaoChallengeResponse.Builder builder) throws Exception {
int[] result = new int[3];
//ArenaOfUser arenaOfUser = CrossServiceLogic.getInstance().query(defUserUid);
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(defUserUid);
//其他服玩家
//rpc 数据调用测试
CrossArenaManager crossArenaManager = null;
CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class);
if (!csPlayer.getRpcIp().equals(coreSettings.getIp()) && csPlayer.getRpcPort() != coreSettings.getPort()) {
String ip1 = csPlayer.getRpcIp();
int port1 = csPlayer.getRpcPort();
int uid1 = csPlayer.getUserId();
String ip = csPlayer.getRpcIp();
int port = csPlayer.getRpcPort();
int uid = csPlayer.getUserId();
StringBuilder sb = new StringBuilder();
sb.append("RPCCORE").append("|")
.append(ip1).append("|")
.append(port1).toString();
ClientAdapterPo<RPCRequestIFace.Client> rPCClient1 = null;
rPCClient1 = ClientAdapterPo.getClientAdapterPo(sb.toString());
crossArenaManager = rPCClient1.getClient().getHeroManagerInfo(uid1);
.append(ip).append("|")
.append(port).toString();
ClientAdapterPo<RPCRequestIFace.Client> rPCClient = null;
try{
rPCClient = ClientAdapterPo.getClientAdapterPo(sb.toString());
crossArenaManager = rPCClient.getClient().getHeroManagerInfo(uid);
}catch (Exception e) {
LOGGER.info("callback=>", e);
} finally {
if(rPCClient != null){
rPCClient.returnObject(sb.toString());
}else{
LOGGER.info("callback=> rPCClient is null ");
return null;
}
}
}
arenaRecord.setCreateTime(TimeUtils.nowInt()); // 时间
arenaRecord.setAttackId(defUserUid); //id

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.handler.crossServer;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.globals.BIReason;
@ -9,10 +10,7 @@ import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.arena.CrossYuxulundaoLogic;
import com.ljsd.jieling.logic.dao.ArenaEnemy;
import com.ljsd.jieling.logic.dao.ArenaManager;
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
@ -26,6 +24,7 @@ import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import java.util.List;
import java.util.Map;
/**
*
@ -71,14 +70,11 @@ public class CrossYuxulundaoGetInfoHandler extends BaseHandler<ArenaInfoProto.Cr
} else {
//赛季内第一次登陆请求
//主线编队复制到第一队伍
/*TeamPosManager teamPosManager = user.getTeamPosManager();
TeamPosManager teamPosManager = user.getTeamPosManager();
Map<Integer, List<TeamPosHeroInfo>> teamPosForHero = teamPosManager.getTeamPosForHero();
if(teamPosForHero.containsKey(GlobalsDef.FORMATION_NORMAL)){
if(teamPosForHero.containsKey(GlobalsDef.FORMATION_NORMAL)&&!teamPosForHero.containsKey(GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE)){
teamPosManager.updateTeamPosByTeamId(GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE, teamPosManager.getTeamPosForHero().get(GlobalsDef.FORMATION_NORMAL));
//保存编队到跨服数据中
CrossServiceLogic.getInstance().dispose(user);
}*/
}
builder.setIsFirst(true);
arenaManager.setCrossYuxulundaoFirst(System.currentTimeMillis());
//重置段位发奖

View File

@ -41,7 +41,7 @@ public class CrossServiceLogic {
/**
* key,
*/
private static final int EXPIRE = 60*60*6;
private static final int EXPIRE = 604800;//七天
public static class Instance {
public final static CrossServiceLogic instance = new CrossServiceLogic();
@ -322,7 +322,7 @@ public class CrossServiceLogic {
return null;
}
// 连接跨服游戏库,获取玩家信息
MongoTemplate game = MongoUtil.getInstence().getMonogTemplate(Integer.parseInt(userInfo.getServerId()));
MongoTemplate game = MongoUtil.getInstence().getMonogTemplate2(Integer.parseInt(userInfo.getServerId()));
User user = game.findOne(query, User.class);
if (user == null){
return null;

View File

@ -288,28 +288,6 @@ public class CrossYuxulundaoLogic {
if (csPlayer == null) {
return null;
}
/*CrossArenaManager crossArenaManager = null;
try {
//本服和其他服
crossArenaManager=PlayerLogic.getCrossArenaManager(csPlayer) ;
CoreSettings coreSettings = ConfigurableApplicationContextManager.getBean(CoreSettings.class);
if(csPlayer.getRpcIp().equals(coreSettings.getIp())&&csPlayer.getRpcPort() == coreSettings.getPort()){
int force1 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_ONE, false);
int force2 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_TWO, false);
int force3 = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.CROSS_YU_XU_LUN_DAO_THREE, false);
}else{
}
}catch (Exception e){
}
if(crossArenaManager == null){
return null;
}*/
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(enemyId);
CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder()
.setUid(enemyId)
@ -386,7 +364,6 @@ public class CrossYuxulundaoLogic {
.setUserName(arenaRecord.getUserName())
.setHeadFrame(arenaRecord.getHeadFrame()).setFightData1(fightDataProto1).setFightData2(fightDataProto2).setFightData3(fightDataProto3)
.setPower(arenaRecord.getAttackForce()).setType(arenaRecord.getYxldBattleType()).build();
}else{
return CommonProto.crossYxldPlayerRecordInfo.newBuilder().setTime(arenaRecord.getCreateTime())
.setUid(arenaRecord.getAttackId())

View File

@ -860,24 +860,34 @@ public class PlayerLogic {
}
public static CrossArenaManager getCrossArenaManager(CSPlayer csPlayer )throws Exception{
//CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(id);
if(csPlayer==null){
return null;
//throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
//基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId());
// String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(csPlayer.getServerId());
//rpc 数据调用测试
String ip1 =csPlayer.getRpcIp();
int port1 = csPlayer.getRpcPort();
int uid1 = csPlayer.getUserId();
String ip =csPlayer.getRpcIp();
int port = csPlayer.getRpcPort();
int uid = csPlayer.getUserId();
StringBuilder sb = new StringBuilder();
sb.append("RPCCORE").append("|")
.append(ip1).append("|")
.append(port1).toString();
ClientAdapterPo<RPCRequestIFace.Client> rPCClient1 = null;
rPCClient1 = ClientAdapterPo.getClientAdapterPo(sb.toString());
CrossArenaManager crossArenaManager= rPCClient1.getClient().getHeroManagerInfo(uid1);
.append(ip).append("|")
.append(port).toString();
ClientAdapterPo<RPCRequestIFace.Client> rPCClient = null;
CrossArenaManager crossArenaManager = null ;
try{
rPCClient = ClientAdapterPo.getClientAdapterPo(sb.toString());
crossArenaManager = rPCClient.getClient().getHeroManagerInfo(uid);
}catch (Exception e) {
LOGGER.info("callback=>", e);
} finally {
if(rPCClient != null){
rPCClient.returnObject(sb.toString());
}else{
LOGGER.info("callback=> rPCClient is null ");
}
}
return crossArenaManager;
}
@ -977,21 +987,29 @@ public class PlayerLogic {
return PlayerLogic.getInstance().getCrossYxldMyTeamInfo(user, team);
}
//rpc 数据调用测试
String ip1 =csPlayer.getRpcIp();
int port1 = csPlayer.getRpcPort();
int uid1 = csPlayer.getUserId();
String ip =csPlayer.getRpcIp();
int port = csPlayer.getRpcPort();
int uid = csPlayer.getUserId();
StringBuilder sb = new StringBuilder();
sb.append("RPCCORE").append("|")
.append(ip1).append("|")
.append(port1).toString();
.append(ip).append("|")
.append(port).toString();
ClientAdapterPo<RPCRequestIFace.Client> rPCClient1 = null;
rPCClient1 = ClientAdapterPo.getClientAdapterPo(sb.toString());
ClientAdapterPo<RPCRequestIFace.Client> rPCClient = null;
CrossArenaManager crossArenaManager= rPCClient1.getClient().getHeroManagerInfo(uid1);
if(crossArenaManager == null){
LOGGER.info("hehhhhhhhhhhh");
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
CrossArenaManager crossArenaManager = null ;
try{
rPCClient = ClientAdapterPo.getClientAdapterPo(sb.toString());
crossArenaManager = rPCClient.getClient().getHeroManagerInfo(uid);
}catch (Exception e) {
LOGGER.info("callback=>", e);
} finally {
if(rPCClient != null){
rPCClient.returnObject(sb.toString());
}else{
LOGGER.info("callback=> rPCClient is null ");
return null;
}
}
for(int teamId: team){

View File

@ -76,20 +76,21 @@ public class CrossYuXuLunDaoRank extends AbstractRank{
.setSex(0).setCrossScore(mapEntry.getEnemyStatus());
builder.addRanks(everyRank);
}else{
ArenaOfUser query = CrossServiceLogic.getInstance().query(Integer.valueOf(data.getValue()));
//ArenaOfUser query = CrossServiceLogic.getInstance().query(Integer.valueOf(data.getValue()));
CSPlayer cPlayer = CrossServiceLogic.getPlayerByRedis(Integer.valueOf(data.getValue()));
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index)
.setParam1(query.getHeroManager().getTotalForce())
.setParam1(cPlayer.getMaxFore())
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
//CommonProto.UserRank.Builder everyRank = getCrossOneUserRank(query,everyRankInfo);
CommonProto.UserRank.Builder everyRank = getCrossOneUserRank(Integer.valueOf(data.getValue()),everyRankInfo);
CommonProto.UserRank.Builder everyRank = getCrossOneUserRank(cPlayer,everyRankInfo);
builder.addRanks(everyRank);
}
}
public static CommonProto.UserRank.Builder getCrossOneUserRank(int uid , CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(uid);
CSPlayer player = CrossServiceLogic.getPlayerByRedis(uid);
public static CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer player , CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(player.getUserId());
//CSPlayer player = CrossServiceLogic.getPlayerByRedis(uid);
return CommonProto.UserRank.newBuilder()
.setUid(player.getUserId())
.setLevel(player.getLevel())
@ -105,7 +106,7 @@ public class CrossYuXuLunDaoRank extends AbstractRank{
.setUserTitle(player.getUserTitle())
.setPracticeLevel(player.getPracticeLevel())
.setServerName(serverName)
.setCrossScore(player.getCrossYuxulundaoNewScore());
.setCrossScore(everyRankInfo.getParam2());
}
@Override

View File

@ -203,8 +203,8 @@ public class MinuteTask extends Thread {
try {
GlobleSystemLogic.getInstence().calCulRank();
ArenaLogic.getInstance().sendReward(GlobalsDef.ARENA_DAILY_REWARD);
if(calendar.get(Calendar.DAY_OF_WEEK)==1){
CrossYuxulundaoLogic.getInstance().initRank();//玉虚论道重置
if(calendar.get(Calendar.DAY_OF_WEEK) == 2){ //玉虚论道重置
CrossYuxulundaoLogic.getInstance().initRank();
}
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
for(Map.Entry<Integer,GuildInfo> guildInfoEntry:guildInfoMap.entrySet()){