diff --git a/.gitignore b/.gitignore
index 84e11951b..72d923d06 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ luafight/LogError/*.txt
luafight/LogError/*.json
luafight/BattleRecord/*.txt
luafight/BattleRecord/*.json
+serverlogic/src/main/thrift
diff --git a/conf/logback-boot.xml b/conf/logback-boot.xml
index 308be07fb..bb679991f 100644
--- a/conf/logback-boot.xml
+++ b/conf/logback-boot.xml
@@ -5,6 +5,7 @@
+
@@ -53,6 +54,40 @@
+
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss.SSS}:%msg%n
+
+
+
+
+
+ ${log_tdir}/%d{yyyy-MM-dd}/tlog%i.log
+
+ ${maxHistory}
+ 200MB
+
+
+
+
+
+
+
+
diff --git a/luafight/Modules/Battle/Logic/Base/Effect.lua b/luafight/Modules/Battle/Logic/Base/Effect.lua
index 44dd3851c..e39ceb091 100644
--- a/luafight/Modules/Battle/Logic/Base/Effect.lua
+++ b/luafight/Modules/Battle/Logic/Base/Effect.lua
@@ -690,7 +690,7 @@ local effectList = {
local f2 = args[2]
local f3 = args[3]
BattleLogic.WaitForTrigger(interval, function ()
- local trigger = function(damagingFunc)
+ local trigger = function(atkRole, damagingFunc, damageType)
BattleUtil.RandomAction(f1, function ()
damagingFunc(f2)
end)
diff --git a/luafight/Modules/Battle/Logic/Misc/BattleUtil.lua b/luafight/Modules/Battle/Logic/Misc/BattleUtil.lua
index 98f0fdab4..89f3a03b7 100644
--- a/luafight/Modules/Battle/Logic/Misc/BattleUtil.lua
+++ b/luafight/Modules/Battle/Logic/Misc/BattleUtil.lua
@@ -26,7 +26,7 @@ function BattleUtil.ChooseTarget(role, chooseId)
if chooseType == 1 then
arr = BattleLogic.Query(function (r) return r.camp == role.camp end)
elseif chooseType == 2 then
- if role.lockTarget and num == 1 then --嘲讽时对单个敌军生效
+ if role.lockTarget and not role.lockTarget.isDead and num == 1 then --嘲讽时对单个敌军生效
return {role.lockTarget}
end
arr = BattleLogic.Query(function (r) return r.camp ~= role.camp end)
@@ -38,7 +38,7 @@ function BattleUtil.ChooseTarget(role, chooseId)
end
return {role}
elseif chooseType == 4 then
- if role.lockTarget then --嘲讽时对仇恨目标生效
+ if role.lockTarget and not role.lockTarget.isDead then --嘲讽时对仇恨目标生效
return {role.lockTarget}
end
if role.ctrl_blind then --致盲时仇恨目标变随机
diff --git a/serverlogic/build.gradle b/serverlogic/build.gradle
index 8a155b716..ad4ad3f4c 100644
--- a/serverlogic/build.gradle
+++ b/serverlogic/build.gradle
@@ -29,6 +29,7 @@ dependencies {
compile group: 'com.googlecode.protobuf-java-format', name: 'protobuf-java-format', version: '1.2'
compile group: 'com.google.code.gson', name: 'gson', version: '2.2.4'
compile("org.luaj:luaj-jse:3.0.1")
+ compile("org.apache.thrift:libthrift:0.9.2");
compile files("${System.properties['java.home']}/../lib/tools.jar")
}
diff --git a/serverlogic/src/main/java/com/ljsd/CoreService.java b/serverlogic/src/main/java/com/ljsd/CoreService.java
new file mode 100644
index 000000000..b2d1b5f54
--- /dev/null
+++ b/serverlogic/src/main/java/com/ljsd/CoreService.java
@@ -0,0 +1,25 @@
+package com.ljsd;
+
+
+import com.ljsd.jieling.logic.store.BuyGoodsLogic;
+import com.ljsd.jieling.thrift.idl.InvalidOperException;
+import com.ljsd.jieling.thrift.idl.RPCRequestIFace;
+import com.ljsd.jieling.thrift.idl.Result;
+import org.apache.thrift.TException;
+
+public class CoreService implements RPCRequestIFace.Iface {
+
+
+ @Override
+ public Result deliveryRecharge(int uid, int goodsId, String openId, String orderId, long orderTime, int amount) throws InvalidOperException, TException {
+ try {
+ return BuyGoodsLogic.sendGoods(uid,goodsId,openId,orderId,orderTime,amount);
+ } catch (Exception e) {
+ Result result = new Result();
+ result.setResultCode(0);
+ result.setResultMsg("server exce");
+ return result;
+ }
+
+ }
+}
diff --git a/serverlogic/src/main/java/com/ljsd/GameApplication.java b/serverlogic/src/main/java/com/ljsd/GameApplication.java
index 8b9ec4a83..ffd43925e 100644
--- a/serverlogic/src/main/java/com/ljsd/GameApplication.java
+++ b/serverlogic/src/main/java/com/ljsd/GameApplication.java
@@ -114,7 +114,7 @@ public class GameApplication {
serverConfig = serverConfigTmp;
KeyGenUtils.setMachineNum(serverConfiguration.getServerProperties().getNum());
ActivityLogic.getInstance().checkActiviyStatus();
- GlobalDataManaager.getInstance().whenServerStart();
+ GlobalDataManaager.getInstance().whenServerStart(configurableApplicationContext);
HeroLogic.getInstance().afterSet();
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/json/CoreSettings.java b/serverlogic/src/main/java/com/ljsd/jieling/config/json/CoreSettings.java
new file mode 100644
index 000000000..f60ec138b
--- /dev/null
+++ b/serverlogic/src/main/java/com/ljsd/jieling/config/json/CoreSettings.java
@@ -0,0 +1,58 @@
+package com.ljsd.jieling.config.json;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by Administrator on 2016/3/29.
+ */
+@Component
+@ConfigurationProperties(prefix = "services.core")
+public class CoreSettings {
+
+ private String ip;
+ private int port;
+ private int area;
+ private int id;
+ private int weight;
+
+ public String getIp() {
+ return ip;
+ }
+
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ public int getWeight() {
+ return weight;
+ }
+
+ public void setWeight(int weight) {
+ this.weight = weight;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public int getArea() {
+ return area;
+ }
+
+ public void setArea(int area) {
+ this.area = area;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+}
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 5a1969fdb..e787cd7b2 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
@@ -14,6 +14,7 @@ import com.ljsd.jieling.handler.mission.Mission;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.CheckFight;
+import com.ljsd.jieling.logic.fight.CombatLogic;
import com.ljsd.jieling.logic.hero.HeroAttributeEnum;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
@@ -76,7 +77,6 @@ public class MapLogic {
int uid = iSession.getUid();
User user = UserManager.getUser(uid);
MapManager mapManager = user.getMapManager();
- mapManager.setStartExporeTime(0);
if (teamId == 0) {
LOGGER.info("enterMap() uid=>{} teamId =>{} ", uid, teamId);
MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "");
@@ -239,8 +239,8 @@ public class MapLogic {
buffers.add(CBean2Proto.getTowerBuff(buff));
}
}
- mapManager.setCurrTowerTime(TimeUtils.now());
- //mapEnterResponse.addAllBuf(buffers);
+// mapManager.setStartExporeTime(System.currentTimeMillis());
+ mapEnterResponse.addAllBuf(buffers);
LOGGER.info("enterMap() uid=>{} mapId =>{}", uid, mapManager.getCurMapId());
MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse.build(), true);
}
@@ -550,8 +550,17 @@ public class MapLogic {
return;
}
int behaviorType = sOptionConfig.getBehaviorType();
+ int[][] behaviorTypeValues = sOptionConfig.getBehaviorTypeValues();
BaseBehavior baseBehavior = baseBehaviorMap.get(behaviorType);
MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse = MapInfoProto.EventUpdateResponse.newBuilder();
+ if (baseBehavior != null) {
+ boolean isSuccess = baseBehavior.process(optionId, user, behaviorTypeValues, eventUpdateResponse);
+ if (!isSuccess) {
+ LOGGER.info("updatePonintEvent() baseBehavior process fail! behaviorType=>{}", behaviorType);
+ MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "");
+ return;
+ }
+ }
if (mapPointConfig.getTriggerRules() == 1) {
cell = mapManager.getMapInfo().get(mapManager.getTriggerXY());
} else {
@@ -575,11 +584,20 @@ public class MapLogic {
if (sOptionConfig.getReward().length > 0) {
dropBuilder = ItemUtil.drop(user, sOptionConfig.getReward(), 1, 1, BIReason.MAP_EVENET_REWARD);
}
- CommonProto.EventBehaviorCommon.Builder eventBehaviorCommon = behaviorBuild(user, optionId);
- if(eventBehaviorCommon==null){
- eventBehaviorCommon = CommonProto.EventBehaviorCommon.newBuilder();
- MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"消息错误");
+ List eventBehaviorValuesList = new ArrayList<>();
+ for (int i = 0; i < sOptionConfig.getBehaviorTypeValues().length; i++) {
+ CommonProto.EventBehaviorValues.Builder eventBehaviorValues = CommonProto.EventBehaviorValues
+ .newBuilder();
+ for (int j = 0; j < sOptionConfig.getBehaviorTypeValues()[i].length; j++) {
+ eventBehaviorValues.addBehaviorValues(sOptionConfig.getBehaviorTypeValues()[i][j]);
+ }
+ eventBehaviorValuesList.add(eventBehaviorValues.build());
}
+ CommonProto.EventBehaviorCommon eventBehaviorCommon = CommonProto.EventBehaviorCommon
+ .newBuilder()
+ .setBehaviorType(sOptionConfig.getBehaviorType())
+ .addAllEventBehaviorValues(eventBehaviorValuesList)
+ .build();
eventUpdateResponse.setEventBehaviorCommon(eventBehaviorCommon);
eventUpdateResponse.setEventId(nextEventId);
eventUpdateResponse.setLeftTime(getLeftTime(user, true));
@@ -791,11 +809,11 @@ public class MapLogic {
MapManager mapManager = user.getMapManager();
SChallengeConfig challengeConfig = SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId());
if(challengeConfig.getType()==2){
-// int time = (int)((System.currentTimeMillis()-mapManager.getStartExporeTime())/1000);
-// mapManager.setCurrTowerTime(time);
-// if(mapManager.getEveryTowerTime()!=null&&mapManager.getEveryTowerTime().get(mapManager.getTower())!=null){
-// mapManager.setTowerTimeByTower(mapManager.getTower(),time);
-// }
+ int time = (int)((System.currentTimeMillis()-mapManager.getStartExporeTime())/1000);
+ mapManager.setCurrTowerTime(time);
+ if(mapManager.getEveryTowerTime()!=null&&mapManager.getEveryTowerTime().get(mapManager.getTower())!=null){
+ mapManager.setTowerTimeByTower(mapManager.getTower(),time);
+ }
if(mapManager.getTower()>=1){
mapManager.setMapIntoFlag(1);
}
@@ -810,9 +828,8 @@ public class MapLogic {
}
}
MapInfoProto.MapOutResponse.Builder builder = MapInfoProto.MapOutResponse.newBuilder();
- int time = (int) (TimeUtils.now()-mapManager.getCurrTowerTime())/1000;
- builder.setUseTime(time);
- LOGGER.info("当前层使用时间{}",time);
+ // builder.setUseTime(mapManager.getCurrTowerTime());
+ LOGGER.info("当前层使用时间{}"+mapManager.getCurrTowerTime());
if(mapManager.getTower()>mapManager.getHighestTower()){
mapManager.setHighestTower(mapManager.getTower());
}
@@ -1228,8 +1245,9 @@ public class MapLogic {
if (monsterGroupId == mapManager.getSuddenlyBoss()) {
mapManager.findSuddenlyBoss(0, 0);
}
+// if(mapManager.getBossType()==1)
if(mapManager.getTower()==STrialConfig.getHighestTower()&&mapManager.getBossType()!=0){
- fightEndResponse.setLastTowerTime((int)(TimeUtils.now()-mapManager.getCurrTowerTime())/1000);
+ // fightEndResponse.setLastTowerTime(mapManager.getCurrTowerTime());
}else{
fightEndResponse.setLastTowerTime(0);
}
@@ -1546,7 +1564,7 @@ public class MapLogic {
.setMapIntoReset(mapManager.getMapIntoFlag())
.build();
builder.setTowerCopyInfo(towerCopyInfo);
- LOGGER.info("关卡信息{}",towerCopyInfo.toString());
+ LOGGER.info("关卡信息{}"+towerCopyInfo.toString());
MessageUtil.sendMessage(iSession, 1, msgId, builder.build(), true);
}
@@ -2066,8 +2084,6 @@ public class MapLogic {
type = 2;
}else if(mapManager.getTower()==2){
type = 4;
- }else if(mapManager.getTower()==3||mapManager.getTower()==4){
- type = 3;
}
@@ -2160,7 +2176,7 @@ public class MapLogic {
return;
}
boolean isUse = ItemUtil.itemCost(user,bomb,BIReason.BOMB_CONSUME,mapManager.getCurMapId());
- if(!isUse){
+ if(isUse){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"无炸弹");
return;
}
@@ -2226,17 +2242,17 @@ public class MapLogic {
}
// TODO 检测重置次数
PlayerManager playerInfoManager = user.getPlayerInfoManager();
- if( !playerInfoManager.check(VipPrivilegeType.TOWER_RESRT_NUM, 1)){
+ if( !playerInfoManager.check(VipPrivilegeType.TOWER_RESRT_NUM, 1)){
return;
- }
- playerInfoManager.updateVipPrivilage(VipPrivilegeType.TOWER_RESRT_NUM,1);
+ }
+ playerInfoManager.updateVipPrivilage(VipPrivilegeType.TOWER_RESRT_NUM,1);
- if(mapManager.getTower()>5){
- mapManager.setTower(mapManager.getTower()-mapManager.getTower()%5);
- }else{
- mapManager.setTower(1);
- }
+ if(mapManager.getTower()>5){
+ mapManager.setTower(mapManager.getTower()-mapManager.getTower()%5);
+ }else{
+ mapManager.setTower(1);
+ }
mapManager.setFightCount(0);
mapManager.setEssenceValue(0);
@@ -2266,58 +2282,21 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),err);
return;
}
- User user = UserManager.getUser(uid);
+ int mapPointId = mapManager.getTowerUnusedBuffer().get(towerLevel);
mapManager.consunmeTowerBuffer(towerLevel);
+ int buffId = SOptionConfig.sOptionConfigMap.get(optionId).getBehaviorTypeValues()[0][0];
+
+ LOGGER.info("使用第{},mapPointId,id是:{}",towerLevel,mapPointId);
+ CombatLogic.getInstance().bufferAddByEatFoodOrEventTrigger(mapManager,buffId);
+ LOGGER.info("使用第"+towerLevel+"层buff,id是:"+buffId);
MapInfoProto.UseTowerBuffResponse.Builder useTowerBuffResponse = MapInfoProto.UseTowerBuffResponse.newBuilder();
- CommonProto.EventBehaviorCommon.Builder eventBehaviorCommon = behaviorBuild(user, optionId);
- if(eventBehaviorCommon==null){
- useTowerBuffResponse = MapInfoProto.UseTowerBuffResponse.newBuilder();
- MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"使用错误");
- }
- useTowerBuffResponse.setEventBehaviorCommon(eventBehaviorCommon);
+
+ // useTowerBuffResponse.setBuffId(buffId);
MessageUtil.sendMessage(session,1,messageType.getNumber(),useTowerBuffResponse.build(),true);
}
- /**
- * 事件类型构造
- * @param user
- * @param optionId
- * @return
- * @throws Exception
- */
- private CommonProto.EventBehaviorCommon.Builder behaviorBuild(User user,int optionId) throws Exception {
- SOptionConfig sOptionConfig = SOptionConfig.sOptionConfigMap.get(optionId);
- int behaviorType = sOptionConfig.getBehaviorType();
- int[][] behaviorTypeValues = sOptionConfig.getBehaviorTypeValues();
- BaseBehavior baseBehavior = baseBehaviorMap.get(behaviorType);
- MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse = MapInfoProto.EventUpdateResponse.newBuilder();
- if (baseBehavior != null) {
- boolean isSuccess = baseBehavior.process(optionId, user, behaviorTypeValues, eventUpdateResponse);
- if (!isSuccess) {
- LOGGER.info("updatePonintEvent() baseBehavior process fail! behaviorType=>{}", behaviorType);
-// MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "");
- return null;
- }
- }
- List eventBehaviorValuesList = new ArrayList<>();
- for (int i = 0; i < sOptionConfig.getBehaviorTypeValues().length; i++) {
- CommonProto.EventBehaviorValues.Builder eventBehaviorValues = CommonProto.EventBehaviorValues
- .newBuilder();
- for (int j = 0; j < sOptionConfig.getBehaviorTypeValues()[i].length; j++) {
- eventBehaviorValues.addBehaviorValues(sOptionConfig.getBehaviorTypeValues()[i][j]);
- }
- eventBehaviorValuesList.add(eventBehaviorValues.build());
- }
- CommonProto.EventBehaviorCommon.Builder eventBehaviorCommon = CommonProto.EventBehaviorCommon
- .newBuilder()
- .setBehaviorType(sOptionConfig.getBehaviorType())
- .addAllEventBehaviorValues(eventBehaviorValuesList);
- return eventBehaviorCommon;
- }
-
-
private String checkUseTowerBuff(MapManager mapManager,int towerLevel,int optionId){
if(!mapManager.getTowerUnusedBuffer().containsKey(towerLevel)){
return "使用错误,当前层不存在buff";
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 dbbc41722..06fec72be 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java
@@ -28,10 +28,12 @@ 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.thread.task.RPCServerTask;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.TimeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.context.ConfigurableApplicationContext;
import java.util.*;
@@ -169,7 +171,7 @@ public class GlobalDataManaager {
}
}
- public void whenServerStart(){
+ public void whenServerStart(ConfigurableApplicationContext configurableApplicationContext){
try {
ActivityLogic.getInstance().checkSecretBoxSeason();
checkSystemFunctioIsOpen();
@@ -180,6 +182,7 @@ public class GlobalDataManaager {
}
MissionEventDistributor.init();
DataManagerDistributor.init();
+ new RPCServerTask(configurableApplicationContext).start();
} catch (Exception e) {
LOGGER.error("e",e);
}
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 71a72934e..554afef5c 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
@@ -41,22 +41,19 @@ public class UserMissionManager extends MongoBase {
Set missionIds = SDailyTasksConfig.config.keySet();
int type = (int)parm[0];
if(type == 0){
- if( dailyMissionIdsType.getDoingMissionIds().isEmpty() && dailyMissionIdsType.getFinishMissionIds().isEmpty() && dailyMissionIdsType.getRewardedMissionIds().isEmpty() ){
- return;
- }
dailyMissionIdsType.getDoingMissionIds().clear();
dailyMissionIdsType.getFinishMissionIds().clear();
dailyMissionIdsType.getRewardedMissionIds().clear();
dailyCumulationData.reset();
updateString("dailyCumulationData",dailyCumulationData);
+ }else{
+ for(Integer missionId : missionIds){
+ MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId,
+ MissionState.DOING, null);
+ missionTypeEnumListMap.get(GameMisionType.DAILYMISSION).add(doingInfo);
+ }
+ dailyMissionIdsType.getDoingMissionIds().addAll(missionIds);
}
- for(Integer missionId : missionIds){
- MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId,
- MissionState.DOING, null);
- missionTypeEnumListMap.get(GameMisionType.DAILYMISSION).add(doingInfo);
- }
- updateString("dailyCumulationData",dailyCumulationData);
- dailyMissionIdsType.getDoingMissionIds().addAll(missionIds);
updateString("dailyMissionIdsType",dailyMissionIdsType);
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 82c231d3a..4276ec332 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
@@ -511,6 +511,7 @@ public class WorkShopLogic {
boolean costResult = ItemUtil.itemCost(user,itemInfo,1,1);
if(costResult){
controller.setWorkShopLevel(currLevel+1);
+ user.getUserMissionManager().onGameEvent(user,GameEvent.WORKSHOP_LEVELUP,controller.getWorkShopLevel());
MessageUtil.sendMessage(uid,1,MessageTypeProto.MessageType.WORKSHOP_LEVELUP_RESPONSE_VALUE,null,true);
}else{
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_LEVELUP_RESPONSE_VALUE,"道具不足");
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 e763739d6..f0ebf014a 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
@@ -4,6 +4,8 @@ package com.ljsd.jieling.logic.mission;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.globals.BIReason;
+import com.ljsd.jieling.handler.map.CrossInfo;
+import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.handler.map.MapMission;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
@@ -252,9 +254,21 @@ public class MissionLoigc {
break;
case GENERAL_STORY_PASS:
- case HERO_STORY_PASS:
count = cumulationData.getExploreFight().get(missionSubType[0])?1:0;
break;
+ case HERO_STORY_PASS:
+ Map crossInfoMap = user.getMapManager().getCrossInfoMap();
+ for(Map.Entry item : crossInfoMap.entrySet()){
+ CrossInfo value = item.getValue();
+ if(value.getStars().contains(MapLogic.STAR_1)){
+ Integer fightId = item.getKey();
+ SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(fightId);
+ if(sChallengeConfig.getType() == 3 && sChallengeConfig.getDifficultType() == missionSubType[0]){
+ count++;
+ }
+ }
+ }
+ break;
case KILL_INVASIONBOSS:
count = cumulationData.getKillInvasionbossCount();
break;
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java
index 101252bce..964fda8a2 100644
--- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java
+++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java
@@ -21,7 +21,7 @@ public enum MissionType {
LEVEL_STORY_PASS(14), //故事副本 通关故事副本关卡,涵盖简单,普通,困难
GENERAL_STORY_PASS(15), //普通副本 通过普通副本1,2,3,4,5
- HERO_STORY_PASS(16), //英雄副本 通过英雄副本1,2,3,4,5
+ HERO_STORY_PASS(16), //通关难度%s英雄副本:%s
KILL_INVASIONBOSS(17),//外敌入侵击杀次数 外敌入侵活动中击杀boss次数
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 8c88eb56b..823956e20 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
@@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.mission.data;
+import com.ljsd.jieling.config.SChallengeConfig;
import com.ljsd.jieling.config.SLevelDifficultyConfig;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.LevelDifficulty;
@@ -40,9 +41,14 @@ public class FightDataManager implements BaseDataManager{
}else if(missionType == MissionType.HERO_LEVLE_TIMES){
data.heroStoryTimes+=fightTimes;
result = new CumulationData.Result(missionType);
- }else if(missionType == MissionType.GENERAL_STORY_PASS || missionType == MissionType.HERO_STORY_PASS){
+ }else if(missionType == MissionType.GENERAL_STORY_PASS){
data.addExploreFight(fightId);
result = new CumulationData.Result(missionType);
+ }else if(missionType == MissionType.HERO_STORY_PASS){
+ SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(fightId);
+ if(sChallengeConfig.getType() == 3){
+ result = new CumulationData.Result(missionType);
+ }
}
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 efbced80d..5ad884fe8 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
@@ -16,6 +16,7 @@ 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.thrift.idl.Result;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.TimeUtils;
@@ -41,11 +42,12 @@ public class BuyGoodsLogic {
return;
}
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TEST_BUY_GIGT_GOODS_RESPONSE_VALUE,null,true);
- sendGoods(uid,goodsId);
+// sendGoods(uid,goodsId);
}
- public static void sendGoods(int uid,int goodsId) throws Exception {
- LOGGER.info("send to uid={},the goods={}",uid,goodsId);
+ public static Result sendGoods(int uid, int goodsId, String openId, String orderId, long orderTime, int amount) throws Exception {
+ Result resultRes = new Result();
+ LOGGER.info("send to uid={},the goods={},openID={},orderId={},orderTime,amount={}",uid,goodsId,openId,orderId,orderTime,amount);
User user = UserManager.getUser(uid);
SRechargeCommodityConfig sRechargeCommodityConfig = SRechargeCommodityConfig.rechargeCommodityConfigMap.get(goodsId);
RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo();
@@ -59,22 +61,24 @@ public class BuyGoodsLogic {
int type = sRechargeCommodityConfig.getType();
if(type==GiftGoodsType.GROTHFOUND && rechargeInfo.getHadBuyFound()==1){
LOGGER.error("the uid={},hadBuyFound",uid);
- return;
+ resultRes.setResultCode(0);
+ resultRes.setResultMsg("hadBuyFound");
+ return resultRes;
}
if(limit!=0){
if(buyCount>limit){
LOGGER.error("the uid={},the goodId={}, is over limit={}",uid,goodsId,buyCount);
- return;
+ resultRes.setResultCode(0);
+ resultRes.setResultMsg("over limit");
+ return resultRes;
}
}
int[][] baseReward = sRechargeCommodityConfig.getBaseReward();
int length = baseReward.length;
-
String rewardStr="";
if(buyCount == 1){
-
if(type==GiftGoodsType.GROTHFOUND){
rechargeInfo.setHadBuyFound(1);
ActivityLogic.getInstance().openActivityReallyOpen(user, ActivityType.GrowthFund);
@@ -133,6 +137,8 @@ public class BuyGoodsLogic {
String content = SErrorCodeEerverConfig.getI18NMessage("recharge_txt");
int nowTime =(int) (TimeUtils.now()/1000);
MailLogic.getInstance().sendMail(user.getId(),title,content,rewardStr,nowTime, Global.MAIL_EFFECTIVE_TIME);
+ resultRes.setResultCode(1);
+ return resultRes;
}
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
new file mode 100644
index 000000000..5356db81e
--- /dev/null
+++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/RPCServerTask.java
@@ -0,0 +1,54 @@
+package com.ljsd.jieling.thread.task;
+
+import com.ljsd.CoreService;
+import com.ljsd.jieling.config.json.CoreSettings;
+import com.ljsd.jieling.thrift.idl.RPCRequestIFace;
+import org.apache.thrift.TProcessor;
+import org.apache.thrift.protocol.TBinaryProtocol;
+import org.apache.thrift.server.TServer;
+import org.apache.thrift.server.TThreadPoolServer;
+import org.apache.thrift.transport.TServerSocket;
+import org.apache.thrift.transport.TTransportException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ConfigurableApplicationContext;
+
+import java.net.InetSocketAddress;
+
+public class RPCServerTask extends Thread{
+ private static final Logger LOGGER = LoggerFactory.getLogger(RPCServerTask.class);
+
+ private CoreSettings coreSettings;
+
+ public RPCServerTask(ConfigurableApplicationContext configurableApplicationContext){
+ this.coreSettings = configurableApplicationContext.getBean(CoreSettings.class);
+ setName("rpc");
+ }
+
+ @Override
+ public void run() {
+ try {
+ TServerSocket serverTransport = new TServerSocket(new InetSocketAddress(coreSettings.getIp(), coreSettings.getPort()));
+ LOGGER.info("run->coreip={},corePort={}", coreSettings.getIp(), coreSettings.getPort());
+ TThreadPoolServer.Args trArgs = new TThreadPoolServer.Args(serverTransport);
+ TProcessor processor = new RPCRequestIFace.Processor(new CoreService());
+ trArgs.processor(processor);
+ TBinaryProtocol.Factory proFactory = new TBinaryProtocol.Factory(true, true);
+ trArgs.protocolFactory(proFactory);
+ trArgs.maxWorkerThreads(4096);
+ LOGGER.info("run->RPC services is starting.");
+ final TServer server = new TThreadPoolServer(trArgs);
+ while (true) {
+ try {
+ server.serve();
+ } catch (Exception e) {
+ LOGGER.error("run->{}", e.getMessage(), e);
+ server.stop();
+ }
+ }
+
+ } catch (TTransportException e) {
+ LOGGER.error("run->{}", e.getMessage(), e);
+ }
+ }
+}
diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thrift/idl/InvalidOperException.java b/serverlogic/src/main/java/com/ljsd/jieling/thrift/idl/InvalidOperException.java
new file mode 100644
index 000000000..98d06492c
--- /dev/null
+++ b/serverlogic/src/main/java/com/ljsd/jieling/thrift/idl/InvalidOperException.java
@@ -0,0 +1,504 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+package com.ljsd.jieling.thrift.idl;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+/**
+ * Structs can also be exceptions, if they are nasty.
+ */
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2019-7-12")
+public class InvalidOperException extends TException implements org.apache.thrift.TBase, java.io.Serializable, Cloneable, Comparable {
+ private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("InvalidOperException");
+
+ private static final org.apache.thrift.protocol.TField ERROR_CODE_FIELD_DESC = new org.apache.thrift.protocol.TField("errorCode", org.apache.thrift.protocol.TType.I32, (short)1);
+ private static final org.apache.thrift.protocol.TField ERROR_MESSAGE_FIELD_DESC = new org.apache.thrift.protocol.TField("errorMessage", org.apache.thrift.protocol.TType.STRING, (short)2);
+
+ private static final Map, SchemeFactory> schemes = new HashMap, SchemeFactory>();
+ static {
+ schemes.put(StandardScheme.class, new InvalidOperExceptionStandardSchemeFactory());
+ schemes.put(TupleScheme.class, new InvalidOperExceptionTupleSchemeFactory());
+ }
+
+ public int errorCode; // required
+ public String errorMessage; // required
+
+ /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+ public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+ ERROR_CODE((short)1, "errorCode"),
+ ERROR_MESSAGE((short)2, "errorMessage");
+
+ private static final Map byName = new HashMap();
+
+ static {
+ for (_Fields field : EnumSet.allOf(_Fields.class)) {
+ byName.put(field.getFieldName(), field);
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, or null if its not found.
+ */
+ public static _Fields findByThriftId(int fieldId) {
+ switch(fieldId) {
+ case 1: // ERROR_CODE
+ return ERROR_CODE;
+ case 2: // ERROR_MESSAGE
+ return ERROR_MESSAGE;
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, throwing an exception
+ * if it is not found.
+ */
+ public static _Fields findByThriftIdOrThrow(int fieldId) {
+ _Fields fields = findByThriftId(fieldId);
+ if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+ return fields;
+ }
+
+ /**
+ * Find the _Fields constant that matches name, or null if its not found.
+ */
+ public static _Fields findByName(String name) {
+ return byName.get(name);
+ }
+
+ private final short _thriftId;
+ private final String _fieldName;
+
+ _Fields(short thriftId, String fieldName) {
+ _thriftId = thriftId;
+ _fieldName = fieldName;
+ }
+
+ public short getThriftFieldId() {
+ return _thriftId;
+ }
+
+ public String getFieldName() {
+ return _fieldName;
+ }
+ }
+
+ // isset id assignments
+ private static final int __ERRORCODE_ISSET_ID = 0;
+ private byte __isset_bitfield = 0;
+ public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+ static {
+ Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+ tmpMap.put(_Fields.ERROR_CODE, new org.apache.thrift.meta_data.FieldMetaData("errorCode", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+ tmpMap.put(_Fields.ERROR_MESSAGE, new org.apache.thrift.meta_data.FieldMetaData("errorMessage", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+ metaDataMap = Collections.unmodifiableMap(tmpMap);
+ org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(InvalidOperException.class, metaDataMap);
+ }
+
+ public InvalidOperException() {
+ }
+
+ public InvalidOperException(
+ int errorCode,
+ String errorMessage)
+ {
+ this();
+ this.errorCode = errorCode;
+ setErrorCodeIsSet(true);
+ this.errorMessage = errorMessage;
+ }
+
+ /**
+ * Performs a deep copy on other.
+ */
+ public InvalidOperException(InvalidOperException other) {
+ __isset_bitfield = other.__isset_bitfield;
+ this.errorCode = other.errorCode;
+ if (other.isSetErrorMessage()) {
+ this.errorMessage = other.errorMessage;
+ }
+ }
+
+ public InvalidOperException deepCopy() {
+ return new InvalidOperException(this);
+ }
+
+ @Override
+ public void clear() {
+ setErrorCodeIsSet(false);
+ this.errorCode = 0;
+ this.errorMessage = null;
+ }
+
+ public int getErrorCode() {
+ return this.errorCode;
+ }
+
+ public InvalidOperException setErrorCode(int errorCode) {
+ this.errorCode = errorCode;
+ setErrorCodeIsSet(true);
+ return this;
+ }
+
+ public void unsetErrorCode() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ERRORCODE_ISSET_ID);
+ }
+
+ /** Returns true if field errorCode is set (has been assigned a value) and false otherwise */
+ public boolean isSetErrorCode() {
+ return EncodingUtils.testBit(__isset_bitfield, __ERRORCODE_ISSET_ID);
+ }
+
+ public void setErrorCodeIsSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ERRORCODE_ISSET_ID, value);
+ }
+
+ public String getErrorMessage() {
+ return this.errorMessage;
+ }
+
+ public InvalidOperException setErrorMessage(String errorMessage) {
+ this.errorMessage = errorMessage;
+ return this;
+ }
+
+ public void unsetErrorMessage() {
+ this.errorMessage = null;
+ }
+
+ /** Returns true if field errorMessage is set (has been assigned a value) and false otherwise */
+ public boolean isSetErrorMessage() {
+ return this.errorMessage != null;
+ }
+
+ public void setErrorMessageIsSet(boolean value) {
+ if (!value) {
+ this.errorMessage = null;
+ }
+ }
+
+ public void setFieldValue(_Fields field, Object value) {
+ switch (field) {
+ case ERROR_CODE:
+ if (value == null) {
+ unsetErrorCode();
+ } else {
+ setErrorCode((Integer)value);
+ }
+ break;
+
+ case ERROR_MESSAGE:
+ if (value == null) {
+ unsetErrorMessage();
+ } else {
+ setErrorMessage((String)value);
+ }
+ break;
+
+ }
+ }
+
+ public Object getFieldValue(_Fields field) {
+ switch (field) {
+ case ERROR_CODE:
+ return Integer.valueOf(getErrorCode());
+
+ case ERROR_MESSAGE:
+ return getErrorMessage();
+
+ }
+ throw new IllegalStateException();
+ }
+
+ /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+ public boolean isSet(_Fields field) {
+ if (field == null) {
+ throw new IllegalArgumentException();
+ }
+
+ switch (field) {
+ case ERROR_CODE:
+ return isSetErrorCode();
+ case ERROR_MESSAGE:
+ return isSetErrorMessage();
+ }
+ throw new IllegalStateException();
+ }
+
+ @Override
+ public boolean equals(Object that) {
+ if (that == null)
+ return false;
+ if (that instanceof InvalidOperException)
+ return this.equals((InvalidOperException)that);
+ return false;
+ }
+
+ public boolean equals(InvalidOperException that) {
+ if (that == null)
+ return false;
+
+ boolean this_present_errorCode = true;
+ boolean that_present_errorCode = true;
+ if (this_present_errorCode || that_present_errorCode) {
+ if (!(this_present_errorCode && that_present_errorCode))
+ return false;
+ if (this.errorCode != that.errorCode)
+ return false;
+ }
+
+ boolean this_present_errorMessage = true && this.isSetErrorMessage();
+ boolean that_present_errorMessage = true && that.isSetErrorMessage();
+ if (this_present_errorMessage || that_present_errorMessage) {
+ if (!(this_present_errorMessage && that_present_errorMessage))
+ return false;
+ if (!this.errorMessage.equals(that.errorMessage))
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ List