战力冲刺排行榜调整
parent
163a14fe36
commit
4ce354caa5
|
@ -12,6 +12,7 @@ import com.ljsd.jieling.logic.mail.MailLogic;
|
|||
import com.ljsd.jieling.logic.rank.RankContext;
|
||||
import com.ljsd.jieling.logic.rank.RankEnum;
|
||||
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
|
||||
import com.ljsd.jieling.logic.rank.rankImpl.PowerRiceRank;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import config.SActivityRankingReward;
|
||||
import config.SActivityRewardConfig;
|
||||
|
@ -20,6 +21,7 @@ import org.springframework.data.redis.core.ZSetOperations;
|
|||
import util.StringUtil;
|
||||
import util.TimeUtils;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class PowerRiceActivity extends AbstractActivity{
|
||||
|
@ -71,13 +73,23 @@ public class PowerRiceActivity extends AbstractActivity{
|
|||
|
||||
@Override
|
||||
public void onActivityPreEnd() throws Exception {
|
||||
AbstractRank powerRank = RankContext.getRankEnum(RankEnum.POWER_RICE_RANK.getType());
|
||||
Set<ZSetOperations.TypedTuple<String>> rankInfos = powerRank.getRankByKey("", 0,-1);
|
||||
|
||||
List<SActivityRankingReward> sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id);
|
||||
if(sActivityRankingReward == null || sActivityRankingReward.size() ==0 ){
|
||||
return;
|
||||
}
|
||||
Map<Integer,Integer> powerRankMap = PowerRiceRank.getSpecailRank();
|
||||
for(Map.Entry<Integer,Integer> keval:powerRankMap.entrySet()){
|
||||
final int rankIndex = keval.getKey();
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("battlecapacityrank_mail_title");
|
||||
String content = SErrorCodeEerverConfig.getFormatMessage("battlecapacityrank_mail_txt", new Object[]{rankIndex});
|
||||
SActivityRankingReward activityReward =sActivityRankingReward.stream().filter(n->rankIndex>=n.getMinRank() && rankIndex>=n.getMaxRank()).findFirst().orElse(null);
|
||||
if(activityReward == null){
|
||||
continue;
|
||||
}
|
||||
MailLogic.getInstance().sendMail(keval.getValue(), title, content, StringUtil.parseArrayToString(activityReward.getRankingReward()), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
/* AbstractRank powerRank = RankContext.getRankEnum(RankEnum.POWER_RICE_RANK.getType());
|
||||
Set<ZSetOperations.TypedTuple<String>> rankInfos = powerRank.getRankByKey("", 0,-1);
|
||||
int index = 1;
|
||||
for(ZSetOperations.TypedTuple<String> rankInfo:rankInfos){
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("battlecapacityrank_mail_title");
|
||||
|
@ -89,9 +101,13 @@ public class PowerRiceActivity extends AbstractActivity{
|
|||
}
|
||||
MailLogic.getInstance().sendMail(Integer.parseInt(rankInfo.getValue()), title, content, StringUtil.parseArrayToString(activityReward.getRankingReward()), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
|
||||
index++;
|
||||
}
|
||||
}*/
|
||||
GlobalSystemControl globalSystemControl = GlobalSystemControl.getGlobalSystemControl();
|
||||
globalSystemControl.addActivityPreEnd(id,TimeUtils.now());
|
||||
GlobalSystemControl.save(globalSystemControl);
|
||||
}
|
||||
public List<SActivityRankingReward> getRankReward() throws Exception{
|
||||
List<SActivityRankingReward> sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id);
|
||||
return sActivityRankingReward;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -195,7 +195,7 @@ public abstract class AbstractRank implements IRank {
|
|||
return builder;
|
||||
}
|
||||
|
||||
private PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores, int start){
|
||||
public PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores, int start){
|
||||
PlayerInfoProto.RankResponse.Builder builder = PlayerInfoProto.RankResponse.newBuilder();
|
||||
forEach(start,zsetreverseRangeWithScores,(index,data)->{
|
||||
try {
|
||||
|
|
|
@ -1,20 +1,26 @@
|
|||
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||
|
||||
|
||||
import com.ljsd.jieling.logic.activity.ActivityLogic;
|
||||
import com.ljsd.jieling.logic.activity.ActivityType;
|
||||
import com.ljsd.jieling.logic.activity.IEventHandler;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.logic.activity.*;
|
||||
import com.ljsd.jieling.logic.activity.event.IEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||
import com.ljsd.jieling.logic.activity.event.UserMainTeamForceEvent;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.logic.rank.RankEnum;
|
||||
import config.SActivityRankingReward;
|
||||
import config.SGlobalActivity;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class PowerRiceRank extends AbstractRank implements IEventHandler {
|
||||
|
||||
|
@ -70,4 +76,95 @@ public class PowerRiceRank extends AbstractRank implements IEventHandler {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores, int start){
|
||||
PlayerInfoProto.RankResponse.Builder builder = PlayerInfoProto.RankResponse.newBuilder();
|
||||
forEach(start,zsetreverseRangeWithScores,(index,data)->{
|
||||
try {
|
||||
getOptional(index,data,builder);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
return builder;
|
||||
|
||||
}
|
||||
protected static <T> void forEach(int startIndex,Iterable<? extends T> elements, BiConsumer<Integer, ? super T> action) {
|
||||
Objects.requireNonNull(elements);
|
||||
Objects.requireNonNull(action);
|
||||
try {
|
||||
Map<Integer,Integer> mapSpecailRank = getSpecailRank();
|
||||
for (T element : elements) {
|
||||
int rank =0;
|
||||
for(Map.Entry<Integer,Integer> keyVal :mapSpecailRank.entrySet()){
|
||||
int key = keyVal.getKey();
|
||||
if(((ZSetOperations.TypedTuple<String>)element).getValue().equals(String.valueOf(keyVal.getValue()))){
|
||||
rank = key;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//int rank = mapSpecailRank.entrySet().stream().filter(entry -> ((ZSetOperations.TypedTuple<String>)element).getValue().equals(entry.getValue())).map(Map.Entry::getKey).findFirst().orElse(null);
|
||||
action.accept(rank, element);}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//map<名次,uid>
|
||||
public static Map<Integer,Integer> getSpecailRank() throws Exception {
|
||||
Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(RankEnum.POWER_RICE_RANK.getRedisKey(), "", 0, -1);
|
||||
Map<Integer,Integer> newMap = new HashMap<>();
|
||||
AbstractActivity activityType = ActivityTypeEnum.getActicityType(9701);
|
||||
if(!(activityType instanceof PowerRiceActivity)){
|
||||
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
||||
}
|
||||
List<SActivityRankingReward> sActivityRankingReward = ((PowerRiceActivity)activityType).getRankReward();
|
||||
int ranIndex =0;
|
||||
SActivityRankingReward activityReward =sActivityRankingReward.stream().filter(n->n.getRankLimit()== null).sorted(Comparator.comparing(SActivityRankingReward::getId)).findFirst().orElse(null);
|
||||
if(activityReward != null){
|
||||
ranIndex = activityReward.getMinRank();
|
||||
}else{
|
||||
ranIndex = 4;
|
||||
}
|
||||
for(ZSetOperations.TypedTuple<String> operation :zsetreverseRangeWithScores){
|
||||
boolean isRank = false;
|
||||
for(SActivityRankingReward config:sActivityRankingReward.stream().filter(n->n.getRankLimit()!= null).collect(Collectors.toList())){
|
||||
if(config.getRankLimit()!=null && config.getRankLimit().length>0){
|
||||
if(operation.getScore()>= config.getRankLimit()[0] && operation.getScore()<= config.getRankLimit()[1]){
|
||||
//if(operation.getScore()>= 4000 && operation.getScore()<= 1500000){
|
||||
for(int i= config.getMinRank();i<=config.getMaxRank();i++){
|
||||
/*if(!newList.contains(i)){
|
||||
newList.add(i,Integer.parseInt(operation.getValue()));
|
||||
isRank = true;
|
||||
break;//结束此次排序
|
||||
}*/
|
||||
if(!newMap.containsKey(i)){
|
||||
newMap.put(i,Integer.parseInt(operation.getValue()));
|
||||
isRank = true;
|
||||
break;//结束此次排序
|
||||
}
|
||||
}
|
||||
}else{
|
||||
}
|
||||
}
|
||||
if(isRank){
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!isRank){
|
||||
if(!newMap.containsKey(ranIndex)){
|
||||
newMap.put(ranIndex,Integer.parseInt(operation.getValue()));
|
||||
}else{
|
||||
//https://blog.csdn.net/long243416336/article/details/84876476
|
||||
int currentMaxRank = newMap.keySet().stream().min(Integer::min).get();
|
||||
newMap.put(++currentMaxRank,Integer.parseInt(operation.getValue()));
|
||||
}
|
||||
}
|
||||
//newList.add(Integer.parseInt(operation.getValue()));
|
||||
}
|
||||
return newMap;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,8 @@ public class SActivityRankingReward implements BaseConfig {
|
|||
|
||||
private int[][] rankingReward;
|
||||
|
||||
private int[] rankLimit;
|
||||
|
||||
private static Map<Integer, SActivityRankingReward> sActivityRankingRewardMap;
|
||||
|
||||
private static Map<Integer, List<SActivityRankingReward>> sActivityRankingRewardMapByActivityId;
|
||||
|
@ -67,5 +69,7 @@ public class SActivityRankingReward implements BaseConfig {
|
|||
return rankingReward;
|
||||
}
|
||||
|
||||
|
||||
public int[] getRankLimit() {
|
||||
return rankLimit;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue