From 210f4a15293c920cc9064cd57ec735c02196a1c5 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Sun, 25 Oct 2020 17:00:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A4=BE=E7=A8=B7=E5=A4=A7=E5=85=B8=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamecommon/src/main/java/util/TimeUtils.java | 11 ++ .../com/ljsd/jieling/db/redis/RedisKey.java | 2 + .../com/ljsd/jieling/exception/ErrorCode.java | 4 +- .../com/ljsd/jieling/globals/BIReason.java | 5 + ...CommitShejiActivityItemRequestHandler.java | 116 ++++++++++++++++++ .../activity/GetShejiAwardRequestHandler.java | 111 +++++++++++++++++ .../logic/activity/AbstractActivity.java | 2 +- .../jieling/logic/activity/ActivityLogic.java | 67 +++++++--- .../jieling/logic/activity/ActivityType.java | 1 + .../logic/activity/ActivityTypeEnum.java | 3 +- .../ljsd/jieling/logic/dao/PlayerManager.java | 12 ++ .../jieling/logic/dao/root/GuildInfo.java | 12 ++ .../ljsd/jieling/logic/family/GuildLogic.java | 2 + .../com/ljsd/jieling/logic/rank/RankEnum.java | 4 +- .../main/java/config/SGodSacrificeConfig.java | 34 ++++- .../java/config/SGodSacrificeSetting.java | 39 +++++- 16 files changed, 397 insertions(+), 28 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/activity/CommitShejiActivityItemRequestHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetShejiAwardRequestHandler.java diff --git a/gamecommon/src/main/java/util/TimeUtils.java b/gamecommon/src/main/java/util/TimeUtils.java index 6be5f4cd1..3b56438ca 100644 --- a/gamecommon/src/main/java/util/TimeUtils.java +++ b/gamecommon/src/main/java/util/TimeUtils.java @@ -663,6 +663,17 @@ public class TimeUtils { return _calendar.getTimeInMillis() + addTime; } + + public static long getDayTimeWithHour(long time,int hour, int mintue) { + Calendar _calendar = Calendar.getInstance(); + _calendar.setTimeInMillis(time); + _calendar.set(Calendar.HOUR_OF_DAY, hour); + _calendar.set(Calendar.MINUTE, mintue); + _calendar.set(Calendar.SECOND, 0); + _calendar.set(Calendar.MILLISECOND, 0); + return _calendar.getTimeInMillis(); + } + // public static void main(String[] args) throws Exception { // Date now = new Date(); // LOGGER.info("date:" + now); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index 9c504ab31..96eaaed24 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -235,6 +235,8 @@ public class RedisKey { public static final String SITUATION_RANK = "SITUATION_RANK"; public static final String GUILD_CHALLENGE_RANK = "GUILD_CHALLENGE_RANK"; + public static final String GUILD_SHEJI_SOCRE_USER_RANK = "GUILD_SHEJI_SOCRE_USER_RANK"; + public static final String GUILD_SHEJI_SCORE_RANK = "GUILD_SHEJI_SCORE_RANK"; public static final String DEATH_PAHT_TOTAL_CHALLENGE_COUNT = "DEATH_PAHT_TOTAL_CHALLENGE_COUNT"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java b/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java index f9c58e20d..fdc5861f2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java @@ -152,7 +152,9 @@ public enum ErrorCode implements IErrorCode { DAILY_NO_OPEN(118,"进入副本条件不足"), HAD_TAKE_REWARD(124,"奖励已领取"), - + HAD_TAKE(125, "已领取"), + NOT_IN_TAKE_TIME(126, "不在领取期间"), + USER_LEVE_DOWN(127,"玩家等级不够"), SERVER_DEFINE_SELF(20000,"操作失败") ; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 287335c99..0f248be4c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -151,6 +151,9 @@ public interface BIReason { int JOURNEY_FIGHT_REWARD = 84;//逍遥游击杀boss奖励 int JOURNEY_RANDOM_REWARD = 85;//逍遥游转盘奖励 int SERVER_UPDATE_REWARD = 86;//服务器更新添加初始化道具 + int SHEJI_ACTIVITY = 87;//社稷大典 + + int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 @@ -273,6 +276,8 @@ public interface BIReason { int JOURNEY_FIGHT_CONSUME = 1066;//逍遥游攻击boss消耗 int JOURNEY_DO_CONSUME = 1067;//逍遥游摇骰子消耗 + int SHEJI_CONSUME = 1068; //社稷大典贡献 + } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/CommitShejiActivityItemRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/CommitShejiActivityItemRequestHandler.java new file mode 100644 index 000000000..e5fe4a9e4 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/CommitShejiActivityItemRequestHandler.java @@ -0,0 +1,116 @@ +package com.ljsd.jieling.handler.activity; + +import com.google.protobuf.GeneratedMessage; +import com.ljsd.jieling.core.Lockeys; +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.activity.ActivityLogic; +import com.ljsd.jieling.logic.activity.ActivityTypeEnum; +import com.ljsd.jieling.logic.activity.event.CommitSheJiEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.dao.GuilidManager; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.GuildInfo; +import com.ljsd.jieling.logic.dao.root.User; +import 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.protocols.ActivityProto; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.Family; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.util.ItemUtil; +import config.SGlobalActivity; +import config.SGodSacrificeSetting; +import manager.STableManager; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * Description: 社稷大典 + * Author: zsx + * CreateDate: 2020/10/21 19:51 + */ +public class CommitShejiActivityItemRequestHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return null; + } + + @Override + public GeneratedMessage processWithProto(int uid, ActivityProto.CommitShejiActivityItemRequest proto) throws Exception { + + User user = UserManager.getUser(uid); + if (user == null) + throw new ErrorCodeException(ErrorCode.UNKNOWN); + //check guild + int guildId = user.getPlayerInfoManager().getGuildId(); + if (guildId == 0) { + throw new ErrorCodeException(ErrorCode.FAMILY_NO); + } + + int level = user.getPlayerInfoManager().getLevel(); + if (level<50) { + throw new ErrorCodeException(ErrorCode.USER_LEVE_DOWN); + } + + //lock all + GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId); + Set sendUids = new HashSet<>(); + for (Set items : guildInfo.getMembers().values()) { + sendUids.addAll(items); + } + Lockeys.getLockeys().lock("guild", sendUids); + + //check activity open +// boolean b = ActivityLogic.getInstance().checkActivityOpen(user, ActivityTypeEnum.SHEJI_ACTIVITY.getType()); +// if(!b){ +// +// } + + Set openActivityIdsByType = ActivityLogic.getInstance().getOpenActivityIdsByType(user, ActivityTypeEnum.SHEJI_ACTIVITY.getType(), true); + if(openActivityIdsByType.size()==0){ + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + + HashMap consumeOnce = new HashMap<>(); + + consumeOnce.put(proto.getItemId(),proto.getItemNum()); + + if(!ItemUtil.checkCost(user,consumeOnce)){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + + boolean enough = ItemUtil.itemCost(user, consumeOnce, BIReason.SHEJI_CONSUME, uid); + if(!enough){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + + SGodSacrificeSetting sGodSacrificeSetting = STableManager.getConfig(SGodSacrificeSetting.class).get(1); + if(null==sGodSacrificeSetting){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + int index = SGodSacrificeSetting.exchangeRate.getOrDefault(proto.getItemId(),-1); + if(index == -1){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + int score = proto.getItemNum()*sGodSacrificeSetting.getRewardItemChangRate()[index]; + int[][] _result = new int[1][2]; + _result[0][0]=sGodSacrificeSetting.getActivityMoney(); + _result[0][1]= sGodSacrificeSetting.getRewardItemChangRate()[index+3]*proto.getItemNum(); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, _result, BIReason.SHEJI_ACTIVITY); + guildInfo.setGuildSheJiScore(score+guildInfo.getGuildSheJiScore()); + Poster.getPoster().dispatchEvent(new CommitSheJiEvent(guildId,uid,score)); + + + + + + return ActivityProto.CommitShejiActivityItemResponse.newBuilder().setDrop(drop).build(); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetShejiAwardRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetShejiAwardRequestHandler.java new file mode 100644 index 000000000..bbfb8f926 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetShejiAwardRequestHandler.java @@ -0,0 +1,111 @@ +package com.ljsd.jieling.handler.activity; + +import com.google.protobuf.GeneratedMessage; +import com.ljsd.GameApplication; +import com.ljsd.jieling.db.mongo.MongoUtil; +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.jbean.ActivityMission; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.AbstractActivity; +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.logic.activity.ActivityType; +import com.ljsd.jieling.logic.activity.ActivityTypeEnum; +import com.ljsd.jieling.logic.activity.event.GetSheJiAwardEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.GlobalSystemControl; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.ActivityProto; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.util.ItemUtil; +import config.SGlobalActivity; +import config.SGodSacrificeSetting; +import manager.STableManager; +import util.TimeUtils; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Calendar; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Description: des + * Author: zsx + * CreateDate: 2020/10/22 9:39 + */ +public class GetShejiAwardRequestHandler extends BaseHandler { + + @Override + public MessageTypeProto.MessageType getMessageCode() { + return null; + } + + @Override + public GeneratedMessage processWithProto(int uid, ActivityProto.GetShejiAwardRequest proto) throws Exception { + + //checkActivity + User user = UserManager.getUser(uid); + if (user == null) + throw new ErrorCodeException(ErrorCode.UNKNOWN); + AbstractActivity activityType = ActivityTypeEnum.getActicityType(proto.getActivityId()); + if(activityType==null){ + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(proto.getActivityId()); + if(activityMission==null){ + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + SGodSacrificeSetting sGodSacrificeSetting = STableManager.getConfig(SGodSacrificeSetting.class).get(1); + if(null==sGodSacrificeSetting){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + + + + //check time + List list1 = Arrays.stream(sGodSacrificeSetting.getTimePointList()).boxed().collect(Collectors.toList()); + Calendar calendar = Calendar.getInstance(); + int hour = calendar.get(Calendar.HOUR_OF_DAY); + if(!list1.contains(hour)){ + throw new ErrorCodeException(ErrorCode.NOT_IN_TAKE_TIME); + } + boolean isInTime=false; + for (int i = 0; i =dayTimeWithHour&&timeInMillis<=dayTimeWithHourTime){ + isInTime=true; + break; + } + } + if(!isInTime){ + throw new ErrorCodeException(ErrorCode.NOT_IN_TAKE_TIME); + } + //check take + GlobalSystemControl globalSystemControl = MongoUtil.getInstence().getMyMongoTemplate().findById(GameApplication.serverId, GlobalSystemControl.class); + Integer integer = globalSystemControl.getActivityOpenValue().get(proto.getActivityId()); + int v = activityMission.getV(); + if(v==integer){ + throw new ErrorCodeException(ErrorCode.HAD_TAKE); + } + + activityMission.setV(integer); + //更新进度 + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + activityType.sendActivityProgress(sessionByUid, activityMission, null); + int[] dropList = new int[1]; + dropList[0]=sGodSacrificeSetting.getTimeRewardGroup(); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropList,1,0, BIReason.SHEJI_ACTIVITY); + Poster.getPoster().dispatchEvent(new GetSheJiAwardEvent(uid)); + return ActivityProto.GetShejiAwardResponse.newBuilder().setDrop(drop).build(); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java index 45af69885..9645f609b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java @@ -340,7 +340,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { * * @param filterMissId miss过滤 */ - void sendActivityProgress(ISession session, ActivityMission activityMission, Set filterMissId) { + public void sendActivityProgress(ISession session, ActivityMission activityMission, Set filterMissId) { PlayerInfoProto.ActivityUpateProgressIndication.Builder builder = PlayerInfoProto.ActivityUpateProgressIndication.newBuilder(); builder.setActivityInfo(CommonProto.ActivityInfo.newBuilder().setValue(activityMission.getV()).addAllMission(getAllMissInfo(activityMission, filterMissId)).setActivityId(id)); if (session != null) { 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 e06affd53..775cb3e61 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 @@ -1,6 +1,5 @@ package com.ljsd.jieling.logic.activity; -import com.google.gson.Gson; import com.ljsd.GameApplication; import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig; import com.ljsd.jieling.core.VipPrivilegeType; @@ -14,11 +13,11 @@ import com.ljsd.jieling.jbean.ActivityManager; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; import com.ljsd.jieling.jbean.LuckWheelMission; -import com.ljsd.jieling.ktbeans.ReportEventEnum; -import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.activity.event.*; -import com.ljsd.jieling.logic.dao.*; +import com.ljsd.jieling.logic.dao.PlayerManager; +import com.ljsd.jieling.logic.dao.SecretBoxManager; +import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; @@ -28,7 +27,10 @@ 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.*; +import com.ljsd.jieling.util.InnerMessageUtil; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import com.ljsd.jieling.util.ToolsUtil; import config.*; import manager.STableManager; import org.slf4j.Logger; @@ -602,7 +604,7 @@ public class ActivityLogic implements IEventHandler{ } } - private Set getOpenActivityIdsByType(User user, int activityType,boolean withState) { + public Set getOpenActivityIdsByType(User user, int activityType,boolean withState) { Set ids = new HashSet<>(); ActivityManager activityManager = user.getActivityManager(); Map activityMissionMap = activityManager.getActivityMissionMap(); @@ -820,20 +822,25 @@ public class ActivityLogic implements IEventHandler{ public void checkSecretBoxSeason() { - long now = TimeUtils.now(); - int newSecretBoxSeasonTimes = 0; - for (SDifferDemonsBoxSetting sDifferDemonsBoxSetting : SDifferDemonsBoxSetting.getConfig().values()) { - long seasonStartLong = sDifferDemonsBoxSetting.getSeasonStartLong(); - long seasonEndLong = sDifferDemonsBoxSetting.getSeasonEndLong(); - if (now >= seasonStartLong && now <= seasonEndLong) { - newSecretBoxSeasonTimes = sDifferDemonsBoxSetting.getSeasonTimes(); - break; + try { + + long now = TimeUtils.now(); + int newSecretBoxSeasonTimes = 0; + for (SDifferDemonsBoxSetting sDifferDemonsBoxSetting : SDifferDemonsBoxSetting.getConfig().values()) { + long seasonStartLong = sDifferDemonsBoxSetting.getSeasonStartLong(); + long seasonEndLong = sDifferDemonsBoxSetting.getSeasonEndLong(); + if (now >= seasonStartLong && now <= seasonEndLong) { + newSecretBoxSeasonTimes = sDifferDemonsBoxSetting.getSeasonTimes(); + break; + } } - } - if(newSecretBoxSeasonTimes!=secretBoxSeasonTimes){ - secretBoxSeasonTimes = newSecretBoxSeasonTimes; - PlayerInfoProto.UpdateSecretBoxSeasonIndication build = PlayerInfoProto.UpdateSecretBoxSeasonIndication.newBuilder().setNewSeasonId(newSecretBoxSeasonTimes).build(); - MessageUtil.sendAllOnlineUserMsg(MessageTypeProto.MessageType.UPDATE_SECRET_BOX_SEASON_INDICATION_VALUE,build); + if(newSecretBoxSeasonTimes!=secretBoxSeasonTimes){ + secretBoxSeasonTimes = newSecretBoxSeasonTimes; + PlayerInfoProto.UpdateSecretBoxSeasonIndication build = PlayerInfoProto.UpdateSecretBoxSeasonIndication.newBuilder().setNewSeasonId(newSecretBoxSeasonTimes).build(); + MessageUtil.sendAllOnlineUserMsg(MessageTypeProto.MessageType.UPDATE_SECRET_BOX_SEASON_INDICATION_VALUE,build); + } + }catch (Exception e){ + LOGGER.error("Exception::=>{}",e.toString()); } } @@ -1345,4 +1352,26 @@ public class ActivityLogic implements IEventHandler{ MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true); } + + //检查活动是否开启 + public boolean checkActivityOpen(User user, int activityType) { + ActivityManager activityManager = user.getActivityManager(); + Map activityMissionMap = activityManager.getActivityMissionMap(); + for (Map.Entry item : activityMissionMap.entrySet()) { + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(item.getKey()); + int targetActivityType = sGlobalActivity.getType(); + if (targetActivityType == activityType) { + return true; + } + } + return false; + } + + /** + * 检查绝对时间 和相对开服时间活动是否开启 + */ + public boolean checkGlobleActivityOpen(int activityId){ + return openActivityIds.contains(activityId); + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java index 464006a27..b3ea961b3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java @@ -77,4 +77,5 @@ public interface ActivityType { int JADE_DYNASTY_RARE_SHOP = 20002;//破阵诛仙珍奇宝阁 int ITEMS_STORE= 6000;//百宝商会 int TRIAL_EXPERT = 70;//幻境达人 + int SHEJI_ACTIVITY = 60;//社稷大典 } 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 b599f7760..0cdc70d58 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 @@ -57,7 +57,8 @@ public enum ActivityTypeEnum { JADE_DYNASTY_SHOP(ActivityType.JADE_DYNASTY_SHOP, DefaultEmptyActivity::new), JADE_DYNASTY_RARE_SHOP(ActivityType.JADE_DYNASTY_RARE_SHOP, DefaultEmptyActivity::new), ITEMS_STORE(ActivityType.ITEMS_STORE, DefaultEmptyActivity::new), - TRIAL_EXPERT(ActivityType.TRIAL_EXPERT,TrialExpectRankActivity::new) + TRIAL_EXPERT(ActivityType.TRIAL_EXPERT,TrialExpectRankActivity::new), + SHEJI_ACTIVITY(ActivityType.SHEJI_ACTIVITY,SheJiActivity::new), ; private int type; 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 70bcc8601..f11738389 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 @@ -119,6 +119,9 @@ public class PlayerManager extends MongoBase { private String ip; + private int sheJiOpenTime; + + private Map situationPass = new HashMap<>(); @@ -798,4 +801,13 @@ public class PlayerManager extends MongoBase { this.situationPass = situationPass; updateString("situationPass",situationPass); } + + public int getSheJiOpenTime() { + return sheJiOpenTime; + } + + public void setSheJiOpenTime(int sheJiOpenTime) { + updateString("sheJiOpenTime",sheJiOpenTime); + this.sheJiOpenTime = sheJiOpenTime; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java index 0f41fad56..0ecfa8aef 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/GuildInfo.java @@ -65,6 +65,7 @@ public class GuildInfo extends MongoBase { private int buffOverTime; private int nextChallengeMessageTime; + private int guildSheJiScore; public GuildInfo() { setRootCollection(_COLLECTION_NAME); @@ -323,4 +324,15 @@ public class GuildInfo extends MongoBase { updateString("nextChallengeMessageTime",nextChallengeMessageTime); } + + + + public int getGuildSheJiScore() { + return guildSheJiScore; + } + + public void setGuildSheJiScore(int guildSheJiScore) { + updateString("guildSheJiScore",guildSheJiScore); + this.guildSheJiScore = guildSheJiScore; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java index e61edb590..8b5211b09 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java @@ -372,6 +372,8 @@ public class GuildLogic { }finally { RedisUtil.getInstence().releaseDistributedLock(RedisKey.OPERATE_FAMILY,Integer.toString(guildId), Integer.toString(uid)); } + //社稷大典需要初始化分数 + Poster.getPoster().dispatchEvent(new CommitSheJiEvent(guildId,uid,0)); RedisUtil.getInstence().expire(RedisKey.getKey(RedisKey.FAMILY_JOIN,String.valueOf(uid),false), TimeUtils.DAY); addGuildLog(guildInfo.getId(),GuildDef.Log.JOIN,user.getPlayerInfoManager().getNickName()); Family.FamilyJoinIndicaion build = Family.FamilyJoinIndicaion.newBuilder().setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo)).setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user, GlobalsDef.MEMBER)).build(); 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 08e9cedfa..56f4fcb8a 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 @@ -28,8 +28,8 @@ public enum RankEnum { DEATH_PATH_EVERY_PERSON_RANK(15,RedisKey.DEATH_PATH_EVERY_PERSON_RANK,DeathPathEveryPersonRank::new),//param1:当前阵玩家伤害 param2:无 param3:无 DEATH_PATH_EVERY_GUILD_RANK(16,RedisKey.DEATH_PATH_EVERY_GUILD_RANK, DeathPathEveryGuildRank::new),//param1:当前阵公会伤害 param2:当前工会挑战人数 param3:无 DEATH_PATH_TOTAL_PERSON_RANK(17,RedisKey.DEATH_PATH_TOTAL_PERSON_RANK,DeathPathTotalPersonRank::new),//param1:玩家总伤害 param2:无 param3:无 - DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new),//param1:工会总伤害 param2:无 param3:无 GUILD_FORCE_RANK(20,RedisKey.GUILD_FORCE_RANK,GuildForceRank::new),//param1:公会总战力 param2:无 param3:无 + DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new),//param1:工会总伤害 param2:无 param3:无 //达人排行榜 EXPERT_RANK(21,RedisKey.EXPERT_RANK,GoldRank::new),//param1:活动进度 param2:无 param3:无 FORCE_CURR_RANK(22,RedisKey.FORCE_CURR_RANK,ForceCurrRank::new),//param1:人物战力 param2:无 param3:无 @@ -39,6 +39,8 @@ public enum RankEnum { SITUATION_RANK(24,RedisKey.SITUATION_RANK,SituationRank::new),//param1:通关次数 param2:无 param3:无 GUILD_CHALLENGE_RANK(26,RedisKey.GUILD_CHALLENGE_RANK,GuildChallengeRank::new),//param1:伤害 param2:无 param3:无 + + GUILD_SHEJI_SCORE_RANK(27,RedisKey.GUILD_SHEJI_SCORE_RANK,GuildSheJiScoreRank::new),//param1:公会社稷贡献 param2:无 param3:无 ; private int type; diff --git a/tablemanager/src/main/java/config/SGodSacrificeConfig.java b/tablemanager/src/main/java/config/SGodSacrificeConfig.java index 9f865679e..b9eb4f1a9 100644 --- a/tablemanager/src/main/java/config/SGodSacrificeConfig.java +++ b/tablemanager/src/main/java/config/SGodSacrificeConfig.java @@ -3,6 +3,9 @@ package config; import manager.STableManager; import manager.Table; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; @Table(name ="GodSacrificeConfig") @@ -24,14 +27,30 @@ public class SGodSacrificeConfig implements BaseConfig { private int basLineRewardId; - - @Override + private static Map sGodSacrificeConfigMap; + + private static Map>> integerListMap=new HashMap<>(); + + @Override public void init() throws Exception { - + sGodSacrificeConfigMap = STableManager.getConfig(SGodSacrificeConfig.class); + + for (SGodSacrificeConfig sGodSacrificeConfig : sGodSacrificeConfigMap.values()) { + int activityId = sGodSacrificeConfig.getActivityId(); + Map> integerListHash = integerListMap.getOrDefault(sGodSacrificeConfig.getRewardType(),new HashMap<>()); + + if (!integerListHash.containsKey(activityId)) { + integerListHash.put(activityId, new ArrayList<>()); + } + integerListHash.get(activityId).add(sGodSacrificeConfig); + + integerListMap.put(sGodSacrificeConfig.getRewardType(),integerListHash); + } + } - public int getId() { + public int getId() { return id; } @@ -63,5 +82,12 @@ public class SGodSacrificeConfig implements BaseConfig { return basLineRewardId; } + public static Map getsGodSacrificeConfigMap() { + return sGodSacrificeConfigMap; + } + + public static Map>> getIntegerListMap() { + return integerListMap; + } } \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SGodSacrificeSetting.java b/tablemanager/src/main/java/config/SGodSacrificeSetting.java index 7c06bf84a..36d92828f 100644 --- a/tablemanager/src/main/java/config/SGodSacrificeSetting.java +++ b/tablemanager/src/main/java/config/SGodSacrificeSetting.java @@ -3,6 +3,7 @@ package config; import manager.STableManager; import manager.Table; +import java.util.HashMap; import java.util.Map; @Table(name ="GodSacrificeSetting") @@ -32,10 +33,29 @@ public class SGodSacrificeSetting implements BaseConfig { private int lastTime; + public static HashMap exchangeRate= new HashMap<>(); + + private int lifeLimit; + + private int joinLimit; + + private int[][] mailId; + + private int l1Score; + @Override public void init() throws Exception { - + SGodSacrificeSetting sGodSacrificeSetting = STableManager.getConfig(SGodSacrificeSetting.class).get(1); + if(null!=sGodSacrificeSetting){ + if(sGodSacrificeSetting.getItemDelete()==1){ + int[] activityItems = sGodSacrificeSetting.getActivityItems(); + for (int i = 0; i