From 7ed2d5c8966a03ba396c081d5702cb38daa6cfee Mon Sep 17 00:00:00 2001 From: duhui Date: Tue, 10 May 2022 18:37:06 +0800 Subject: [PATCH 1/8] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E9=87=8D=E8=BD=BD?= =?UTF-8?q?=E5=BC=80=E6=9C=8D=E6=97=B6=E9=97=B4gm=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=202.=E8=81=8A=E5=A4=A9=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/GameApplication.java | 16 +++++++++--- .../ljsd/jieling/chat/ChatRedisEntity.java | 13 +++++++++- .../ljsd/jieling/chat/logic/ChatLogic.java | 4 +-- .../jieling/kefu/Cmd_reloadserverconfig.java | 25 +++++++++++++++++++ 4 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_reloadserverconfig.java diff --git a/serverlogic/src/main/java/com/ljsd/GameApplication.java b/serverlogic/src/main/java/com/ljsd/GameApplication.java index 350f93b8f..62a00b825 100644 --- a/serverlogic/src/main/java/com/ljsd/GameApplication.java +++ b/serverlogic/src/main/java/com/ljsd/GameApplication.java @@ -11,6 +11,7 @@ import com.ljsd.jieling.logic.dao.ServerConfig; import com.ljsd.jieling.logic.rank.CrossRankManager; import com.ljsd.jieling.network.NetManager; import com.ljsd.jieling.util.ConfigurableApplicationContextManager; +import com.ljsd.jieling.util.TaskKit; import config.SGameSetting; import manager.STableManager; import org.slf4j.Logger; @@ -23,6 +24,7 @@ import util.TimeUtils; import java.io.File; import java.util.Scanner; +import java.util.concurrent.TimeUnit; @Configuration @@ -81,7 +83,7 @@ public class GameApplication { } } - private static void setRegisterTime() throws Exception { + public static void setRegisterTime() throws Exception { ServerConfig serverConfigTmp = MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class); if(serverConfigTmp == null){ serverConfigTmp = new ServerConfig(); @@ -112,15 +114,23 @@ public class GameApplication { serverConfigTmp.setRestartTime(TimeUtils.getTimeStamp2(TimeUtils.now())); MongoUtil.getInstence().getMyMongoTemplate().saveWithoutMongoRoot(serverConfigTmp); serverConfig = serverConfigTmp; + LOGGER.info("============================读取数据库serverConfig信息完成"); } + public static void test() { + try { + TaskKit.scheduleWithFixedDelay(()->{ + LOGGER.info("**************当前开服时间:{},缓存:{}",serverConfig.getOpenTime(),TimeUtils.getTimeStamp2(serverConfig.getCacheOpenTime())); + },30,5, TimeUnit.SECONDS); + }catch (Exception e){ + LOGGER.error(e.getMessage()); + } + } public static void close() throws Exception{ start = false; NetManager.getInstance().exit(); ConfigurableApplicationContextManager.getInstance().exit(); - - } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/chat/ChatRedisEntity.java b/serverlogic/src/main/java/com/ljsd/jieling/chat/ChatRedisEntity.java index 1a7e4256e..25ae0ceed 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/chat/ChatRedisEntity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/chat/ChatRedisEntity.java @@ -19,15 +19,18 @@ public class ChatRedisEntity { private int status; + private String openId; + public ChatRedisEntity(){}; - public ChatRedisEntity(int uid, String name, int type, String message, Long time, int status) { + public ChatRedisEntity(int uid, String name, int type, String message, Long time, int status, String openId) { this.uid = uid; this.name = name; this.type = type; this.message = message; this.time = time; this.status = status; + this.openId = openId; } public int getUid() { @@ -77,4 +80,12 @@ public class ChatRedisEntity { public void setStatus(int status) { this.status = status; } + + public String getOpenId() { + return openId; + } + + public void setOpenId(String openId) { + this.openId = openId; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java index 54d5f5744..acf736a31 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java @@ -92,7 +92,7 @@ public class ChatLogic { } break; - case 4: + case 4: //跨服 int group = GlobleSystemLogic.getInstence().getCrossGroup(); if(group==-1){ MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_CHAT_MESSAGE_REPONSE_VALUE, null, true); @@ -263,7 +263,7 @@ public class ChatLogic { if(user.getPlayerInfoManager().getSilence() == 1 || user.getPlayerInfoManager().getSkyEyeBanTime()>System.currentTimeMillis()){ silence = 1; } - ChatRedisEntity chatRedisEntity = new ChatRedisEntity(user.getId(), user.getPlayerInfoManager().getNickName(), chatType, message, TimeUtils.now(), silence); + ChatRedisEntity chatRedisEntity = new ChatRedisEntity(user.getId(), user.getPlayerInfoManager().getNickName(), chatType, message, TimeUtils.now(), silence, user.getPlayerInfoManager().getOpenId()); String chatInfo = gson.toJson(chatRedisEntity); long l = redisUtil.lGetListSize(key); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_reloadserverconfig.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_reloadserverconfig.java new file mode 100644 index 000000000..1a91b2aa6 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_reloadserverconfig.java @@ -0,0 +1,25 @@ +package com.ljsd.jieling.kefu; + +import com.ljsd.GameApplication; +import com.ljsd.jieling.db.mongo.MongoUtil; +import com.ljsd.jieling.logic.dao.GuilidManager; +import com.ljsd.jieling.logic.dao.PlayerManager; +import com.ljsd.jieling.logic.dao.root.GuildInfo; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.family.CrossDeathPathLogic; +import config.SGuildSetting; +import util.TimeUtils; + +public class Cmd_reloadserverconfig extends GmAbstract { + + @Override + public boolean exec(String[] args) throws Exception { + return false; + } + + @Override + public String exec2(String[] args) throws Exception { + GameApplication.setRegisterTime(); + return "true"; + } +} From 726c98f3ab7c4d9008cded497e7d2eab5d1d0cd5 Mon Sep 17 00:00:00 2001 From: duhui Date: Mon, 16 May 2022 15:23:21 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E3=80=90=E6=81=A2=E5=A4=8D100=E6=A1=A3?= =?UTF-8?q?=E9=A6=96=E5=85=85=E5=A5=96=E5=8A=B1=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/activity/RechargeTotalActivity.java | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java index aa235562e..b394d302c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java @@ -36,32 +36,32 @@ class RechargeTotalActivity extends AbstractActivity { return true; } - @Override - public List getAllMissInfo(User user, ActivityMission activityMission, Set filter) { - Map activityProgressInfoMap = activityMission.getActivityMissionMap(); - List missionInfos = new ArrayList<>(activityProgressInfoMap.size()); - long openTime = TimeUtils.stringToTimeLong2(GameApplication.serverConfig.getOpenTime()); - for (Map.Entry missionProgress : activityProgressInfoMap.entrySet()) { - if (filter != null && !filter.contains(missionProgress.getKey())) { - continue; - } - Integer missionId = missionProgress.getKey(); - SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); - if (sActivityRewardConfig == null) { - continue; - } - if(id == ActivityType.RechargeTotal){ - // 2021-12-22 09:00:00 之后开的服,首充不显示累充满100元任务 - if (openTime > 1640134800000L) { - int value = sActivityRewardConfig.getValues()[0][0]; - if (value == 100) { - continue; - } - } - } - ActivityProgressInfo activityProgressInfo = missionProgress.getValue(); - missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(activityProgressInfo.getProgrss()).setState(activityProgressInfo.getState()).build()); - } - return missionInfos; - } +// @Override +// public List getAllMissInfo(User user, ActivityMission activityMission, Set filter) { +// Map activityProgressInfoMap = activityMission.getActivityMissionMap(); +// List missionInfos = new ArrayList<>(activityProgressInfoMap.size()); +// long openTime = TimeUtils.stringToTimeLong2(GameApplication.serverConfig.getOpenTime()); +// for (Map.Entry missionProgress : activityProgressInfoMap.entrySet()) { +// if (filter != null && !filter.contains(missionProgress.getKey())) { +// continue; +// } +// Integer missionId = missionProgress.getKey(); +// SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); +// if (sActivityRewardConfig == null) { +// continue; +// } +// if(id == ActivityType.RechargeTotal){ +// // 2021-12-22 09:00:00 之后开的服,首充不显示累充满100元任务 +// if (openTime > 1640134800000L) { +// int value = sActivityRewardConfig.getValues()[0][0]; +// if (value == 100) { +// continue; +// } +// } +// } +// ActivityProgressInfo activityProgressInfo = missionProgress.getValue(); +// missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(activityProgressInfo.getProgrss()).setState(activityProgressInfo.getState()).build()); +// } +// return missionInfos; +// } } From 928c266645d3d11220fcd2b09083e7258d5c0424 Mon Sep 17 00:00:00 2001 From: duhui Date: Mon, 16 May 2022 17:54:52 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E3=80=90=E6=81=A2=E5=A4=8D100=E6=A1=A3?= =?UTF-8?q?=E9=A6=96=E5=85=85=E5=A5=96=E5=8A=B1=E3=80=912?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/activity/RechargeTotalActivity.java | 148 +++++++++++++----- 1 file changed, 113 insertions(+), 35 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java index b394d302c..bd04aad03 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java @@ -1,14 +1,22 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.GameApplication; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo; import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; import config.SActivityRewardConfig; +import config.SLuxuryFund; import rpc.protocols.CommonProto; +import rpc.protocols.PlayerInfoProto; import util.TimeUtils; import java.util.ArrayList; @@ -23,45 +31,115 @@ class RechargeTotalActivity extends AbstractActivity { } @Override - boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { - int[][] values = sActivityRewardConfig.getValues(); - int missionProgress = activityProgressInfo.getProgrss(); - long now = TimeUtils.now(); + public void initActivity(User user) throws Exception { + ActivityMission mission = new ActivityMission(); + // 初始化阶段奖励 + ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>()); + user.getActivityManager().getActivityMissionMap().put(id, mission); + LOGGER.info("累计充值初始化..."+id); + } + + /** + * 领取奖励 + * @param session + * @param missionId + * @return + * @throws Exception + */ + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { User user = UserManager.getUser(session.getUid()); - NewRechargeInfo rechargeInfo = user.getPlayerInfoManager().getNewRechargeInfo(); - int days = TimeUtils.differentDaysByHour(rechargeInfo.getFirstTime(), now,0) + 1; - if (missionProgress <= 0 || days < values[0][1]) { + // activity check + ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); + if (mission == null){ + throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"活动信息不存在:"+id); + } + // 获取活动标签信息 + SActivityRewardConfig config = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + ActivityProgressInfo info = mission.getActivityMissionMap().get(missionId); + // 条件判断 + int state = getState(user, config, info); + if (state != 2){ return false; } + // 改库 + info = new ActivityProgressInfo(); + checkAndSetProgress(mission,info,missionId); + // reward + CommonProto.Drop.Builder drop = ItemUtil.drop(user, config.getReward(), BIReason.TAKE_ACTIVITY_REWARD); + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + // 状态推送 + sendActivityProgress(session, mission, null); + // 打点上报 + reportTakeActivityReward(user,config.getReward(),missionId); return true; } -// @Override -// public List getAllMissInfo(User user, ActivityMission activityMission, Set filter) { -// Map activityProgressInfoMap = activityMission.getActivityMissionMap(); -// List missionInfos = new ArrayList<>(activityProgressInfoMap.size()); -// long openTime = TimeUtils.stringToTimeLong2(GameApplication.serverConfig.getOpenTime()); -// for (Map.Entry missionProgress : activityProgressInfoMap.entrySet()) { -// if (filter != null && !filter.contains(missionProgress.getKey())) { -// continue; -// } -// Integer missionId = missionProgress.getKey(); -// SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); -// if (sActivityRewardConfig == null) { -// continue; -// } -// if(id == ActivityType.RechargeTotal){ -// // 2021-12-22 09:00:00 之后开的服,首充不显示累充满100元任务 -// if (openTime > 1640134800000L) { -// int value = sActivityRewardConfig.getValues()[0][0]; -// if (value == 100) { -// continue; -// } -// } -// } -// ActivityProgressInfo activityProgressInfo = missionProgress.getValue(); -// missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(activityProgressInfo.getProgrss()).setState(activityProgressInfo.getState()).build()); -// } -// return missionInfos; -// } + /** + * 获取状态 + * 0:未完成 + * 1:已领取 + * 2:可领取 + * @param user + * @param config + * @param info + * @return + */ + int getState(User user, SActivityRewardConfig config, ActivityProgressInfo info){ + // 表里为空 + if (config == null){ + return 0; + } + // 数据库已保存且状态为已领取 + if (info != null && info.getState() == 1){ + return 1; + } + long now = TimeUtils.now(); + NewRechargeInfo rechargeInfo = user.getPlayerInfoManager().getNewRechargeInfo(); + int days = TimeUtils.differentDaysByHour(rechargeInfo.getFirstTime(), now,0) + 1; + // 判断金额和天数 + if (rechargeInfo.getRr() >= config.getValues()[0][0] && days >= config.getValues()[0][1]){ + return 2; + } + return 0; + } + + @Override + public List getAllMissInfo(User user, ActivityMission activityMission, Set filter) { + if (activityMission == null){ + return new ArrayList<>(); + } + // 库里存储的 + Map progressInfoMap = activityMission.getActivityMissionMap(); + // 表里的 + List rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + List missionInfos = new ArrayList<>(rewardConfigs.size()); + + int progress = (int) (user.getPlayerInfoManager().getNewRechargeInfo().getRr() * 1000); + for (SActivityRewardConfig config : rewardConfigs) { + ActivityProgressInfo info = progressInfoMap.get(config.getId()); + int state = getState(user, config, info); + state = state == 1?1:0; + CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder() + .setMissionId(config.getId()) + .setProgress(progress) + .setState(state) + .build(); + missionInfos.add(build); + } + return missionInfos; + } + + @Override + public void update(User user, int count) { + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + if(null == activityMission){ + return; + } + //更新进度 + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + sendActivityProgress(sessionByUid, activityMission, null); + + } } From 41b599a9f06c9f344a4fc0275eb4de38407c9a07 Mon Sep 17 00:00:00 2001 From: duhui Date: Thu, 26 May 2022 18:16:09 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E3=80=90=E6=81=A2=E5=A4=8D100=E6=A1=A3?= =?UTF-8?q?=E9=A6=96=E5=85=85=E5=A5=96=E5=8A=B1=E3=80=913?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/activity/RechargeTotalActivity.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java index bd04aad03..33cc706b8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/RechargeTotalActivity.java @@ -7,6 +7,8 @@ import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.event.ActivityStateChangeEvent; +import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo; @@ -14,6 +16,7 @@ import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; import config.SActivityRewardConfig; +import config.SGlobalActivity; import config.SLuxuryFund; import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; @@ -140,6 +143,30 @@ class RechargeTotalActivity extends AbstractActivity { //更新进度 ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); sendActivityProgress(sessionByUid, activityMission, null); + } + public boolean checkActivityMissionFinishAndTake(int uid,int activityId,ActivityMission activityMission){ + try { + User user = UserManager.getUser(uid); + Map missionMap = activityMission.getActivityMissionMap(); + List rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + for (SActivityRewardConfig config : rewardConfigs) { + ActivityProgressInfo info = missionMap.get(config.getId()); + int state = getState(user, config, info); + if (state != ActivityType.HAD_TAKED) { + return false; + } + } + }catch (Exception e){ + e.printStackTrace(); + return false; + } + + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId); + if(sGlobalActivity.getResetGrade()==0){ + activityMission.setActivityState(ActivityType.FINISH_STATE); + Poster.getPoster().dispatchEvent(new ActivityStateChangeEvent(uid,activityId,ActivityType.FINISH_STATE)); + } + return true; } } From 3715b8b869ba5149b01d08cc8b23bd98711bf656 Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Tue, 24 May 2022 00:10:32 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E7=A5=9E=E5=B0=8A=E7=89=B9=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/globals/Global.java | 1 + .../jieling/logic/GlobalDataManaager.java | 10 +- .../logic/activity/AbstractActivity.java | 2 +- .../jieling/logic/activity/ActivityType.java | 1 + .../logic/activity/ActivityTypeEnum.java | 1 + .../logic/activity/WholeLifeActivity.java | 128 ++++++++++++++++++ .../ljsd/jieling/logic/dao/PlayerManager.java | 11 ++ .../jieling/logic/store/BuyGoodsNewLogic.java | 8 ++ .../jieling/logic/store/GiftGoodsType.java | 1 + .../config/SRechargeCommodityNewConfig.java | 5 + 10 files changed, 163 insertions(+), 5 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.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 b5fae96ab..19e91ce02 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java @@ -35,6 +35,7 @@ public interface Global { int MAIL_TYPE_IDIP = 2; //idip 邮件 int MAIL_TYPE_GM = 3; // GM 邮件 int MAIL_EFFECTIVE_TIME = 720 * 60 * 60; // 有效时间 30天 + int MAIL_EFFECTIVE_TIME_SERVEN = 168 * 60 * 60; // 有效时间 7天 int MAIL_NOUSE_DELETE_TIME = 3;//已读邮件和已领取邮件3天后自动删除 //sysMail state int SYS_MAIL_STATE_NEW = 1; //未发布 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 040e1639e..88aa17e48 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -9,10 +9,7 @@ import com.ljsd.jieling.core.FunctionManager; import com.ljsd.jieling.core.function.FunctionContext; import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.handler.map.MapLogic; -import com.ljsd.jieling.logic.activity.ActivityLogic; -import com.ljsd.jieling.logic.activity.FightMainEventHandler; -import com.ljsd.jieling.logic.activity.RemoveEventHeroHandler; -import com.ljsd.jieling.logic.activity.UserLevelEventHandler; +import com.ljsd.jieling.logic.activity.*; import com.ljsd.jieling.logic.activity.activityLogic.WeekCardLogic; import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent; @@ -520,6 +517,11 @@ public class GlobalDataManaager implements IManager { HeroLogic.getInstance().resetWishDrawCardInfoMap(user); //玉虚论道每日刷新 user.getArenaManager().setCrossYuxulundaoDailyRewad(new ArrayList<>(Arrays.asList(0,0,0))); + //终身卡在线跨天 + AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(9901); + if(abstractActivity instanceof WholeLifeActivity){ + ((WholeLifeActivity)abstractActivity).calWhenLogin(user); + } ///清空当天推送的礼包次数 user.getPlayerInfoManager().getNewRechargeInfo().ClearDayPushMap(); } 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 2357c0e37..7481d1a42 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 @@ -40,7 +40,7 @@ import java.util.*; public abstract class AbstractActivity implements IActivity, IEventHandler { static final Logger LOGGER = LoggerFactory.getLogger(AbstractActivity.class); final int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE; - int id; //活动id + int id; //活动idid public AbstractActivity(int id) { this.id = id; 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 71a851006..0acb23878 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 @@ -131,4 +131,5 @@ public interface ActivityType { int LING_LONG_PAVILION = 20005;//玲珑宝阁 int DAILY_SPECIAL = 10004;//每日特惠 + int WHOLE_LIFE_CARD = 99;//终生卡 } 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 be1eb6aea..997788876 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 @@ -108,6 +108,7 @@ public enum ActivityTypeEnum { EXPLORE_EXPECT_ACTIVITY(ActivityType.EXPLORE_EXPECT_ACTIVITY,ExploreExpectActivity::new), POWER_RICE_ACTIVITY(ActivityType.POWER_RICE_ACTIVITY,PowerRiceActivity::new),//战力冲刺 DONGHAI_XUNXIAN_ACTIVITY(ActivityType.DonghaiXunxian,DonghaiXunxianActivity::new),//东海寻仙 + WHOEL_LIFE_ACTIVITY(ActivityType.WHOLE_LIFE_CARD,WholeLifeActivity::new),//东海寻仙 ; private int type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.java new file mode 100644 index 000000000..2eadd6767 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.java @@ -0,0 +1,128 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.jbean.ActivityManager; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mail.MailLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.SActivityRewardConfig; +import config.SErrorCodeEerverConfig; +import config.SRechargeCommodityNewConfig; +import rpc.protocols.CommonProto; +import rpc.protocols.PlayerInfoProto; +import util.TimeUtils; + +import java.util.ArrayList; + +/** + * 【神尊特权】活动 终生卡 + */ +public class WholeLifeActivity extends AbstractActivity { + + + public WholeLifeActivity(int id) { + super(id); + } + + @Override + public void initActivity(User user) throws Exception { + super.initActivity(user); + ActivityMission mission = new ActivityMission(); + // 活动信息初始化 + //SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(1000); + /*List rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + ArrayList integers = new ArrayList<>(rewardConfigs.size()); + rewardConfigs.forEach(v->integers.add(v.getId()));*/ + ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>()); + mission.setCreatTime(0); + user.getActivityManager().getActivityMissionMap().put(id, mission); + LOGGER.info("神尊特权初始化...uid={} activityId={}", user.getId(), id); + } + + public void calWhenLogin(User user) throws Exception{ + ActivityManager activityManager = user.getActivityManager(); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + if (activityMission == null) { + return; + } + if (activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + return; + } + if(activityMission.getCreatTime() == 0){ + return; + } + activityMission.setV(1); + if(user.getPlayerInfoManager().getLastWholeLifeTime() ==0 ){ + return; + } + int day = (int) TimeUtils.getGapDaysByTwoTime(TimeUtils.getTimeStamp2(user.getPlayerInfoManager().getLastWholeLifeTime()), + TimeUtils.getTimeStamp2(TimeUtils.now())); + String title = SErrorCodeEerverConfig.getI18NMessage("shenzuntequan_mail_title"); + String content = SErrorCodeEerverConfig.getI18NMessage("shenzuntequan_mail_txt"); + SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(1000); + String mailReward = ItemUtil.getMailReward(config.getExtraReward()); + int nowTime = (int) (TimeUtils.now() / 1000); + for(int i =day;i>0;i--){ + MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME_SERVEN); + } + //ActivityLogic.getInstance().sendActivityInfo(user, id); + /*long times; + if (user.getPlayerInfoManager().getLastWholeLifeTime() == 0) { + times = activityMission.getCreatTime(); + } else { + times = user.getPlayerInfoManager().getLastWholeLifeTime(); + } + int day = (int) TimeUtils.getGapDaysByTwoTime(TimeUtils.getTimeStamp2(times), + TimeUtils.getTimeStamp2(TimeUtils.now())); + activityMission.setV(activityMission.getV() + day > 7 ? 7 : day);*/ + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, + ActivityProgressInfo activityProgressInfo) throws Exception { + return false; + } + + + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { + User user = UserManager.getUser(session.getUid()); + ActivityManager activityManager = user.getActivityManager(); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + if (activityMission == null) { + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + if (activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + if (activityMission.getV() != 1) { + return false; + + } + activityMission.setV(2); + user.getPlayerInfoManager().setLastWholeLifeTime(TimeUtils.now()); + SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(1000); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, config.getExtraReward(), BIReason.TAKE_ACTIVITY_REWARD); + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + return true; + } + + /* public boolean checkActivityMissionFinishAndTake(int uid,int activityId,ActivityMission activityMission) { + try{ + User user = UserManager.getUser(uid); + calWhenLogin(user); + }catch (Exception e){ + + } + return 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 8df5960db..49365efca 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 @@ -231,6 +231,17 @@ public class PlayerManager extends MongoBase { private int exploreKillTotalNum; //探索杀敌总数 + private long lastWholeLifeTime;//最近一次领取终身卡的时间 + + public long getLastWholeLifeTime() { + return lastWholeLifeTime; + } + + public void setLastWholeLifeTime(long lastWholeLifeTime) { + this.lastWholeLifeTime = lastWholeLifeTime; + updateString("lastWholeLifeTime", lastWholeLifeTime); + } + public int getExploreKillTotalNum() { return exploreKillTotalNum; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java index 640c28144..bba75facc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java @@ -473,6 +473,14 @@ public class BuyGoodsNewLogic { AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(ActivityType.DAILY_PREFERENTIAL_GIFT); abstractActivity.initActivity(user); } + if(type ==GiftGoodsType.WholeLife){ + AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(9901); + abstractActivity.initActivity(user); + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(9901); + activityMission.setV(2); + activityMission.setCreatTime(TimeUtils.now()); + user.getActivityManager().getActivityMissionMap().put(9901, activityMission); + } if(drop!=null&&session!=null){ PlayerInfoProto.DirectBuyIndication build = PlayerInfoProto.DirectBuyIndication.newBuilder().setDrop(drop).build(); MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.DIRECT_BUY_GOODS_INDICATION_VALUE,build,true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/GiftGoodsType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/GiftGoodsType.java index 841ddf37c..0aaa6b4f0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/GiftGoodsType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/GiftGoodsType.java @@ -16,6 +16,7 @@ public interface GiftGoodsType { int ENDLESS_TREASURE = 14;//无尽秘宝 int DailyPreferentialGift = 17 ;//每日特惠礼包 int RechargeSumDay = 18 ;//超值返利礼包(在积天豪礼活动里购买) + int WholeLife = 18 ;//【神尊特权】活动 购买后每日领取奖励 } diff --git a/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java b/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java index 33f6f121b..7af62b5f4 100644 --- a/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java +++ b/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java @@ -66,6 +66,7 @@ public class SRechargeCommodityNewConfig implements BaseConfig { private String[][] condition; private int isRecommond; + private int[][] extraReward; public static Map configMap; public static Map sdkconfigMap; @@ -216,4 +217,8 @@ public class SRechargeCommodityNewConfig implements BaseConfig { public int getIsRecommond() { return isRecommond; } + + public int[][] getExtraReward() { + return extraReward; + } } From 2a6dd4dec6b9f0eadcde4222c8ca500096531a9d Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Thu, 9 Jun 2022 00:00:49 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E7=A5=9E=E5=B0=8A=E7=89=B9=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/activity/WholeLifeActivity.java | 11 +++++++++-- .../com/ljsd/jieling/logic/store/GiftGoodsType.java | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.java index 2eadd6767..318189e9d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.java @@ -60,11 +60,18 @@ public class WholeLifeActivity extends AbstractActivity { return; } activityMission.setV(1); + long time = 0; if(user.getPlayerInfoManager().getLastWholeLifeTime() ==0 ){ + time=activityMission.getCreatTime(); + }else{ + time=user.getPlayerInfoManager().getLastWholeLifeTime(); + } + int day = (int) TimeUtils.getGapDaysByTwoTime(TimeUtils.getTimeStamp2(time), + TimeUtils.getTimeStamp2(TimeUtils.now()))-1; + if(day <= 0){ return; } - int day = (int) TimeUtils.getGapDaysByTwoTime(TimeUtils.getTimeStamp2(user.getPlayerInfoManager().getLastWholeLifeTime()), - TimeUtils.getTimeStamp2(TimeUtils.now())); + user.getPlayerInfoManager().setLastWholeLifeTime(TimeUtils.now()); String title = SErrorCodeEerverConfig.getI18NMessage("shenzuntequan_mail_title"); String content = SErrorCodeEerverConfig.getI18NMessage("shenzuntequan_mail_txt"); SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(1000); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/GiftGoodsType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/GiftGoodsType.java index 0aaa6b4f0..fcd8c07c7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/GiftGoodsType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/GiftGoodsType.java @@ -16,7 +16,7 @@ public interface GiftGoodsType { int ENDLESS_TREASURE = 14;//无尽秘宝 int DailyPreferentialGift = 17 ;//每日特惠礼包 int RechargeSumDay = 18 ;//超值返利礼包(在积天豪礼活动里购买) - int WholeLife = 18 ;//【神尊特权】活动 购买后每日领取奖励 + int WholeLife = 19 ;//【神尊特权】活动 购买后每日领取奖励 } From 4879ba762e1a5afb7f97dfcd8e24b4727af9d59f Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Wed, 25 May 2022 14:38:22 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E9=82=AE=E4=BB=B67=E6=97=A5=E9=99=90?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/activity/WholeLifeActivity.java | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.java index 318189e9d..cecbdc247 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/WholeLifeActivity.java @@ -47,7 +47,7 @@ public class WholeLifeActivity extends AbstractActivity { LOGGER.info("神尊特权初始化...uid={} activityId={}", user.getId(), id); } - public void calWhenLogin(User user) throws Exception{ + public void calWhenLogin(User user) throws Exception { ActivityManager activityManager = user.getActivityManager(); ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); if (activityMission == null) { @@ -56,40 +56,34 @@ public class WholeLifeActivity extends AbstractActivity { if (activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { return; } - if(activityMission.getCreatTime() == 0){ + if (activityMission.getCreatTime() == 0) { return; } activityMission.setV(1); long time = 0; - if(user.getPlayerInfoManager().getLastWholeLifeTime() ==0 ){ - time=activityMission.getCreatTime(); - }else{ - time=user.getPlayerInfoManager().getLastWholeLifeTime(); + if (user.getPlayerInfoManager().getLastWholeLifeTime() == 0) { + time = activityMission.getCreatTime(); + } else { + time = user.getPlayerInfoManager().getLastWholeLifeTime(); } int day = (int) TimeUtils.getGapDaysByTwoTime(TimeUtils.getTimeStamp2(time), - TimeUtils.getTimeStamp2(TimeUtils.now()))-1; - if(day <= 0){ + TimeUtils.getTimeStamp2(TimeUtils.now())) - 1; + if (day <= 0) { return; } + if (day > 7) { + day = 7; + } user.getPlayerInfoManager().setLastWholeLifeTime(TimeUtils.now()); String title = SErrorCodeEerverConfig.getI18NMessage("shenzuntequan_mail_title"); String content = SErrorCodeEerverConfig.getI18NMessage("shenzuntequan_mail_txt"); SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(1000); String mailReward = ItemUtil.getMailReward(config.getExtraReward()); int nowTime = (int) (TimeUtils.now() / 1000); - for(int i =day;i>0;i--){ + for (int i = day; i > 0; i--) { MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME_SERVEN); } //ActivityLogic.getInstance().sendActivityInfo(user, id); - /*long times; - if (user.getPlayerInfoManager().getLastWholeLifeTime() == 0) { - times = activityMission.getCreatTime(); - } else { - times = user.getPlayerInfoManager().getLastWholeLifeTime(); - } - int day = (int) TimeUtils.getGapDaysByTwoTime(TimeUtils.getTimeStamp2(times), - TimeUtils.getTimeStamp2(TimeUtils.now())); - activityMission.setV(activityMission.getV() + day > 7 ? 7 : day);*/ } @Override From a748d0e64d68c0333a731c4216b2489daf6021e6 Mon Sep 17 00:00:00 2001 From: duhui Date: Fri, 20 May 2022 14:15:34 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E3=80=90=E5=AF=BB=E4=BB=99=E6=8B=9B?= =?UTF-8?q?=E5=8B=9F=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/logic/activity/ActivityLogic.java | 3 ++- tablemanager/src/main/java/config/SWishActivitySetting.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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 746c94d5a..9863a52d8 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 @@ -1718,7 +1718,8 @@ public class ActivityLogic implements IEventHandler{ CommonProto.Drop.Builder drop = null; int[] markReward = new int[]{0,0}; - int[][] markRewards = new int[num][]; + int[][] markRewards = new int[num+1][]; + markRewards[num] = setting.getRecruit(); // 单抽 if (num == 1){ // 验证免费特权 diff --git a/tablemanager/src/main/java/config/SWishActivitySetting.java b/tablemanager/src/main/java/config/SWishActivitySetting.java index 48f571391..fa5ba2700 100644 --- a/tablemanager/src/main/java/config/SWishActivitySetting.java +++ b/tablemanager/src/main/java/config/SWishActivitySetting.java @@ -19,6 +19,8 @@ public class SWishActivitySetting implements BaseConfig { private int maxTimes; private int diamondMaxTimes; + + private int[] recruit; @Override public void init() throws Exception { @@ -49,4 +51,8 @@ public class SWishActivitySetting implements BaseConfig { public int getDiamondMaxTimes() { return diamondMaxTimes; } + + public int[] getRecruit() { + return recruit; + } } \ No newline at end of file