排行榜批量修改,跨服逻辑统一接口,本地获取排行玩家数据不放缓存
parent
93a653423f
commit
e807b5b743
|
@ -111,7 +111,11 @@ public class FastChallengeHandler extends BaseHandler<FightInfoProto.FastFightCh
|
|||
int fight = fightResult.getResult();
|
||||
String content;
|
||||
String challengeContent;
|
||||
PlayerManager playerInfoManager = UserManager.getUser(challengeId).getPlayerInfoManager();
|
||||
User challenge = UserManager.getUserNotCache(challengeId);
|
||||
if (challenge == null){
|
||||
throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);
|
||||
}
|
||||
PlayerManager playerInfoManager = challenge.getPlayerInfoManager();
|
||||
String challengeName = playerInfoManager.getNickName();
|
||||
String challengeNameColor = playerInfoManager.getNameColor();
|
||||
String nameColor = user.getPlayerInfoManager().getNameColor();
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig;
|
|||
import com.ljsd.jieling.core.FunctionIdEnum;
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import com.ljsd.jieling.db.mongo.MongoKey;
|
||||
import com.ljsd.jieling.db.mongo.MongoUtil;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.handler.mission.Mission;
|
||||
|
@ -297,8 +298,7 @@ public class MapManager extends MongoBase {
|
|||
}
|
||||
|
||||
|
||||
public static void getEnergy(User user) throws Exception {
|
||||
|
||||
public static void getEnergy(User user){
|
||||
PlayerManager playerInfoManager = user.getPlayerInfoManager();
|
||||
Item item = user.getItemManager().getItemMap().get(Global.STAMINA);
|
||||
int itemNum = (int)item.getItemNum();
|
||||
|
@ -313,14 +313,12 @@ public class MapManager extends MongoBase {
|
|||
item.setItemNum(curEnergy > playerInfoManager.getMaxStamina() ? playerInfoManager.getMaxStamina() : curEnergy);
|
||||
KtEventUtils.onKtEvent(user, ParamEventBean.UserItemEvent, BIReason.TIME_REWARD,GlobalsDef.addReason,item.getItemId(),addValue,item.getItemNum());
|
||||
}
|
||||
setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime);
|
||||
} else {
|
||||
setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime);
|
||||
}
|
||||
setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime);
|
||||
}
|
||||
}
|
||||
|
||||
private static void setLastUpdateEnergyTime(Item item, int updateTime, int lastUpdateEnergyTime) throws Exception {
|
||||
private static void setLastUpdateEnergyTime(Item item, int updateTime, int lastUpdateEnergyTime) {
|
||||
int time = lastUpdateEnergyTime + ((updateTime -lastUpdateEnergyTime)/60 )* 60;
|
||||
item.setEndingTime(time);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ 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.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;
|
||||
|
@ -116,11 +117,21 @@ public class CrossServiceLogic {
|
|||
*/
|
||||
public static long getCrossTeamForce(int userId, int teamId){
|
||||
CSPlayer csPlayer = getPlayerByRedis(userId);
|
||||
int force = 0;
|
||||
if (csPlayer == null){
|
||||
return 0;
|
||||
return force;
|
||||
}
|
||||
CrossArenaManager data = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
|
||||
return data.getTotalForceByTeam().getOrDefault(teamId,0);
|
||||
// 本服玩家直接计算,跨服玩家走rpc
|
||||
if(GameApplication.serverId == csPlayer.getServerId()){
|
||||
User user = UserManager.getUserNotCache(userId);
|
||||
if (user != null){
|
||||
force = HeroLogic.getInstance().calTeamTotalForce(user, teamId, false);
|
||||
}
|
||||
}else {
|
||||
CrossArenaManager data = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
|
||||
force = data.getTotalForceByTeam().getOrDefault(teamId,0);
|
||||
}
|
||||
return force;
|
||||
}
|
||||
|
||||
private static CSPlayer formattUserToPlayer(User user){
|
||||
|
|
|
@ -153,7 +153,7 @@ public class FightUtil {
|
|||
deffightTeamInfo = makeFightWithSnapData(pvpFightEvent.getDefFightSnapData());
|
||||
} else {
|
||||
if (fightEvent.getFightType() == GameFightType.ArenaPersonFight || fightEvent.getFightType() == GameFightType.CarPersonChallenge) {
|
||||
User defInMem = UserManager.getUserInMem(pvpFightEvent.getDefUid());
|
||||
User defInMem = UserManager.getUserNotCache(pvpFightEvent.getDefUid());
|
||||
deffightTeamInfo = makePersonFightData(defInMem, pvpFightEvent.getDefTeamId(), null, null);
|
||||
} else {
|
||||
deffightTeamInfo = makeRobotFightData(pvpFightEvent.getDefUid());
|
||||
|
@ -165,7 +165,7 @@ public class FightUtil {
|
|||
if (SArenaRobotConfig.getsArenaRobotConfigById(pvpFightEvent.getAttackUid()) != null) {
|
||||
fightTeamInfo = makeRobotFightData(pvpFightEvent.getAttackUid());
|
||||
} else {
|
||||
User userInMem = UserManager.getUserInMem(pvpFightEvent.getAttackUid());
|
||||
User userInMem = UserManager.getUserNotCache(pvpFightEvent.getAttackUid());
|
||||
fightTeamInfo = makePersonFightData(userInMem, pvpFightEvent.getTeamId(), pvpFightEvent.getAttackBloodMap(), null);
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -965,7 +965,7 @@ public class PlayerLogic {
|
|||
}
|
||||
return builder.build();
|
||||
}
|
||||
public CrossArenaManager getCrossArenaManagerData(CSPlayer csPlayer){
|
||||
public CrossArenaManager getCrossArenaManagerData(CSPlayer csPlayer){
|
||||
String rpcString = RedisUtil.getInstence().getObject(RedisKey.LOGIC_SERVER_INFO, String.valueOf(csPlayer.getServerId()), String.class, -1);
|
||||
String ip = rpcString.split(":")[0];
|
||||
String port = rpcString.split(":")[3];
|
||||
|
@ -976,7 +976,7 @@ public class PlayerLogic {
|
|||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("RPCCORE").append("|")
|
||||
.append(ip).append("|")
|
||||
.append(port).toString();
|
||||
.append(port);
|
||||
ClientAdapterPo<RPCRequestIFace.Client> rPCClient = null;
|
||||
CrossArenaManager crossArenaManager = null ;
|
||||
try{
|
||||
|
|
|
@ -106,7 +106,7 @@ public class RankLogic {
|
|||
if (now > old){
|
||||
// 距离上次存储超过一小时,重新获取
|
||||
AbstractRank rank = RankContext.getRankEnum(RankEnum.FORCE_CURR_RANK.getType());
|
||||
PlayerInfoProto.RankResponse rankResponse = null;
|
||||
PlayerInfoProto.RankResponse rankResponse;
|
||||
try {
|
||||
rankResponse = rank.getRank(user.getId(), "", start, end);
|
||||
} catch (Exception e) {
|
||||
|
@ -172,6 +172,9 @@ public class RankLogic {
|
|||
*/
|
||||
private List<Integer> getTeamByUid(User user){
|
||||
ArrayList<Integer> integers = new ArrayList<>();
|
||||
if (user == null){
|
||||
return integers;
|
||||
}
|
||||
List<TeamPosHeroInfo> heroInfos = user.getTeamPosManager().getTeamPosForHero().get(GlobalsDef.FORMATION_NORMAL);
|
||||
heroInfos.forEach(v->{
|
||||
// 获取英雄模板id
|
||||
|
@ -188,9 +191,9 @@ public class RankLogic {
|
|||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
private User getRankUid(PlayerInfoProto.RankResponse rankResponse, int ranking) throws Exception {
|
||||
private User getRankUid(PlayerInfoProto.RankResponse rankResponse, int ranking){
|
||||
CommonProto.UserRank ranks = rankResponse.getRanks(ranking);
|
||||
return UserManager.getUser(ranks.getUid());
|
||||
return UserManager.getUserNotCache(ranks.getUid());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -143,8 +143,12 @@ public abstract class AbstractRank implements IRank {
|
|||
return RedisUtil.getInstence().getZsetreverseRangeWithScores(getCrossRedisKey(), rkey, start, end, false);
|
||||
}
|
||||
|
||||
//获取第一名信息
|
||||
public CommonProto.UserRank.Builder getFirst(int activityId) throws Exception {
|
||||
/**
|
||||
* 获取第一名信息
|
||||
* @param activityId
|
||||
* @return
|
||||
*/
|
||||
public CommonProto.UserRank.Builder getFirst(int activityId) {
|
||||
Set<ZSetOperations.TypedTuple<String>> rankByKey = getRankByKey(activityId==0?"":String.valueOf(activityId), 0, 0);
|
||||
CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder();
|
||||
if(rankByKey.size()!=1){
|
||||
|
@ -152,7 +156,7 @@ public abstract class AbstractRank implements IRank {
|
|||
}
|
||||
ZSetOperations.TypedTuple<String> data = rankByKey.iterator().next();
|
||||
LOGGER.info("有问题的ArenaId{}",Integer.parseInt(data.getValue()));
|
||||
User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true);
|
||||
User everyUser = UserManager.getUserNotCache(Integer.parseInt(data.getValue()));
|
||||
if (everyUser == null){
|
||||
return builder;
|
||||
}
|
||||
|
@ -191,7 +195,7 @@ public abstract class AbstractRank implements IRank {
|
|||
return builder;
|
||||
}
|
||||
|
||||
protected PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores,int start) throws Exception{
|
||||
private PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores, int start){
|
||||
PlayerInfoProto.RankResponse.Builder builder = PlayerInfoProto.RankResponse.newBuilder();
|
||||
forEach(start,zsetreverseRangeWithScores,(index,data)->{
|
||||
try {
|
||||
|
@ -204,7 +208,7 @@ public abstract class AbstractRank implements IRank {
|
|||
}
|
||||
|
||||
protected void getOptional(int index,ZSetOperations.TypedTuple<String> data,PlayerInfoProto.RankResponse.Builder builder) throws Exception {
|
||||
User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true);
|
||||
User everyUser = UserManager.getUserNotCache(Integer.parseInt(data.getValue()));
|
||||
if (everyUser == null){
|
||||
return;
|
||||
}
|
||||
|
@ -244,7 +248,7 @@ public abstract class AbstractRank implements IRank {
|
|||
builder.addRanks(oneUserRank);
|
||||
}
|
||||
|
||||
private CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){
|
||||
public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){
|
||||
return CommonProto.UserRank.newBuilder()
|
||||
.setUid(everyUser.getId())
|
||||
.setUserName(everyUser.getPlayerInfoManager().getNickName())
|
||||
|
|
|
@ -8,6 +8,9 @@ import org.springframework.data.redis.core.ZSetOperations;
|
|||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
*/
|
||||
public class CarDealyGuildRank extends AbstractRank{
|
||||
public CarDealyGuildRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
|
@ -44,7 +47,6 @@ public class CarDealyGuildRank extends AbstractRank{
|
|||
builder.addRanks(everyRank);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void getMyInfo(User user, String rkey, PlayerInfoProto.RankResponse.Builder allUserResponse) {
|
||||
int guildId = user.getPlayerInfoManager().getGuildId();
|
||||
|
|
|
@ -1,45 +1,8 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
|
||||
public class CarDealyRank extends AbstractRank{
|
||||
public class CarDealyRank extends ForceRank{
|
||||
|
||||
public CarDealyRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.longValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
return data[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void getOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
|
||||
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
|
||||
.setRank(index)
|
||||
.setParam1(getParam1(data.getScore()))
|
||||
.setParam2(getParam2(data.getScore()))
|
||||
.setParam3(getParam3(data.getScore()));
|
||||
User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true);
|
||||
CommonProto.UserRank everyRank = CommonProto.UserRank.newBuilder()
|
||||
.setUserName(everyUser.getPlayerInfoManager().getNickName())
|
||||
.setRankInfo(everyRankInfo)
|
||||
.setSex(everyUser.getPlayerInfoManager().getSex())
|
||||
.setUserSkin(everyUser.getPlayerInfoManager().getUserSkin())
|
||||
.setUserTitle(everyUser.getPlayerInfoManager().getUserTitle())
|
||||
.setUserMount(everyUser.getPlayerInfoManager().getUserMount())
|
||||
.setPracticeLevel(everyUser.getHeroManager().getPracticeLevel())
|
||||
.build();
|
||||
builder.addRanks(everyRank);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,22 +1,13 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
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.arena.ArenaLogic;
|
||||
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.hero.HeroLogic;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class CrossYuXuLunDaoPersonRank extends AbstractRank{
|
||||
public class CrossYuXuLunDaoPersonRank extends CrossYuXuLunDaoRank{
|
||||
|
||||
public CrossYuXuLunDaoPersonRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
|
@ -37,39 +28,13 @@ public class CrossYuXuLunDaoPersonRank extends AbstractRank{
|
|||
return data[0];
|
||||
}
|
||||
|
||||
/**
|
||||
*向排行榜添加或在原来的数据上修改某条数据
|
||||
*/
|
||||
public void addOrUpdateRank(int uid,String rkey,double... data){
|
||||
String key = RedisKey.getKey(redisKey,rkey,false);
|
||||
//decr
|
||||
RedisUtil.getInstence().zsetAddOne(key,String.valueOf(uid), getScore(data));
|
||||
}
|
||||
@Override
|
||||
protected void getCrossOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
|
||||
if(Integer.parseInt(data.getValue())<1000){
|
||||
/*CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
|
||||
.setRank(index)
|
||||
.setParam1(0)
|
||||
.setParam2(getParam2(data.getScore()))
|
||||
.setParam3(getParam3(data.getScore()));
|
||||
CrossArenaEnemy mapEntry = RedisUtil.getInstence().getMapEntry(RedisKey.CROSS_YUXULUNDAO_ROBOT_INFO, String.valueOf(GlobleSystemLogic.getInstence().getCrossGroup()), data.getValue(), CrossArenaEnemy.class);
|
||||
if(mapEntry==null){
|
||||
if(Integer.parseInt(data.getValue()) >= 1000){
|
||||
CSPlayer cPlayer = CrossServiceLogic.getPlayerByRedis(Integer.valueOf(data.getValue()));
|
||||
if (cPlayer == null){
|
||||
return;
|
||||
}
|
||||
String serverName = CrossDeathPathLogic.getInstance().getServerNameByDeathPath(mapEntry.getServerID());
|
||||
everyRankInfo.setParam1(mapEntry.getTotalForce());
|
||||
CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder()
|
||||
.setUid(mapEntry.getEnemyId_UUid())
|
||||
.setUserName(mapEntry.getRandomName())
|
||||
.setLevel(mapEntry.getLevel()==0?100:mapEntry.getLevel())
|
||||
.setUserSkin(80012)
|
||||
.setRankInfo(everyRankInfo)
|
||||
.setServerName(serverName)
|
||||
.setSex(0).setCrossScore(mapEntry.getEnemyStatus());
|
||||
builder.addRanks(everyRank);*/
|
||||
}else{
|
||||
CSPlayer cPlayer = CrossServiceLogic.getPlayerByRedis(Integer.valueOf(data.getValue()));
|
||||
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
|
||||
.setRank(index)
|
||||
.setParam1(getParam1(data.getScore()))
|
||||
|
@ -79,60 +44,5 @@ public class CrossYuXuLunDaoPersonRank extends AbstractRank{
|
|||
builder.addRanks(everyRank);
|
||||
}
|
||||
}
|
||||
public static CommonProto.UserRank.Builder getCrossOneUserRankyx(CSPlayer player, CommonProto.RankInfo.Builder everyRankInfo){
|
||||
String serverName = CrossServiceLogic.simplifyServerName(player.getServerId());
|
||||
return CommonProto.UserRank.newBuilder()
|
||||
.setUid(player.getUserId())
|
||||
.setLevel(player.getLevel())
|
||||
.setUserName(player.getName())
|
||||
.setRankInfo(everyRankInfo)
|
||||
.setForce(player.getMaxFore())
|
||||
.setSex(player.getSex())
|
||||
.setHead(player.getHead())
|
||||
.setGuildName("")
|
||||
.setHeadFrame(player.getHeadFrame())
|
||||
.setUserMount(player.getUserMount())
|
||||
.setUserSkin(player.getSkin())
|
||||
.setUserTitle(player.getUserTitle())
|
||||
.setPracticeLevel(player.getPracticeLevel())
|
||||
.setServerName(serverName)
|
||||
.setCrossScore((int)everyRankInfo.getParam1());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getCrossMyInfo(User user, String rkey, PlayerInfoProto.RankResponse.Builder allUserResponse){
|
||||
String crossGroup = String.valueOf(GlobleSystemLogic.getInstence().getCrossGroup());
|
||||
int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey, crossGroup,Integer.toString(user.getId()),false).intValue();
|
||||
Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, crossGroup, Integer.toString(user.getId()),false);
|
||||
int totalForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,false);
|
||||
CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder()
|
||||
.setRank(myRank)
|
||||
.setParam1(totalForce)
|
||||
.setParam2(zSetScore.intValue())
|
||||
.build();
|
||||
allUserResponse.setMyRankInfo(towerRankInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
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;
|
||||
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
|
||||
Set<ZSetOperations.TypedTuple<String>> scores =
|
||||
RedisUtil.getInstence().getZsetreverseRangeWithScores(redisKey, String.valueOf(crossGroup), start, end, false);
|
||||
if(start % rankEndLine == 0){
|
||||
start++;
|
||||
}
|
||||
PlayerInfoProto.RankResponse.Builder allUserResponse = getCrossAllUserResponse(scores,start);
|
||||
//当前用户信息
|
||||
getCrossMyInfo(user,rkey,allUserResponse);
|
||||
return allUserResponse.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -51,6 +51,7 @@ public class CrossYuXuLunDaoRank extends AbstractRank{
|
|||
//decr
|
||||
RedisUtil.getInstence().zsetAddOne(key,String.valueOf(uid), getScore(data));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void getCrossOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
|
||||
if(Integer.parseInt(data.getValue())<1000){
|
||||
|
@ -89,7 +90,7 @@ public class CrossYuXuLunDaoRank extends AbstractRank{
|
|||
}
|
||||
}
|
||||
|
||||
private static CommonProto.UserRank.Builder getCrossOneUserRankyx(CSPlayer player, CommonProto.RankInfo.Builder everyRankInfo){
|
||||
public static CommonProto.UserRank.Builder getCrossOneUserRankyx(CSPlayer player, CommonProto.RankInfo.Builder everyRankInfo){
|
||||
String serverName = CrossServiceLogic.simplifyServerName(player.getServerId());
|
||||
return CommonProto.UserRank.newBuilder()
|
||||
.setUid(player.getUserId())
|
||||
|
|
|
@ -9,6 +9,7 @@ import com.ljsd.jieling.logic.dao.root.User;
|
|||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.logic.rank.RankContext;
|
||||
import com.ljsd.jieling.logic.rank.RankEnum;
|
||||
import com.ljsd.jieling.util.TaskKit;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
||||
|
@ -24,18 +25,13 @@ public class ForceCurrRank extends AbstractRank implements IEventHandler{
|
|||
|
||||
public ForceCurrRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
if(executor==null){
|
||||
executor = new ScheduledThreadPoolExecutor(8);
|
||||
}
|
||||
executor.scheduleAtFixedRate(this::run,2,1, TimeUnit.SECONDS);
|
||||
TaskKit.scheduleWithFixedDelay(this::run,2,1, TimeUnit.SECONDS);
|
||||
Poster.getPoster().listenEvent(this, UserMainTeamForceEvent.class);
|
||||
}
|
||||
|
||||
|
||||
private static Queue<UserMainTeamForceEvent> infoQueue = new ArrayDeque<>();
|
||||
|
||||
private static ScheduledThreadPoolExecutor executor;
|
||||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.intValue()};
|
||||
|
@ -79,21 +75,23 @@ public class ForceCurrRank extends AbstractRank implements IEventHandler{
|
|||
|
||||
Set<Integer> changeId = new HashSet<>();
|
||||
eventList.forEach(n->changeId.add(n.getUid()));
|
||||
changeId.forEach(i-> {
|
||||
for (Integer i : changeId) {
|
||||
try {
|
||||
User user = UserManager.getUser(i);
|
||||
User user = UserManager.getUserNotCache(i);
|
||||
if (user == null){
|
||||
continue;
|
||||
}
|
||||
LOGGER.info("战力userId,{}",user.getId());
|
||||
int force = HeroLogic.getInstance().calTeamTotalForce(user, 1, false);
|
||||
LOGGER.info("战力大小,{}",force);
|
||||
addRank(i,"",force);
|
||||
} catch (Exception e) {
|
||||
LOGGER.info("战力排行错误{}",e);
|
||||
LOGGER.info("战力排行错误{}",e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}catch (Exception e){
|
||||
LOGGER.info("战力排行报错{}",e);
|
||||
LOGGER.info("战力排行报错{}",e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,26 +1,14 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
|
||||
import util.TimeUtils;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2020/6/10
|
||||
* @discribe
|
||||
*/
|
||||
public class GoldRank extends AbstractRank {
|
||||
public class GoldRank extends TowerRank {
|
||||
|
||||
public GoldRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.intValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
return data[0]+ TimeUtils.getDoubleTime();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ public class GuildBossRank extends AbstractRank{
|
|||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.intValue()};
|
||||
return new long[]{score.longValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -11,6 +11,7 @@ import rpc.protocols.PlayerInfoProto;
|
|||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
|
@ -20,14 +21,13 @@ import java.util.Set;
|
|||
*/
|
||||
public class GuildForceRank extends AbstractRank {
|
||||
|
||||
|
||||
public GuildForceRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.intValue()};
|
||||
return new long[]{score.longValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -44,23 +44,16 @@ public class GuildForceRank extends AbstractRank {
|
|||
.setParam2(getParam2(data.getScore()))
|
||||
.setParam3(getParam3(data.getScore()));
|
||||
LOGGER.info("获取公会战力排行榜信息===========公会id:{}",data.getValue());
|
||||
Set<Integer> chairMan = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN);
|
||||
int chairManId = chairMan.iterator().next();
|
||||
User user = UserManager.getUser(chairManId);
|
||||
CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder()
|
||||
.setUid(user.getId())
|
||||
.setLevel(user.getPlayerInfoManager().getLevel())
|
||||
.setGuildName(guildInfo.getName())
|
||||
.setRankInfo(everyRankInfo)
|
||||
.setSex(user.getPlayerInfoManager().getSex())
|
||||
.setHead(user.getPlayerInfoManager().getHead())
|
||||
.setHeadFrame(user.getPlayerInfoManager().getHeadFrame())
|
||||
.setUserMount(user.getPlayerInfoManager().getUserMount())
|
||||
.setUserSkin(user.getPlayerInfoManager().getUserSkin())
|
||||
.setUserTitle(user.getPlayerInfoManager().getUserTitle())
|
||||
;
|
||||
builder.addRanks(everyRank);
|
||||
int chairManId = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN).iterator().next();
|
||||
User user = UserManager.getUserNotCache(chairManId);
|
||||
if (user == null){
|
||||
return;
|
||||
}
|
||||
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(user, everyRankInfo);
|
||||
oneUserRank.setGuildName(guildInfo.getName());
|
||||
builder.addRanks(oneUserRank);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void getMyInfo(User user, String rkey, PlayerInfoProto.RankResponse.Builder allUserResponse){
|
||||
int guildId = user.getPlayerInfoManager().getGuildId();
|
||||
|
@ -77,7 +70,7 @@ public class GuildForceRank extends AbstractRank {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CommonProto.UserRank.Builder getFirst(int activityId) throws Exception {
|
||||
public CommonProto.UserRank.Builder getFirst(int activityId){
|
||||
Set<ZSetOperations.TypedTuple<String>> rankByKey = getRankByKey(activityId==0?"":String.valueOf(activityId), 0, 0);
|
||||
CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder();
|
||||
if(rankByKey.size()!=1){
|
||||
|
@ -89,32 +82,22 @@ public class GuildForceRank extends AbstractRank {
|
|||
.setParam1(getParam1(data.getScore()))
|
||||
.setParam2(getParam2(data.getScore()))
|
||||
.setParam3(getParam3(data.getScore()));
|
||||
int gid = Integer.parseInt(data.getValue());
|
||||
Map<Integer, GuildInfo> map = GuilidManager.guildInfoMap;
|
||||
if (map == null || map.isEmpty()){
|
||||
// 获取公会信息
|
||||
GuildInfo guildInfo = Optional.ofNullable(GuilidManager.guildInfoMap)
|
||||
.map(v -> v.get(Integer.parseInt(data.getValue())))
|
||||
.orElse(null);
|
||||
if (guildInfo == null){
|
||||
return builder;
|
||||
}
|
||||
GuildInfo guildInfo = map.get(gid);
|
||||
if (guildInfo == null || guildInfo.getMembers() == null || guildInfo.getMembers().isEmpty()){
|
||||
// 获取公会会长id
|
||||
Integer chairManId = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN).iterator().next();
|
||||
User user = UserManager.getUserNotCache(chairManId);
|
||||
if (user == null){
|
||||
return builder;
|
||||
}
|
||||
Set<Integer> chairMan = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN);
|
||||
int chairManId = chairMan.iterator().next();
|
||||
User user = UserManager.getUser(chairManId);
|
||||
builder = CommonProto.UserRank.newBuilder()
|
||||
.setUid(chairManId)
|
||||
.setUserName(user.getPlayerInfoManager().getNickName())
|
||||
.setHead(user.getPlayerInfoManager().getHead())
|
||||
.setHeadFrame(user.getPlayerInfoManager().getHeadFrame())
|
||||
.setLevel(user.getPlayerInfoManager().getLevel())
|
||||
.setRankInfo(everyRankInfo)
|
||||
.setForce(user.getPlayerInfoManager().getMaxForce())
|
||||
.setSex(user.getPlayerInfoManager().getSex())
|
||||
.setUserMount(user.getPlayerInfoManager().getUserMount())
|
||||
.setUserSkin(user.getPlayerInfoManager().getUserSkin())
|
||||
.setUserTitle(user.getPlayerInfoManager().getUserTitle())
|
||||
.setGuildName(guildInfo.getName())
|
||||
.setPracticeLevel(user.getHeroManager().getPracticeLevel());
|
||||
return builder;
|
||||
// 封装排行榜信息
|
||||
CommonProto.UserRank.Builder oneUserRank = getOneUserRank(user, everyRankInfo);
|
||||
oneUserRank.setGuildName(guildInfo.getName());
|
||||
return oneUserRank;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ import rpc.protocols.PlayerInfoProto;
|
|||
*/
|
||||
public class GuildRedPackageRank extends AbstractRank {
|
||||
|
||||
|
||||
@Override
|
||||
public PlayerInfoProto.RankResponse getRank(int uid, String rkey, int page, int rankEndLine) throws Exception {
|
||||
rkey = String.valueOf(UserManager.getUser(uid).getPlayerInfoManager().getGuildId());
|
||||
|
|
|
@ -1,14 +1,9 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.logic.dao.GuilidManager;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.GuildInfo;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
import rpc.protocols.CommonProto;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -17,59 +12,30 @@ import java.util.Set;
|
|||
* @date 2020/8/22
|
||||
* @discribe
|
||||
*/
|
||||
public class GuildSheJiScoreRank extends AbstractRank {
|
||||
public class GuildSheJiScoreRank extends GuildForceRank {
|
||||
public GuildSheJiScoreRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.longValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
return data[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void getOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception{
|
||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(data.getValue()));
|
||||
public CommonProto.UserRank.Builder getFirst(int activityId){
|
||||
Set<ZSetOperations.TypedTuple<String>> rankByKey = getRankByKey(activityId==0?"":String.valueOf(activityId), 0, 0);
|
||||
CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder();
|
||||
if(rankByKey.size()!=1){
|
||||
return builder;
|
||||
}
|
||||
ZSetOperations.TypedTuple<String> data = rankByKey.iterator().next();
|
||||
LOGGER.info("有问题的ArenaId{}",Integer.parseInt(data.getValue()));
|
||||
User everyUser = UserManager.getUserNotCache(Integer.parseInt(data.getValue()));
|
||||
if (everyUser == null){
|
||||
return builder;
|
||||
}
|
||||
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
|
||||
.setRank(index)
|
||||
.setRank(1)
|
||||
.setParam1(getParam1(data.getScore()))
|
||||
.setParam2(getParam2(data.getScore()))
|
||||
.setParam3(getParam3(data.getScore()));
|
||||
Set<Integer> chairMan = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN);
|
||||
int chairManId = chairMan.iterator().next();
|
||||
User user = UserManager.getUser(chairManId);
|
||||
CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder()
|
||||
.setUid(user.getId())
|
||||
.setLevel(user.getPlayerInfoManager().getLevel())
|
||||
.setGuildName(guildInfo.getName())
|
||||
.setRankInfo(everyRankInfo)
|
||||
.setSex(user.getPlayerInfoManager().getSex())
|
||||
.setHead(user.getPlayerInfoManager().getHead())
|
||||
.setHeadFrame(user.getPlayerInfoManager().getHeadFrame())
|
||||
.setUserMount(user.getPlayerInfoManager().getUserMount())
|
||||
.setUserSkin(user.getPlayerInfoManager().getUserSkin())
|
||||
.setUserTitle(user.getPlayerInfoManager().getUserTitle())
|
||||
.setPracticeLevel(user.getHeroManager().getPracticeLevel());
|
||||
builder.addRanks(everyRank);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void getMyInfo(User user, String rkey, PlayerInfoProto.RankResponse.Builder allUserResponse){
|
||||
int guildId = user.getPlayerInfoManager().getGuildId();
|
||||
if(guildId==0){
|
||||
return;
|
||||
}
|
||||
int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,rkey,Integer.toString(guildId)).intValue();
|
||||
Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, rkey, Integer.toString(guildId));
|
||||
CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder()
|
||||
.setRank(myRank)
|
||||
.setParam1(getParam1(zSetScore))
|
||||
.setParam2(getParam2(zSetScore)).build();
|
||||
allUserResponse.setMyRankInfo(towerRankInfo);
|
||||
builder = getOneUserRank(everyUser,everyRankInfo);
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,42 +23,6 @@ public class MainLevelRank extends AbstractRank {
|
|||
return new long[]{i%10_000_000};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores, int start) throws Exception {
|
||||
// PlayerInfoProto.RankResponse.Builder allUserResponse = super.getAllUserResponse(zsetreverseRangeWithScores, start);
|
||||
// List<CommonProto.UserRank> ranksBuilderList = allUserResponse.getRanksList();
|
||||
// if(ranksBuilderList.size()<2){
|
||||
// return allUserResponse;
|
||||
// }
|
||||
// List<CommonProto.UserRank> builders = new ArrayList<>(ranksBuilderList);
|
||||
// Collections.sort(builders,(o1, o2) -> {
|
||||
// if(o1.getRankInfo().getParam1()==o2.getRankInfo().getParam1()){
|
||||
// if(o1.getForce()>o2.getForce() &&o1.getRankInfo().getRank()>o2.getRankInfo().getRank()){
|
||||
// CommonProto.UserRank rankInfo1 = o1 ;
|
||||
// o1 = o2;
|
||||
// o2 = rankInfo1;
|
||||
// }
|
||||
// }
|
||||
// return o1.getRankInfo().getRank()-o2.getRankInfo().getRank();
|
||||
// });
|
||||
// List<CommonProto.UserRank> buildersCopy = new ArrayList<>(ranksBuilderList.size());
|
||||
// for(CommonProto.UserRank userRank : builders){
|
||||
// buildersCopy.add(userRank.toBuilder().setRankInfo(userRank.toBuilder().getRankInfo().toBuilder().setRank(start).build()).build());
|
||||
// start++;
|
||||
// }
|
||||
// PlayerInfoProto.RankResponse.Builder response = PlayerInfoProto.RankResponse.newBuilder();
|
||||
// response.setMyRankInfo(allUserResponse.getMyRankInfo()).addAllRanks(buildersCopy);
|
||||
// return response;
|
||||
return super.getAllUserResponse(zsetreverseRangeWithScores,start);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<ZSetOperations.TypedTuple<String>> getRankByKey(String rkey,int start, int end) {
|
||||
Set<ZSetOperations.TypedTuple<String>> rankByKey = super.getRankByKey(rkey,start, end);
|
||||
|
||||
return rankByKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
return data[0]+ TimeUtils.getDoubleTime();
|
||||
|
|
|
@ -1,24 +1,13 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
import util.TimeUtils;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2019/11/29
|
||||
* @discribe
|
||||
*/
|
||||
public class MonsterAttackRank extends AbstractRank{
|
||||
public MonsterAttackRank(int type, String redisKey) {
|
||||
public class MonsterAttackRank extends TowerRank{
|
||||
|
||||
public MonsterAttackRank(Integer type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.intValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
return data[0]+ TimeUtils.getDoubleTime();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,9 +8,9 @@ import com.ljsd.jieling.logic.dao.UserManager;
|
|||
import com.ljsd.jieling.logic.dao.root.GuildInfo;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.rank.rankKey.RandomCardSpecialKey;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
|
@ -28,7 +28,6 @@ public class RandomCardPerfectRank extends AbstractRank {
|
|||
double[] doubles = new double[3];
|
||||
System.arraycopy(data, 0, doubles, 0, data.length);
|
||||
doubles[2] = uid;
|
||||
// data[0]+"_"+data[1]+"_"+RedisUtil.getInstence().incrementZsetScore()
|
||||
Gson gson = new Gson();
|
||||
String heroKey = gson.toJson(new RandomCardSpecialKey(uid, Double.valueOf(data[1]).intValue(),Double.valueOf(data[2]).intValue(),RedisUtil.getInstence().incr("incr_Card", 1)));
|
||||
RedisUtil.getInstence().zsetAddOne(key, heroKey, getScore(doubles));
|
||||
|
@ -39,7 +38,10 @@ public class RandomCardPerfectRank extends AbstractRank {
|
|||
Gson gson = new Gson();
|
||||
String value = data.getValue();
|
||||
RandomCardSpecialKey randomCardSpecialKey = gson.fromJson(value, RandomCardSpecialKey.class);
|
||||
User everyUser = UserManager.getUser(randomCardSpecialKey.getUid(), true);
|
||||
User everyUser = UserManager.getUserNotCache(randomCardSpecialKey.getUid());
|
||||
if (everyUser == null){
|
||||
return;
|
||||
}
|
||||
CommonProto.RankInfo everyRankInfo = CommonProto.RankInfo.newBuilder()
|
||||
.setRank(index)
|
||||
.setParam1(getParam1(data.getScore()))
|
||||
|
|
|
@ -1,24 +1,12 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
import util.TimeUtils;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2019/11/27
|
||||
* @discribe
|
||||
*/
|
||||
public class RandomCardRank extends AbstractRank {
|
||||
public class RandomCardRank extends TowerRank {
|
||||
public RandomCardRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.intValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
return data[0]+ TimeUtils.getDoubleTime();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,20 +1,9 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
import util.TimeUtils;
|
||||
|
||||
public class ShanHeSheJiTuChapterRank extends AbstractRank{
|
||||
public class ShanHeSheJiTuChapterRank extends TowerRank{
|
||||
|
||||
public ShanHeSheJiTuChapterRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
}
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.longValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
return data[0]+ TimeUtils.getDoubleTime();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,20 +1,8 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
import util.TimeUtils;
|
||||
|
||||
public class ShanHeSheJiTuStarRank extends AbstractRank{
|
||||
public class ShanHeSheJiTuStarRank extends TowerRank{
|
||||
|
||||
public ShanHeSheJiTuStarRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
}
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.longValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
return data[0]+ TimeUtils.getDoubleTime();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,25 +1,13 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
import util.TimeUtils;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2020/8/14
|
||||
* @discribe
|
||||
*/
|
||||
public class SituationRank extends AbstractRank {
|
||||
public class SituationRank extends TowerRank {
|
||||
|
||||
public SituationRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.longValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
return data[0]+ TimeUtils.getDoubleTime();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,25 +1,13 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
import util.TimeUtils;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2021/6/5
|
||||
* @discribe
|
||||
*/
|
||||
public class TaSuiLingXiaoRank extends AbstractRank {
|
||||
public class TaSuiLingXiaoRank extends TowerRank {
|
||||
|
||||
public TaSuiLingXiaoRank(int type, String redisKey) {
|
||||
super(type, redisKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
return new long[]{score.longValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
return data[0]+ TimeUtils.getDoubleTime();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import config.SSpecialConfig;
|
||||
|
||||
import util.TimeUtils;
|
||||
|
||||
|
||||
|
@ -13,15 +12,6 @@ public class TowerRank extends AbstractRank {
|
|||
public TowerRank(Integer type,String redisKey){
|
||||
super(type,redisKey);
|
||||
}
|
||||
// @Override
|
||||
// public long[] getDataByScore(Double score) {
|
||||
// long[] array = new long [2];
|
||||
// int scoreInt = score.intValue();
|
||||
// array[0] = scoreInt/3601;
|
||||
// array[1] =3600-scoreInt%3601;
|
||||
// return array;
|
||||
// }
|
||||
|
||||
|
||||
@Override
|
||||
public long[] getDataByScore(Double score) {
|
||||
|
@ -30,8 +20,6 @@ public class TowerRank extends AbstractRank {
|
|||
|
||||
@Override
|
||||
public double getScore(double... data) {
|
||||
// double doubleTime = TimeUtils.getDoubleTime();
|
||||
// return data[1]>3600?data[0]*3601+doubleTime:data[0]*3601+3600-data[1]+doubleTime;
|
||||
return data[0]+TimeUtils.getDoubleTime();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -165,8 +165,7 @@ public abstract class TaskKit {
|
|||
*/
|
||||
public static void reset() {
|
||||
depose();
|
||||
taskScheduler = new ScheduledThreadPoolExecutor(3);
|
||||
LOGGER.info("定时器线程启动,线程数量:{}",3);
|
||||
taskScheduler = new ScheduledThreadPoolExecutor(getBestPoolSize());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -174,16 +173,19 @@ public abstract class TaskKit {
|
|||
* 最佳的线程数 = CPU可用核心数 / (1 - 阻塞系数),其中阻塞系数这里设为0.9
|
||||
*/
|
||||
private static int getBestPoolSize() {
|
||||
int num = 0;
|
||||
try {
|
||||
// JVM可用处理器的个数
|
||||
final int cores = Runtime.getRuntime().availableProcessors();
|
||||
// 最佳的线程数 = CPU可用核心数 / (1 - 阻塞系数)
|
||||
// TODO 阻塞系数是不是需要有个setter方法能让使用者自由设置呢?
|
||||
return (int)(cores / (1 - 0.9));
|
||||
num = (int)(cores / (1 - 0.9));
|
||||
}
|
||||
catch (Throwable e) {
|
||||
// 异常发生时姑且返回10个任务线程池
|
||||
return 5;
|
||||
num = 5;
|
||||
}
|
||||
LOGGER.info("定时器线程启动,线程数量:{}",num);
|
||||
return num;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue