同步数据

back_recharge
gaojie 2019-07-03 19:15:54 +08:00
parent d6079d0964
commit 134c779373
10 changed files with 147 additions and 8 deletions

View File

@ -29,7 +29,8 @@ 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("org.apache.thrift:libthrift:0.9.2")
compile("com.alibaba:fastjson:1.2.47")
compile files("${System.properties['java.home']}/../lib/tools.jar")
}

View File

@ -0,0 +1,48 @@
package com.ljsd.jieling.config.reportData;
import com.alibaba.fastjson.JSON;
import com.ljsd.common.mogodb.util.BlockingUniqueQueue;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CopyOnWriteArrayList;
public class DataMessageUtils {
static final BlockingQueue<Object> logQueue = new BlockingUniqueQueue<>();
static List<String> dataList = new CopyOnWriteArrayList<>();
//入队列
public static void addLogQueue(String info){
logQueue.offer(info);
}
//出队列
public static Object take(){
try {
return logQueue.take();
} catch (InterruptedException e) {
e.printStackTrace();
return null;
}
}
public static void manageData(Object take) {
List<String> sendDataList;
if(dataList.size() >= 10){
sendDataList = dataList;
dataList = new CopyOnWriteArrayList<>();
}else{
dataList.add(JSON.toJSONString(take));
return;
}
StringBuilder info = new StringBuilder("[");
for (int i =0 ; i < sendDataList.size() ; i++){
if (i <= (sendDataList.size() -1)){
info.append(sendDataList.get(i)).append(",");
}else{
info.append(sendDataList.get(i));
}
}
info.append("]");
System.out.println(info.toString());
}
}

View File

@ -1,5 +0,0 @@
package com.ljsd.jieling.config.reportData;
public class LoginFlow {
}

View File

@ -0,0 +1,21 @@
package com.ljsd.jieling.config.reportData;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TlogThread implements Runnable {
@Override
public void run() {
while (true) {
Object take = DataMessageUtils.take();
DataMessageUtils.manageData(take);
}
}
public static void startTlogThread(){
ExecutorService pool = Executors.newCachedThreadPool();
for (int i = 0; i <= 5 ; i++){
TlogThread myThread = new TlogThread();
pool.execute(myThread);
}
}
}

View File

@ -0,0 +1,27 @@
package com.ljsd.jieling.handler;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.item.ItemLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.HeroInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class RefreshItemNumHandler extends BaseHandler {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.REFRESH_ITEM_NUM_REQUEST;
}
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
PlayerInfoProto.RefreshItemNumRequest refreshItemNumRequest = PlayerInfoProto.RefreshItemNumRequest.parseFrom(netData.parseClientProtoNetData());
List<Integer> itemIdList = refreshItemNumRequest.getItemIdList();
ItemLogic.getInstance().refreshItemNum(iSession,itemIdList);
}
}

View File

@ -257,8 +257,8 @@ public class MapManager extends MongoBase {
if (addValue != 0) {
int curEnergy = MathUtils.setBetweenWithMax(itemNum + addValue, 0, playerInfoManager.getMaxStamina());
item.setItemNum(curEnergy > playerInfoManager.getMaxStamina() ? playerInfoManager.getMaxStamina() : curEnergy);
setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime);
}
setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime);
} else {
setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime);
}

View File

@ -11,6 +11,7 @@ import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.FightInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.util.CBean2Proto;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.StringUtil;
@ -104,6 +105,7 @@ public class SweepLogic {
LOGGER.info("sweepFight=>uid={},sweepTimes={},exp={}",uid,sweepTimes,sLevelDifficultyConfig.getExp());
FightInfoProto.SweepRightResponse.Builder builder = FightInfoProto.SweepRightResponse.newBuilder();
builder.addAllDrop(dropList);
builder.setItemInfo(CBean2Proto.getItemInfo(user.getItemManager().getItemMap().get(Global.STAMINA)));
levelDifficulty.setChallengeTimes(levelDifficulty.getChallengeTimes() +sweepTimes);
user.getUserMissionManager().onGameEvent(user, GameEvent.STORY_FIGHT, fightId, 0,sweepTimes);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), builder.build(), true);

View File

@ -2,6 +2,8 @@ package com.ljsd.jieling.logic.item;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
@ -14,6 +16,7 @@ import com.sun.org.apache.regexp.internal.RE;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -247,4 +250,36 @@ public class ItemLogic {
return "";
}
/**
*
* @param iSession
* @param itemIdList
*/
public void refreshItemNum(ISession iSession, List<Integer> itemIdList) throws Exception {
int msgId = MessageTypeProto.MessageType.REFRESH_ITEM_NUM_RESPONSE_VALUE;
int uid = iSession.getUid();
User user = UserManager.getUser(uid);
Map<Integer, Item> itemMap = user.getItemManager().getItemMap();
List<Item> itemList = new ArrayList<>();
for (Integer itemId :itemIdList){
SItem sItem = SItem.getsItemMap().get(itemId);
if (sItem == null){
continue;
}
if (itemId == Global.STAMINA){
MapManager.getEnergy(user);
itemList.add(itemMap.get(itemId));
}
}
PlayerInfoProto.RefreshItemNumResponse.Builder builder = PlayerInfoProto.RefreshItemNumResponse.newBuilder();
List<CommonProto.ItemInfo> itemInfos = new ArrayList<>();
if (itemList.size() != 0){
for (Item item : itemList){
itemInfos.add(CBean2Proto.getItemInfo(item));
}
}
builder.addAllItemInfo(itemInfos);
MessageUtil.sendMessage(iSession,1, msgId,builder.build(),true);
}
}

View File

@ -125,7 +125,7 @@ public class ProtocolsManager implements ProtocolsAbstract {
final ISession session = (ISession) gameSession;
PacketNetData packetNetData = new PacketNetData((byte[]) obj);
int msgId = packetNetData.getMsgId();
LOGGER.info("uid={},msgId={},index={}",packetNetData.getUserId(),msgId,packetNetData.getIndex());
// LOGGER.info("uid={},msgId={},index={}",packetNetData.getUserId(),msgId,packetNetData.getIndex());
// MessageTypeProto.MessageType messageType = MessageTypeProto.MessageType.valueOf(msgId);
// FileWriter fw = null;
// if (!gameMessageForLogin.containsKey(messageType)){

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.util;
import com.ljsd.jieling.config.SGameSetting;
import com.ljsd.jieling.config.SMonsterConfig;
import com.ljsd.jieling.handler.map.Cell;
import com.ljsd.jieling.handler.map.MapManager;
@ -317,4 +318,13 @@ public class CBean2Proto {
return builder.build();
}
public static CommonProto.ItemInfo getItemInfo(Item item) {
CommonProto.ItemInfo.Builder builder = CommonProto.ItemInfo.newBuilder();
builder.setTemplateId(item.getItemId());
builder.setOverlap(item.getItemNum());
int[] energyRecoverSpeed = SGameSetting.getGameSetting().getEnergyRecoverSpeed();
builder.setNextRefreshTime(item.getEndingTime() + energyRecoverSpeed[1]*60);
System.out.println("===============" +(item.getEndingTime() + energyRecoverSpeed[1]*60));
return builder.build();
}
}