From 716567ab68c1e2b5ebe7110fa2beb53d7b59b41d Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Fri, 30 Aug 2019 13:51:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=91=E5=AE=9A=E6=89=8B=E6=9C=BA=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/config/SSpecialConfig.java | 61 +++++++++++++++++++ .../com/ljsd/jieling/globals/BIReason.java | 1 + .../jieling/handler/GetPlayerInfoHandler.java | 4 ++ .../phone/GetPhoneRewardRequestHandler.java | 40 ++++++++++++ .../phone/UpdatePhoneinfoRequestHandler.java | 36 +++++++++++ .../jieling/logic/GlobalDataManaager.java | 1 + .../ljsd/jieling/logic/dao/PhoneBindInfo.java | 26 ++++++++ .../ljsd/jieling/logic/dao/PlayerManager.java | 23 +++---- .../ljsd/jieling/logic/dao/UserManager.java | 1 + .../jieling/logic/player/PlayerLogic.java | 13 ++++ .../jieling/thread/task/RPCServerTask.java | 2 +- 11 files changed, 194 insertions(+), 14 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/config/SSpecialConfig.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/phone/GetPhoneRewardRequestHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/phone/UpdatePhoneinfoRequestHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PhoneBindInfo.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SSpecialConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SSpecialConfig.java new file mode 100644 index 000000000..28f190a68 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SSpecialConfig.java @@ -0,0 +1,61 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +@Table(name = "SpecialConfig") +public class SSpecialConfig implements BaseConfig { + + private static Map enumers; + private int id; + + private String key; + + private String value; + + public static final String PHONE_BINDING = "Phone_Binding"; + + @Override + public void init() throws Exception { + + Map config = STableManager.getConfig(SSpecialConfig.class); + Map stringStringMap = new ConcurrentHashMap<>(); + for (Map.Entry entry : config.entrySet()) { + SSpecialConfig sSpecialConfig = entry.getValue(); + stringStringMap.put(sSpecialConfig.getKey(), sSpecialConfig.getValue()); + } + enumers = stringStringMap; + } + + + public static String getStringValue(String key) { + String value = enumers.get(key); + return value; + } + + public static int getIntegerValue(String key) { + String value = enumers.get(key); + if(value==null){ + return -1; + } + return Integer.valueOf(value); + } + + + public int getId() { + return id; + } + + public String getKey() { + return key; + } + + public String getValue() { + return value; + } + + +} \ 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 52f2f8c38..b15f9895f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -77,6 +77,7 @@ public interface BIReason { int UPHERO_DECOMPOS_HERO_REWARD= 47 ;//进阶妖灵师返还奖励 int GM_CHANGENAME = 48; // gm改名赠送 + int BIND_PHONE = 49; // 修改手机号 //道具消耗原因 1000开头 int ADVENTURE_UPLEVEL_CONSUME = 1000; //秘境升级 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 e521d7ed6..e1a274478 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -93,6 +93,9 @@ public class GetPlayerInfoHandler extends BaseHandler{ .setHadTakeDailyBox(playerInfoManager.getHadTakeDailyBoxVip()) .setHadTakeLevelBox(playerInfoManager.getHadTakeLevelBoxVip()) .setVipLevel(playerInfoManager.getVipLevel()).build(); + CommonProto.PlayerBindPhone playerBindPhone = CommonProto.PlayerBindPhone.newBuilder() + .setPhoneNum(user.getPlayerInfoManager().getPhoneBindInfo().getPhoneNum()) + .setState(user.getPlayerInfoManager().getPhoneBindInfo().getState()).build(); RechargeInfo rechargeInfo = playerInfoManager.getRechargeInfo(); Map totalCountMap = user.getHeroManager().getTotalCount(); int alreadyCount =0; @@ -141,6 +144,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ .setFirstTenth(user.getHeroManager().getFirstTenth()) .setIsDayFirst(playerInfoManager.getIsdayFirst()) .setEndInfo(endless) + .setPlayerBindPhone(playerBindPhone) .build(); try { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/phone/GetPhoneRewardRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/phone/GetPhoneRewardRequestHandler.java new file mode 100644 index 000000000..33237a5d2 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/phone/GetPhoneRewardRequestHandler.java @@ -0,0 +1,40 @@ +package com.ljsd.jieling.handler.phone; + +import com.ljsd.jieling.config.SSpecialConfig; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.handler.BaseHandler; +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.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 org.springframework.stereotype.Component; + +@Component +public class GetPhoneRewardRequestHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.GET_PHONE_REWARD_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.GetPhoneRewardRequest proto) throws Exception { + + int reward = SSpecialConfig.getIntegerValue(SSpecialConfig.PHONE_BINDING); + if (-1 == reward) { + MessageUtil.sendErrorResponse(iSession, 0, MessageTypeProto.MessageType.GET_PHONE_REWARD_RESPONSE_VALUE, "手机号不合法"); + } + + int[] rewardIds = new int[1]; + rewardIds[0] = reward; + int uid = iSession.getUid(); + User user = UserManager.getUser(uid); + CommonProto.Drop.Builder drop = ItemUtil.drop(user,rewardIds, 1, 1, BIReason.BIND_PHONE); + + PlayerInfoProto.GetPhoneRewardResponse.Builder builder = PlayerInfoProto.GetPhoneRewardResponse.newBuilder().setDrop(drop); + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PHONE_REWARD_RESPONSE_VALUE,builder.build() , true); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/phone/UpdatePhoneinfoRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/phone/UpdatePhoneinfoRequestHandler.java new file mode 100644 index 000000000..f76549c25 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/phone/UpdatePhoneinfoRequestHandler.java @@ -0,0 +1,36 @@ +package com.ljsd.jieling.handler.phone; + +import com.ljsd.jieling.handler.BaseHandler; +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.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.util.MessageUtil; +import org.springframework.stereotype.Component; + +@Component +public class UpdatePhoneinfoRequestHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.UPDATE_PHONE_INFO_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.UpdatePhoneinfoRequest proto) throws Exception { + + if(!proto.getPhoneNum().matches("(1[3-9])\\d{9}")){ + MessageUtil.sendErrorResponse(iSession, 0, MessageTypeProto.MessageType.UPDATE_PHONE_INFO_RESPONSE_VALUE,"手机号不合法"); + return; + } + int uid = iSession.getUid(); + User user = UserManager.getUser(uid); + user.getPlayerInfoManager().getPhoneBindInfo().setPhoneNum(proto.getPhoneNum()); + if(user.getPlayerInfoManager().getPhoneBindInfo().getState()==0){ + user.getPlayerInfoManager().getPhoneBindInfo().setState(1); + } + PlayerInfoProto.UpdatePhoneinfoResponse.Builder builder = PlayerInfoProto.UpdatePhoneinfoResponse.newBuilder().setState( user.getPlayerInfoManager().getPhoneBindInfo().getState()); + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.UPDATE_PHONE_INFO_RESPONSE_VALUE,builder.build() , true); + + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index c34b4380c..37b1ff099 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -264,6 +264,7 @@ public class GlobalDataManaager { //活动刷新 ActivityLogic.getInstance().flushEveryDay(user,fBuilder); PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder); + PlayerLogic.getInstance().flushUserdataEvery(user,fBuilder); user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0); FriendLogic.getInstance().refreshState(session); int sendDays = user.getPlayerInfoManager().getSendDays(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PhoneBindInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PhoneBindInfo.java new file mode 100644 index 000000000..b84e4bc2d --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PhoneBindInfo.java @@ -0,0 +1,26 @@ +package com.ljsd.jieling.logic.dao; + +import com.ljsd.common.mogodb.MongoBase; + +public class PhoneBindInfo extends MongoBase { + private String phoneNum ; + private int state ;//本月绑定状态 0 未绑定 1已绑定未领奖 2已领奖 + + public String getPhoneNum() { + return phoneNum; + } + + public void setPhoneNum(String phoneNum) { + updateString("phoneNum",phoneNum); + this.phoneNum = phoneNum; + } + + public int getState() { + return state; + } + + public void setState(int state) { + updateString("state",state); + this.state = state; + } +} 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 7f036e593..03fc77af2 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 @@ -84,7 +84,7 @@ public class PlayerManager extends MongoBase { private int silence;//是否被禁言0为可发言,1为不可发言 - private Map onlineTimeOfDay = new HashMap<>(); // 20190808 + private PhoneBindInfo phoneBindInfo; public PlayerManager(){ this.setRootCollection(User._COLLECTION_NAME); @@ -440,7 +440,6 @@ public class PlayerManager extends MongoBase { public void addOnlineTime(long onlineTime) { this.onlineTime += onlineTime; - //setOnlineTimeOfDay(onlineTime); updateString("onlineTime", this.onlineTime); } @@ -462,13 +461,6 @@ public class PlayerManager extends MongoBase { this.sendDays = sendDays; } - private void setOnlineTimeOfDay(long time) { - int day= Integer.valueOf(TimeUtils.getTimeStampYMD(System.currentTimeMillis())); - this.onlineTimeOfDay.put(day,this.onlineTimeOfDay.getOrDefault(day,0L)+time); - updateString("onlineTimeOfDay", this.onlineTimeOfDay); - } - - public String getChannel() { return channel; } @@ -478,10 +470,6 @@ public class PlayerManager extends MongoBase { this.channel = channel; } - public Map getOnlineTimeOfDay() { - return onlineTimeOfDay; - } - public int getSilence() { return silence; } @@ -490,4 +478,13 @@ public class PlayerManager extends MongoBase { this.silence = silence; updateString("silence",silence); } + + public PhoneBindInfo getPhoneBindInfo() { + return phoneBindInfo; + } + + public void setPhoneBindInfo(PhoneBindInfo phoneBindInfo) { + updateString("phoneBindInfo",phoneBindInfo); + this.phoneBindInfo = phoneBindInfo; + } } 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 3f43c95aa..f2129573c 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 @@ -70,6 +70,7 @@ public class UserManager { playerManager.setSendDays(1); playerManager.updateVipInfo(user,0); playerManager.setRechargeInfo(new RechargeInfo()); + playerManager.setPhoneBindInfo(new PhoneBindInfo()); playerManager.setChannel(channel); playerManager.setHeadFrame(SGameSetting.getGameSetting().getDefaultPicture()); SPlayerLevelConfig sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(1); 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 a6baba298..c35b1576b 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 @@ -333,6 +333,19 @@ public class PlayerLogic { } + public void flushUserdataEvery(User user, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception { + + //跟新签到天数 + if (!TimeUtils.isSameMonthFiveWithNow(user.getPlayerInfoManager().getOffLineTime())) { + user.getPlayerInfoManager().getPhoneBindInfo().setState(0); + } + if(null!=fBuilder){ + PhoneBindInfo phoneBindInfo = user.getPlayerInfoManager().getPhoneBindInfo(); + fBuilder.setPlayerBindPhone(CommonProto.PlayerBindPhone.newBuilder().setPhoneNum(phoneBindInfo.getPhoneNum()).setState(phoneBindInfo.getState()).build()); + } + + } + public void modifyHeadFrame(ISession session, int frameId,MessageTypeProto.MessageType messageType) throws Exception { LOGGER.info("头像框id{}",frameId); User user = UserManager.getUser(session.getUid()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java index d5367ac68..21ddecc59 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java @@ -40,7 +40,7 @@ public class RPCServerTask extends Thread{ trArgs.processor(processor); TBinaryProtocol.Factory proFactory = new TBinaryProtocol.Factory(true, true); trArgs.protocolFactory(proFactory); - trArgs.maxWorkerThreads(4096); + trArgs.maxWorkerThreads(16); LOGGER.info("run->RPC services is starting."); final TServer server = new TThreadPoolServer(trArgs); while (true) {