From b2d3f5916433080dd495378d2d477f9e799cca96 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Mon, 12 Aug 2019 20:27:36 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E8=A1=A5=E5=8F=91=E5=A5=96=E5=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/config/SGlobalActivity.java | 6 + .../com/ljsd/jieling/globals/BIReason.java | 2 + .../logic/activity/AbstractActivity.java | 127 +++++++++++++----- .../jieling/logic/activity/ActivityLogic.java | 4 +- .../logic/activity/DailyRechargeActivity.java | 15 +++ .../logic/activity/DefaultEmptyActivity.java | 9 ++ .../logic/activity/ForceRankActivity.java | 5 + .../jieling/logic/activity/IActivity.java | 4 +- .../java/com/ljsd/jieling/util/ItemUtil.java | 15 +++ 9 files changed, 152 insertions(+), 35 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalActivity.java index 7dbf64db4..e9159e7f0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SGlobalActivity.java @@ -34,6 +34,8 @@ public class SGlobalActivity implements BaseConfig { private int isSaving; + private int isMail; + @Override public void init() throws Exception { @@ -111,4 +113,8 @@ public class SGlobalActivity implements BaseConfig { public int getIsSaving() { return isSaving; } + + public int getIsMail() { + return isMail; + } } \ No newline at end of file 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 80df0bf52..fdb030be5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -119,4 +119,6 @@ public interface BIReason { int CREATE_GUILD_CONSUME = 1031; // 创建宗门消耗 int ENDLESS_CONSUME_EXECUTION = 1032; //无尽副本消耗行动力 + int EMAIL_AUTO_TAKE_REWARD = 1033 ;// 活动结束邮件补发未领取奖 + } \ No newline at end of file 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 34b0c7c98..fed5c8cb8 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 @@ -1,7 +1,10 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.config.SErrorCodeEerverConfig; +import com.ljsd.jieling.config.SGlobalActivity; import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.OnlineUserManager; @@ -11,12 +14,14 @@ 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.mail.MailLogic; 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 com.ljsd.jieling.util.TimeUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,7 +50,8 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { } /** - * 子类重写 + * 子类重写 + * * @param user * @throws Exception */ @@ -85,41 +91,75 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { } } + + /** + * 领奖默认方法 走统一奖励配置表 + * 重写此类 记得重写onActivityEndOnMySelf 否者活动结束走默认配置表发邮件奖 + */ @Override - public boolean takeReward(ISession session, int missionId) throws Exception { + public boolean takeReward(ISession session, int id) throws Exception { User user = UserManager.getUser(session.getUid()); - //check cfg - SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); - if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); - return false; + List misssIds = new LinkedList<>(); + + if (id == -1) { + List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + if (null == cfgs) { + return false; + } + for (SActivityRewardConfig sActivityRewardConfig : cfgs) { + misssIds.add(sActivityRewardConfig.getId()); + } } - //check state - ActivityManager activityManager = user.getActivityManager(); - ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); - if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "activity_close"); - return false; + + + List itemArrs = new LinkedList<>(); + for (Integer missionId : misssIds) { + //check cfg + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); + return false; + } + //check state + ActivityManager activityManager = user.getActivityManager(); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "activity_close"); + return false; + } + ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); + return false; + } + //take rewards check + if (!takeRewardsProcess(session, sActivityRewardConfig, activityProgressInfo)) { + return false; + } + //up miss + int[][] reward = sActivityRewardConfig.getReward(); + if (id == -1) { + itemArrs.add(reward); + continue; + } + CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); + checkAndSetProgress(activityMission, activityProgressInfo, sActivityRewardConfig, missionId); + //send + sendActivityProgress(session, activityMission, Collections.singleton(missionId)); + KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId); + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + return true; } - ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); - if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); - return false; - } - //take rewards check - if (!takeRewardsProcess(session, sActivityRewardConfig, activityProgressInfo)) { - return false; - } - //up miss - int[][] reward = sActivityRewardConfig.getReward(); - CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); - checkAndSetProgress(activityMission, activityProgressInfo, sActivityRewardConfig, missionId); - //send - sendActivityProgress(session, activityMission, Collections.singleton(missionId)); - KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId); - PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); - MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + String title = SErrorCodeEerverConfig.getI18NMessage("receive_activity_title",new Object[]{sGlobalActivity.getSesc()}); + String content = SErrorCodeEerverConfig.getI18NMessage("receive_activity_txt", new Object[]{sGlobalActivity.getSesc()}); + + String mailReward = ItemUtil.getMailReward(itemArrs); + int nowTime = (int) (TimeUtils.now() / 1000); + MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); return true; } @@ -158,6 +198,14 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { return true; } + public void onActivityEndSelfWithDealReward(User user) throws Exception { + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if (sGlobalActivity.getIsMail() == 1) + onActivityEndDealReward(user); + onActivityEndOnMySelf(user); + } + + @Override public void onActivityEnd() throws Exception { @@ -165,9 +213,24 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { @Override public void onActivityEndOnMySelf(User user) throws Exception { - + List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + if (null == cfgs) { + return; + } + for (SActivityRewardConfig sActivityRewardConfig : cfgs) { + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + takeReward(sessionByUid, sActivityRewardConfig.getId()); + } } + /** + * 活动结束邮件 有比较多的潜规则 单号1003747体现 + */ + @Override + public void onActivityEndDealReward(User user) throws Exception { + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + takeReward(sessionByUid, -1); + } public List getAllMissInfo(ActivityMission activityMission) { return getAllMissInfo(activityMission, 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 a6128e40d..c03537525 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 @@ -158,7 +158,7 @@ public class ActivityLogic { ActivityMission activityMission = activityMissionMap.get(activityId); if (activityMission != null) { activityManager.removeActivity(activityId); - ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEndOnMySelf(user); + ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEndSelfWithDealReward(user); LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId); if (builder != null) { builder.addCloseActivityId(activityId); @@ -178,7 +178,7 @@ public class ActivityLogic { ActivityMission activityMission = activityMissionMap.get(activityId); if (activityMission != null) { activityManager.removeActivity(activityId); - ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEndOnMySelf(user); + ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEndSelfWithDealReward(user); LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId); if (builder != null) { builder.addCloseActivityId(activityId); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java index 5703743b3..1d734fd2d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java @@ -1,8 +1,11 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.dao.ActivityManager; import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.ActivityProgressInfo; +import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; /** @@ -14,6 +17,15 @@ class DailyRechargeActivity extends AbstractActivity { super(id); } + @Override + public void onResume(User user) throws Exception { + super.onResume(user); + //每日充值 补发前日未领取的奖 + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + takeReward(sessionByUid, -1); + } + + @Override void updateProgress(ActivityMission activityMission, int count) { activityMission.setValue(count + activityMission.getValue()); @@ -24,4 +36,7 @@ class DailyRechargeActivity extends AbstractActivity { return checkValue(session, sActivityRewardConfig, activityProgressInfo); } + @Override + public void onActivityEndDealReward(User user) throws Exception { + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java index bec150616..542564b52 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java @@ -58,4 +58,13 @@ public class DefaultEmptyActivity extends AbstractActivity{ } } } + + @Override + public void onActivityEndDealReward(User user) throws Exception { + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if(sGlobalActivity.getType() == ActivityType.SERVERHAPPY){ + return; + } + super.onActivityEndDealReward(user); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java index dd98ae3df..1cca639a0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceRankActivity.java @@ -116,5 +116,10 @@ class ForceRankActivity extends AbstractActivity { return set; } + @Override + public void onActivityEndDealReward(User user) throws Exception { + //没有奖励 + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java index 72bbbbbdc..8f4dc1cc4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/IActivity.java @@ -42,7 +42,9 @@ public interface IActivity { */ void onActivityEnd() throws Exception; - public void onActivityEndOnMySelf(User user) throws Exception; + void onActivityEndDealReward(User user) throws Exception; + + void onActivityEndOnMySelf(User user) throws Exception; List getAllMissInfo(ActivityMission activityMission, Set filter); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 8c0d3f15d..71550ab51 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -208,6 +208,21 @@ public class ItemUtil { return getReward(itemMap,cardMap,equipMap,randomMap); } + + //指定道具掉落(如:邮件,初始化物品) + public static String getMailReward (List itemArrs) throws Exception { + Map itemMap = new HashMap<>(); + Map cardMap = new HashMap<>(); + Map equipMap = new HashMap<>(); + Map randomMap = new HashMap<>(); + for(int[][] itemArr : itemArrs){ + selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap); + } + return getReward(itemMap,cardMap,equipMap,randomMap); + } + + + public static void combineReward(User user,int[] dropGroupIds,float dropRatio, Map itemMap, Map cardMap, Map equipMap, Map randomMap){ combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap); } From 81a443322a45ad137c26c1d5134572e16c6f26a8 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 12 Aug 2019 20:52:54 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=85=AC=E4=BC=9A=E6=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/family/GuildLogic.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) 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 ba12cbf50..8c5ff580e 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 @@ -876,8 +876,9 @@ public class GuildLogic { .setPosition(2) .setSoulForce(HeroLogic.getInstance().calTeamTotalForce(UserManager.getUser(entry.getKey()),501,false)) .setHead(playerManager.getHead()) - .setFrame(playerManager.getHeadFrame()); - playerInfo.setUserInfo(userInfo); + .setFrame(playerManager.getHeadFrame()) + .setContribute(0); + playerInfo.setUserInfo(userInfo.build()); fightInfo.addUser(playerInfo); } return fightInfo.build(); @@ -911,12 +912,14 @@ public class GuildLogic { return; } RedisUtil redisUtil = RedisUtil.getInstence(); + Set rank = redisUtil.getZset(RedisKey.FAMILY_FIGHT_RANK, 0, redisUtil.getZsetSize(RedisKey.FAMILY_FIGHT_RANK)); for(Integer gid:guildIds){ - String key = RedisKey.getKey(RedisKey.FAMILY_FIGHT_RANK, gid.toString(), true); - if(!redisUtil.getZset(key,0, redisUtil.getZsetSize(RedisKey.FAMILY_FIGHT_RANK)).contains(gid)){ - redisUtil.zsetAddOne(RedisKey.FAMILY_FIGHT_RANK,gid.toString(),100); - } GuildInfo guildInfo = GuilidManager.guildInfoMap.get(gid); + if(!rank.contains(gid.toString())){ + if(guildInfo.getDefendInfo()!=null&&guildInfo.getDefendInfo().size()>0){ + redisUtil.zsetAddOne(RedisKey.FAMILY_FIGHT_RANK,gid.toString(),100); + } + } Map defendInfo = guildInfo.getDefendInfo(); if(defendInfo==null||defendInfo.size()<1){ continue; @@ -939,6 +942,9 @@ public class GuildLogic { redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT,String.valueOf(guildInfo.getId()),String.valueOf(entry.getKey()),fightInfo); } } +// redisUtil.getZset(key,0, redisUtil.getZsetSize(RedisKey.FAMILY_FIGHT_RANK)); + + } @@ -976,7 +982,6 @@ public class GuildLogic { .setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(userDefend,1)) .build(); CommonProto.FightTeamInfo fightAttackTeamInfo = BehaviorUtil.getFightTeamInfo(userAttack, 502, true); - LuaValue getFightData = FightDataUtil.getFinalPlayerFightData(fightAttackTeamInfo, fightDefendTeamInfo); LuaValue getOptionData = FightDataUtil.getOptionData(""); From c0293bd314fc3b7a1f6ef45f13c165ab7107fae4 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Thu, 12 Sep 2019 21:36:54 +0800 Subject: [PATCH 3/7] acitvity --- .../com/ljsd/jieling/logic/activity/AbstractActivity.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 fed5c8cb8..4d45edad2 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 @@ -101,7 +101,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { User user = UserManager.getUser(session.getUid()); List misssIds = new LinkedList<>(); - + misssIds.add(id); if (id == -1) { List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); if (null == cfgs) { @@ -154,7 +154,9 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { } SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - String title = SErrorCodeEerverConfig.getI18NMessage("receive_activity_title",new Object[]{sGlobalActivity.getSesc()}); + if (null == sGlobalActivity) + return false; + String title = SErrorCodeEerverConfig.getI18NMessage("receive_activity_title", new Object[]{sGlobalActivity.getSesc()}); String content = SErrorCodeEerverConfig.getI18NMessage("receive_activity_txt", new Object[]{sGlobalActivity.getSesc()}); String mailReward = ItemUtil.getMailReward(itemArrs); From f76ce9cb43c358d1f70da61e16fc393238fe7185 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Thu, 12 Sep 2019 21:39:52 +0800 Subject: [PATCH 4/7] acitvity --- .../com/ljsd/jieling/logic/activity/AbstractActivity.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 4d45edad2..899cfacea 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 @@ -97,12 +97,12 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { * 重写此类 记得重写onActivityEndOnMySelf 否者活动结束走默认配置表发邮件奖 */ @Override - public boolean takeReward(ISession session, int id) throws Exception { + public boolean takeReward(ISession session, int missid) throws Exception { User user = UserManager.getUser(session.getUid()); List misssIds = new LinkedList<>(); - misssIds.add(id); - if (id == -1) { + misssIds.add(missid); + if (missid == -1) { List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); if (null == cfgs) { return false; @@ -139,7 +139,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { } //up miss int[][] reward = sActivityRewardConfig.getReward(); - if (id == -1) { + if (missid == -1) { itemArrs.add(reward); continue; } From 1d01fcf7127e510f9a96668bd0c80b293489c4e5 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Thu, 12 Sep 2019 21:54:42 +0800 Subject: [PATCH 5/7] acitvity --- .../com/ljsd/jieling/logic/activity/AbstractActivity.java | 7 +++++-- .../ljsd/jieling/logic/activity/DailyRechargeActivity.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) 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 899cfacea..f6290b708 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 @@ -101,7 +101,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { User user = UserManager.getUser(session.getUid()); List misssIds = new LinkedList<>(); - misssIds.add(missid); + if (missid == -1) { List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); if (null == cfgs) { @@ -110,6 +110,8 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { for (SActivityRewardConfig sActivityRewardConfig : cfgs) { misssIds.add(sActivityRewardConfig.getId()); } + } else { + misssIds.add(missid); } @@ -125,7 +127,8 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { ActivityManager activityManager = user.getActivityManager(); ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "activity_close"); + if (missid != -1) + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "activity_close"); return false; } ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java index 1d734fd2d..5104949d8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java @@ -19,10 +19,10 @@ class DailyRechargeActivity extends AbstractActivity { @Override public void onResume(User user) throws Exception { - super.onResume(user); //每日充值 补发前日未领取的奖 ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); takeReward(sessionByUid, -1); + super.onResume(user); } From 8c5e6a4cba2c158146cd3016cb55d768e7902dda Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Fri, 13 Sep 2019 09:35:30 +0800 Subject: [PATCH 6/7] acitvity --- .../jieling/logic/activity/AbstractActivity.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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 f6290b708..4c172feba 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 @@ -218,14 +218,14 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { @Override public void onActivityEndOnMySelf(User user) throws Exception { - List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); - if (null == cfgs) { - return; - } - for (SActivityRewardConfig sActivityRewardConfig : cfgs) { - ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); - takeReward(sessionByUid, sActivityRewardConfig.getId()); - } +// List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); +// if (null == cfgs) { +// return; +// } +// for (SActivityRewardConfig sActivityRewardConfig : cfgs) { +// ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); +// takeReward(sessionByUid, sActivityRewardConfig.getId()); +// } } /** From 384422923866115c484f817db3dbc9c294bd1c09 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Tue, 13 Aug 2019 10:07:57 +0800 Subject: [PATCH 7/7] acitvity --- .../logic/activity/AbstractActivity.java | 95 ++++++++++--------- .../logic/activity/DailyRechargeActivity.java | 3 +- 2 files changed, 52 insertions(+), 46 deletions(-) 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 4c172feba..b9fdb74cc 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 @@ -97,75 +97,90 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { * 重写此类 记得重写onActivityEndOnMySelf 否者活动结束走默认配置表发邮件奖 */ @Override - public boolean takeReward(ISession session, int missid) throws Exception { + public boolean takeReward(ISession session, int missionId) throws Exception { + + User user = UserManager.getUser(session.getUid()); + //check cfg + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); + return false; + } + //check state + ActivityManager activityManager = user.getActivityManager(); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "activity_close"); + return false; + } + ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); + return false; + } + //take rewards check + if (!takeRewardsProcess(session, sActivityRewardConfig, activityProgressInfo)) { + return false; + } + //up miss + int[][] reward = sActivityRewardConfig.getReward(); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); + checkAndSetProgress(activityMission, activityProgressInfo, sActivityRewardConfig, missionId); + //send + sendActivityProgress(session, activityMission, Collections.singleton(missionId)); + KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId); + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + return true; + } + + void takeAllReward(ISession session) throws Exception { User user = UserManager.getUser(session.getUid()); List misssIds = new LinkedList<>(); - if (missid == -1) { - List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); - if (null == cfgs) { - return false; - } - for (SActivityRewardConfig sActivityRewardConfig : cfgs) { - misssIds.add(sActivityRewardConfig.getId()); - } - } else { - misssIds.add(missid); + List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + if (null == cfgs) { + return; + } + for (SActivityRewardConfig sActivityRewardConfig : cfgs) { + misssIds.add(sActivityRewardConfig.getId()); } - List itemArrs = new LinkedList<>(); for (Integer missionId : misssIds) { //check cfg SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); - return false; + continue; } //check state ActivityManager activityManager = user.getActivityManager(); ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { - if (missid != -1) - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "activity_close"); - return false; + continue; } ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); - return false; + continue; } //take rewards check if (!takeRewardsProcess(session, sActivityRewardConfig, activityProgressInfo)) { - return false; + continue; } //up miss int[][] reward = sActivityRewardConfig.getReward(); - if (missid == -1) { - itemArrs.add(reward); - continue; - } - CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); - checkAndSetProgress(activityMission, activityProgressInfo, sActivityRewardConfig, missionId); - //send - sendActivityProgress(session, activityMission, Collections.singleton(missionId)); - KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId); - PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); - MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); - return true; + itemArrs.add(reward); } SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); if (null == sGlobalActivity) - return false; + return; String title = SErrorCodeEerverConfig.getI18NMessage("receive_activity_title", new Object[]{sGlobalActivity.getSesc()}); String content = SErrorCodeEerverConfig.getI18NMessage("receive_activity_txt", new Object[]{sGlobalActivity.getSesc()}); - String mailReward = ItemUtil.getMailReward(itemArrs); int nowTime = (int) (TimeUtils.now() / 1000); MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); - return true; } void checkAndSetProgress(ActivityMission activityMission, ActivityProgressInfo activityProgressInfo, SActivityRewardConfig sActivityRewardConfig, int missionId) { @@ -218,14 +233,6 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { @Override public void onActivityEndOnMySelf(User user) throws Exception { -// List cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); -// if (null == cfgs) { -// return; -// } -// for (SActivityRewardConfig sActivityRewardConfig : cfgs) { -// ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); -// takeReward(sessionByUid, sActivityRewardConfig.getId()); -// } } /** @@ -234,7 +241,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { @Override public void onActivityEndDealReward(User user) throws Exception { ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); - takeReward(sessionByUid, -1); + takeAllReward(sessionByUid); } public List getAllMissInfo(ActivityMission activityMission) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java index 5104949d8..0487b6f4c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DailyRechargeActivity.java @@ -2,7 +2,6 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.config.SActivityRewardConfig; import com.ljsd.jieling.logic.OnlineUserManager; -import com.ljsd.jieling.logic.dao.ActivityManager; import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.ActivityProgressInfo; import com.ljsd.jieling.logic.dao.root.User; @@ -21,7 +20,7 @@ class DailyRechargeActivity extends AbstractActivity { public void onResume(User user) throws Exception { //每日充值 补发前日未领取的奖 ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); - takeReward(sessionByUid, -1); + takeAllReward(sessionByUid); super.onResume(user); }