diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 948c0ed3e..ef072eb15 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -234,7 +234,7 @@ public class GlobalDataManaager implements IManager { new UserLevelEventHandler(); new RemoveEventHeroHandler(); new FightMainEventHandler(); - ChampionshipLogic.whenStart(); +// ChampionshipLogic.whenStart(); } catch (Exception e) { LOGGER.error("e",e); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java index 4937daf2b..ba709af93 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java @@ -5,10 +5,21 @@ import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.activity.event.IEvent; import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.activity.event.RandomCardEvent; +import com.ljsd.jieling.logic.dao.ActivityMission; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; 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.network.session.ISession; +import config.SActivityRewardConfig; +import config.SCHero; +import util.TimeUtils; + +import java.util.function.Consumer; +import java.util.function.Predicate; +import java.util.stream.Stream; /** * @author lvxinran @@ -36,16 +47,27 @@ public class LimitRandomCardActivity extends AbstractActivity { scoreById=0; } randomRank.addRank(cardEvent.getUid(),scoreById+cardEvent.getScore()); - - } - - @Override - public boolean takeReward(ISession session, int missionId) throws Exception { - return super.takeReward(session, missionId); + Predicate pre = a-> (SCHero.getHeroByPieceId(a[0])!=null&&SCHero.getHeroByPieceId(a[0]).getNatural()>=13); +// + Consumer consumer = a->RankContext.getRankEnum(RankEnum.RANDOM_CARD_PERFECT_RANK.getType()).addRank(cardEvent.getUid(), TimeUtils.now()/1000,a[0]); + Stream.of(cardEvent.getHeros()).filter(pre).forEach(consumer); + update(UserManager.getUser(cardEvent.getUid()),cardEvent.getScore()); } @Override public void onActivityEnd() throws Exception { RedisUtil.getInstence().del(RedisKey.RANDOM_CARD_RANK); } + + @Override + void updateProgressWithUser(User user, ActivityMission activityMission, int count) { + activityMission.setValue(activityMission.getValue()+count); + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + User user = UserManager.getUser(session.getUid()); + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + return sActivityRewardConfig.getValues()[0][0]<=activityMission.getValue(); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RandomCardEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RandomCardEvent.java index 63326deee..ef4ee1334 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RandomCardEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/RandomCardEvent.java @@ -9,11 +9,13 @@ public class RandomCardEvent implements IEvent { private int uid; private int type; private int score; + private int[][] heros; - public RandomCardEvent(int uid,int type, int score) { + public RandomCardEvent(int uid,int type, int score,int[][] heros) { this.uid = uid; this.type = type; this.score = score; + this.heros = heros; } public int getType() { @@ -39,4 +41,12 @@ public class RandomCardEvent implements IEvent { public void setUid(int uid) { this.uid = uid; } + + public int[][] getHeros() { + return heros; + } + + public void setHeros(int[][] heros) { + this.heros = heros; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index a96d9e061..134606e59 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -293,7 +293,7 @@ public class HeroLogic{ dropHeroAndItem[j++] = tenTimesMustGetItem[i]; } } - Poster.getPoster().dispatchEvent(new RandomCardEvent(uid,sLotterySetting.getLotteryType(),10*sLotterySetting.getPerCount())); + Poster.getPoster().dispatchEvent(new RandomCardEvent(uid,sLotterySetting.getLotteryType(),SSpecialConfig.getIntegerValue(SSpecialConfig.TIME_LIMIT_RECRUITMENT_INTEGRAL)*sLotterySetting.getPerCount(),dropHeroAndItem)); CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, dropHeroAndItem,BIReason.HERO_RANDOM); builder.setDrop(drop); MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.HERO_RAND_RESPONSE_VALUE, builder.build(), true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java index 12351d89c..2a5c98e5f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java @@ -19,7 +19,7 @@ public enum RankEnum { MAIN_LEVEL_RANK(3,RedisKey.MAIN_LEVEL_RANK, MainLevelRank::new),//param1:通关关卡Id param2:无 param3:无 MONSTER_ATTACK_RANK(4,RedisKey.MONSTER_ATTACK_RANK,MonsterAttackRank::new),//param1:兽潮层数 param2:无 param3:无 RANDOM_CARD_RANK(10,RedisKey.RANDOM_CARD_RANK, RandomCardRank::new),//param1:抽取积分 param2:无 param3:无 - RANDOM_CARD_PERFECT_RANK(11,RedisKey.RANDOM_CARD_PERFECT_RANK,RandomCardPerfectRank::new) + RANDOM_CARD_PERFECT_RANK(11,RedisKey.RANDOM_CARD_PERFECT_RANK,RandomCardPerfectRank::new)//param1:时间 param2:英雄tempId param3:uid ; private int type; private String redisKey; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java index 7b738ed8b..a2bac8226 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java @@ -2,6 +2,7 @@ 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.dao.GuilidManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.rank.IRank; @@ -100,6 +101,7 @@ public abstract class AbstractRank implements IRank { .setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame()) .setLevel(everyUser.getPlayerInfoManager().getLevel()) .setRankInfo(everyRankInfo) + .setGuildName(GuilidManager.guildInfoMap.get(everyUser.getPlayerInfoManager().getGuildId()).getName()) .build(); builder.addRanks(everyRank); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/RandomCardPerfectRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/RandomCardPerfectRank.java index d32a1d1bc..5740d7234 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/RandomCardPerfectRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/RandomCardPerfectRank.java @@ -1,9 +1,11 @@ package com.ljsd.jieling.logic.rank.rankImpl; +import com.google.gson.Gson; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.rank.rankKey.RandomCardSpecialKey; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.PlayerInfoProto; import org.springframework.data.redis.core.ZSetOperations; @@ -23,17 +25,26 @@ public class RandomCardPerfectRank extends AbstractRank { @Override public void addRank(int uid, double... data) { String key = RedisKey.getKey(redisKey,"",false); - RedisUtil.getInstence().zsetAddOne(key, UUID.randomUUID().toString(), getScore(data)); + 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(), RedisUtil.getInstence().incr("incr_Card", 1))); + RedisUtil.getInstence().zsetAddOne(key, heroKey, getScore(doubles)); } @Override protected void getOptional(int index, ZSetOperations.TypedTuple data, PlayerInfoProto.RankResponse.Builder builder) throws Exception { - User everyUser = UserManager.getUser(Double.valueOf(getParam2(data.getScore())).intValue(), true); + Gson gson = new Gson(); + String value = data.getValue(); + RandomCardSpecialKey randomCardSpecialKey = gson.fromJson(value, RandomCardSpecialKey.class); + User everyUser = UserManager.getUser(randomCardSpecialKey.getUid(), true); CommonProto.RankInfo everyRankInfo = CommonProto.RankInfo.newBuilder() .setRank(index) .setParam1(getParam1(data.getScore())) - .setParam2(getParam2(data.getScore())) - .setParam3(getParam3(data.getScore())) + .setParam2(randomCardSpecialKey.getHeroId()) + .setParam3(0) .build(); CommonProto.UserRank everyRank = CommonProto.UserRank.newBuilder() .setUid(everyUser.getId()) @@ -45,14 +56,13 @@ public class RandomCardPerfectRank extends AbstractRank { .build(); builder.addRanks(everyRank); } - @Override public int[] getDataByScore(double score) { - return new int[0]; + return new int[]{Double.valueOf(score).intValue()}; } @Override public double getScore(double... data) { - return data[0]+data[1]+data[2]; + return data[0]; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankKey/RandomCardSpecialKey.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankKey/RandomCardSpecialKey.java new file mode 100644 index 000000000..5cc38c398 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankKey/RandomCardSpecialKey.java @@ -0,0 +1,42 @@ +package com.ljsd.jieling.logic.rank.rankKey; + +/** + * @author lvxinran + * @date 2019/12/9 + * @discribe + */ +public class RandomCardSpecialKey { + private int uid; + private int heroId; + private long version; + + public void setUid(int uid) { + this.uid = uid; + } + + public void setHeroId(int heroId) { + this.heroId = heroId; + } + + public void setVersion(long version) { + this.version = version; + } + + public RandomCardSpecialKey(int uid, int heroId, long version) { + this.uid = uid; + this.heroId = heroId; + this.version = version; + } + + public int getUid() { + return uid; + } + + public int getHeroId() { + return heroId; + } + + public long getVersion() { + return version; + } +} diff --git a/tablemanager/src/main/java/config/SCHero.java b/tablemanager/src/main/java/config/SCHero.java index fbfc1d394..16e94ff41 100644 --- a/tablemanager/src/main/java/config/SCHero.java +++ b/tablemanager/src/main/java/config/SCHero.java @@ -59,6 +59,9 @@ public class SCHero implements BaseConfig{ private Map> consumeMaterialInfoOfPositionByStar; + private static Map piecesMap; + + public static class ConsumeMaterialInfo{ private int groupID; private int nums; @@ -150,8 +153,15 @@ public class SCHero implements BaseConfig{ } sCHero = integerSCHeroMap; + piecesMap = new HashMap<>(); + for(Map.Entry hero:sCHero.entrySet()){ + piecesMap.put(hero.getValue().getPiecesId(),hero.getValue()); + } } + public static SCHero getHeroByPieceId(int piecesId){ + return piecesMap.get(piecesId); + } public Map getConsumeMaterialInfoOfPositionByStar(int star) { return consumeMaterialInfoOfPositionByStar.get(star); diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index f90b5929a..af445412d 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -50,6 +50,7 @@ public class SSpecialConfig implements BaseConfig { public static final String SUNLONG_INTEGRAL = "Sunlong_Integral";//孙龙的宝藏每日积分礼包 public static final String SUNLONG_REWARD = "Sunlong_Reward";//孙龙的宝藏礼包\ public static final String LAMP_TEXT_SPEED = "lamp_text_speed";//跑马灯速度 + public static final String TIME_LIMIT_RECRUITMENT_INTEGRAL = "time_limit_recruitment_integral";//限时抽卡一次积分 @Override public void init() throws Exception {