diff --git a/conf/server/HeroConfig.txt b/conf/server/HeroConfig.txt index 5417406e7..8a339031d 100644 --- a/conf/server/HeroConfig.txt +++ b/conf/server/HeroConfig.txt @@ -54,4 +54,4 @@ int int int int int int float float float float float mut,int#int,2 mut,int#int, 52 2052 0 0 4 10 1834 140 0 220 176 10100#10|10101#20 null 53 2053 0 0 4 10 1943 135 219 0 176 10100#10|10101#20 null 54 2054 0 0 4 10 1630 169 0 176 163 10100#10|10101#20 null -55 2055 0 0 4 10 1508 205 163 0 194 10100#10|10101#20 null \ No newline at end of file +55 2055 0 0 4 10 1508 205 163 0 194 10100#10|10101#20 null diff --git a/serverlogic/build.gradle b/serverlogic/build.gradle index 1985c46f4..a518a3c10 100644 --- a/serverlogic/build.gradle +++ b/serverlogic/build.gradle @@ -27,6 +27,7 @@ dependencies { compile("com.google.protobuf:protobuf-java:2.5.0") compile("com.fasterxml.jackson.core:jackson-core:2.3.1") compile("com.fasterxml.jackson.core:jackson-databind:2.3.3") + compile group: 'com.google.code.gson', name: 'gson', version: '2.2.4' compile files("${System.properties['java.home']}/../lib/tools.jar") } diff --git a/serverlogic/src/main/java/com/ljsd/GameApplication.java b/serverlogic/src/main/java/com/ljsd/GameApplication.java index 24025aaee..fd4c0b552 100644 --- a/serverlogic/src/main/java/com/ljsd/GameApplication.java +++ b/serverlogic/src/main/java/com/ljsd/GameApplication.java @@ -62,7 +62,7 @@ public class GameApplication { RedisUtil.getInstence().init(configurableApplicationContext); - STableManager.initialize("com.ljsd.jieling.config"); +// STableManager.initialize("com.ljsd.jieling.config"); UserManager.init(configurableApplicationContext); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SCHeroRankUpConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SCHeroRankUpConfig.java new file mode 100644 index 000000000..579a0e938 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SCHeroRankUpConfig.java @@ -0,0 +1,74 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.Map; + +@Table(name = "HeroRankupConfig") +public class SCHeroRankUpConfig implements BaseConfig{ + public static Map scHeroRankUpConfigMap; + + private int id; + + private int type; + + private float rankupPara; + + private int limitLevel; + + private int openLevel; + + private int limitStar; + + private int openStar; + + private int consumeMaterial[]; + + private int[] consumeCard[]; + + @Override + public void init() throws Exception { + scHeroRankUpConfigMap = STableManager.getConfig(SCHeroRankUpConfig.class); + } + + public static Map getScHeroRankUpConfigMap() { + return scHeroRankUpConfigMap; + } + + public int getId() { + return id; + } + + public int getType() { + return type; + } + + public float getRankupPara() { + return rankupPara; + } + + public int getLimitLevel() { + return limitLevel; + } + + public int getOpenLevel() { + return openLevel; + } + + public int getLimitStar() { + return limitStar; + } + + public int getOpenStar() { + return openStar; + } + + public int[] getConsumeMaterial() { + return consumeMaterial; + } + + public int[][] getConsumeCard() { + return consumeCard; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SHeroLevlConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SHeroLevlConfig.java new file mode 100644 index 000000000..b64b0fe9f --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SHeroLevlConfig.java @@ -0,0 +1,45 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.Map; + +@Table(name = "HeroLevelConfig") +public class SHeroLevlConfig implements BaseConfig{ + + public static Map sHeroLevlConfigMap; + + private int id; + + private int level; + + private float characterLevelPara; + + @Override + public void init() throws Exception { + sHeroLevlConfigMap = STableManager.getConfig(SHeroLevlConfig.class); + + } + + + public static Map getsCHero() { + return sHeroLevlConfigMap; + } + + public int getId() { + return id; + } + + public int getLevel() { + return level; + } + + public static Map getsHeroLevlConfigMap() { + return sHeroLevlConfigMap; + } + + public float getCharacterLevelPara() { + return characterLevelPara; + } +} 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 new file mode 100644 index 000000000..cb0792623 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -0,0 +1,26 @@ +package com.ljsd.jieling.db.redis; + +public class RedisKey { + + private final static String Delimiter_colon = ":"; + + private final static String areaId = "0"; + + public static final String TOKEN = "JL_TOKEN"; + + /** + * 最近登录服务器列表 + */ + public static final String USER_SERVER_INFO = "JL_USER_SERVER_INFO"; + + + + + public static String getKey(String type, String key, boolean withServerId) { + if (withServerId) { + return areaId + Delimiter_colon + type + Delimiter_colon + String.valueOf(key); + } else { + return type + Delimiter_colon + String.valueOf(key); + } + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java index 839eb9831..085015045 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.db.redis; +import com.google.gson.Gson; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.data.redis.core.StringRedisTemplate; @@ -15,6 +16,8 @@ import java.util.concurrent.TimeUnit; public class RedisUtil { + private Gson gson = new Gson(); + private RedisUtil() { } @@ -195,12 +198,12 @@ public class RedisUtil { * * @param key * 键 不能为null - * @param item + * @param mapKey * 项 不能为null * @return 值 */ - public Object hget(String key, String item) { - return redisTemplate.opsForHash().get(key, item); + public Object hget(String key, String mapKey) { + return redisTemplate.opsForHash().get(key, mapKey); } /** @@ -262,15 +265,18 @@ public class RedisUtil { * * @param key * 键 - * @param item + * @param mapKey * 项 * @param value * 值 * @return true 成功 false失败 */ - public boolean hset(String key, String item, Object value) { + public boolean hset(String key, String mapKey, Object value) { try { - redisTemplate.opsForHash().put(key, item, value); + if (!(value instanceof String)){ + value = gson.toJson(value); + } + redisTemplate.opsForHash().put(key, mapKey, value); return true; } catch (Exception e) { e.printStackTrace(); @@ -283,7 +289,7 @@ public class RedisUtil { * * @param key * 键 - * @param item + * @param mapKey * 项 * @param value * 值 @@ -291,9 +297,12 @@ public class RedisUtil { * 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间 * @return true 成功 false失败 */ - public boolean hset(String key, String item, Object value, long time) { + public boolean hset(String key, String mapKey, Object value, long time) { try { - redisTemplate.opsForHash().put(key, item, value); + if (!(value instanceof String)){ + value = gson.toJson(value); + } + redisTemplate.opsForHash().put(key, mapKey, value); if (time > 0) { expire(key, time); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/DrawHeroHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/DrawHeroHandler.java new file mode 100644 index 000000000..9f229b023 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/DrawHeroHandler.java @@ -0,0 +1,95 @@ +package com.ljsd.jieling.handler; + +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.HeroInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.util.MessageUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +public class DrawHeroHandler extends BaseHandler { + + private static final Logger LOGGER = LoggerFactory.getLogger(DrawHeroHandler.class); + + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.DRAW_HERO_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + int userId = netData.getUserId(); + int token = netData.getToken(); + int msgId = netData.getMsgId(); + int msgIndex = netData.getIndex(); + HeroInfoProto.DrawHeroRequest request + = HeroInfoProto.DrawHeroRequest.parseFrom(netData.parseClientProtoNetData()); + LOGGER.info("processMessage->uid={},token={},msgId={},msgIndex={},messageNum={},messageStr={}", + userId, token,msgId,msgIndex,request.getType(),request.getStr()); + + + List heroList = new ArrayList<>(); + CommonProto.Hero hero1 = CommonProto.Hero.newBuilder() + .setId("aaa") + .setHeroId(1) + .setAttack(2) + .setStar(2) + .setHeroType(1) + .setLevel(1) + .setHp(1000) + .setMDefence(2000) + .setPDefence(3000) + .setSpeed(4000) + .build(); + + CommonProto.Hero hero2 = CommonProto.Hero.newBuilder() + .setId("bbb") + .setHeroId(2) + .setAttack(2) + .setStar(2) + .setHeroType(1) + .setLevel(1) + .setHp(1000) + .setMDefence(2000) + .setPDefence(3000) + .setSpeed(4000) + .build(); + + CommonProto.Hero hero3 = CommonProto.Hero.newBuilder() + .setId("ccc") + .setHeroId(3) + .setAttack(2) + .setStar(2) + .setHeroType(1) + .setLevel(1) + .setHp(1000) + .setMDefence(2000) + .setPDefence(3000) + .setSpeed(4000) + .build(); + + heroList.add(hero1); + heroList.add(hero2); + heroList.add(hero3); + + HeroInfoProto.DrawHeroResponse build + = HeroInfoProto.DrawHeroResponse.newBuilder() + .addAllHeroList(heroList) + .build(); + + try { + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.DRAW_HERO_RESPONSE_VALUE, build, true); + LOGGER.info("back to client!"); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java index 0ec01ed2b..2eb6b3716 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java @@ -24,7 +24,7 @@ public class GMRequestHandler extends BaseHandler{ @Override public MessageTypeProto.MessageType getMessageCode() { - return MessageTypeProto.MessageType.GM_COMMAND; + return MessageTypeProto.MessageType.GM_REQUEST; } @Override public void process(ISession iSession, PacketNetData netData) throws Exception { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllHerosHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllHerosHandler.java new file mode 100644 index 000000000..015a65b7d --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllHerosHandler.java @@ -0,0 +1,96 @@ +package com.ljsd.jieling.handler; + +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.HeroInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.util.MessageUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +public class GetAllHerosHandler extends BaseHandler{ + private static final Logger LOGGER = LoggerFactory.getLogger(GetAllHerosHandler.class); + + + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.GET_HEROINFO_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + int userId = netData.getUserId(); + int token = netData.getToken(); + int msgId = netData.getMsgId(); + int msgIndex = netData.getIndex(); + byte[] message = netData.parseClientProtoNetData(); + HeroInfoProto.GetHeroListInfoRequest getHeroInfoRequest + = HeroInfoProto.GetHeroListInfoRequest.parseFrom(message); + LOGGER.info("processMessage->uid={},token={},msgId={},msgIndex={},messageNum={},messageStr={}", + userId, token,msgId,msgIndex,getHeroInfoRequest.getNum(),getHeroInfoRequest.getStr()); + + // // SCHero scHero = SCHero.getsCHero().get(1); + + List heroList = new ArrayList<>(); + CommonProto.Hero hero1 = CommonProto.Hero.newBuilder() + .setId("aaa") + .setHeroId(1) + .setAttack(2) + .setStar(2) + .setHeroType(1) + .setLevel(1) + .setHp(1000) + .setMDefence(2000) + .setPDefence(3000) + .setSpeed(4000) + .build(); + + CommonProto.Hero hero2 = CommonProto.Hero.newBuilder() + .setId("bbb") + .setHeroId(2) + .setAttack(2) + .setStar(2) + .setHeroType(1) + .setLevel(1) + .setHp(1000) + .setMDefence(2000) + .setPDefence(3000) + .setSpeed(4000) + .build(); + + CommonProto.Hero hero3 = CommonProto.Hero.newBuilder() + .setId("ccc") + .setHeroId(3) + .setAttack(2) + .setStar(2) + .setHeroType(1) + .setLevel(1) + .setHp(1000) + .setMDefence(2000) + .setPDefence(3000) + .setSpeed(4000) + .build(); + + heroList.add(hero1); + heroList.add(hero2); + heroList.add(hero3); + + HeroInfoProto.GetHeroListInfoResponse build + = HeroInfoProto.GetHeroListInfoResponse.newBuilder() + .addAllHeroList(heroList) + .build(); + + try { + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_HEROINFO_RESPONSE_VALUE, build, true); + LOGGER.info("back to client!"); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllItemHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllItemHandler.java index b87ed6d2e..c7aef8294 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllItemHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllItemHandler.java @@ -2,12 +2,17 @@ package com.ljsd.jieling.handler; import com.ljsd.jieling.netty.cocdex.PacketNetData; 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.MessageUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; + @Component public class GetAllItemHandler extends BaseHandler { @@ -24,11 +29,41 @@ public class GetAllItemHandler extends BaseHandler { int token = netData.getToken(); int msgId = netData.getMsgId(); int msgIndex = netData.getIndex(); - PlayerInfoProto.PlayerInfo.GetItemInfoRequest getItemInfoRequest - = PlayerInfoProto.PlayerInfo.GetItemInfoRequest.parseFrom(netData.parseClientProtoNetData()); + PlayerInfoProto.GetItemInfoRequest getItemInfoRequest + = PlayerInfoProto.GetItemInfoRequest.parseFrom(netData.parseClientProtoNetData()); + LOGGER.info("processMessage->uid={},token={},msgId={},msgIndex={},messageNum={},messageStr={}", + userId, token,msgId,msgIndex,getItemInfoRequest.getNum(),getItemInfoRequest.getStr()); + + List itemList = new ArrayList<>(); + CommonProto.Item item1 = CommonProto.Item.newBuilder() + .setItemId(1) + .setItemNum(111) + .build(); + CommonProto.Item item2 = CommonProto.Item.newBuilder() + .setItemId(2) + .setItemNum(222) + .build(); + CommonProto.Item item3 = CommonProto.Item.newBuilder() + .setItemId(3) + .setItemNum(333) + .build(); + itemList.add(item1); + itemList.add(item2); + itemList.add(item3); +// User user = UserManager.getUserForLogin(userId); +// List itemList = ItemUtil.getAllItem(user); + PlayerInfoProto.GetItemInfoResponse getItemInfoResponse = PlayerInfoProto.GetItemInfoResponse.newBuilder() + .addAllItemlist(itemList) + .build(); + try { + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_ITEMINFO_RESPONSE_VALUE, getItemInfoResponse, true); + LOGGER.info("back to client!"); + } catch (Exception e) { + e.printStackTrace(); + } } } 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 e09baa8bc..fa2eef86b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -1,5 +1,6 @@ package com.ljsd.jieling.handler; +import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.dao.User; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.netty.cocdex.PacketNetData; @@ -30,18 +31,18 @@ public class GetPlayerInfoHandler extends BaseHandler{ int token = netData.getToken(); int msgId = netData.getMsgId(); int msgIndex = netData.getIndex(); - PlayerInfoProto.PlayerInfo.GetPlayerInfoRequest getPlayerInfoRequest - = PlayerInfoProto.PlayerInfo.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.getUserForLogin(userId); - CommonProto.Common.Player player = CBean2Proto.getPlayer(userId, user.getPlayerInfoManager()); + CommonProto.Player player = CBean2Proto.getPlayer(userId, user.getPlayerInfoManager()); - PlayerInfoProto.PlayerInfo.GetPlayerInfoResponse getPlayerInfoResponse - = PlayerInfoProto.PlayerInfo.GetPlayerInfoResponse.newBuilder() + PlayerInfoProto.GetPlayerInfoResponse getPlayerInfoResponse + = PlayerInfoProto.GetPlayerInfoResponse.newBuilder() .setPlayer(player) .build(); try { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/LoginRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/LoginRequestHandler.java index ae8bc9e25..2787394cb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/LoginRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/LoginRequestHandler.java @@ -4,7 +4,6 @@ import com.ljsd.jieling.logic.dao.User; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.netty.cocdex.PacketNetData; 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.MessageUtil; @@ -30,18 +29,35 @@ public class LoginRequestHandler extends BaseHandler { int msgId = netData.getMsgId(); int msgIndex = netData.getIndex(); byte[] message = netData.parseClientProtoNetData(); - PlayerInfoProto.PlayerInfo.GetPlayerInfoRequest getPlayerInfoRequest - = PlayerInfoProto.PlayerInfo.GetPlayerInfoRequest.parseFrom(message); + PlayerInfoProto.LoginRequest loginRequest + = PlayerInfoProto.LoginRequest.parseFrom(message); LOGGER.info("processMessage->uid={},token={},msgId={},msgIndex={},messageNum={},messageStr={}", - userId, token,msgId,msgIndex,getPlayerInfoRequest.getNum(),getPlayerInfoRequest.getStr()); - //TODO - User userForLogin = UserManager.getUserForLogin(userId); + userId, token,msgId,msgIndex,loginRequest.getNum(),loginRequest.getStr()); - PlayerInfoProto.PlayerInfo.LoginResponse loginResponse - = PlayerInfoProto.PlayerInfo.LoginResponse.newBuilder() + //登陆注册入内存 + User user = UserManager.userLogin(userId); + user.getPlayerInfoManager().setOpenId(loginRequest.getOpenId()); + +// UserServerInfo userServerInfo = new UserServerInfo(user.getPlayerInfoManager()); +// String key = RedisKey.getKey(RedisKey.USER_SERVER_INFO,loginRequest.getOpenId(),false); +// RedisUtil.getInstence().hset(key,10086+"", userServerInfo); +// +// UserServerInfo userServerInfo1 = new UserServerInfo(user.getPlayerInfoManager()); +// RedisUtil.getInstence().hset(key,10087+"", userServerInfo1); +// +// UserServerInfo userServerInfo2 = new UserServerInfo(user.getPlayerInfoManager()); +// RedisUtil.getInstence().hset(key,10088+"", userServerInfo2); + +// Map userServerInfoMap = RedisUtil.getInstence().hget(RedisKey.USER_SERVER_INFO, loginRequest.getOpenId(), UserServerInfo.class, -1, false); + + String newToken = UserManager.getNewToken(userId); + + PlayerInfoProto.LoginResponse loginResponse + = PlayerInfoProto.LoginResponse.newBuilder() .setResultCode(0) - .setNewToken("123456") + .setNewToken(newToken) .build(); + try { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.LOGIN_RESPONSE_VALUE, loginResponse, true); LOGGER.info("back to client!"); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapEnterRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapEnterRequestHandler.java index 65df67fce..d896cb0c6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapEnterRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapEnterRequestHandler.java @@ -17,7 +17,7 @@ public class MapEnterRequestHandler extends BaseHandler{ @Override public void process(ISession iSession, PacketNetData netData) throws Exception { byte[] message = netData.parseClientProtoNetData(); - MapInfoProto.MapInfo.MapEnterRequest mapEnterRequest = MapInfoProto.MapInfo.MapEnterRequest.parseFrom(message); + MapInfoProto.MapEnterRequest mapEnterRequest = MapInfoProto.MapEnterRequest.parseFrom(message); MapLogic.getInstance().enterMap(iSession, mapEnterRequest.getMapId(), MessageTypeProto.MessageType.MAP_ENTER_RESPONSE); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapGetInfoRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapGetInfoRequestHandler.java index 909237246..fe975d1e2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapGetInfoRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapGetInfoRequestHandler.java @@ -21,7 +21,7 @@ public class MapGetInfoRequestHandler extends BaseHandler { public void process(ISession iSession, PacketNetData netData) throws Exception { int uid = iSession.getUid(); User user = UserManager.getUser(uid); - MapInfoProto.MapInfo.MapGetInfoResponse mapGetInfoResponse = MapInfoProto.MapInfo.MapGetInfoResponse + MapInfoProto.MapGetInfoResponse mapGetInfoResponse = MapInfoProto.MapGetInfoResponse .newBuilder() .setMapId(user.getMapManager().getCurMapId()) .build(); 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 e36ed0090..712098f7f 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 @@ -1,7 +1,7 @@ package com.ljsd.jieling.handler.map; -import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.config.SCMap; +import com.ljsd.jieling.config.SCMapEventsConfig; import com.ljsd.jieling.config.SCMapEventsItemConfig; import com.ljsd.jieling.logic.dao.MapManager; import com.ljsd.jieling.logic.dao.User; @@ -11,7 +11,6 @@ import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MapInfoProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.util.MessageUtil; -import com.ljsd.jieling.config.SCMapEventsConfig; import com.ljsd.jieling.util.ToolsUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,19 +64,20 @@ public class MapLogic { user.setMapManager(mapManager); } } - List cells = new ArrayList<>(mapManager.getMapInfo().size()); + + List cells = new ArrayList<>(mapManager.getMapInfo().size()); for (Map.Entry entry : mapManager.getMapInfo().entrySet()) { - List cellEvents = new ArrayList<>(); + List cellEvents = new ArrayList<>(); Cell cell = entry.getValue(); for (Map.Entry cellEntry : cell.getEventIds().entrySet()) { - CommonProto.Common.CellEvent cellEvent = CommonProto.Common.CellEvent + CommonProto.CellEvent cellEvent = CommonProto.CellEvent .newBuilder() .setEventId(cellEntry.getKey()) .setState(cellEntry.getValue()) .build(); cellEvents.add(cellEvent); } - CommonProto.Common.Cell cellProto = CommonProto.Common.Cell + CommonProto.Cell cellProto = CommonProto.Cell .newBuilder() .setCellId(entry.getKey()) .addAllCellEvents(cellEvents) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/CalHeroFinalAttri.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/CalHeroFinalAttri.java new file mode 100644 index 000000000..3f9c2a9e2 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/CalHeroFinalAttri.java @@ -0,0 +1,15 @@ +package com.ljsd.jieling.logic; + +public class CalHeroFinalAttri { + + public static CalHeroFinalAttri getInstance(){ + return Instance.instance; + } + + private static class Instance{ + public final static CalHeroFinalAttri instance = new CalHeroFinalAttri(); + } + + + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java index 0dae77c68..3f9fb077e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java @@ -30,7 +30,7 @@ public class Hero extends MongoBase { private List skillList; - private List quipList; + private List equipList; public void setId(String id) { this.id = id; @@ -129,4 +129,20 @@ public class Hero extends MongoBase { public int getSpeed() { return speed; } + + public List getSkillList() { + return skillList; + } + + public void setSkillList(List skillList) { + this.skillList = skillList; + } + + public List getEquipList() { + return equipList; + } + + public void setEquipList(List equipList) { + this.equipList = equipList; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Item.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Item.java index 704a7d5db..44abfc22b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Item.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Item.java @@ -22,6 +22,7 @@ public class Item extends MongoBase { } + public int getItemId() { return itemId; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java index 2613ad97d..eca0c77b8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java @@ -5,9 +5,10 @@ import com.ljsd.jieling.config.SItem; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; public class ItemManager extends MongoBase { - private Map itemMap; + private Map itemMap = new ConcurrentHashMap<>(); public ItemManager() { itemMap = new HashMap(); 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 21e6b643c..67da214c6 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 @@ -5,6 +5,8 @@ import com.ljsd.common.mogodb.MongoBase; public class PlayerManager extends MongoBase { + private String openId; + private String nickName; private int level; @@ -26,6 +28,14 @@ public class PlayerManager extends MongoBase { private int mapId; + public String getOpenId() { + return openId; + } + + public void setOpenId(String openId) { + this.openId = openId; + } + public String getNickName() { return nickName; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Skill.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Skill.java index a0e03ac14..3ef6fa801 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Skill.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Skill.java @@ -6,8 +6,6 @@ import java.util.List; public class Skill extends MongoBase { - private String id; - private int skillId; private int skillType; @@ -19,6 +17,7 @@ public class Skill extends MongoBase { private List effectIdList; + public int getSkillId() { return skillId; } 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 90b2f150b..ba618baeb 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 @@ -22,6 +22,10 @@ public class UserManager { userMap.put(user._getIntId(), user); } + public static boolean isUserExist(int uid) { + return userMap.containsKey(uid); + } + public static User getUserForLogin(int uid) throws Exception { User user = userMap.get(uid); if (user == null) { @@ -36,16 +40,51 @@ public class UserManager { } private static void refreshUserLoginInfo(User user) { - + //TODO } + public static User userLogin(int uid) throws Exception { + User user = ljsdMongoTemplate.findById(User.getCollectionName(), Integer.toString(uid), User.class); + if (user == null) { + user = registerUser(uid); + }else { + if (!UserManager.isUserExist(uid)){ + UserManager.addUser(user); + } + } + return user; + } + + private static User registerUser(int uid) throws Exception { User user = new User(uid,new PlayerManager(),new ItemManager(),new HeroManager(),new MapManager()); + initPlayer(user); UserManager.addUser(user); ljsdMongoTemplate.save(user); return user; } + private static void initPlayer(User user) throws Exception { + PlayerManager playerManager = user.getPlayerInfoManager(); + playerManager.setNickName("戒灵666"); + playerManager.setLevel(1); + playerManager.setExp(0); + playerManager.setVipLevel(0); + playerManager.setFamilyId("12345"); + playerManager.setHead("image_head_1"); + playerManager.setGold(100000l); + playerManager.setGem(9999); + playerManager.setChargeGem(666); + + ItemManager itemManager = user.getItemManager(); + //TODO + HeroManager heroManager = user.getHeroManager(); + //TODO + MapManager mapManager = user.getMapManager(); + //TODO + + } + public static User getUser(int uid) throws Exception { User user = userMap.get(uid); @@ -65,5 +104,8 @@ public class UserManager { } + public static String getNewToken(int userId) { + return "33521"; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserServerInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserServerInfo.java new file mode 100644 index 000000000..d84013bcc --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserServerInfo.java @@ -0,0 +1,29 @@ +package com.ljsd.jieling.logic.dao; + +public class UserServerInfo { + + private long loginTime; + + private int level; + + public UserServerInfo(PlayerManager playerInfoManager) { + this.loginTime = System.currentTimeMillis(); + this.level = playerInfoManager.getLevel(); + } + + public long getLoginTime() { + return loginTime; + } + + public void setLoginTime(long loginTime) { + this.loginTime = loginTime; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 14a93f640..f0e7c48d3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -1,19 +1,20 @@ package com.ljsd.jieling.util; -import com.ljsd.jieling.logic.dao.Hero; -import com.ljsd.jieling.logic.dao.Item; -import com.ljsd.jieling.logic.dao.ItemManager; -import com.ljsd.jieling.logic.dao.PlayerManager; +import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.protocols.CommonProto; +import java.util.ArrayList; +import java.util.List; + public class CBean2Proto { - public static CommonProto.Common.Player getPlayer(int uid, PlayerManager playerManager) { - CommonProto.Common.Player player = CommonProto.Common.Player + public static CommonProto.Player getPlayer(int uid, PlayerManager playerManager) { + CommonProto.Player player = CommonProto.Player .newBuilder() .setUid(uid) .setNickName(playerManager.getNickName()) + .setLevel(playerManager.getLevel()) .setExp(playerManager.getExp()) .setVipLevel(playerManager.getVipLevel()) .setFamilyId(playerManager.getFamilyId()) @@ -25,8 +26,8 @@ public class CBean2Proto { return player; } - public static CommonProto.Common.Item getItem(Item item){ - CommonProto.Common.Item itemProto = CommonProto.Common.Item + public static CommonProto.Item getItem(Item item){ + CommonProto.Item itemProto = CommonProto.Item .newBuilder() .setItemId(item.getItemId()) .setItemNum(item.getItemNum()) @@ -35,12 +36,46 @@ public class CBean2Proto { return itemProto; } - public static CommonProto.Common.Hero getHero(Hero hero){ - CommonProto.Common.Hero heroProto = CommonProto.Common.Hero + public static CommonProto.Hero getHero(Hero hero){ + CommonProto.Hero heroProto = CommonProto.Hero .newBuilder() - + .setId(hero.getId()) + .setHeroId(hero.getTemplateId()) + .setHeroType(hero.getHeroType()) + .setLevel(hero.getLevel()) + .setStar(hero.getStar()) + .setQuality(1) + .setHp(hero.getHp()) + .setAttack(hero.getAttack()) + .setPDefence(hero.getpDefence()) + .setMDefence(hero.getmDefence()) + .setSpeed(hero.getSpeed()) + .addAllSkillList(getHeroSkill(hero.getSkillList())) + .addAllEquipList(getHeroEquip(hero.getEquipList())) .build(); return heroProto; } + private static List getHeroSkill(List skillList) { + + List skills = new ArrayList<>(); + for(Skill skill : skillList){ + CommonProto.Skill skill1 = CommonProto.Skill + .newBuilder() + .setSkillId(skill.getSkillId()) + .setSkillType(skill.getSkillType()) + .setLevel(skill.getLevel()) + .setStar(skill.getStar()) + .addAllEffectId(skill.getEffectIdList()) + .build(); + skills.add(skill1); + } + return skills; + } + + private static List getHeroEquip(List equipList) { + List equips = new ArrayList<>(); + return equips; + } + } 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 b0e3701b4..398147177 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -5,9 +5,12 @@ import com.ljsd.jieling.logic.dao.Item; import com.ljsd.jieling.logic.dao.ItemManager; import com.ljsd.jieling.logic.dao.User; import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.protocols.CommonProto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; +import java.util.List; import java.util.Map; public class ItemUtil { @@ -55,4 +58,17 @@ public class ItemUtil { } } + + public static List getAllItem(User user){ + List itemList = new ArrayList<>(); + ItemManager itemManager = user.getItemManager(); + Map itemMap = itemManager.getItemMap(); + if (itemMap.size() !=0 ){ + for (Map.Entry entry :itemMap.entrySet()){ + itemList.add(CBean2Proto.getItem(entry.getValue())); + } + } + return itemList; + } + } diff --git a/serverlogic/src/main/resources/application.properties b/serverlogic/src/main/resources/application.properties index 0a1c9a236..2f5510da6 100644 --- a/serverlogic/src/main/resources/application.properties +++ b/serverlogic/src/main/resources/application.properties @@ -29,7 +29,7 @@ spring.redis.expireTime = -1 #spring.data.mongodb.uri = mongodb://mongouser:ysj#2017#ljsd@111.231.54.96:27017/ysj_wx_1 #spring.data.mongodb2.uri = mongodb://mongouser:ysj#2017#ljsd@111.231.54.96:27017/develop_ysj_wx_1 #mongodb2 develop -spring.data.mongodb.uri = mongodb://60.1.1.14:27017/ysj_msy +spring.data.mongodb.uri = mongodb://60.1.1.14:27017/jieling_msy mongodb.options.maxWaitTime = 120000 mongodb.options.connectTimeout = 1000 mongodb.options.socketTimeout = 0 diff --git a/test/src/main/java/ExcelUtils.java b/test/src/main/java/ExcelUtils.java index afb70c898..1162b24f8 100644 --- a/test/src/main/java/ExcelUtils.java +++ b/test/src/main/java/ExcelUtils.java @@ -3,20 +3,99 @@ import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class ExcelUtils { private static boolean isWrite = true; - private static String excelPath ="tmp/"; - private static String path = "C:/ljsd/jieling_conf/"; + private static String excelPath ="D:/tmp/"; //excel 文件 + private static String path = "conf/server/"; + private static Set oldFileNames = new HashSet<>(); + private static String javaFilePath = "serverlogic/src/main/java/com/ljsd/jieling/config/"; public static void main(String[] args) throws IOException { + File oldfile = new File(path); + String[] list = oldfile.list(); + oldFileNames.addAll(Arrays.asList(list)); readExcelData(); + //只加载新文件 + Set newFileNames = new HashSet<>(); + File newfile = new File(path); + String[] newList = newfile.list(); + newFileNames.addAll(Arrays.asList(newList)); + newFileNames.removeAll(oldFileNames); + if(!newFileNames.isEmpty()){ + for(String newFileName : newFileNames){ + String finalNewFileName = newFileName.replaceAll(".txt", ""); + genJavaFile(finalNewFileName); + } + + } + } + public static void genJavaFile(String fileName){ + + Map fieldInfo = new HashMap<>(); + File file = new File("conf/server/"+fileName +".txt"); + StringBuffer stringBuffer = new StringBuffer("package com.ljsd.jieling.config;\n" + + "\n" + + "import com.ljsd.jieling.logic.STableManager;\n" + + "import com.ljsd.jieling.logic.Table;\n" + + "\n" + + "import java.util.Map;\n" + + "\n" + + "@Table(name =\"").append(fileName).append("\")\r\n"); + stringBuffer.append("public class S").append(fileName).append(" implements BaseConfig {\n\n"); + StringBuffer getInfos = new StringBuffer(); + if(file.exists()){ + try { + BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); + String firstLine = bufferedReader.readLine(); + String secondLine = bufferedReader.readLine(); + String[] s = firstLine.split("\t"); + String[] s1 = secondLine.split("\t"); + + for(int i=0;i { int userId = packetNetData.getUserId(); int token = packetNetData.getToken(); int msgId = packetNetData.getMsgId(); - byte[] packetData = packetNetData.getPacketData(); + byte[] packetData = packetNetData.parseServerProtoNetData(); + if(msgId == GET_HEROINFO_RESPONSE_VALUE){ + HeroInfoProto.GetHeroListInfoResponse getHeroInfoResponse = HeroInfoProto.GetHeroListInfoResponse.parseFrom(packetData); +// int heroListCount = getHeroInfoResponse.getHeroListCount(); + //int heroListCount = getHeroInfoResponse.getHeroListCount(); +// System.out.println("--->>>>" + heroListCount); + } System.out.println("back hartbeat id : "+msgId);