diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SLuckyCatConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SLuckyCatConfig.java index 05bf9437f..f515ee7b4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SLuckyCatConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SLuckyCatConfig.java @@ -43,7 +43,7 @@ public class SLuckyCatConfig implements BaseConfig { if (!configMapByActivityId.containsKey(id)) { configMapByActivityId.put(id, new TreeMap<>()); } - configMapByActivityId.get(id).put(sLuckyCatConfig.getActivityId(), sLuckyCatConfig); + configMapByActivityId.get(id).put(sLuckyCatConfig.getId(), sLuckyCatConfig); } for (TreeMap maps : configMapByActivityId.values()) { 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 5af1f01b9..b3cbf4e30 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 @@ -108,6 +108,7 @@ public class RedisKey { public static final String TOWER_RANK = "TOWER_RANK"; + public static final String FORCE_RANK = "FORCE_RANK"; public static final String FAMILY_ID = "FAMILY_ID"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/ForceRankHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/ForceRankHandler.java new file mode 100644 index 000000000..0756695dc --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/ForceRankHandler.java @@ -0,0 +1,23 @@ +package com.ljsd.jieling.handler; + +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.stereotype.Component; + +@Component +public class ForceRankHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.GETF_FORCE_RANK_INFO_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + byte[] bytes = netData.parseClientProtoNetData(); + PlayerInfoProto.GetForceRankInfoRequest getForceRankInfoRequest = PlayerInfoProto.GetForceRankInfoRequest.parseFrom(bytes); + ActivityLogic.getInstance().getForceRank(iSession,getForceRankInfoRequest.getPage(),getForceRankInfoRequest.getActiviteId()); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/TakeActivityRewardHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/TakeActivityRewardHandler.java index 5659bdb95..9041ba410 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/TakeActivityRewardHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/TakeActivityRewardHandler.java @@ -23,7 +23,7 @@ public class TakeActivityRewardHandler extends BaseHandler { PlayerInfoProto.TakeActivityRewardRequest takeActivityRewardRequest = PlayerInfoProto.TakeActivityRewardRequest.parseFrom(bytes); int missionId = takeActivityRewardRequest.getMissionId(); int activityId = takeActivityRewardRequest.getActivityId(); - AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(activityId, iSession.getUid()); + AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(activityId); if (abstractActivity == null) { int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE; MessageUtil.sendErrorResponse(iSession, 0, rewardResponseValue, "no_such_activity_type"); 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 aeb1bbbb9..8a65f5ef6 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 @@ -26,11 +26,9 @@ import java.util.Map; public abstract class AbstractActivity implements IActivity { static final Logger LOGGER = LoggerFactory.getLogger(AbstractActivity.class); final int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE; - int uid; int id; - public AbstractActivity(int uid, int id) { - this.uid = uid; + public AbstractActivity(int id) { this.id = id; } @@ -59,6 +57,10 @@ public abstract class AbstractActivity implements IActivity { } } + void updateProgress(User user,ActivityMission activityMission, int count) { + updateProgress(activityMission,count); + } + /** * default update to progress * 老的逻辑 将任务进度更新到progress中 现改为子类覆盖在value中存储 @@ -78,7 +80,7 @@ public abstract class AbstractActivity implements IActivity { @Override public void takeReward(ISession session, int missionId) throws Exception { - User user = UserManager.getUser(uid); + User user = UserManager.getUser(session.getUid()); //check cfg SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) { @@ -119,10 +121,14 @@ public abstract class AbstractActivity implements IActivity { int[][] values = sActivityRewardConfig.getValues(); int missionProgress = activityProgressInfo.getProgrss(); if (missionProgress < values[0][0]) { - LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ", uid, sActivityRewardConfig.getId(), missionProgress, values[0][0]); + LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ", session.getUid(), sActivityRewardConfig.getId(), missionProgress, values[0][0]); MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); return false; } return true; } + + + @Override + public void onActivityEnd() throws Exception{ } } 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 73ac433a7..f08739888 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 @@ -2,6 +2,8 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.config.*; import com.ljsd.jieling.core.VipPrivilegeType; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.handler.activity.BlessInfoConfig; @@ -13,6 +15,7 @@ import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.MapInfoProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.PlayerInfoProto; import com.ljsd.jieling.util.ItemUtil; @@ -21,6 +24,7 @@ import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.TimeUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.data.redis.core.ZSetOperations; import java.util.*; @@ -54,17 +58,19 @@ public class ActivityLogic { if(time ==2 ){ continue; } - long startTime = sGlobalActivity.getTimeLong(0,1); - long endTime = sGlobalActivity.getTimeLong(0,2); + long startTime = sGlobalActivity.getTimeLong(0,time); + long endTime = sGlobalActivity.getTimeLong(0,time); if(nowendTime && openActivityIds.contains(sGlobalActivity.getId())){ openActivityIds.remove(sGlobalActivity.getId()); + ActivityTypeEnum.getActicityType(sGlobalActivity.getId()).onActivityEnd(); continue; } openActivityIds.add(sGlobalActivity.getId()); } + for(Map.Entry entry:OnlineUserManager.sessionMap.entrySet()){ User user = UserManager.getUserInMem(entry.getKey()); PlayerInfoProto.ActivityUpateIndication.Builder builder = PlayerInfoProto.ActivityUpateIndication.newBuilder(); @@ -152,7 +158,7 @@ public class ActivityLogic { case ActivityType.TREASURE: case ActivityType.LUCKYCAT: case ActivityType.SERVERHAPPY: - AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId(),user.getId()); + AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId()); if (abstractActivity == null) { break; } @@ -442,7 +448,7 @@ public class ActivityLogic { continue; } - AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(activityId,user.getId()); + AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(activityId); if (abstractActivity == null) { continue; } @@ -1007,4 +1013,46 @@ public class ActivityLogic { return activityMission; } + + /** + * 获取战力排行榜 + */ + public void getForceRank(ISession session,int page,int acitvityId) throws Exception { + + if (page == 0) { + page = 1; + } + int start = (page - 1) * 20, end = page * 20 - 1; + List useForceInfoList = new ArrayList<>(20); + Set> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK,Integer.toString(acitvityId), start, end); + for(ZSetOperations.TypedTuple item : rankInfo){ + String value = item.getValue(); + int score =item.getScore().intValue(); + int uid = Integer.parseInt(value); + User user = UserManager.getUser(uid); + + PlayerManager playerInfoManager = user.getPlayerInfoManager(); + CommonProto.UseForceInfo personInfoBuild = CommonProto.UseForceInfo.newBuilder() + .setLeve(playerInfoManager.getLevel()) + .setName(playerInfoManager.getNickName()) + .setForce(score) + .setRank(++start) + .build(); + useForceInfoList.add(personInfoBuild); + } + + int uid = session.getUid(); + int score = RedisUtil.getInstence().getZSetScore(RedisKey.FORCE_RANK,Integer.toString(acitvityId), Integer.toString(uid)).intValue(); + int myRank= RedisUtil.getInstence().getZSetreverseRank(RedisKey.FORCE_RANK,Integer.toString(acitvityId),Integer.toString(uid)).intValue(); + + PlayerInfoProto.GetForceRankInfoResponse buildResponse = PlayerInfoProto.GetForceRankInfoResponse.newBuilder() + .setMyRank(myRank) + .setMyForce(score) + .addAllUseForceInfo(useForceInfoList) + .build(); + MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GETF_FORCE_RANK_INFO_RESPONSE_VALUE,buildResponse,true); + + } + + } 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 90337a39a..0c56a0555 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 @@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.config.SGlobalActivity; import java.util.function.BiFunction; +import java.util.function.Function; public enum ActivityTypeEnum { @@ -18,42 +19,42 @@ public enum ActivityTypeEnum { FORCERANK(ActivityType.FORCERANK, ForceRankActivity::new), FORCESTANDARD(ActivityType.FORCESTANDARD, ForceStandardActivity::new); private int type; - private BiFunction toActivityFunction; + private Function toActivityFunction; - ActivityTypeEnum(int type, BiFunction toActivityFunction) { + ActivityTypeEnum(int type, Function toActivityFunction) { this.type = type; this.toActivityFunction = toActivityFunction; } - public AbstractActivity toActivity(int uid,int id) { - return toActivityFunction.apply(uid, id); + public AbstractActivity toActivity(int id) { + return toActivityFunction.apply(id); } - public static AbstractActivity getActicityType(int id, int uid) { + public static AbstractActivity getActicityType(int id) { SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); switch ( sGlobalActivity.getType()) { case ActivityType.OnlineReward: - return ONLINEREWARD.toActivity(uid,id); + return ONLINEREWARD.toActivity(id); case ActivityType.SevenLogin: - return SEVENLOGIN.toActivity(uid,id); + return SEVENLOGIN.toActivity(id); case ActivityType.ChapterReward: - return CHAPTERREWARD.toActivity(uid,id); + return CHAPTERREWARD.toActivity(id); case ActivityType.FirstRecharge: - return FIRSTRECHARGE.toActivity(uid,id); + return FIRSTRECHARGE.toActivity(id); case ActivityType.RechargeTotal: - return RECHARGETOTAL.toActivity(uid,id); + return RECHARGETOTAL.toActivity(id); case ActivityType.GrowthFund: - return GROWTHFUND.toActivity(uid,id); + return GROWTHFUND.toActivity(id); case ActivityType.BLESSACTIVITY: - return BLESSACTIVITY.toActivity(uid,id); + return BLESSACTIVITY.toActivity(id); case ActivityType.TREASURE: - return TREASUREACTIVITY.toActivity(uid,id); + return TREASUREACTIVITY.toActivity(id); case ActivityType.LUCKYCAT: - return LUCKYCAT.toActivity(uid,id); + return LUCKYCAT.toActivity(id); case ActivityType.FORCERANK: - return FORCERANK.toActivity(uid,id); + return FORCERANK.toActivity(id); case ActivityType.FORCESTANDARD: - return FORCESTANDARD.toActivity(uid,id); + return FORCESTANDARD.toActivity(id); default: return null; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/BlessActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/BlessActivity.java index 343461304..bb6cf7c16 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/BlessActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/BlessActivity.java @@ -1,12 +1,10 @@ package com.ljsd.jieling.logic.activity; -import com.ljsd.jieling.logic.dao.root.User; - public class BlessActivity extends AbstractActivity { - public BlessActivity(int uid, int id) { - super(uid, id); + public BlessActivity(int id) { + super(id); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ChapterRewardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ChapterRewardActivity.java index 09cea59b0..521a57a00 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ChapterRewardActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ChapterRewardActivity.java @@ -11,14 +11,14 @@ import com.ljsd.jieling.util.MessageUtil; class ChapterRewardActivity extends AbstractActivity { - public ChapterRewardActivity(int uid, int id) { - super(uid, id); + public ChapterRewardActivity(int id) { + super(id); } @Override boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { int[][] values = sActivityRewardConfig.getValues(); - User user = UserManager.getUser(uid); + User user = UserManager.getUser(session.getUid()); LevelDifficulty levelDifficulty = user.getLevelDifficultyManager().getLevelDifficultyInfosMap().get(values[0][0]); if (levelDifficulty == null || levelDifficulty.getState() != Global.FIGHT_CLEARANCE) { MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "not pass"); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/FirstRechargeActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/FirstRechargeActivity.java index 1464797da..9d41c160d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/FirstRechargeActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/FirstRechargeActivity.java @@ -3,7 +3,7 @@ package com.ljsd.jieling.logic.activity; public class FirstRechargeActivity extends AbstractActivity { - public FirstRechargeActivity(int uid, int id) { - super(uid, id); + public FirstRechargeActivity(int id) { + super(id); } } 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 df0af5a6d..13423daf3 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 @@ -2,38 +2,115 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.config.SActivityRewardConfig; +import com.ljsd.jieling.config.SErrorCodeEerverConfig; +import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.globals.Global; 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.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; +import com.ljsd.jieling.util.TimeUtils; +import org.springframework.data.redis.core.ZSetOperations; + +import java.util.*; class ForceRankActivity extends AbstractActivity { - public ForceRankActivity(int uid, int id) { - super(uid, id); + public ForceRankActivity(int id) { + super(id); } + @Override - void updateProgress(ActivityMission activityMission, int count) { + void updateProgress(User user, ActivityMission activityMission, int count) { //历史最高 - if (count > activityMission.getValue()) + if (count > activityMission.getValue()) { activityMission.setValue(count); + String key = RedisKey.getKey(RedisKey.FORCE_RANK, String.valueOf(id), false); + RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), count); + } } @Override boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { - - int[][] values = sActivityRewardConfig.getValues(); - if(values[0].length<3){ - return false; - } - int value = values[0][2]; - int missionProgress = activityProgressInfo.getProgrss(); - if (missionProgress < value) { - LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ", uid, sActivityRewardConfig.getId(), missionProgress, values[0][0]); - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); - return false; - } - return true; + return false; } + + @Override + public void onActivityEnd() throws Exception { + List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + int maxRank = 0; + Map rank2miss = new HashMap<>(); + for (SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs) { + int[][] values = sActivityRewardConfig.getValues(); + if (values[0].length < 3) { + return; + } + int up = values[0][0]; + int down = values[0][1]; + maxRank = Math.max(maxRank, down); + for (Integer rank : getRankSet(up, down)) { + rank2miss.put(rank, sActivityRewardConfig.getId()); + } + } + + + Set> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK, Integer.toString(id), 0, maxRank); + int rank = 1; + int nowTime = (int) (TimeUtils.now() / 1000); + for (ZSetOperations.TypedTuple item : rankInfo) { + String value = item.getValue(); + int uid = Integer.parseInt(value); + User user = UserManager.getUser(uid); + + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + if (activityMission == null || activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + continue; + } + int missionId = rank2miss.get(rank++); + ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { + continue; + } + //check value + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + int[][] values = sActivityRewardConfig.getValues(); + if (values[0].length < 3) { + continue; + } + int value2 = values[0][2]; + int missionProgress = activityProgressInfo.getProgrss(); + if (missionProgress < value2) { + continue; + } + //sendmail + String content = SErrorCodeEerverConfig.getI18NMessage("powerrank_activity_title"); + String title = SErrorCodeEerverConfig.getI18NMessage("powerrank_activity_txt", new Object[]{rank}); + String mailReward = ItemUtil.getMailReward(sActivityRewardConfig.getReward()); + MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); + //暂时不删 + // RedisUtil.getInstence().del(key); + } + + + } + + private Set getRankSet(int start, int end) { + Set set = new HashSet<>(); + if (start > end) { + return set; + } + for (int i = start; i <= end; i++) { + set.add(i); + } + return set; + } + + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceStandardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceStandardActivity.java index 7ddfb2061..1223c6db0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceStandardActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ForceStandardActivity.java @@ -4,8 +4,8 @@ import com.ljsd.jieling.logic.dao.ActivityMission; class ForceStandardActivity extends AbstractActivity { - public ForceStandardActivity(int uid, int id) { - super(uid, id); + public ForceStandardActivity(int id) { + super(id); } @Override diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GrowthFundActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GrowthFundActivity.java index 3455418db..5ba74e160 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GrowthFundActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GrowthFundActivity.java @@ -11,14 +11,14 @@ import com.ljsd.jieling.util.MessageUtil; class GrowthFundActivity extends AbstractActivity { - public GrowthFundActivity(int uid, int id) { - super(uid, id); + public GrowthFundActivity(int id) { + super(id); } @Override boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { int[][] values = sActivityRewardConfig.getValues(); - User user = UserManager.getUser(uid); + User user = UserManager.getUser(session.getUid()); int type = values[0][0]; int value = values[0][1]; if(type == 9){ 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 62616ee43..bf75bd7b5 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 @@ -8,8 +8,9 @@ public interface IActivity { /** * 初始化存库信息 + * * @param user 未入库 传入依赖 - * Todo 目前之后招财猫活动用 其他的后面一起添加 + * Todo 目前之后招财猫活动用 其他的后面一起添加 */ void initActivity(User user) throws Exception; @@ -20,8 +21,11 @@ public interface IActivity { /** * 活动阶段节点处理逻辑 + * * @param missionId 节点id */ void takeReward(ISession session, int missionId) throws Exception; + void onActivityEnd() throws Exception; + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java index 1d3c4c035..6fd6983c5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyCatActivity.java @@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.chat.logic.ChatLogic; import com.ljsd.jieling.config.SErrorCodeEerverConfig; import com.ljsd.jieling.config.SGlobalActivity; +import com.ljsd.jieling.config.SItem; import com.ljsd.jieling.config.SLuckyCatConfig; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; @@ -26,8 +27,8 @@ import java.util.TreeMap; public class LuckyCatActivity extends AbstractActivity { - public LuckyCatActivity(int uid, int id) { - super(uid, id); + public LuckyCatActivity(int id) { + super(id); } @Override @@ -48,7 +49,7 @@ public class LuckyCatActivity extends AbstractActivity { @Override public void takeReward(ISession session, int missionId) throws Exception { - User user = UserManager.getUser(uid); + User user = UserManager.getUser(session.getUid()); SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) { MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); @@ -116,7 +117,9 @@ public class LuckyCatActivity extends AbstractActivity { CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD); KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId); String nickName = user.getPlayerInfoManager().getNickName(); - String message = SErrorCodeEerverConfig.getI18NMessage("luck_cat_take_reward_content", new Object[]{nickName,temp2[0],temp2[1]}); + SItem sItem = SItem.getsItemMap().get(temp2[0]); + + String message = SErrorCodeEerverConfig.getI18NMessage("luck_cat_take_reward_content", new Object[]{nickName,sItem.getName(),temp2[1]}); ChatLogic.getInstance().sendSysChatMessage(message, Global.LUCKCAT,0,0,0,0,0,0); PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OnlineRewardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OnlineRewardActivity.java index 56c4ebed5..a1fe540b7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OnlineRewardActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/OnlineRewardActivity.java @@ -11,8 +11,8 @@ import com.ljsd.jieling.util.TimeUtils; class OnlineRewardActivity extends AbstractActivity { - public OnlineRewardActivity(int uid, int id) { - super(uid, id); + public OnlineRewardActivity(int id) { + super(id); } @Override @@ -21,13 +21,13 @@ class OnlineRewardActivity extends AbstractActivity { int[][] values = sActivityRewardConfig.getValues(); int missionProgress = activityProgressInfo.getProgrss(); long now = TimeUtils.now(); - User user = UserManager.getUser(uid); + User user = UserManager.getUser(session.getUid()); PlayerManager playerInfoManager = user.getPlayerInfoManager(); long loginTime = playerInfoManager.getLoginTime(); int limitTime = values[0][0]; long remainTime = now - loginTime - limitTime * TimeUtils.ONE_MINUTE + missionProgress * TimeUtils.ONE_SECOND; if (now - loginTime - limitTime * TimeUtils.ONE_MINUTE + missionProgress * TimeUtils.ONE_SECOND < 0) { - LOGGER.error("the uid={} remain time is={}ms,the require time is={}ms", uid, remainTime, limitTime * TimeUtils.ONE_MINUTE); + LOGGER.error("the uid={} remain time is={}ms,the require time is={}ms", session.getUid(), remainTime, limitTime * TimeUtils.ONE_MINUTE); MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); return false; } 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 cb9e5664d..29f7b1bb7 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 @@ -11,8 +11,8 @@ import com.ljsd.jieling.util.TimeUtils; class RechargeTotalActivity extends AbstractActivity { - public RechargeTotalActivity(int uid, int id) { - super(uid, id); + public RechargeTotalActivity(int id) { + super(id); } @Override @@ -20,11 +20,11 @@ class RechargeTotalActivity extends AbstractActivity { int[][] values = sActivityRewardConfig.getValues(); int missionProgress = activityProgressInfo.getProgrss(); long now = TimeUtils.now(); - User user = UserManager.getUser(uid); + User user = UserManager.getUser(session.getUid()); RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo(); int days = TimeUtils.differentDays(rechargeInfo.getCreateTime(), now) + 1; if (missionProgress < values[0][0] || days < values[0][1]) { - LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ", uid, sActivityRewardConfig.getId(), missionProgress, values[0][0]); + LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ", session.getUid(), sActivityRewardConfig.getId(), missionProgress, values[0][0]); MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "not finish"); return false; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SevenLoginActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SevenLoginActivity.java index 3cd02a66d..3ea44fd9a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SevenLoginActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SevenLoginActivity.java @@ -19,7 +19,7 @@ class SevenLoginActivity extends AbstractActivity { user.getActivityManager().addActivity(sGlobalActivity.getId(), activityMission); } - public SevenLoginActivity(int uid, int id) { - super(uid, id); + public SevenLoginActivity(int id) { + super(id); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java index 59fb39e8a..ac43de789 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java @@ -25,8 +25,8 @@ import java.util.Map; public class TreasureActivity extends AbstractActivity { - public TreasureActivity(int uid, int id) { - super(uid, id); + public TreasureActivity(int id) { + super(id); } @Override @@ -48,7 +48,7 @@ public class TreasureActivity extends AbstractActivity { @Override public void takeReward(ISession session, int missionId) throws Exception { - User user = UserManager.getUser(uid); + User user = UserManager.getUser(session.getUid()); SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) { MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, ""); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 61a887943..d8acf2ee2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -6,6 +6,8 @@ import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.logic.activity.ActivityType; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.fight.CombatLogic; @@ -216,8 +218,10 @@ public class PlayerLogic { if(user.getPlayerInfoManager().getMaxForce() < teamForce){ user.getPlayerInfoManager().setMaxForce(teamForce); user.getUserMissionManager().onGameEvent(user,GameEvent.USER_FORCE_CHANGE); + ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FORCERANK,teamForce,null); } } + MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.USER_FORCE_CHANGE_RESPONSE_VALUE,null,true); }