diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SRechargeCommodityConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SRechargeCommodityConfig.java index 97c3baf23..457a3cd28 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SRechargeCommodityConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SRechargeCommodityConfig.java @@ -30,10 +30,12 @@ public class SRechargeCommodityConfig implements BaseConfig { private int order; + public static Map rechargeCommodityConfigMap; + @Override public void init() throws Exception { - + rechargeCommodityConfigMap = STableManager.getConfig(SRechargeCommodityConfig.class); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 7d5868036..64f58a546 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -1768,8 +1768,8 @@ public class MapLogic { if (levelDifficulty.getState() != Global.FIGHT_CLEARANCE) { reward = sLevelDifficultyConfig.getFirstReward(); levelDifficulty.setState(Global.FIGHT_CLEARANCE); - user.getUserMissionManager().onGameEvent(user,GameEvent.STORY_FIGHT,fightId,0); } + user.getUserMissionManager().onGameEvent(user,GameEvent.STORY_FIGHT,fightId,0); CommonProto.Drop.Builder drop = ItemUtil.drop(user,reward, 1, 0,BIReason.LEVELDIFFICULTY_FIGHT_REWARD); levelDifficulty.setChallengeTimes(levelDifficulty.getChallengeTimes() +1); //开启关卡 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java index 806516c21..89b537a11 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java @@ -2,11 +2,17 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; +import java.util.Map; + public class RechargeInfo extends MongoBase{ private int saveAmt;//累计充值 private long createTime; + private Map levelBagMap; + + private Map buyGoodsTimes; + public RechargeInfo(){ } @@ -27,4 +33,12 @@ public class RechargeInfo extends MongoBase{ public long getCreateTime() { return createTime; } + + public Map getLevelBagMap() { + return levelBagMap; + } + + public Map getBuyGoodsTimes() { + return buyGoodsTimes; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java index 430f28168..f750e330b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java @@ -37,7 +37,7 @@ public class UserMissionManager extends MongoBase { } break; case DAILY_REFRESH: - /* Set missionIds = SDailyTasksConfig.config.keySet(); + Set missionIds = SDailyTasksConfig.config.keySet(); int type = (int)parm[0]; if(type == 0){ if( dailyMissionIdsType.getDoingMissionIds().isEmpty() && dailyMissionIdsType.getFinishMissionIds().isEmpty() && dailyMissionIdsType.getRewardedMissionIds().isEmpty() ){ @@ -49,7 +49,7 @@ public class UserMissionManager extends MongoBase { dailyCumulationData.reset(); updateString("dailyCumulationData",dailyCumulationData); } - dailyMissionIdsType.getDoingMissionIds().addAll(missionIds);*/ + dailyMissionIdsType.getDoingMissionIds().addAll(missionIds); updateString("dailyMissionIdsType",dailyMissionIdsType); @@ -66,7 +66,7 @@ public class UserMissionManager extends MongoBase { break; case DAILY_MISSION_REWARD:{ dailyMissionIdsType.rewardMission((int)parm[0], missionTypeEnumListMap.get(GameMisionType.DAILYMISSION)); - calCumulationDataResult(user,MissionType.FINSIH_DAYILY_TIMES,missionTypeEnumListMap,1); + calCumulationDataResult(user,MissionType.FINSIH_DAYILY_TIMES,missionTypeEnumListMap,1,(int)parm[0]); } break; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java index 17bfa7f2b..5818e6892 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java @@ -259,6 +259,10 @@ public class WorkShopLogic { int uid=session.getUid(); User user = UserManager.getUser(uid); SWorkShopEquipmentConfig sWorkShopEquipmentConfig = SWorkShopEquipmentConfig.getsWorkShopEquipmentConfigMap().get(equipTid); + if(sWorkShopEquipmentConfig == null){ + MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_FOUNDATION_RESPONSE_VALUE,"equipTid not exists"); + return; + } if(!checkIsUnlock(GlobalsDef.WORK_CREATE_TYPE,sWorkShopEquipmentConfig.getType(),user.getWorkShopController(),sWorkShopEquipmentConfig.getOpenRules(),sWorkShopEquipmentConfig.getId())){ MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_FOUNDATION_RESPONSE_VALUE,"未开"); return; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java index 0ef6d3859..dbe85231d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java @@ -217,6 +217,9 @@ public class MissionLoigc { case BUY_GOLD_TIMES: count=cumulationData.buyGoldTimes; break; + case BUY_STAMINA_TIMES: + count=cumulationData.buyStaminaTimes; + break; case WORKSHOP_CREATE_EQUIP_NUMS: count=cumulationData.createEquips; break; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ArenaChallengeManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ArenaChallengeManager.java index c64cd8c4b..154a1921f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ArenaChallengeManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ArenaChallengeManager.java @@ -19,6 +19,7 @@ public class ArenaChallengeManager implements BaseDataManager{ }else if(missionType == MissionType.ARENA_FIGHTSUCCES_TIMES){ if((int)parm[0] == 1){ data.arenaFightsuccesTimes++; + result = new CumulationData.Result(missionType); } } return result; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BuyGoodsManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BuyGoodsManager.java index 296f043e1..431e0f648 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BuyGoodsManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BuyGoodsManager.java @@ -8,12 +8,14 @@ public class BuyGoodsManager implements BaseDataManager { @Override public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { int itemId = (int)parm[0]; - int itemNum = (int)parm[0]; + int itemNum = (int)parm[1]; if(missionType == MissionType.BUY_GOLD_TIMES && itemId == Global.GOLD){ data.buyGoldTimes = data.buyGoldTimes + itemNum; + return new CumulationData.Result(missionType); }else if(missionType == MissionType.BUY_STAMINA_TIMES && itemId == Global.STAMINA){ data.buyStaminaTimes = data.buyStaminaTimes + itemNum; + return new CumulationData.Result(missionType); } - return new CumulationData.Result(missionType); + return null; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java index f6b4c1b77..9bc9f554b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java @@ -48,6 +48,8 @@ public class DataManagerDistributor { judges.put(MissionType.HERO_LEVLE_TIMES,new HeroLevelUpManager()); judges.put(MissionType.ARENA_FIGHTSUCCES_TIMES,new ArenaChallengeManager()); + + judges.put(MissionType.FINSIH_DAYILY_TIMES,new FinishDailyManager()); } public static CumulationData.Result updateData(CumulationData data, MissionType missionType, Object...parm) throws Exception { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/FightDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/FightDataManager.java index a86a5df83..078f86c35 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/FightDataManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/FightDataManager.java @@ -11,24 +11,40 @@ public class FightDataManager implements BaseDataManager{ CumulationData.Result result = null; int fightId = (int)parm[0]; int fightType = (int)parm[1];// 0: 故事副本 1: 普通副本 - if(fightType == 0 && missionType == MissionType.LEVEL_STORY_PASS){ - LevelDifficulty levelDifficulty = SLevelDifficultyConfig.getLevelDifficultyMap().get(fightId); - int type = levelDifficulty.getType(); - Integer maxFightId = data.getHeroLevleCountMap().get(type); - if(maxFightId!=null){ - if(fightId>maxFightId){ + if(fightType == 0){ + if(missionType == MissionType.LEVEL_STORY_TIMES){ + data.levelStoryTimes++; + result = new CumulationData.Result(missionType); + }else if(missionType == MissionType.LEVEL_STORY_PASS){ + LevelDifficulty levelDifficulty = SLevelDifficultyConfig.getLevelDifficultyMap().get(fightId); + int type = levelDifficulty.getType(); + Integer maxFightId = data.getHeroLevleCountMap().get(type); + if(maxFightId!=null){ + if(fightId>maxFightId){ + data.getHeroLevleCountMap().put(type,fightId); + result = new CumulationData.Result(missionType); + } + }else{ data.getHeroLevleCountMap().put(type,fightId); result = new CumulationData.Result(missionType); } - }else{ - data.getHeroLevleCountMap().put(type,fightId); - result = new CumulationData.Result(missionType); } + } - if(fightType == 1 && (missionType == MissionType.GENERAL_STORY_PASS || missionType == MissionType.HERO_STORY_PASS)){ - data.addExploreFight(fightId); - result = new CumulationData.Result(missionType); + if(fightType == 1){ + if(missionType == MissionType.GENERAL_STORY_TIMES){ + data.generalStoryTimes++; + result = new CumulationData.Result(missionType); + }else if(missionType == MissionType.HERO_LEVLE_TIMES){ + data.heroStoryTimes++; + result = new CumulationData.Result(missionType); + }else if(missionType == MissionType.GENERAL_STORY_PASS || missionType == MissionType.HERO_STORY_PASS){ + data.addExploreFight(fightId); + result = new CumulationData.Result(missionType); + } + + } return result; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/FinishDailyManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/FinishDailyManager.java new file mode 100644 index 000000000..b027e4094 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/FinishDailyManager.java @@ -0,0 +1,17 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.config.SDailyTasksConfig; +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.mission.MissionType; + +public class FinishDailyManager implements BaseDataManager{ + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + int missionId = (int) parm[0]; + if(SDailyTasksConfig.getSDailyTasksConfigById(missionId).getType()!= MissionType.FINSIH_DAYILY_TIMES.getMissionTypeValue()){ + data.finsihDayilyTimes++; + } + + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java index 5e03d39bc..8fa1370ee 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.logic.mission.event; +import com.ljsd.jieling.config.SDailyTasksConfig; import com.ljsd.jieling.config.STaskConfig; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; @@ -103,7 +104,7 @@ public class MissionEventDistributor { typeList.add(MissionType.HERO_STORY_TIMES); typeList.add(MissionType.LEVEL_STORY_TIMES); - typeList.add(MissionType.HERO_LEVLE_TIMES); + typeList.add(MissionType.GENERAL_STORY_TIMES); eventEnumListMap.put(GameEvent.STORY_FIGHT,typeList); eventProcessor.put(GameEvent.STORY_FIGHT,new CumulationDataEventProcessor()); @@ -174,6 +175,10 @@ public class MissionEventDistributor { if (missionStateChangeInfos.size() != 0) { sendMissionUpdate(session,user,missionStateChangeInfos,GameMisionType.VIPMISSION); } + List dailyMissioStateInfos = missionTypeEnumListMap.get(GameMisionType.DAILYMISSION); + if (dailyMissioStateInfos.size() != 0) { + sendMissionUpdate(session,user,dailyMissioStateInfos,GameMisionType.DAILYMISSION); + } } } @@ -188,11 +193,19 @@ public class MissionEventDistributor { STaskConfig sTaskConfig = STaskConfig.getsTaskConfigById(missionStateChangeInfo.getMissionId()); progress= MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getCumulationData(),sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0]); } + if(gameMisionType == GameMisionType.DAILYMISSION){ + SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionStateChangeInfo.getMissionId()); + progress= MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getCumulationData(),sDailyTasksConfig.getType(),sDailyTasksConfig.getValues()[0]); + } }else if(missionState == MissionState.FINISH){ if(gameMisionType == GameMisionType.VIPMISSION){ STaskConfig sTaskConfig = STaskConfig.getsTaskConfigById(missionStateChangeInfo.getMissionId()); progress=sTaskConfig.getTaskValue()[1]; } + if(gameMisionType == GameMisionType.DAILYMISSION){ + SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionStateChangeInfo.getMissionId()); + progress= sDailyTasksConfig.getValues()[1]; + } } builder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionStateChangeInfo.getMissionId()).setType(gameMisionType.getType()).setState(state).setProgress(progress)); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index 56858900e..25d426268 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -1,13 +1,74 @@ package com.ljsd.jieling.logic.store; +import com.ljsd.jieling.config.SRechargeCommodityConfig; +import com.ljsd.jieling.logic.dao.RechargeInfo; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.TimeUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Map; /** * 真钱购买东西 */ public class BuyGoodsLogic { + private static final Logger LOGGER = LoggerFactory.getLogger(BuyGoodsLogic.class); + public void buyGoods(ISession session,int goodsId){ } + + public void sendGoods(int uid,int goodsId) throws Exception { + User user = UserManager.getUser(uid); + SRechargeCommodityConfig sRechargeCommodityConfig = SRechargeCommodityConfig.rechargeCommodityConfigMap.get(goodsId); + RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo(); + Map buyGoodsTimes = rechargeInfo.getBuyGoodsTimes(); + Integer buyCount = buyGoodsTimes.get(goodsId); + if(buyCount ==null){ + buyCount = 0; + } + buyCount=buyCount+1; + int limit = sRechargeCommodityConfig.getLimit(); + if(limit!=0){ + if(buyCount>limit){ + LOGGER.error("the uid={},the goodId={}, is over limit={}",uid,goodsId,buyCount); + return; + } + } + if(buyCount == 1){ + int[][] firstMultiple = sRechargeCommodityConfig.getFirstMultiple(); + int firstInvest = sRechargeCommodityConfig.getFirstInvest(); + + } + int saveAmt = rechargeInfo.getSaveAmt(); + int isDiscount = sRechargeCommodityConfig.getIsDiscount(); + int price =sRechargeCommodityConfig.getPrice(); + if(isDiscount!=0){ + price=(int)(sRechargeCommodityConfig.getPrice() * (10 + isDiscount)/10f); + } + rechargeInfo.setSaveAmt(price+saveAmt); + + int[][] baseReward = sRechargeCommodityConfig.getBaseReward(); + buyGoodsTimes.put(goodsId,buyCount+1); + } + + public void getGoodsBagInfo(int uid) throws Exception { + User user = UserManager.getUser(uid); + long createTime = user.getPlayerInfoManager().getCreateTime(); + RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo(); + long now = TimeUtils.now(); + Map buyGoodsTimes = rechargeInfo.getBuyGoodsTimes(); + for(SRechargeCommodityConfig sRechargeCommodityConfig :SRechargeCommodityConfig.rechargeCommodityConfigMap.values()){ + int limit = sRechargeCommodityConfig.getLimit(); + int goodsId = sRechargeCommodityConfig.getId(); + if(limit!=0){ + Integer integer = buyGoodsTimes.get(goodsId); + } + } + + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index 8d2164619..3a7f69aaa 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -191,7 +191,7 @@ public class StoreLogic { int goodsNum = sStoreConfig.getGoods()[1]*itemNum; String reward = goodsId +"#"+goodsNum; CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt2(reward), BIReason.STORE_BUY_ITEM); - user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_MATERIAL,goodsId,goodsNum); + user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_MATERIAL,goodsId,itemNum); PlayerInfoProto.BuyStoreItemResponse builder = PlayerInfoProto.BuyStoreItemResponse.newBuilder().setDrop(drop).build(); MessageUtil.sendMessage(iSession, 1,msgId, builder, true); }