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 bc9c6917c..be07ed6d1 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 @@ -322,7 +322,7 @@ public class ActivityLogic implements IEventHandler{ } abstractActivity.initActivity(user); - ReportUtil.onReportEvent(user, ReportEventEnum.JOIN_ACTIVITY.getType(),String.valueOf(openActivityId)); +// ReportUtil.onReportEvent(user, ReportEventEnum.JOIN_ACTIVITY.getType(),String.valueOf(openActivityId)); int activityOpenState = getActivityOpenState(user, openActivityId); abstractActivity.setOpenState(user,activityOpenState); if(activityOpenState == ActivityType.UNOPEN_STATE){ @@ -365,7 +365,7 @@ public class ActivityLogic implements IEventHandler{ if (null==abstractActivity) { continue; } - ReportUtil.onReportEvent(user, ReportEventEnum.JOIN_ACTIVITY.getType(),String.valueOf(activityId)); +// ReportUtil.onReportEvent(user, ReportEventEnum.JOIN_ACTIVITY.getType(),String.valueOf(activityId)); abstractActivity.initActivity(user); // if(!initOtherActivity(user, sGlobalActivity)){ initAllActivityMission(activityManager.getActivityMissionMap(),activityId); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index 77632c50c..a6d1698c4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -49,7 +49,7 @@ public enum ActivityTypeEnum { ECPEDITION_ACTIVITY(ActivityType.ECPEDITION_ACTIVITY,DefaultEmptyActivity::new), COPY_PASS(ActivityType.COPY_PASS,ChapterRewardActivity::new), NEW_EIGHT_LOGIN(ActivityType.NEW_EIGHT_LOGIN,NewEightActivity::new), - BEAUTY_BAG(ActivityType.BEAUTY_BAG,DefaultEmptyActivity::new) + BEAUTY_BAG(ActivityType.BEAUTY_BAG,LimitRandomCardActivity::new) ; private int type; 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 48f634d0c..c8f9c0ec4 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 @@ -50,121 +50,103 @@ public class LimitRandomCardActivity extends AbstractActivity { public void onEvent(IEvent event) throws Exception { if(event instanceof RandomCardEvent){ RandomCardEvent cardEvent =(RandomCardEvent) event; - if(cardEvent.getType()!=3){ + if(cardEvent.getType()==0||cardEvent.getType()!=id){ return; } - if(UserManager.getUser(cardEvent.getUid()).getActivityManager().getActivityMissionMap().get(id)==null){ + User user = UserManager.getUser(cardEvent.getUid()); + if(user.getActivityManager().getActivityMissionMap().get(id)==null){ return; } - Map config = STableManager.getConfig(SLotterySetting.class); - SLotterySetting sLotterySetting = config.get(cardEvent.getType()); + Map mustAppear = cardEvent.getMustAppear(); + int allCount = 0; + if(mustAppear.size()>2){ + return; + } + int index = 1; + for(Map.Entry entry:mustAppear.entrySet()){ + int key = entry.getKey(); + List lotterySpecialConfigListByType = SLotterySpecialConfig.getLotteryListByDifferentType(key); + if(lotterySpecialConfigListByType==null||lotterySpecialConfigListByType.isEmpty()){ + continue; + } + for(SLotterySpecialConfig config:lotterySpecialConfigListByType){ + if(config==null||config.getIsNeedShow()==0){ + continue; + } + allCount +=entry.getValue()*index; + index*=1000; + } + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); -// if(sLotterySetting.getActivityId()!=id){ -// return; -// } + activityMission.setV(allCount); + update(UserManager.getUser(cardEvent.getUid()),cardEvent.getCount()); - update(UserManager.getUser(cardEvent.getUid()),cardEvent.isMustAppear()?0:1); - - -// AbstractRank randomRank= RankContext.getRankEnum(RankEnum.RANDOM_CARD_RANK.getType()); -// int scoreById = Double.valueOf(randomRank.getScoreById(((RandomCardEvent) event).getUid(),String.valueOf(id))).intValue(); -// if(scoreById==-1){ -// scoreById=0; -// } -// randomRank.addRank(cardEvent.getUid(),String.valueOf(id),scoreById+cardEvent.getScore()); -// 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(),String.valueOf(id), TimeUtils.now()/1000,a[0],a[1]); -// Stream.of(cardEvent.getHeros()).filter(pre).forEach(consumer); } -// else if(event instanceof RandomMustCardEvent){ -// RandomMustCardEvent cardEvent =(RandomMustCardEvent) event; -// int activityId = sLotterySetting.getActivityId(); -// if(activityId!=id){ -// return; -// } -// -// } } @Override public void onActivityEnd() throws Exception { - SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - List sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id); - if(null==sActivityRankingReward) - return; - int maxRank = 0; - int maxRewardId = 0; - Map rank2miss = new HashMap<>(); - for (SActivityRankingReward sActivityRankingReward1 : sActivityRankingReward) { - if(sActivityRankingReward1.getMaxRank()==-1){ - maxRank =-1; - maxRewardId = sActivityRankingReward1.getId(); - continue; - } +// SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); +// List sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id); +// if(null==sActivityRankingReward) +// return; +// int maxRank = 0; +// int maxRewardId = 0; +// Map rank2miss = new HashMap<>(); +// for (SActivityRankingReward sActivityRankingReward1 : sActivityRankingReward) { +// if(sActivityRankingReward1.getMaxRank()==-1){ +// maxRank =-1; +// maxRewardId = sActivityRankingReward1.getId(); +// continue; +// } +// +// if(maxRank!=-1) +// { +// maxRank = Math.max(maxRank, sActivityRankingReward1.getMaxRank()); +// } +// +// for (Integer rank : getRankSet(sActivityRankingReward1.getMinRank(), sActivityRankingReward1.getMaxRank())) { +// rank2miss.put(rank, sActivityRankingReward1.getId()); +// } +// } - if(maxRank!=-1) - { - maxRank = Math.max(maxRank, sActivityRankingReward1.getMaxRank()); - } - - for (Integer rank : getRankSet(sActivityRankingReward1.getMinRank(), sActivityRankingReward1.getMaxRank())) { - rank2miss.put(rank, sActivityRankingReward1.getId()); - } - } - - Set> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.RANDOM_CARD_RANK, Integer.toString(id), 0, (maxRank==-1?0:maxRank) - 1); - int rank = 1; - int nowTime = (int) (TimeUtils.now() / 1000); - for (ZSetOperations.TypedTuple item : rankInfo) { - String value = item.getValue(); - int uid = Integer.parseInt(value); - User user = UserManager.getUser(uid, true); - if (null == user) { - continue; - } - ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); - if (activityMission == null || activityMission.getOpenType() == 0) { - continue; - } - int missionId; - if (rank2miss.containsKey(rank)) { - missionId = rank2miss.get(rank); - } else { - if (maxRank == -1) { - missionId = maxRewardId; - } else { - continue; - } - } - - //checkAndUpdate value - SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId); - //sendmail - - String title = SErrorCodeEerverConfig.getI18NMessage("east_fairy_title", new Object[]{sGlobalActivity.getSesc()}); - String content = SErrorCodeEerverConfig.getI18NMessage("east_fairy_txt", new Object[]{rank++}); - String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward()); - MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); - } +// Set> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.RANDOM_CARD_RANK, Integer.toString(id), 0, (maxRank==-1?0:maxRank) - 1); +// int rank = 1; +// int nowTime = (int) (TimeUtils.now() / 1000); +// for (ZSetOperations.TypedTuple item : rankInfo) { +// String value = item.getValue(); +// int uid = Integer.parseInt(value); +// User user = UserManager.getUser(uid, true); +// if (null == user) { +// continue; +// } +// ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); +// if (activityMission == null || activityMission.getOpenType() == 0) { +// continue; +// } +// int missionId; +// if (rank2miss.containsKey(rank)) { +// missionId = rank2miss.get(rank); +// } else { +// if (maxRank == -1) { +// missionId = maxRewardId; +// } else { +// continue; +// } +// } +// +// //checkAndUpdate value +// SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId); +// //sendmail +// +// String title = SErrorCodeEerverConfig.getI18NMessage("east_fairy_title", new Object[]{sGlobalActivity.getSesc()}); +// String content = SErrorCodeEerverConfig.getI18NMessage("east_fairy_txt", new Object[]{rank++}); +// String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward()); +// MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); +// } } - @Override - void updateProgressWithUser(User user, ActivityMission activityMission, int count) { - if(count==0){ - activityMission.setV(0); - }else{ - activityMission.setV(activityMission.getV()+count); - } - super.updateProgressWithUser(user, activityMission, 1); - } - - @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.getV(); - } } 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 2c9a8cb80..2d05a27d3 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 @@ -1,5 +1,7 @@ package com.ljsd.jieling.logic.activity.event; +import java.util.Map; + /** * @author lvxinran * @date 2019/11/27 @@ -8,11 +10,13 @@ package com.ljsd.jieling.logic.activity.event; public class RandomCardEvent implements IEvent { private int uid; private int type; - private boolean mustAppear; - public RandomCardEvent(int uid,int type,boolean mustAppear) { + private Map mustAppear; + private int count; + public RandomCardEvent(int uid,int type,Map mustAppear,int count) { this.uid = uid; this.type = type; this.mustAppear = mustAppear; + this.count = count; } public int getType() { @@ -31,11 +35,19 @@ public class RandomCardEvent implements IEvent { this.uid = uid; } - public boolean isMustAppear() { + public Map getMustAppear() { return mustAppear; } - public void setMustAppear(boolean mustAppear) { + public void setMustAppear(Map mustAppear) { this.mustAppear = mustAppear; } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } } 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 47947577a..230057353 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 @@ -253,6 +253,7 @@ public class HeroLogic{ for(int i = 0;i> lotterySpecialConfigMap; + private static Map> lotteryDifferentConfigMap; + @Override public void init() throws Exception { Map config = STableManager.getConfig(SLotterySpecialConfig.class); Map> lotterySpecialConfigMapTmp = new HashMap<>(); + Map> lotteryDifferentTypeMapTmp = new HashMap<>(); + for(SLotterySpecialConfig sLotterySpecialConfig : config.values()){ // int differentType = sLotterySpecialConfig.getDifferentType(); // if(!lotterySpecialConfigMapTmp.containsKey(differentType)){ @@ -44,15 +50,17 @@ public class SLotterySpecialConfig implements BaseConfig { // } // lotterySpecialConfigMapTmp.get(differentType).get(type).add(sLotterySpecialConfig); lotterySpecialConfigMapTmp.computeIfAbsent(sLotterySpecialConfig.getType(),n->new ArrayList<>()).add(sLotterySpecialConfig); + lotteryDifferentTypeMapTmp.computeIfAbsent(sLotterySpecialConfig.getDifferentType(),n->new ArrayList<>()).add(sLotterySpecialConfig); } lotterySpecialConfigMap = lotterySpecialConfigMapTmp; + lotteryDifferentConfigMap = lotteryDifferentTypeMapTmp; } public static List getLotterySpecialConfigListByType(int type) { - if(!lotterySpecialConfigMap.containsKey(type)){ - return null; - } - return lotterySpecialConfigMap.get(type); + return lotterySpecialConfigMap.getOrDefault(type,null); + } + public static List getLotteryListByDifferentType(int type) { + return lotteryDifferentConfigMap.getOrDefault(type,null); } public int getId() { @@ -82,4 +90,8 @@ public class SLotterySpecialConfig implements BaseConfig { public int getDifferentType() { return differentType; } + + public int getIsNeedShow() { + return isNeedShow; + } } \ No newline at end of file