diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index 683e37a79..72c45c50c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -73,12 +73,9 @@ public class GetPlayerInfoHandler extends BaseHandler{ int token = netData.getToken(); int msgId = netData.getMsgId(); int msgIndex = netData.getIndex(); - PlayerInfoProto.GetPlayerInfoRequest getPlayerInfoRequest - = PlayerInfoProto.GetPlayerInfoRequest.parseFrom(netData.parseClientProtoNetData()); - + PlayerInfoProto.GetPlayerInfoRequest getPlayerInfoRequest = PlayerInfoProto.GetPlayerInfoRequest.parseFrom(netData.parseClientProtoNetData()); LOGGER.info("processMessage->uid={},token={},msgId={},msgIndex={},messageNum={},messageStr={}", userId, token,msgId,msgIndex,getPlayerInfoRequest.getNum(),getPlayerInfoRequest.getStr()); - User user = UserManager.getUser(userId); QuestionLogic.getInstence().onLogin(user); PlayerManager playerInfoManager = user.getPlayerInfoManager(); @@ -199,8 +196,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ } // 开服时间戳 long openTime = TimeUtils.stringToTimeLong2(GameApplication.serverConfig.getOpenTime()); - PlayerInfoProto.GetPlayerInfoResponse getPlayerInfoResponse - = PlayerInfoProto.GetPlayerInfoResponse.newBuilder() + PlayerInfoProto.GetPlayerInfoResponse getPlayerInfoResponse = PlayerInfoProto.GetPlayerInfoResponse.newBuilder() .setPlayer(player) .addAllNewPlayerGuidePoint(list) .addAllPrivilege(privilegeList) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelRandHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelRandHandler.java index b3205c8fa..b52fa327a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelRandHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetLuckWheelRandHandler.java @@ -9,10 +9,7 @@ import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.handler.BaseHandler; import com.ljsd.jieling.jbean.LuckWheelMission; import com.ljsd.jieling.jbean.LuckWheelPosInfo; -import com.ljsd.jieling.logic.activity.AbstractActivity; -import com.ljsd.jieling.logic.activity.ActivityLogic; -import com.ljsd.jieling.logic.activity.ActivityTypeEnum; -import com.ljsd.jieling.logic.activity.LuckWheelActivity; +import com.ljsd.jieling.logic.activity.*; import com.ljsd.jieling.logic.activity.event.LuckWheelEvent; import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.UserManager; @@ -48,20 +45,19 @@ public class GetLuckWheelRandHandler extends BaseHandlercfgTime){ throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF,"不可超出每日探宝上限次数!"); @@ -82,7 +78,7 @@ public class GetLuckWheelRandHandler extends BaseHandlercfgTime){ throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF,"不可超出每日探宝上限次数!"); @@ -90,10 +86,11 @@ public class GetLuckWheelRandHandler extends BaseHandler map = new HashMap<>(); +} 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 c4e766fbf..203c6dbe3 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 @@ -116,7 +116,7 @@ public enum ActivityTypeEnum { INFINITE_RESOURCES_PAVILION(ActivityType.INFINITE_RESOURCES_PAVILION, InfiniteResourcesPavilionActivity::new),//无限资源阁 ALL_PEOPLE_WELFARE(ActivityType.ALL_PEOPLE_WELFARE, AllPeopleWelfareActivity::new),//全民福利 GIVE_ENDLESS_DRAW(ActivityType.GIVE_ENDLESS_DRAW, GiveEndlessDrawActivity::new),//送无限抽 - GM_DIAL(ActivityType.GM_DIAL, LuckWheelNormalActivity::new),//gm转盘 + GM_DIAL(ActivityType.GM_DIAL, GmDialActivity::new),//gm转盘 RECHARGE_FIRST(ActivityType.RECHARGE_FIRST, RechargeFirstActivity::new),//直充购买礼包活动 FREE_RECHARGE(ActivityType.FREE_RECHARGE, DefaultEmptyActivity::new),//免费充值,仙充 OPEN_SERVER_COMPETE_RANK(ActivityType.OPEN_SERVER_COMPETE_RANK, OpenServerCompeteRankActivity::new),//开服冲榜 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GmDialActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GmDialActivity.java new file mode 100644 index 000000000..6ae879f5d --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/GmDialActivity.java @@ -0,0 +1,30 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.logic.activity.event.LuckWheelEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +import com.ljsd.jieling.logic.dao.root.User; +import config.SGlobalActivity; + +/** + * 说明:gm转盘活动 + * + * @author ascend + * 2022/10/26 15:22:27 + */ +public class GmDialActivity extends LuckWheelNormalActivity{ + + GmDialActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, LuckWheelEvent.class); + } + + @Override + public void initActivity(User user) throws Exception { + super.initActivity(user); + SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id); + if (activity.getPrivilege() != 0){ + user.getPlayerInfoManager().addVipInfo(activity.getPrivilege()); + } + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java index 85daec7b4..203db578a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelActivity.java @@ -1,9 +1,6 @@ package com.ljsd.jieling.logic.activity; -import com.ljsd.jieling.jbean.ActivityMission; -import com.ljsd.jieling.jbean.ActivityProgressInfo; -import com.ljsd.jieling.jbean.LuckWheelMission; -import com.ljsd.jieling.jbean.LuckWheelPosInfo; +import com.ljsd.jieling.jbean.*; import com.ljsd.jieling.logic.activity.event.IEvent; import com.ljsd.jieling.logic.activity.event.LuckWheelEvent; import com.ljsd.jieling.logic.dao.UserManager; @@ -72,8 +69,8 @@ public abstract class LuckWheelActivity extends AbstractActivity { * 重置奖励 */ public void randomReward(User user) { - SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),sGlobalActivity.getId()); + ActivityManager activityManager = user.getActivityManager(); + LuckWheelMission luckWheelMission =ActivityLogic.getInstance().getLuckWheel(activityManager,id); Map> posPools = SDialRewardConfig.getsRandPosMap().get(id); for (int i = 1; i <= posPools.size(); i++) { LuckWheelPosInfo luckWheelPosInfo = new LuckWheelPosInfo(); @@ -90,6 +87,7 @@ public abstract class LuckWheelActivity extends AbstractActivity { luckWheelPosInfo.setLuckId(luckId); luckWheelMission.getPosInfoMap().put(i, luckWheelPosInfo); } + activityManager.putDialRewardInfo(id,luckWheelMission); } public static CommonProto.DialInfo getLuckWheelReward(User user, int activityId) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelAdvancedActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelAdvancedActivity.java index b60c432ab..f727ab18d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelAdvancedActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckWheelAdvancedActivity.java @@ -8,6 +8,7 @@ import com.ljsd.jieling.logic.activity.event.Poster; * Author: zsx * CreateDate: 2019/9/23 15:13 */ +@Deprecated public class LuckWheelAdvancedActivity extends LuckWheelActivity { public LuckWheelAdvancedActivity(int id) { 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 17e9b7e9d..9881d6677 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 @@ -598,37 +598,38 @@ public class PlayerManager extends MongoBase { } - public void addVipInfo(int privilageId){ - SPrivilegeTypeConfig config = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privilageId); + public void addVipInfo(int privilegeId){ + SPrivilegeTypeConfig config = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privilegeId); if (config==null){ return; } long maxTime; VipInfo newVipInfo = new VipInfo(); - if(config.getContinueTime()!=null&&config.getContinueTime().length>0){ - if(vipInfo.containsKey(privilageId)){ - if(config.getContinueTime()[1]==1&&TimeUtils.nowInt()0){ + + if(vipInfo.containsKey(privilegeId)){ + VipInfo info = vipInfo.get(privilegeId); + if(config.getContinueTime()[1]==1 && TimeUtils.nowInt()< info.getEffectTime()){ + boolean aBool = config.getCondition().length == 1 && config.getCondition()[0][0] == 0; + if(!aBool){ + newVipInfo.setCount(info.getCount()-config.getCondition()[0][1]); + newVipInfo.setEffectTime(info.getEffectTime()); + vipInfo.put(privilegeId,newVipInfo); updateString("vipInfo", this.vipInfo); - return; } + return; } - maxTime = TimeUtils.now()/1000>vipInfo.get(privilageId).getEffectTime()?(TimeUtils.now()/1000):vipInfo.get(privilageId).getEffectTime(); + maxTime = Math.max(TimeUtils.nowInt(), info.getEffectTime()); maxTime = maxTime+config.getContinueTime()[0]; }else { - maxTime = TimeUtils.now()/1000+config.getContinueTime()[0]; + maxTime = TimeUtils.nowInt()+config.getContinueTime()[0]; } maxTime = (int)(TimeUtils.getLastOrUnderHour(maxTime*1000,0,0,true)/1000); newVipInfo.setEffectTime((int)maxTime); } - this.vipInfo.put(privilageId,newVipInfo); + this.vipInfo.put(privilegeId,newVipInfo); updateString("vipInfo", this.vipInfo); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java index 694fcbc15..6985f9a41 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java @@ -146,6 +146,8 @@ public class UserManager { playerManager.updateVipInfo(GlobalsDef.VIP_UNLOCK_PRIVILEGE,0); playerManager.updateVipInfo(GlobalsDef.GOD_LV_UNLOCK,0); playerManager.updateVipInfo(GlobalsDef.RENOWN_LV_UNLOCK,0); + playerManager.updateVipInfo(GlobalsDef.BRUSHING_LV_UNLOCK,0); + playerManager.updateVipInfo(GlobalsDef.THE_ABSOLUTE_BEGINNING_LV_UNLOCK,0); playerManager.setNewRechargeInfo(new NewRechargeInfo()); playerManager.setPhoneBindInfo(new PhoneBindInfo("")); playerManager.setChannel(channel); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLog.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLog.java index f4750a776..c310a600b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLog.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLog.java @@ -1,10 +1,13 @@ package com.ljsd.jieling.logic.item; +import com.ljsd.jieling.logic.dao.Item; +import com.ljsd.jieling.logic.dao.root.User; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.index.CompoundIndex; import org.springframework.data.mongodb.core.index.CompoundIndexes; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; +import util.TimeUtils; @Document(collection="itemLog") @CompoundIndexes({@CompoundIndex(name = "uid_time_index", def = "{'uid': 1, 'time': 1}")}) @@ -43,6 +46,17 @@ public class ItemLog { this.itemTotalNum = itemTotalNum; } + public ItemLog(User user, int type, int reason, Item item, long itemNum) { + this.uid = user.getId(); + this.type = type; + this.level = user.getPlayerInfoManager().getLevel(); + this.time = String.valueOf(TimeUtils.now()); + this.reason = reason; + this.itemId = item.getItemId(); + this.itemTotalNum = item.getItemNum(); + this.itemNum = itemNum; + } + public String getId() { return id; } 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 1f010ac8b..6b8795440 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 @@ -711,13 +711,7 @@ public class PlayerLogic { CommonProto.TeamOneInfo.Builder oneInfo = null; if(sArenaRobotConfig!=null){ oneInfo = getYuxuRobotOneInfo(sArenaRobotConfig,info,crossTeamId); - }else{ - /*oneInfo = getUserTeamOneInfo(id, crossTeamId); - if(UserManager.getUser(id).getFriendManager().getMyApplyFriends().contains(id)){ - oneInfo.setIsApplyed(1); - }*/ } - //PlayerInfoProto.GetPlayerCrossYxldOneTeamInfoResponse.Builder playerTeamInfo = PlayerInfoProto.GetPlayerCrossYxldOneTeamInfoResponse.newBuilder().setTeamInfo(oneInfo); if (oneInfo != null) { return oneInfo.build(); } @@ -737,22 +731,10 @@ public class PlayerLogic { if (crossGroup == -1) { return CommonProto.TeamOneInfo.newBuilder(); } - //TODO - /*Map groupValues = RedisUtil.getInstence().getMapValues(RedisKey.SERVER_SPLIT_INFO, "", Integer.class, Integer.class); - List groupList = groupValues.entrySet().stream().filter(n -> n.getValue() == crossGroup).map(keyVal -> keyVal.getKey()).collect(Collectors.toList()); - int server = new Random().nextInt(groupList.size());*/ - CommonProto.TeamOneInfo.Builder oneInfo = CommonProto.TeamOneInfo.newBuilder() .setLevel(sArenaRobotConfig.getRobotLevel()) .setName(sArenaRobotConfig.getRobotName()) .setUid(sArenaRobotConfig.getId()).setCrossTeamScore(sArenaRobotConfig.getMsScroe()).setServerName(""); - - //CommonProto.TeamOneTeamInfo.Builder teamInfo = CommonProto.TeamOneTeamInfo.newBuilder(); - if(sArenaRobotConfig.getDifferDemonsId()!=null){ -// for(int pokenId:sArenaRobotConfig.getDifferDemonsId()){ -// teamInfo.addPokemonInfos(null); -// } - } //玉虚论道三队伍 for(int id :crossTeamId){ int position = 1; @@ -1438,119 +1420,166 @@ public class PlayerLogic { user.getPlayerInfoManager().setRideLevel(rideLevel+1); MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); } + + /** + * 检测特权 + * @param user + * @param privilegeTypeId + * @param checkNum + * @return + */ public boolean check(User user, int privilegeTypeId, int checkNum){ - Map vipInfo = user.getPlayerInfoManager().getVipInfo(); + return originCheck(user,privilegeTypeId,checkNum,0); + } + + /** + * 检测并消耗特权 + * @param user + * @param privilegeTypeId + * @param updateNum + * @return + */ + public boolean checkAndUpdate(User user, int privilegeTypeId, int updateNum){ + return originCheck(user,privilegeTypeId,updateNum,1); + } + + /** + * 特权原生校验端口 + * @param user + * @param privilegeTypeId + * @param updateNum + * @param operate 0:检查 1:检查并消耗 + * @return + */ + private boolean originCheck(User user, int privilegeTypeId, int updateNum, int operate){ if(privilegeTypeId == 0){ return true; } + Map vipInfo = user.getPlayerInfoManager().getVipInfo(); List sPrivilegeTypeConfigs = SPrivilegeTypeConfig.privilegeByType.get(privilegeTypeId); - List typePrivileges = new ArrayList<>(); for(SPrivilegeTypeConfig config:sPrivilegeTypeConfigs){ - if(!vipInfo.containsKey(config.getId())){ + int privilegeId = config.getId(); + VipInfo info = vipInfo.get(privilegeId); + if (info == null){ continue; } - typePrivileges.add(config.getId()); - } - if(typePrivileges.isEmpty()){ - return false; - } - for(Integer privilegeId:typePrivileges){ - VipInfo info = vipInfo.get(privilegeId); - if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){ + if(info.getEffectTime()!=0 && TimeUtils.nowInt()>info.getEffectTime()){ continue; } int mCount = getMaxCountByPrivilege(user,privilegeId); if(mCount==-1){ return true; } - if((info.getCount()+checkNum>mCount)|| (info.getEffectTime()!=0&&TimeUtils.nowInt()>info.getEffectTime())){ + if(info.getCount()+updateNum > mCount){ continue; } + if (operate == 1){ + user.getPlayerInfoManager().updateVipPrivilage(privilegeId, updateNum); + } return true; } return false; } - public boolean checkAndUpdate(User user, int privilegeTypeId, int updateNum){ - boolean check = check(user, privilegeTypeId, updateNum); - if (!check){ + /** + * 根据特权id检查并消耗特权 + * @param user + * @param privilegeId + * @param updateNum + * @param operate 0:检查 1:检查并消耗 + * @return + */ + public boolean checkOrUpPrivilegeId(User user, int privilegeId, int updateNum, int operate){ + if(privilegeId == 0){ return false; } + Map vipInfo = user.getPlayerInfoManager().getVipInfo(); + VipInfo info = vipInfo.get(privilegeId); + if (info == null){ + return false; + } + if(info.getEffectTime()!=0 && TimeUtils.nowInt()>info.getEffectTime()){ + return false; + } + int mCount = getMaxCountByPrivilege(user,privilegeId); + if(mCount == -1){ + return true; + } + if(info.getCount()+updateNum > mCount){ + return false; + } + if (operate == 1){ + user.getPlayerInfoManager().updateVipPrivilage(privilegeId, updateNum); + } + return true; + } + /** + * 消耗完所有特权次数 + * @param user + * @param privilegeTypeId + * @return + */ + public int checkAndConsumeAllPrivilegeTimes(User user, int privilegeTypeId){ Map vipInfo = user.getPlayerInfoManager().getVipInfo(); if(privilegeTypeId == 0){ - return true; + return 0; } List sPrivilegeTypeConfigs = SPrivilegeTypeConfig.privilegeByType.get(privilegeTypeId); - List typePrivileges = new ArrayList<>(); - for(SPrivilegeTypeConfig config:sPrivilegeTypeConfigs){ - if(!vipInfo.containsKey(config.getId())){ - continue; - } - typePrivileges.add(config.getId()); - } - if(typePrivileges.isEmpty()){ - return false; - } - for(Integer privilageId:typePrivileges){ - VipInfo info = vipInfo.get(privilageId); - if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){ - continue; - } - int mCount = getMaxCountByPrivilege(user,privilageId); - if(mCount==-1){ - return true; - } - if((info.getCount()+updateNum>mCount)|| (info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime())){ - continue; - } - user.getPlayerInfoManager().updateVipPrivilage(privilageId, updateNum); - return true; - } - return false; - } - //消耗完所有特权次数 - public int checkAndConsumeAllPrivilegeTimes(User user, int privilageTypeId){ - Map vipInfo = user.getPlayerInfoManager().getVipInfo(); - if(privilageTypeId == 0){ - return 0; - } - List sPrivilegeTypeConfigs = SPrivilegeTypeConfig.privilegeByType.get(privilageTypeId); - List typePrivileges = new ArrayList<>(); - for(SPrivilegeTypeConfig config:sPrivilegeTypeConfigs){ - if(!vipInfo.containsKey(config.getId())){ - continue; - } - typePrivileges.add(config.getId()); - } - if(typePrivileges.isEmpty()){ - return 0; - } + int levelUpdateCount = 0; - for(Integer privilageId:typePrivileges){ - VipInfo info = vipInfo.get(privilageId); - if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){ + for(SPrivilegeTypeConfig config:sPrivilegeTypeConfigs){ + int privilegeId = config.getId(); + VipInfo info = vipInfo.get(privilegeId); + if (info == null){ continue; } - int mCount = getMaxCountByPrivilege(user,privilageId); - if(mCount==-1){ + if(info.getEffectTime()!=0 && TimeUtils.nowInt()>info.getEffectTime()){ + continue; + } + int mCount = getMaxCountByPrivilege(user,privilegeId); + if(mCount == -1){ return 0; } if(info.getCount()>= mCount){ continue; } - if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){ - continue; - } - levelUpdateCount+=mCount-info.getCount(); - user.getPlayerInfoManager().updateVipPrivilage(privilageId, mCount-info.getCount()); + int num = mCount - info.getCount(); + user.getPlayerInfoManager().updateVipPrivilage(privilegeId, num); + + levelUpdateCount+=num; } return levelUpdateCount; } + + /** + * 根据特权类型获取相关特权的上限数量总和 + * @param user + * @param privilegeType + * @return + */ + public int getMaxCountByPrivilegeType(User user ,int privilegeType){ + List sPrivilegeTypeConfigs = SPrivilegeTypeConfig.privilegeByType.get(privilegeType); + Map vipInfo = user.getPlayerInfoManager().getVipInfo(); + int maxCount = 0; + for(SPrivilegeTypeConfig config:sPrivilegeTypeConfigs){ + int id = config.getId(); + if(!vipInfo.containsKey(id)){ + continue; + } + maxCount += getMaxCountByPrivilege(user,id); + } + return maxCount; + } + + /** + * 根据特权id获取最大数量 + * @param user + * @param privilegeId + * @return + */ private int getMaxCountByPrivilege(User user,int privilegeId){ SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privilegeId); - Map> conditionMap = SPrivilegeTypeConfig.conditionMap.get(sPrivilegeTypeConfig.getUnlockType()); - int mCount; int cond = 0; switch (sPrivilegeTypeConfig.getUnlockType()){ case GlobalsDef.LEVEL_UNLOCK_PRIVILEGE: @@ -1582,41 +1611,29 @@ public class PlayerLogic { break; } } - TreeMap condition = (TreeMap)conditionMap.get(privilegeId); - if(sPrivilegeTypeConfig.getUnlockType()==GlobalsDef.RECHARGE_UNLOCK_PRIVILEGE){ - mCount = condition.get(0); - } - else if(sPrivilegeTypeConfig.getUnlockType()==GlobalsDef.WEEKCARD_UNLOCK){ - if (cond == -1){ - mCount = 0; - }else { + + Map> conditionMap = SPrivilegeTypeConfig.conditionMap.get(sPrivilegeTypeConfig.getUnlockType()); + TreeMap condition = new TreeMap<>(conditionMap.get(privilegeId)); + int mCount; + switch (sPrivilegeTypeConfig.getUnlockType()){ + case GlobalsDef.RECHARGE_UNLOCK_PRIVILEGE: mCount = condition.get(0); - } - }else { - mCount = condition.floorEntry(cond).getValue(); + break; + case GlobalsDef.WEEKCARD_UNLOCK: + mCount = cond==-1?0:condition.get(0); + break; + default: + mCount = condition.floorEntry(cond).getValue(); + break; } return mCount; } - public int getMaxCountByPrivilegeType(User user ,int privilegeType){ - List sPrivilegeTypeConfigs = SPrivilegeTypeConfig.privilegeByType.get(privilegeType); - List typePrivileges = new ArrayList<>(); - Map vipInfo = user.getPlayerInfoManager().getVipInfo(); - for(SPrivilegeTypeConfig config:sPrivilegeTypeConfigs){ - if(!vipInfo.containsKey(config.getId())){ - continue; - } - typePrivileges.add(config.getId()); - } - if(typePrivileges.isEmpty()){ - return 0; - } - int maxCount = 0; - for(Integer privilageId:typePrivileges){ - maxCount+=getMaxCountByPrivilege(user,privilageId); - } - return maxCount; - } + /** + * 获取月卡信息 + * @param user + * @return + */ public List getMonthCardInfo(User user) { List cardInfos = new LinkedList<>(); PlayerManager playerInfoManager = user.getPlayerInfoManager(); @@ -1642,6 +1659,11 @@ public class PlayerLogic { return cardInfos; } + /** + * 处理旧月卡 + * @param user + * @throws Exception + */ public void checkOldMonthCard(User user) throws Exception { PlayerManager playerInfoManager = user.getPlayerInfoManager(); if (playerInfoManager.getOldMonthCardMark() == 1){ 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 cfd5f8f36..0a3af7cfe 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -774,7 +774,7 @@ public class ItemUtil { user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,(int)itemNum,user); } //日志记录 - ItemLogic.getInstance().addItemLog(new ItemLog(user.getId(),0,user.getPlayerInfoManager().getLevel(),String.valueOf(TimeUtils.now()),reason,sItem.getId(),itemNum,item.getItemNum())); + ItemLogic.getInstance().addItemLog(new ItemLog(user,0,reason,item,itemNum)); } //发送装备图鉴修改推送 SendEquipBookIndication(user.getId(),itemManager,changeEquipList); @@ -821,7 +821,7 @@ public class ItemUtil { Map extraItem = new HashMap<>(itemMap.size()); ListchangeEquipList=null; for (Map.Entry entry : itemMap.entrySet()) { - SItem sItem = SItem.getsItemMap().get (entry.getKey()); + SItem sItem = SItem.getsItemMap().get(entry.getKey()); if (sItem.getItemBaseType()==6){ equipManager.addEquipList(entry.getKey()); } @@ -907,7 +907,7 @@ public class ItemUtil { user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,itemNum,user); } //日志记录 - ItemLogic.getInstance().addItemLog(new ItemLog(user.getId(),0,user.getPlayerInfoManager().getLevel(),String.valueOf(TimeUtils.now()),reason,sItem.getId(),itemNum,item.getItemNum())); + ItemLogic.getInstance().addItemLog(new ItemLog(user,0,reason,item,itemNum)); } //发送装备图鉴修改推送 @@ -1170,7 +1170,7 @@ public class ItemUtil { myItem.setItemNum(myItem.getItemNum() - needCount); KtEventUtils.onKtEvent(user, eventType,reason,GlobalsDef.subReason,myItem.getItemId(),needCount,myItem.getItemNum()); } - ItemLogic.getInstance().addItemLog(new ItemLog(user.getId(),1,user.getPlayerInfoManager().getLevel(),String.valueOf(TimeUtils.now()),reason,myItem.getItemId(),needCount,myItem.getItemNum())); + ItemLogic.getInstance().addItemLog(new ItemLog(user,1,reason,myItem,needCount)); sendToFront.add(CBean2Proto.getItem(myItem,-1)); } diff --git a/tablemanager/src/main/java/config/SGlobalActivity.java b/tablemanager/src/main/java/config/SGlobalActivity.java index 49be08452..ddcf7d2a9 100644 --- a/tablemanager/src/main/java/config/SGlobalActivity.java +++ b/tablemanager/src/main/java/config/SGlobalActivity.java @@ -49,6 +49,8 @@ public class SGlobalActivity implements BaseConfig { private int isOpen; + private int privilege; + public static Map> sGlobalActivityMapByType; public static Map> sGlobalActivityMapByOpenRules; @@ -235,4 +237,8 @@ public class SGlobalActivity implements BaseConfig { public int getIsOpen() { return isOpen; } + + public int getPrivilege() { + return privilege; + } } \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java b/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java index 4d2ddc4dd..b6ab6e031 100644 --- a/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java +++ b/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java @@ -24,27 +24,29 @@ public class SPrivilegeTypeConfig implements BaseConfig { private int[] continueTime; - private static Map sPrivilegeTypeConfigMap; + private static Map sPrivilegeTypeConfigMap = new HashMap<>(); - public static Map>> conditionMap; + public static Map>> conditionMap = new HashMap<>(); - public static Map> privilegeByType; + public static Map> privilegeByType = new HashMap<>(); @Override public void init() throws Exception { sPrivilegeTypeConfigMap = STableManager.getConfig(SPrivilegeTypeConfig.class); - conditionMap = new HashMap<>(); + conditionMap = new HashMap<>(); privilegeByType = new HashMap<>(); for (Map.Entry entry:sPrivilegeTypeConfigMap.entrySet()){ - privilegeByType.computeIfAbsent(entry.getValue().getPrivilegeType(),n->new ArrayList<>()).add(entry.getValue()); - conditionMap.computeIfAbsent(entry.getValue().getUnlockType(),n->new HashMap<>()).computeIfAbsent(entry.getKey(),n->new TreeMap<>()); - if(entry.getValue().getCondition()!=null){ - for(int[] cond:entry.getValue().getCondition()){ - if(entry.getValue().getUnlockType()==2) { - cond[0] = 10_000_000 * (cond[0] % 10) + cond[0]; - } - conditionMap.get(entry.getValue().getUnlockType()).get(entry.getKey()).put(cond[0],cond[1]); + SPrivilegeTypeConfig value = entry.getValue(); + privilegeByType.computeIfAbsent(value.getPrivilegeType(), n->new ArrayList<>()).add(value); + conditionMap.computeIfAbsent(value.getUnlockType(), n->new HashMap<>()).computeIfAbsent(entry.getKey(), n->new TreeMap<>()); + if(value.getCondition() == null){ + continue; + } + for(int[] cond: value.getCondition()){ + if(value.getUnlockType()==2) { + cond[0] = 10_000_000 * (cond[0] % 10) + cond[0]; } + conditionMap.get(value.getUnlockType()).get(entry.getKey()).put(cond[0],cond[1]); } } }