From e8512767c52c717ec9513727e12fa3b19ea37a9d Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 9 Dec 2019 01:23:10 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=B9=B8=E8=BF=90=E6=A6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rank/rankImpl/RandomCardPerfectRank.java | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) 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 ade2cdd9a..d32a1d1bc 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,5 +1,15 @@ 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.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.data.redis.core.ZSetOperations; + +import java.util.UUID; + /** * @author lvxinran * @date 2019/12/9 @@ -10,6 +20,32 @@ public class RandomCardPerfectRank extends AbstractRank { super(type, redisKey); } + @Override + public void addRank(int uid, double... data) { + String key = RedisKey.getKey(redisKey,"",false); + RedisUtil.getInstence().zsetAddOne(key, UUID.randomUUID().toString(), getScore(data)); + } + + @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); + CommonProto.RankInfo everyRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(index) + .setParam1(getParam1(data.getScore())) + .setParam2(getParam2(data.getScore())) + .setParam3(getParam3(data.getScore())) + .build(); + CommonProto.UserRank everyRank = CommonProto.UserRank.newBuilder() + .setUid(everyUser.getId()) + .setUserName(everyUser.getPlayerInfoManager().getNickName()) + .setHead(everyUser.getPlayerInfoManager().getHead()) + .setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame()) + .setLevel(everyUser.getPlayerInfoManager().getLevel()) + .setRankInfo(everyRankInfo) + .build(); + builder.addRanks(everyRank); + } + @Override public int[] getDataByScore(double score) { return new int[0]; @@ -17,6 +53,6 @@ public class RandomCardPerfectRank extends AbstractRank { @Override public double getScore(double... data) { - return 0; + return data[0]+data[1]+data[2]; } } From 0d19b9d14139791cd303f449072e0c188bef7778 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 9 Dec 2019 17:10:23 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E9=99=90=E6=97=B6=E6=8A=BD=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/GlobalDataManaager.java | 2 +- .../activity/LimitRandomCardActivity.java | 34 ++++++++++++--- .../logic/activity/event/RandomCardEvent.java | 12 +++++- .../ljsd/jieling/logic/hero/HeroLogic.java | 2 +- .../com/ljsd/jieling/logic/rank/RankEnum.java | 2 +- .../logic/rank/rankImpl/AbstractRank.java | 2 + .../rank/rankImpl/RandomCardPerfectRank.java | 24 +++++++---- .../rank/rankKey/RandomCardSpecialKey.java | 42 +++++++++++++++++++ tablemanager/src/main/java/config/SCHero.java | 10 +++++ .../src/main/java/config/SSpecialConfig.java | 1 + 10 files changed, 114 insertions(+), 17 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankKey/RandomCardSpecialKey.java 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 { From d3e04b3ec1894a798e06461a77d9ef6e9942d73c Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 9 Dec 2019 17:10:38 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E7=83=AD=E6=9B=B4=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/util/ProcessUtil.java | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 gamecommon/src/main/java/util/ProcessUtil.java diff --git a/gamecommon/src/main/java/util/ProcessUtil.java b/gamecommon/src/main/java/util/ProcessUtil.java new file mode 100644 index 000000000..a2dcfd108 --- /dev/null +++ b/gamecommon/src/main/java/util/ProcessUtil.java @@ -0,0 +1,104 @@ +package util; + +import java.io.InputStream; + +/** + * @author lvxinran + * @date 2019/12/8 + * @discribe + */ +public class ProcessUtil { + public static void main(String[] args) throws Exception { + ProcessBuilder processBuilder = new ProcessBuilder("C:\\Users\\Administrator\\Desktop\\hotfix.bat"); + Process process = processBuilder.start(); + InputStream in = process.getInputStream(); + StringBuilder sb = new StringBuilder(); + byte[] re = new byte[1024]; + while (in.read(re) != -1) { + sb.append(new String(re)); + } + String s = sb.toString(); + String[] split =s.split("\n"); + sb = new StringBuilder(); + sb.append("["); + for (String s1:split){ + String[] split1 = s1.split("\\.")[0].split("/"); + if (split1.length<2){ + continue; + } + String className = split1[split1.length-1]; + String fullName = s1.split("\\.")[0].replace("/",".").split("com.ljsd.")[1]; + sb.append(new HotClass(className,"com.ljsd."+fullName).toString()).append(",").append("\n"); + } + sb.deleteCharAt(sb.lastIndexOf(",")).append("]"); + HotFix hotFix = new HotFix(); + hotFix.setVersion("1001"); + hotFix.setClasses(sb.toString()); + System.out.println(hotFix.toString()); + in.close(); + if (process.isAlive()) { + process.waitFor(); + } + } +} +class HotClass{ + private String name; + private String fullName; + + public HotClass(String name, String fullName) { + this.name = name; + this.fullName = fullName; + } + + public String getName() { + return name; + } + + public String getFullName() { + return fullName; + } + + public void setName(String name) { + this.name = name; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } + + @Override + public String toString() { + return "{" + + "\"name\":" +"\""+ name +".class\""+ + ",\"fullName\":" +"\""+ fullName +"\"" + + '}'; + } +} +class HotFix{ + private String version; + private String classes; + + public String getVersion() { + return version; + } + + public String getClasses() { + return classes; + } + + public void setVersion(String version) { + this.version = version; + } + + public void setClasses(String classes) { + this.classes = classes; + } + + @Override + public String toString() { + return "{" +"\n"+ + "\"version\":" +"\""+ version + '\"' +",\n"+ + "\"classes\":" +classes +"\n"+ + '}'; + } +} From 867f81836a1f419d726cd41851e46ae6609cd650 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 13 Dec 2019 08:06:58 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E9=99=90=E6=97=B6=E6=8A=BD=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/activity/ActivityLogic.java | 22 +++++++++++++++++++ .../activity/LimitRandomCardActivity.java | 4 +++- .../logic/rank/rankImpl/AbstractRank.java | 1 - .../rank/rankImpl/RandomCardPerfectRank.java | 7 ++++++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 0759d141a..48dc1a66b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -34,6 +34,8 @@ import util.MathUtils; import util.TimeUtils; import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; import java.util.stream.Stream; /** @@ -1151,5 +1153,25 @@ public class ActivityLogic { return objects.length>0; } } + public void getNextActivityId(User user) throws Exception { + List sGlobalActivities = SGlobalActivity.sGlobalActivityMapByType.get(ActivityType.LIMIT_RANDOM_CARD); + if(sGlobalActivities.isEmpty()){ + return; + } + Function function = v->(int)ToolsUtil.getTimeLong(v.getStartTimeLong(),v.getEndTimeLong(),v.getTime(),user.getPlayerInfoManager().getCreateTime(),1); + Stream stream = sGlobalActivities.stream().sorted(Comparator.comparing(function)) + .filter(v->ToolsUtil.getTimeLong(v.getStartTimeLong(), v.getEndTimeLong(), v.getTime(), user.getPlayerInfoManager().getCreateTime(), 1) > TimeUtils.now()); + List collect = stream.collect(Collectors.toList()); + if(collect.isEmpty()){ + return; + } + int id = collect.get(0).getId(); + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if(sGlobalActivity==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(),1); + + } } 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 ba709af93..901d9b870 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 @@ -37,12 +37,14 @@ public class LimitRandomCardActivity extends AbstractActivity { if(! (event instanceof RandomCardEvent) ){ return; } + + RandomCardEvent cardEvent =(RandomCardEvent) event; if(cardEvent.getType()!=3){ return; } AbstractRank randomRank= RankContext.getRankEnum(RankEnum.RANDOM_CARD_RANK.getType()); - int scoreById = Double.valueOf(randomRank.getScoreById(((RandomCardEvent) event).getUid())).intValue(); + int scoreById = Double.valueOf(randomRank.getScoreById(((RandomCardEvent) event).getUid())).intValue(); if(scoreById==-1){ scoreById=0; } 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 a2bac8226..a01a154ff 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 @@ -101,7 +101,6 @@ 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 5740d7234..593ecc783 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 @@ -3,6 +3,7 @@ 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.GuilidManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.rank.rankKey.RandomCardSpecialKey; @@ -46,6 +47,11 @@ public class RandomCardPerfectRank extends AbstractRank { .setParam2(randomCardSpecialKey.getHeroId()) .setParam3(0) .build(); + int guildId = everyUser.getPlayerInfoManager().getGuildId(); + String familyName = ""; + if(guildId!=0){ + familyName = GuilidManager.guildInfoMap.get(guildId).getName(); + } CommonProto.UserRank everyRank = CommonProto.UserRank.newBuilder() .setUid(everyUser.getId()) .setUserName(everyUser.getPlayerInfoManager().getNickName()) @@ -53,6 +59,7 @@ public class RandomCardPerfectRank extends AbstractRank { .setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame()) .setLevel(everyUser.getPlayerInfoManager().getLevel()) .setRankInfo(everyRankInfo) + .setGuildName(familyName) .build(); builder.addRanks(everyRank); } From a82d645499f13a3ac9f3ae43e60db0c1545d2a80 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 11 Dec 2019 15:06:49 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E9=A2=84=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/ActivityPrepareHandler.java | 28 +++++++++++++++++++ .../jieling/logic/activity/ActivityLogic.java | 12 +++++--- .../activity/LimitRandomCardActivity.java | 5 ++-- 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/activity/ActivityPrepareHandler.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/ActivityPrepareHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/ActivityPrepareHandler.java new file mode 100644 index 000000000..8a067a6ac --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/ActivityPrepareHandler.java @@ -0,0 +1,28 @@ +package com.ljsd.jieling.handler.activity; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2019/12/13 + * @discribe + */ +@Component +public class ActivityPrepareHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.NEXT_ACTIVITY_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.NextActivityRequest proto) throws Exception { + int activityId = proto.getActivityId(); + ActivityLogic.getInstance().getNextActivityId(iSession,activityId, MessageTypeProto.MessageType.NEXT_ACTIVITY_RESPONSE); + + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 48dc1a66b..3e43ea3bd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -1153,17 +1153,19 @@ public class ActivityLogic { return objects.length>0; } } - public void getNextActivityId(User user) throws Exception { - List sGlobalActivities = SGlobalActivity.sGlobalActivityMapByType.get(ActivityType.LIMIT_RANDOM_CARD); + public void getNextActivityId(ISession session, int activityId, MessageTypeProto.MessageType messageType) throws Exception { + User user = UserManager.getUser(session.getUid()); + int type = SGlobalActivity.getsGlobalActivityMap().get(activityId).getType(); + List sGlobalActivities = SGlobalActivity.sGlobalActivityMapByType.get(type); if(sGlobalActivities.isEmpty()){ - return; + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); } Function function = v->(int)ToolsUtil.getTimeLong(v.getStartTimeLong(),v.getEndTimeLong(),v.getTime(),user.getPlayerInfoManager().getCreateTime(),1); Stream stream = sGlobalActivities.stream().sorted(Comparator.comparing(function)) .filter(v->ToolsUtil.getTimeLong(v.getStartTimeLong(), v.getEndTimeLong(), v.getTime(), user.getPlayerInfoManager().getCreateTime(), 1) > TimeUtils.now()); List collect = stream.collect(Collectors.toList()); if(collect.isEmpty()){ - return; + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); } int id = collect.get(0).getId(); SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); @@ -1171,7 +1173,9 @@ public class ActivityLogic { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(),1); + PlayerInfoProto.NextActivityResponse response = PlayerInfoProto.NextActivityResponse.newBuilder().setId(id).setTime((int)(startTime/1000)).build(); + MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true); } } 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 901d9b870..ab57cf5fe 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 @@ -37,12 +37,13 @@ public class LimitRandomCardActivity extends AbstractActivity { if(! (event instanceof RandomCardEvent) ){ return; } - - RandomCardEvent cardEvent =(RandomCardEvent) event; if(cardEvent.getType()!=3){ return; } + if(UserManager.getUser(cardEvent.getUid()).getActivityManager().getActivityMissionMap().get(id)==null){ + return; + } AbstractRank randomRank= RankContext.getRankEnum(RankEnum.RANDOM_CARD_RANK.getType()); int scoreById = Double.valueOf(randomRank.getScoreById(((RandomCardEvent) event).getUid())).intValue(); if(scoreById==-1){ From ed7545aba3d66beef10a12ecc2f22cdab7de1e43 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Wed, 11 Dec 2019 15:19:38 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=20=E6=8E=A7=E5=88=B6=E5=8F=B0gm=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=20netty=E5=85=B3=E9=97=AD=E6=B5=81=E7=A8=8B=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/netty/server/NettyGameServer.java | 11 ++++----- .../main/java/com/ljsd/GameApplication.java | 18 +++++++++++++++ .../src/main/java/com/ljsd/GmService.java | 23 +++++++++++-------- .../network/server/SessionManager.java | 6 ++++- 4 files changed, 42 insertions(+), 16 deletions(-) diff --git a/netty/src/main/java/com/ljsd/jieling/netty/server/NettyGameServer.java b/netty/src/main/java/com/ljsd/jieling/netty/server/NettyGameServer.java index a190a815a..4a1ab9e01 100644 --- a/netty/src/main/java/com/ljsd/jieling/netty/server/NettyGameServer.java +++ b/netty/src/main/java/com/ljsd/jieling/netty/server/NettyGameServer.java @@ -85,15 +85,14 @@ public class NettyGameServer extends AbstractServer { } }); - serverBootstrap.bind(getLocalAddress().getPort()).sync().channel().closeFuture().sync(); -// ChannelFuture channelFuture = serverBootstrap.bind(getLocalAddress().getPort()); -// this.channel = channelFuture.channel(); -// channelFuture.sync(); -// channelFuture.channel().closeFuture().sync(); + ChannelFuture channelFuture = serverBootstrap.bind(getLocalAddress().getPort()).sync(); + this.channel = channelFuture.channel(); + //同步关闭改异步回调 优雅关闭netty + this.channel.closeFuture().addListener((ChannelFutureListener) future -> close()); } catch (Exception e) { throw new ConnectException("close exception", getLocalAddress(), null); } finally { - close(); + // close(); } } diff --git a/serverlogic/src/main/java/com/ljsd/GameApplication.java b/serverlogic/src/main/java/com/ljsd/GameApplication.java index 6f93fd724..a12b4df10 100644 --- a/serverlogic/src/main/java/com/ljsd/GameApplication.java +++ b/serverlogic/src/main/java/com/ljsd/GameApplication.java @@ -22,6 +22,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Scanner; @Configuration @@ -57,6 +58,23 @@ public class GameApplication { setRegisterTime();// might loop GameLogicService.getInstance().onStart(); NetManager.getInstance().init(); + + //控制台gm + Scanner sc = new Scanner(System.in); + while(sc.hasNext()) + { + try { + String cmd = sc.nextLine(); + if(cmd.startsWith("//")) + { + System.out.println("执行命令:" + cmd.substring(2)); + String cmd2 = cmd.substring(2); + GmService.exeCmd(cmd2); + } + }catch (Exception e){ + System.out.print("gmException"+e); + } + } } private static void setRegisterTime() throws Exception { diff --git a/serverlogic/src/main/java/com/ljsd/GmService.java b/serverlogic/src/main/java/com/ljsd/GmService.java index e85231e27..453a15ae4 100644 --- a/serverlogic/src/main/java/com/ljsd/GmService.java +++ b/serverlogic/src/main/java/com/ljsd/GmService.java @@ -40,6 +40,12 @@ public class GmService implements RPCRequestGMIFace.Iface { @Override public Result idipGm(String reserved, String cmd) throws InvalidOperException, TException { + return exeCmd(cmd); + } + + + static Result exeCmd(String cmd){ + LOGGER.info("gm________________________"+cmd); Result result = new Result(); result.setResultCode(-1); @@ -68,10 +74,10 @@ public class GmService implements RPCRequestGMIFace.Iface { sendIds.add(user1.getId()); } InnerMessageUtil.broadcastWithRandom( user->{ - LOGGER.info("hotfix user={}",user.getId()); - MongoUtil.getLjsdMongoTemplate().save(user); - } - , sendIds, Math.min(10, 10)); + LOGGER.info("hotfix user={}",user.getId()); + MongoUtil.getLjsdMongoTemplate().save(user); + } + , sendIds, Math.min(10, 10)); result.setResultCode(1); return result; } @@ -90,7 +96,7 @@ public class GmService implements RPCRequestGMIFace.Iface { if (obj instanceof GmRoleAbstract) { - //todo + //todo Map rechargeInfoMap = new HashMap<>(); if(cmd.contains("recharge")){ File file = new File("../conf/BuyGoodsLogic.log"); @@ -174,8 +180,8 @@ public class GmService implements RPCRequestGMIFace.Iface { } InnerMessageUtil.broadcastWithRandom( user->{ - ((GmRoleAbstract) obj).setUser(user); - obj.exec(parameters2); + ((GmRoleAbstract) obj).setUser(user); + obj.exec(parameters2); }, sendIds, Math.min(randomTime, 120)); } else { LOGGER.info("gm________________________start:"+cmd); @@ -190,7 +196,6 @@ public class GmService implements RPCRequestGMIFace.Iface { } result.setResultCode(0); return result; + } - - } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java index 5295b3aa7..176f95fdf 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java @@ -92,7 +92,11 @@ public class SessionManager implements INetSession, INetReceived Date: Thu, 12 Dec 2019 10:59:33 +0800 Subject: [PATCH 7/9] =?UTF-8?q?Task=E3=80=90ID1005229=E3=80=91=E3=80=90?= =?UTF-8?q?=E7=89=B9=E6=9D=83=E8=B0=83=E6=95=B4=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/globals/Global.java | 3 + .../jieling/handler/GetPlayerInfoHandler.java | 11 +-- .../handler/vip/VipLevelUpHandler.java | 3 +- .../handler/vip/VipTakeDailyHandler.java | 48 ++++++++++++ .../vip/VipTakeLevelRewardHandler.java | 49 ++++++++++-- .../ljsd/jieling/logic/dao/PlayerManager.java | 20 ++--- .../jieling/logic/player/PlayerLogic.java | 75 +++++++------------ .../jieling/logic/store/BuyGoodsLogic.java | 12 +++ .../ljsd/jieling/logic/store/StoreLogic.java | 17 +++++ .../com/ljsd/jieling/util/MessageUtil.java | 3 + .../src/main/java/config/SVipLevelConfig.java | 28 +++++++ 11 files changed, 197 insertions(+), 72 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeDailyHandler.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java index bfbbf9c76..21c4f02d6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java @@ -64,4 +64,7 @@ public interface Global { int GMMSG = 4; //gm int LUCKWHEEL = 5; //幸运探宝 int LUCKWHEEL_ADVANCE = 6; //高级探宝 + + + int VIPSTORID = 20; //vip商店id } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index 37f9c2e93..a4a814286 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -94,10 +94,9 @@ public class GetPlayerInfoHandler extends BaseHandler{ } CommonProto.Player player = CBean2Proto.getPlayer(userId, user.getPlayerInfoManager(), user.getPlayerInfoManager().getMapId(), user.getMapManager().getCurMapId(),user.getMapManager()); CommonProto.SuddenlyBossInfo suddenlyBossInfo = CommonProto.SuddenlyBossInfo.newBuilder().setSuddBossId(mapManager.getSuddenlyBoss()).setEndTime(mapManager.getSuddenlyBossEndTime()).setFindMapId(mapManager.getFindSuddenlyBossMapId()).build(); - CommonProto.VipBaseInfo vipInfoProto = CommonProto.VipBaseInfo.newBuilder() - .setHadTakeDailyBox(playerInfoManager.getHadTakeDailyBoxVip()) - .setHadTakeLevelBox(playerInfoManager.getHadTakeLevelBoxVip()) - .setVipLevel(playerInfoManager.getVipLevel()).build(); +// CommonProto.VipBaseInfo vipInfoProto = CommonProto.VipBaseInfo.newBuilder() +// .setHadTakeLevelBox(playerInfoManager.getHadTakeLevelBoxVip()) +// .setVipLevel(playerInfoManager.getVipLevel()).build(); CommonProto.PlayerBindPhone playerBindPhone = CommonProto.PlayerBindPhone.newBuilder() .setPhoneNum(user.getPlayerInfoManager().getPhoneBindInfo().getPhoneNum()) .setState(user.getPlayerInfoManager().getPhoneBindInfo().getState()).build(); @@ -145,7 +144,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ .addAllGiftGoodsInfo(goodsBagInfo) .addAllBuyGoodsId(rechargeInfo.getBuyGoodsTimes().keySet()) .setSuddenlyBossInfo(suddenlyBossInfo) - .setVipBaseInfo(vipInfoProto) + .addAllVipLeveTake(playerInfoManager.getHadTakeLevelBoxVip()) .setUserCreateTime((int)(playerInfoManager.getCreateTime()/1000)) .addAllRedType(playerInfoManager.getReds()) .setRandCount(alreadyCount) @@ -163,6 +162,8 @@ public class GetPlayerInfoHandler extends BaseHandler{ .setQuestionState(questState) .setSoulEquipPool(equipPool) .addAllPlayedMapTypes(mapManager.getPlayedMapType()) + .setAmount(rechargeInfo.getSaveAmt()) + .setVipDaily(playerInfoManager.getHadTakeDailyBoxVip()) .build(); try { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipLevelUpHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipLevelUpHandler.java index b46ce4764..8f151cdee 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipLevelUpHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipLevelUpHandler.java @@ -8,6 +8,7 @@ import com.ljsd.jieling.protocols.MessageTypeProto; import org.springframework.stereotype.Component; @Component +@Deprecated //vip 等级改版 public class VipLevelUpHandler extends BaseHandler { @Override public MessageTypeProto.MessageType getMessageCode() { @@ -16,6 +17,6 @@ public class VipLevelUpHandler extends BaseHandler { @Override public void process(ISession iSession, PacketNetData netData) throws Exception { - PlayerLogic.getInstance().vipLevelUp(iSession); + // PlayerLogic.getInstance().vipLevelUp(iSession); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeDailyHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeDailyHandler.java new file mode 100644 index 000000000..3310b9d70 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeDailyHandler.java @@ -0,0 +1,48 @@ +package com.ljsd.jieling.handler.vip; + +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.dao.PlayerManager; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.SVipLevelConfig; +import org.springframework.stereotype.Component; + +@Component +public class VipTakeDailyHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.VIP_TAKE_DAILY_REQUEST; + } + + @Override + public void processWithProto(ISession session, PlayerInfoProto.VipTakeDilyRequest proto) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + PlayerManager playerInfoManager = user.getPlayerInfoManager(); + SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(playerInfoManager.getVipLevel()); + if(null ==sVipLevelConfig){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + + if(playerInfoManager.getHadTakeDailyBoxVip() != -1 ){ + throw new ErrorCodeException(ErrorCode.newDefineCode("had taked the vip daily reward")); + } + playerInfoManager.setHadTakeDailyBoxVip(playerInfoManager.getVipLevel()); + int[][] rewards= sVipLevelConfig.getVipBoxDailyReward(); + + CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewards, BIReason.TAKE_VIP_DAILY_REWARD); + PlayerInfoProto.VipTakeDilyResponse build = PlayerInfoProto.VipTakeDilyResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.VIP_TAKE_DAILY_RESPONSE_VALUE,build,true); + } + + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeLevelRewardHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeLevelRewardHandler.java index eece0366d..3ae2a9b2a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeLevelRewardHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/vip/VipTakeLevelRewardHandler.java @@ -1,25 +1,62 @@ package com.ljsd.jieling.handler.vip; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.dao.PlayerManager; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.SVipLevelConfig; import org.springframework.stereotype.Component; @Component -public class VipTakeLevelRewardHandler extends BaseHandler { +@Deprecated //vip 等级改版 +public class VipTakeLevelRewardHandler extends BaseHandler { @Override public MessageTypeProto.MessageType getMessageCode() { return MessageTypeProto.MessageType.VIP_TAKE_REWARD_REQUEST; } @Override - public void process(ISession iSession, PacketNetData netData) throws Exception { - byte[] bytes = netData.parseClientProtoNetData(); - PlayerInfoProto.VipTakeBoxRequest vipTakeBoxRequest = PlayerInfoProto.VipTakeBoxRequest.parseFrom(bytes); - int type = vipTakeBoxRequest.getType(); - PlayerLogic.getInstance().takeVipLevelRewad(iSession,type); + public void processWithProto(ISession iSession, PlayerInfoProto.VipTakeBoxRequest proto) throws Exception { + int type = proto.getType(); + // takeVipLevelRewad(iSession,type); } + + +// private void takeVipLevelRewad(ISession session,int type) throws Exception { +// int uid = session.getUid(); +// User user = UserManager.getUser(uid); +// PlayerManager playerInfoManager = user.getPlayerInfoManager(); +// int reson=-1; +// SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(playerInfoManager.getVipLevel()); +// int[][] rewards=null; +// if(type == 1){ +// if(playerInfoManager.getHadTakeLevelBoxVip() == 1 ){ +// throw new ErrorCodeException(ErrorCode.newDefineCode("had taked the vip level reward")); +// } +// playerInfoManager.setHadTakeLevelBoxVip(1); +// rewards = sVipLevelConfig.getVipBoxReward(); +// reson = BIReason.TAKE_VIP_LEVEL_REWARD; +// }else if(type == 2){ +// if(playerInfoManager.getHadTakeDailyBoxVip() != -1 || playerInfoManager.getHadTakeLevelBoxVip() == 0 ){ +// throw new ErrorCodeException(ErrorCode.newDefineCode("had taked the vip daily reward")); +// } +// playerInfoManager.setHadTakeDailyBoxVip(playerInfoManager.getVipLevel()); +// rewards = sVipLevelConfig.getVipBoxDailyReward(); +// reson = BIReason.TAKE_VIP_DAILY_REWARD; +// } +// CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewards,reson); +// PlayerInfoProto.VipTakeBoxResponse build = PlayerInfoProto.VipTakeBoxResponse.newBuilder().setDrop(drop).build(); +// MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.VIP_TAKE_REWARD_RESPONSE_VALUE,build,true); +// } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index 69d19c1a0..8e9bc9ca7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -11,6 +11,7 @@ import config.SPrivilegeTypeConfig; import config.SVipLevelConfig; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; @@ -54,8 +55,6 @@ public class PlayerManager extends MongoBase { private long loginTime; - private int hadTakeLevelBoxVip; //领取vip等级礼包 - private int hadTakeDailyBoxVip=-1; //领取vip每日礼包 private int maxForce; //玩家历史最高战力 @@ -63,6 +62,7 @@ public class PlayerManager extends MongoBase { private Map guidePoints = new HashMap<>(); private Map vipInfo = new HashMap<>(); + private Set vipGoodInfo = new HashSet<>();// 特权商品礼包 private Set reds = new CopyOnWriteArraySet<>(); @@ -254,9 +254,7 @@ public class PlayerManager extends MongoBase { } updateString("vipInfo", vipInfo); updateString("vipLevel", vipLevel); - updateString("hadTakeLevelBoxVip", 0); this.vipLevel = vipLevel; - this.hadTakeLevelBoxVip = 0; user.getUserMissionManager().onGameEvent(user,GameEvent.VIP_LEVLUP,vipLevel); PlayerLogic.getInstance().sendVipDailyOrLevlUpReward(user, vipLevel, BIReason.VIP_LEVEL_REWARD); @@ -317,13 +315,15 @@ public class PlayerManager extends MongoBase { this.maxForce = maxForce; } - public int getHadTakeLevelBoxVip() { - return hadTakeLevelBoxVip; + public Set getHadTakeLevelBoxVip() { + return vipGoodInfo; } - - public void setHadTakeLevelBoxVip(int hadTakeLevelBoxVip) { - updateString("hadTakeLevelBoxVip", hadTakeLevelBoxVip); - this.hadTakeLevelBoxVip = hadTakeLevelBoxVip; + public boolean hadTakeLevelBoxVip(int vipLevel) { + return vipGoodInfo.contains(vipLevel); + } + public void setHadTakeLevelBoxVip(int vipLeve) { + updateString("vipGoodInfo", vipGoodInfo); + vipGoodInfo.add(vipLevel); } public int getHadTakeDailyBoxVip() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 8e7f58512..1157d1058 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -217,58 +217,33 @@ public class PlayerLogic { return valueLength; } - public void vipLevelUp(ISession session) throws Exception { - int uid = session.getUid(); - User user = UserManager.getUser(uid); - PlayerManager playerInfoManager = user.getPlayerInfoManager(); - if(playerInfoManager.getHadTakeDailyBoxVip() == -1){ - throw new ErrorCodeException(ErrorCode.NOT_TAKE_VIP_DAILY_REWARD); - } - Set doingMissionIds = user.getUserMissionManager().getVipMissionIdsType().getDoingMissionIds(); - if(!doingMissionIds.isEmpty()){ - throw new ErrorCodeException(ErrorCode.newDefineCode("not finfish")); - } +// public void vipLevelUp(ISession session) throws Exception { +// int uid = session.getUid(); +// User user = UserManager.getUser(uid); +// PlayerManager playerInfoManager = user.getPlayerInfoManager(); +//// if(playerInfoManager.getHadTakeDailyBoxVip() == -1){ +//// throw new ErrorCodeException(ErrorCode.NOT_TAKE_VIP_DAILY_REWARD); +//// } +//// Set doingMissionIds = user.getUserMissionManager().getVipMissionIdsType().getDoingMissionIds(); +//// if(!doingMissionIds.isEmpty()){ +//// throw new ErrorCodeException(ErrorCode.newDefineCode("not finfish")); +//// } +// +// int vipLevel = playerInfoManager.getVipLevel(); +// playerInfoManager.updateVipInfo(user,vipLevel+1); +// CombatLogic.getInstance().getNewAdventureReward(user, true); +//// List missionList = new ArrayList<>(); +//// MissionLoigc.getVipMission(user,missionList); +//// CommonProto.VipBaseInfo vipInfoProto = CommonProto.VipBaseInfo.newBuilder() +//// .setHadTakeDailyBox(playerInfoManager.getHadTakeDailyBoxVip()) +//// .setHadTakeLevelBox(playerInfoManager.getHadTakeLevelBoxVip()) +//// .setVipLevel(playerInfoManager.getVipLevel()).build(); +//// PlayerInfoProto.VipLevelUpResponse.Builder builder = PlayerInfoProto.VipLevelUpResponse.newBuilder().addAllUserMissionInfo(missionList); +//// builder.setVipBaseInfo(vipInfoProto); +//// MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.VIP_LEVELUP_RESPONSE_VALUE,builder.build(),true); +// } - int vipLevel = playerInfoManager.getVipLevel(); - playerInfoManager.updateVipInfo(user,vipLevel+1); - CombatLogic.getInstance().getNewAdventureReward(user, true); - List missionList = new ArrayList<>(); - MissionLoigc.getVipMission(user,missionList); - CommonProto.VipBaseInfo vipInfoProto = CommonProto.VipBaseInfo.newBuilder() - .setHadTakeDailyBox(playerInfoManager.getHadTakeDailyBoxVip()) - .setHadTakeLevelBox(playerInfoManager.getHadTakeLevelBoxVip()) - .setVipLevel(playerInfoManager.getVipLevel()).build(); - PlayerInfoProto.VipLevelUpResponse.Builder builder = PlayerInfoProto.VipLevelUpResponse.newBuilder().addAllUserMissionInfo(missionList); - builder.setVipBaseInfo(vipInfoProto); - MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.VIP_LEVELUP_RESPONSE_VALUE,builder.build(),true); - } - public void takeVipLevelRewad(ISession session,int type) throws Exception { - int uid = session.getUid(); - User user = UserManager.getUser(uid); - PlayerManager playerInfoManager = user.getPlayerInfoManager(); - int reson=-1; - SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(playerInfoManager.getVipLevel()); - int[][] rewards=null; - if(type == 1){ - if(playerInfoManager.getHadTakeLevelBoxVip() == 1 ){ - throw new ErrorCodeException(ErrorCode.newDefineCode("had taked the vip level reward")); - } - playerInfoManager.setHadTakeLevelBoxVip(1); - rewards = sVipLevelConfig.getVipBoxReward(); - reson = BIReason.TAKE_VIP_LEVEL_REWARD; - }else if(type == 2){ - if(playerInfoManager.getHadTakeDailyBoxVip() != -1 || playerInfoManager.getHadTakeLevelBoxVip() == 0 ){ - throw new ErrorCodeException(ErrorCode.newDefineCode("had taked the vip daily reward")); - } - playerInfoManager.setHadTakeDailyBoxVip(playerInfoManager.getVipLevel()); - rewards = sVipLevelConfig.getVipBoxDailyReward(); - reson = BIReason.TAKE_VIP_DAILY_REWARD; - } - CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewards,reson); - PlayerInfoProto.VipTakeBoxResponse build = PlayerInfoProto.VipTakeBoxResponse.newBuilder().setDrop(drop).build(); - MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.VIP_TAKE_REWARD_RESPONSE_VALUE,build,true); - } public void userforceChange(ISession iSession, int teamId) throws Exception { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index b0198c162..802eee089 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -18,6 +18,7 @@ import com.ljsd.jieling.logic.activity.event.SecretEvent; import com.ljsd.jieling.logic.dao.RechargeInfo; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.fight.CombatLogic; import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.session.ISession; @@ -199,6 +200,17 @@ public class BuyGoodsLogic { ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.DAILY_RECHARGE,price); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_NUM,price); ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM_DAY, user.getPlayerInfoManager().getRechargedaily()); + ISession session = OnlineUserManager.getSessionByUid(uid); + + //vip 等级更新和推送 + int newLeve= SVipLevelConfig.getsVipLevel(rechargeInfo.getSaveAmt()); + if(user.getPlayerInfoManager().getVipLevel()!=newLeve){ + user.getPlayerInfoManager().updateVipInfo(user,newLeve); + CombatLogic.getInstance().getNewAdventureReward(user, true); + } + PlayerInfoProto.RefreshRechargeIndication.Builder builder = PlayerInfoProto.RefreshRechargeIndication.newBuilder(); + builder.setAmount(rechargeInfo.getSaveAmt()); + MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.REFRESH_RECHARGE_INDICATION_VALUE,builder.build(),true); } buyGoodsTimes.put(goodsId,buyCount); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index fd89b6e00..35d046aef 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -418,6 +418,11 @@ public class StoreLogic { Poster.getPoster().dispatchEvent(new GoldEvent(user.getId(),itemNum)); } + if(storeId==Global.VIPSTORID){ + int vipLeve = user.getPlayerInfoManager().getVipLevel(); + user.getPlayerInfoManager().getHadTakeLevelBoxVip().add(vipLeve); + } + PlayerInfoProto.BuyStoreItemResponse builder = PlayerInfoProto.BuyStoreItemResponse.newBuilder().setDrop(drop).build(); MessageUtil.sendMessage(iSession, 1,msgId, builder, true); } @@ -435,6 +440,18 @@ public class StoreLogic { LOGGER.info("buyStoreItem==> uid={},itemId={}",user.getId(),itemId); return "no goods"; } + + if(storeId==Global.VIPSTORID){ + int vipLeve = user.getPlayerInfoManager().getVipLevel(); + if(vipLeve<(sStoreConfig.getStoreId()-1)){ + return "vip leve limit"; + } +// if(user.getPlayerInfoManager().getHadTakeLevelBoxVip().contains(vipLeve)){ +// return "vip time limit 1"; +// } + } + + int buyTimes = itemNumMap.get(itemId); int limit = sStoreConfig.getLimit(); int relatedtoVIP = sStoreConfig.getRelatedtoVIP(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java index daa9def6d..8c0c5528a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java @@ -130,6 +130,9 @@ public class MessageUtil { public static void sendIndicationMessage(ISession session, int result, int msgId, GeneratedMessage generatedMessage, boolean flush) { + if(null == session){ + return; + } if(session.getFiveReady() == 0){ return; } diff --git a/tablemanager/src/main/java/config/SVipLevelConfig.java b/tablemanager/src/main/java/config/SVipLevelConfig.java index b66369238..e28788f88 100644 --- a/tablemanager/src/main/java/config/SVipLevelConfig.java +++ b/tablemanager/src/main/java/config/SVipLevelConfig.java @@ -5,11 +5,13 @@ import manager.Table; import java.util.HashMap; import java.util.Map; +import java.util.TreeMap; @Table(name ="VipLevelConfig") public class SVipLevelConfig implements BaseConfig { private static Map sVipLevelConfigMap; + private static TreeMap money2vip ; private int vipLevel; private int[][] privileges; @@ -20,6 +22,8 @@ public class SVipLevelConfig implements BaseConfig { private int[] openRules; + private int moneyLimit; + private Map privilegeMap; @@ -27,6 +31,7 @@ public class SVipLevelConfig implements BaseConfig { @Override public void init() throws Exception { Map config = STableManager.getConfig(SVipLevelConfig.class); + money2vip = new TreeMap<>(); for(SVipLevelConfig sVipLevelConfig : config.values()){ int[][] privileges = sVipLevelConfig.getPrivileges(); if(privileges!=null&&privileges.length>0){ @@ -37,13 +42,20 @@ public class SVipLevelConfig implements BaseConfig { sVipLevelConfig.setPrivilegeMap(privilegeMap); } + money2vip.put(sVipLevelConfig.getMoneyLimit(),sVipLevelConfig.getVipLevel()); } sVipLevelConfigMap =config; + } public static Map getsVipLevelConfigMap() { return sVipLevelConfigMap; } + //根据钱返回当前特权等级 + public static int getsVipLevel(int money) { + Map.Entry entry = money2vip.ceilingEntry(money); + return entry==null?money2vip.lastEntry().getValue():entry.getValue(); + } public int getVipLevel() { return vipLevel; @@ -72,4 +84,20 @@ public class SVipLevelConfig implements BaseConfig { public int[] getOpenRules() { return openRules; } + + public int getMoneyLimit() { + return moneyLimit; + } + + public void setMoneyLimit(int moneyLimit) { + this.moneyLimit = moneyLimit; + } + + public static TreeMap getMoney2vip() { + return money2vip; + } + + public static void setMoney2vip(TreeMap money2vip) { + SVipLevelConfig.money2vip = money2vip; + } } \ No newline at end of file From de89214bb475d2bc6230082a888a4a3f23a06bde Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Fri, 13 Dec 2019 15:42:20 +0800 Subject: [PATCH 8/9] =?UTF-8?q?BUG=E3=80=90ID1005727=E3=80=91=E9=99=90?= =?UTF-8?q?=E6=97=B6=E6=B4=BB=E5=8A=A8=E6=8E=92=E8=A1=8C=E6=A6=9C=E5=A5=96?= =?UTF-8?q?=E5=8A=B1=E9=82=AE=E4=BB=B6=EF=BC=8C=E9=83=A8=E5=88=86=E7=8E=A9?= =?UTF-8?q?=E5=AE=B6=E6=B2=A1=E6=9C=89=E6=94=B6=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/logic/activity/ExpectRankActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java index 072c26d9d..75705ebc1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java @@ -83,7 +83,7 @@ class ExpectRankActivity extends AbstractActivity { continue; } ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); - if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + if (activityMission == null || activityMission.getOpenType() == 0) { continue; } int missionId = rank2miss.get(rank); From aa56fb73b70de38249e6b6935bce9d10576d9d35 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 13 Dec 2019 17:19:26 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E9=99=90=E6=97=B6=E6=8A=BD=E5=8D=A1?= =?UTF-8?q?=E9=A2=84=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/logic/activity/ActivityLogic.java | 3 +-- .../java/com/ljsd/jieling/logic/hero/HeroLogic.java | 6 +++++- .../src/main/java/com/ljsd/jieling/util/ToolsUtil.java | 7 +++++++ tablemanager/src/main/java/config/SGlobalActivity.java | 10 ++++++++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 3e43ea3bd..8efbe4e41 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -1155,8 +1155,7 @@ public class ActivityLogic { } public void getNextActivityId(ISession session, int activityId, MessageTypeProto.MessageType messageType) throws Exception { User user = UserManager.getUser(session.getUid()); - int type = SGlobalActivity.getsGlobalActivityMap().get(activityId).getType(); - List sGlobalActivities = SGlobalActivity.sGlobalActivityMapByType.get(type); + List sGlobalActivities = SGlobalActivity.sGlobalActivityMapByType.get(activityId); if(sGlobalActivities.isEmpty()){ throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); } 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 134606e59..f837c1ff6 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 @@ -36,6 +36,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import util.MathUtils; import util.StringUtil; +import util.TimeUtils; import java.math.BigDecimal; import java.util.*; @@ -186,7 +187,10 @@ public class HeroLogic{ heroManager.updateFirstTenth(); } if(sLotterySetting.getLotteryType()==3){ - if(!ActivityLogic.getInstance().getActivityStatusByType(user,sLotterySetting.getActivityId())){ + //活动抽卡校验 + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(sLotterySetting.getActivityId()); + long endTimeLong = ToolsUtil.getEndTimeLong(sGlobalActivity.getStartTimeLong(), sGlobalActivity.getEndTimeLong(), sGlobalActivity.getTime(), user.getPlayerInfoManager().getCreateTime(), sGlobalActivity.getGapTime()); + if(!ActivityLogic.getInstance().getActivityStatusByType(user,sLotterySetting.getActivityId())|| TimeUtils.now()>endTimeLong){ throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ToolsUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ToolsUtil.java index 979ec68f3..607e91e17 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ToolsUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ToolsUtil.java @@ -22,6 +22,13 @@ public class ToolsUtil { } return startTime; } + public static long getEndTimeLong(long startTimeLong , long endTimeLong,int time,long createUserTime,int dayOut){ + long timeLong = getTimeLong(startTimeLong, endTimeLong, time, createUserTime, 2); + long endTime = timeLong - TimeUtils.DAY * dayOut; + return endTime; + + } + // // /** diff --git a/tablemanager/src/main/java/config/SGlobalActivity.java b/tablemanager/src/main/java/config/SGlobalActivity.java index 2cf1db342..2703317ea 100644 --- a/tablemanager/src/main/java/config/SGlobalActivity.java +++ b/tablemanager/src/main/java/config/SGlobalActivity.java @@ -46,6 +46,8 @@ public class SGlobalActivity implements BaseConfig { private int[] foreshow; + private int gapTime; + public static Map> sGlobalActivityMapByType; @@ -149,4 +151,12 @@ public class SGlobalActivity implements BaseConfig { public int[] getForeshow() { return foreshow; } + + public int getGapTime() { + return gapTime; + } + + public void setType(int type) { + this.type = type; + } } \ No newline at end of file