Merge branch 'master_test_gn_arena' into dev_dh_cross_rank
# Conflicts: # serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.javaback_recharge
commit
9126613ba7
|
@ -0,0 +1,28 @@
|
|||
package com.ljsd.jieling.handler;
|
||||
|
||||
import com.google.protobuf.GeneratedMessage;
|
||||
import com.ljsd.jieling.logic.GlobleSystemLogic;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
|
||||
/**
|
||||
* @Author hj
|
||||
* @Date 2021/7/28 16:36:26
|
||||
* @Description: 跨服信息
|
||||
* @Version 1.0
|
||||
*/
|
||||
public class GetCrossServerHandler extends BaseHandler<PlayerInfoProto.IsCrossRequert> {
|
||||
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.GetCrossServerRequest;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GeneratedMessage processWithProto(int uid, PlayerInfoProto.IsCrossRequert proto) throws Exception {
|
||||
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
|
||||
int result = crossGroup == -1 ? 0 : 1;
|
||||
return PlayerInfoProto.IsCrossResponse.newBuilder().setIsCross(result).build();
|
||||
}
|
||||
|
||||
}
|
|
@ -17,6 +17,6 @@ public class RankHandler extends BaseHandler<PlayerInfoProto.RankRequest> {
|
|||
@Override
|
||||
public void processWithProto(ISession iSession, PlayerInfoProto.RankRequest proto) throws Exception {
|
||||
RankLogic.getInstance().getRank(iSession,proto.getType(),proto.getActiviteId(),
|
||||
proto.getIndex(),MessageTypeProto.MessageType.GET_ONE_RANK_RESPONSE);
|
||||
proto.getIndex(),proto.getIsCross(),MessageTypeProto.MessageType.GET_ONE_RANK_RESPONSE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,6 @@ public class PlayWithSbHandler extends BaseHandler<ArenaInfoProto.PlayWithSbRequ
|
|||
|
||||
@Override
|
||||
public void processWithProto(ISession iSession, ArenaInfoProto.PlayWithSbRequest proto) throws Exception {
|
||||
ArenaLogic.getInstance().playWithSb(iSession,proto.getChallengeUid(),proto.getMyteamId());
|
||||
ArenaLogic.getInstance().playWithSb(iSession,proto.getChallengeUid(),proto.getMyteamId(),proto.getCross());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ public class CrossServiceLogic {
|
|||
return CrossServiceLogic.Instance.instance;
|
||||
}
|
||||
|
||||
public String findServerName(int serverId) throws UnknownHostException {
|
||||
public String findServerName(int serverId) {
|
||||
return CrossDeathPathLogic.getInstance().getServerName(serverId);
|
||||
}
|
||||
|
||||
|
@ -143,11 +143,7 @@ public class CrossServiceLogic {
|
|||
arenaOfPlayerManager.setGender(player.getSex());
|
||||
arenaOfPlayerManager.setSkin(player.getUserSkin());
|
||||
arenaOfPlayerManager.setUserMount(player.getUserMount());
|
||||
try {
|
||||
arenaOfPlayerManager.setServerName(CrossServiceLogic.getInstance().findServerName(GameApplication.serverId));
|
||||
} catch (UnknownHostException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
arenaOfPlayerManager.setServerName(CrossServiceLogic.getInstance().findServerName(GameApplication.serverId));
|
||||
return arenaOfPlayerManager;
|
||||
}
|
||||
private ArenaOfHeroManager buildArenaOfHeroManager(User user){
|
||||
|
@ -205,4 +201,23 @@ public class CrossServiceLogic {
|
|||
return arenaOfHero;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据uid获取服务器名称
|
||||
* @param uid
|
||||
* @return
|
||||
*/
|
||||
public String getServerNameByUId(int uid){
|
||||
String name = "";
|
||||
try {
|
||||
ArenaOfUser query = query(uid);
|
||||
if (query != null){
|
||||
int serverId = query.getPlayerManager().getServerId();
|
||||
return CrossDeathPathLogic.getInstance().getServerNameByDeathPath(serverId);
|
||||
}
|
||||
} catch (UnknownHostException e) {
|
||||
LOGGER.error("===========获取跨服玩家信息报错=======:{}",e.getMessage());
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -626,18 +626,27 @@ public class ArenaLogic {
|
|||
}
|
||||
}
|
||||
|
||||
public void playWithSb(ISession session,int challengeUid,int myteamId) throws Exception {
|
||||
//0为本服 1为跨服
|
||||
public void playWithSb(ISession session,int challengeUid,int myteamId,int cross) throws Exception {
|
||||
User mine = UserManager.getUser(session.getUid());
|
||||
User defUser = UserManager.getUser(challengeUid);
|
||||
if(!defUser.getTeamPosManager().getTeamPosForHero().containsKey(1)){
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("对方未设置阵容"));
|
||||
}
|
||||
|
||||
int myforce = HeroLogic.getInstance().calTeamTotalForce(mine, myteamId, false);
|
||||
int deforce = HeroLogic.getInstance().calTeamTotalForce(defUser, 1, false);
|
||||
CommonProto.FightTeamInfo fightTeamInfo = BehaviorUtil.getFightTeamInfo(mine,myteamId,true);
|
||||
CommonProto.FightTeamInfo deffightTeamInfo = BehaviorUtil.getFightTeamInfo(defUser,1,false);
|
||||
CommonProto.FightTeamInfo deffightTeamInfo = null;
|
||||
int deforce;
|
||||
if(cross==0){
|
||||
User defUser = UserManager.getUser(challengeUid);
|
||||
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{
|
||||
//跨服切磋
|
||||
ArenaOfUser user = CrossServiceLogic.getInstance().query(challengeUid);
|
||||
deforce= user.getHeroManager().getTotalForce();
|
||||
deffightTeamInfo = FightUtil.makeCrossPersonData(user);
|
||||
}
|
||||
if(myforce<deforce){
|
||||
deffightTeamInfo = CommonProto.FightTeamInfo.newBuilder().mergeFrom(deffightTeamInfo).setFirstCamp(1).build();
|
||||
}
|
||||
|
|
|
@ -429,7 +429,6 @@ public class GuildLogic {
|
|||
Integer position = memberEntry.getKey();
|
||||
Set<Integer> value = memberEntry.getValue();
|
||||
for(Integer uidTmp : value){
|
||||
LOGGER.info("family有问题的uid:{}",uidTmp);
|
||||
User userTmp = UserManager.getUser(uidTmp);
|
||||
builder.addFamilyUserInfo(CBean2Proto.getFamilyUserInfo(userTmp,position));
|
||||
}
|
||||
|
|
|
@ -76,7 +76,6 @@ public class FriendLogic {
|
|||
List<Integer> friends = friendManager.getFriends();
|
||||
List<CommonProto.Friend> friendList = new CopyOnWriteArrayList<>();
|
||||
for (Integer friendId :friends){
|
||||
LOGGER.info("有问题的Uid:{}",friendId);
|
||||
CommonProto.Friend friend = CBean2Proto.getFriendInfo(friendId,friendManager);
|
||||
friendList.add(friend);
|
||||
}
|
||||
|
|
|
@ -1169,6 +1169,7 @@ public class HeroLogic{
|
|||
}
|
||||
if (teamId == GlobalsDef.FORMATION_NORMAL) {
|
||||
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(iSession.getUid()));
|
||||
CrossServiceLogic.getInstance().dispose(user);
|
||||
}
|
||||
|
||||
// 跨服 更新编队信息
|
||||
|
|
|
@ -213,6 +213,9 @@ public class MissionLoigc {
|
|||
int jadeMissionType = GameMisionType.JADE_DYNASTY_MISSION.getType();
|
||||
for(Integer id:jadeDynastyMissionType.getDoingMissionIds()){
|
||||
SThemeActivityTaskConfig config = SThemeActivityTaskConfig.idTaskConfig.get(id);
|
||||
if(config==null){
|
||||
continue;
|
||||
}
|
||||
int progress = config.getTaskValue()[1][0];
|
||||
switch (config.getType()){
|
||||
case 1:
|
||||
|
|
|
@ -24,10 +24,10 @@ public enum RankEnum {
|
|||
GUILD_RED_PACKAGE_RANK(13,RedisKey.GUILD_RED_PACKAGE_RANK,GuildRedPackageRank::new,false),//param1:红包总价格 param2:无 param3:无
|
||||
CAR_DEALY_RANK(14,RedisKey.CAR_DEALY_RANK,CarDealyRank::new,false),//param1:伤害 param2:无 param3:无
|
||||
CAR_DEALY_GUILD_RANK(19,RedisKey.CAR_DEALY_GUILD_RANK,CarDealyGuildRank::new,false),//param1:伤害 param2:无 param3:无
|
||||
DEATH_PATH_EVERY_PERSON_RANK(15,RedisKey.DEATH_PATH_EVERY_PERSON_RANK,DeathPathEveryPersonRank::new,false),//param1:当前阵玩家伤害 param2:无 param3:无
|
||||
DEATH_PATH_EVERY_GUILD_RANK(16,RedisKey.DEATH_PATH_EVERY_GUILD_RANK, DeathPathEveryGuildRank::new,false),//param1:当前阵公会伤害 param2:当前工会挑战人数 param3:无
|
||||
DEATH_PATH_TOTAL_PERSON_RANK(17,RedisKey.DEATH_PATH_TOTAL_PERSON_RANK,DeathPathTotalPersonRank::new,false),//param1:玩家总伤害 param2:无 param3:无
|
||||
DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new,false),//param1:工会总伤害 param2:无 param3:无
|
||||
DEATH_PATH_EVERY_PERSON_RANK(15,RedisKey.DEATH_PATH_EVERY_PERSON_RANK,DeathPathEveryPersonRank::new,true),//param1:当前阵玩家伤害 param2:无 param3:无
|
||||
DEATH_PATH_EVERY_GUILD_RANK(16,RedisKey.DEATH_PATH_EVERY_GUILD_RANK, DeathPathEveryGuildRank::new,true),//param1:当前阵公会伤害 param2:当前工会挑战人数 param3:无
|
||||
DEATH_PATH_TOTAL_PERSON_RANK(17,RedisKey.DEATH_PATH_TOTAL_PERSON_RANK,DeathPathTotalPersonRank::new,true),//param1:玩家总伤害 param2:无 param3:无
|
||||
DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new,true),//param1:工会总伤害 param2:无 param3:无
|
||||
GUILD_FORCE_RANK(20,RedisKey.GUILD_FORCE_RANK,GuildForceRank::new,false),//param1:公会总战力 param2:无 param3:无
|
||||
//达人排行榜
|
||||
EXPERT_RANK(21,RedisKey.EXPERT_RANK,GoldRank::new,false),//param1:活动进度 param2:无 param3:无
|
||||
|
|
|
@ -66,7 +66,7 @@ public class RankLogic {
|
|||
public static class Instance {
|
||||
public final static RankLogic instance = new RankLogic();
|
||||
}
|
||||
public void getRank(ISession session, int type, int activityId,int index,MessageTypeProto.MessageType messageType) throws Exception {
|
||||
public void getRank(ISession session, int type, int activityId,int index,int isCross,MessageTypeProto.MessageType messageType) throws Exception {
|
||||
LOGGER.info("获取排行榜信息type={},activityId={}",type,activityId);
|
||||
String rkey = "";
|
||||
if(activityId != 0){
|
||||
|
@ -74,11 +74,11 @@ public class RankLogic {
|
|||
}
|
||||
PlayerInfoProto.RankResponse rankResponse=null;
|
||||
AbstractRank rank = RankContext.getRankEnum(type);
|
||||
if(RankContext.isCrossRank(type)){
|
||||
if(RankContext.isCrossRank(type) || isCross == 1){
|
||||
//跨服
|
||||
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
|
||||
if(crossGroup>0){
|
||||
rankResponse = rank.getRank(session.getUid(),String.valueOf(crossGroup),index/20+1, 20);
|
||||
rankResponse = rank.getCrossRank(session.getUid(),String.valueOf(crossGroup),index/20+1, 20);
|
||||
}
|
||||
}else{
|
||||
rankResponse = rank.getRank(session.getUid(),rkey,index/20+1, 20);
|
||||
|
|
|
@ -2,6 +2,8 @@ package com.ljsd.jieling.logic.rank.rankImpl;
|
|||
|
||||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.logic.GlobleSystemLogic;
|
||||
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.rank.IRank;
|
||||
|
@ -36,7 +38,7 @@ public abstract class AbstractRank implements IRank {
|
|||
* @return 当前排行榜数据
|
||||
* @throws Exception
|
||||
*/
|
||||
public PlayerInfoProto.RankResponse getRank(int uid, String rkey, int page, int rankEndLine) throws Exception {
|
||||
public PlayerInfoProto.RankResponse getRank(int uid, String rkey, int page, int rankEndLine) throws Exception {
|
||||
if(rankEndLine==-1){
|
||||
rankEndLine = 100;
|
||||
}
|
||||
|
@ -65,22 +67,9 @@ public abstract class AbstractRank implements IRank {
|
|||
* @throws Exception
|
||||
*/
|
||||
public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception {
|
||||
if(rankEndLine==-1){
|
||||
rankEndLine = 100;
|
||||
}
|
||||
User user = UserManager.getUser(uid);
|
||||
if (page == 0) {
|
||||
page = 1;
|
||||
}
|
||||
int start = (page - 1) * rankEndLine, end = page * rankEndLine - 1;
|
||||
Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores = getRankByKey(rkey,start,end);
|
||||
if(start%rankEndLine == 0){
|
||||
start++;
|
||||
}
|
||||
PlayerInfoProto.RankResponse.Builder allUserResponse = getAllUserResponse(zsetreverseRangeWithScores,start);
|
||||
//当前用户信息
|
||||
getMyInfo(user,rkey,allUserResponse);
|
||||
return allUserResponse.build();
|
||||
int groupId = GlobleSystemLogic.getInstence().getCrossGroup();
|
||||
redisKey = RedisUtil.getInstence().getKey(String.valueOf(groupId),redisKey,false);
|
||||
return getRank(uid,rkey,page,rankEndLine);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -157,7 +146,6 @@ public abstract class AbstractRank implements IRank {
|
|||
}
|
||||
|
||||
protected void getOptional(int index,ZSetOperations.TypedTuple<String> data,PlayerInfoProto.RankResponse.Builder builder) throws Exception {
|
||||
LOGGER.info("获取排行榜信息===================玩家id:{}"+data.getValue());
|
||||
User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true);
|
||||
if (everyUser == null){
|
||||
return;
|
||||
|
@ -170,8 +158,10 @@ public abstract class AbstractRank implements IRank {
|
|||
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(everyUser, everyRankInfo);
|
||||
builder.addRanks(oneUserRank);
|
||||
}
|
||||
public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo) throws Exception {
|
||||
CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder()
|
||||
|
||||
private CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){
|
||||
String serverName = CrossServiceLogic.getInstance().getServerNameByUId(everyUser.getId());
|
||||
return CommonProto.UserRank.newBuilder()
|
||||
.setUid(everyUser.getId())
|
||||
.setUserName(everyUser.getPlayerInfoManager().getNickName())
|
||||
.setHead(everyUser.getPlayerInfoManager().getHead())
|
||||
|
@ -183,8 +173,8 @@ public abstract class AbstractRank implements IRank {
|
|||
.setUserSkin(everyUser.getPlayerInfoManager().getUserSkin())
|
||||
.setUserTitle(everyUser.getPlayerInfoManager().getUserTitle())
|
||||
.setUserMount(everyUser.getPlayerInfoManager().getUserMount())
|
||||
.setPracticeLevel(everyUser.getHeroManager().getPracticeLevel());
|
||||
return everyRank;
|
||||
.setPracticeLevel(everyUser.getHeroManager().getPracticeLevel())
|
||||
.setServerName(serverName);
|
||||
}
|
||||
|
||||
protected void getMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){
|
||||
|
|
|
@ -105,4 +105,9 @@ public class CrossArenaRank extends AbstractRank {
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerInfoProto.RankResponse getCrossRank(int uid, String rkey, int page, int rankEndLine) throws Exception {
|
||||
return getRank(uid,rkey,page,rankEndLine);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ public class DeathPathEveryPersonRank extends AbstractRank {
|
|||
return data[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRank(int uid,String rkey,double... data){
|
||||
RedisUtil.getInstence().incrementZsetScore(redisKey,rkey,String.valueOf(uid), Double.valueOf(getScore(data)).intValue());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue