# Conflicts:
#	serverlogic/src/main/java/com/ljsd/GmService.java
back_recharge
zhangshanxue 2019-09-18 18:14:56 +08:00
commit b84afdf49a
14 changed files with 171 additions and 48 deletions

View File

@ -69,7 +69,8 @@ public class JavaAgent {
//该方法支持在JVM 启动后再启动代理对应清单的Agent-Class:属性
public static void agentmain(String args,Instrumentation inst){
try{
writeLog("args=:[" + args + "]");
writeLog("argsxxxxxxxxxx=:[" + args + "]");
writeLog("argsxxxxxxxxxxyyy=:[" + JavaAgent.class.getResource("").getPath() + "]");
File f = new File(args);
byte[] targetClassFile = new byte[(int)f.length()];
DataInputStream dis = new DataInputStream(new FileInputStream(f));
@ -78,8 +79,8 @@ public class JavaAgent {
DynamicClassLoader myLoader = new DynamicClassLoader();
Class targetClazz = myLoader.findClass(targetClassFile);
writeLog("class name is:["+targetClazz.getName() + "]");
writeLog("class namexxxxx is:["+targetClazz.getName() + "]");
writeLog("class path is:["+targetClazz.getResource("").getPath() + "]");
Class<?> clz = Class.forName(targetClazz.getName());
writeLog("clz-->Class.forName:(\""+targetClazz.getName() + "\")");

View File

@ -1,6 +1,7 @@
package com.ljsd;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.kefu.GmGlobleAbstract;
import com.ljsd.jieling.kefu.GmInterface;
import com.ljsd.jieling.kefu.GmRoleAbstract;
@ -49,6 +50,27 @@ public class GmService implements RPCRequestGMIFace.Iface {
return result;
}
if(cmd.contains("hotfix")){
List<User> usersInDB = MongoUtil.getLjsdMongoTemplate().findAll("user", User.class);
List<Integer> sendIds = new ArrayList<>(usersInDB.size());
for(User user1 : usersInDB){
User userInMem = UserManager.getUserInMem(user1.getId());
if(userInMem == null){
continue;
}
sendIds.add(user1.getId());
}
InnerMessageUtil.broadcastWithRandom(new AyyncWorker() {
@Override
public void work(User user) throws Exception {
LOGGER.info("hotfix user={}",user.getId());
MongoUtil.getLjsdMongoTemplate().save(user);
}
}, sendIds, Math.min(10, 10));
result.setResultCode(1);
return result;
}
obj = (GmInterface) Class.forName(
GmInterface.class.getPackage().getName() + ".Cmd_"
+ arg[0].toLowerCase()).newInstance();
@ -59,6 +81,9 @@ public class GmService implements RPCRequestGMIFace.Iface {
}
try {
String[] parameters = java.util.Arrays.copyOfRange(arg, 1, arg.length);
if (obj instanceof GmRoleAbstract) {
List<Integer> sendIds = new LinkedList<>();
if (obj instanceof GmGlobleAbstract) {

View File

@ -51,6 +51,5 @@ public class ServerConfig extends MongoBase {
public void setWorldLevel(int worldLevel) {
this.worldLevel = worldLevel;
updateString("world_level",worldLevel);
}
}

View File

@ -4,12 +4,18 @@ import com.google.gson.Gson;
import com.ljsd.common.mogodb.LjsdMongoTemplate;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.util.MathUtils;
import com.mongodb.MongoClientURI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
@ -82,7 +88,6 @@ public class MongoUtil {
return MongoUtil.getInstence().coreMongoTemplate;
}
public static void main(String[] args) {
try {
LjsdMongoTemplate ljsdMongoTemplate = getLjsdMongoTemplate();

View File

@ -132,12 +132,14 @@ public class GetPlayerInfoHandler extends BaseHandler{
endless.setMapId(MapLogic.getEndlessMapId());
endless.setWorldLevel(MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class).getWorldLevel());
endless.setBloodScore(RedisUtil.getInstence().getZSetScore(RedisKey.BLOODY_RANK,Integer.toString(1), Integer.toString(userId)).intValue());
List<CommonProto.GiftGoodsInfo> goodsBagInfo = new ArrayList<>(SRechargeCommodityConfig.rechargeCommodityConfigMap.size());
BuyGoodsLogic.getGoodsBagInfo(userId,goodsBagInfo,true);
PlayerInfoProto.GetPlayerInfoResponse getPlayerInfoResponse
= PlayerInfoProto.GetPlayerInfoResponse.newBuilder()
.setPlayer(player)
.addAllNewPlayerGuidePoint(list)
.addAllPrivilege(privilegeList)
.addAllGiftGoodsInfo(BuyGoodsLogic.getGoodsBagInfo(userId))
.addAllGiftGoodsInfo(goodsBagInfo)
.addAllBuyGoodsId(rechargeInfo.getBuyGoodsTimes().keySet())
.setSuddenlyBossInfo(suddenlyBossInfo)
.setVipBaseInfo(vipInfoProto)

View File

@ -5,6 +5,7 @@ import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.dataReport.reportBeans_37.ChatContentType;
import com.ljsd.jieling.dataReport.reportBeans_37.Repot37EventUtil;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.globals.BIReason;
@ -1027,26 +1028,30 @@ public class MapLogic {
//无尽副本
if(challengeConfig.getType()==4) {
if(outType==1){
mapManager.updateEndlessLocation(0);
int[][] cost = new int[1][];
int costId = SChallengeSetting.getChallengeSetting().getActionPowerId();
int costNum = SEndlessMapConfig.sEndlessMapConfigMap.get(mapId).getTeleportCost();
int costNum2 = SEndlessMapConfig.sEndlessMapConfigMap.get(targetMapId).getTeleportCost();
int resultCost = Math.abs(costNum-costNum2);
mapManager.updateEndlessConsumeExecution(mapManager.getEndlessMapInfo().getConsumeExecution()+resultCost);
cost[0]= new int[]{costId,resultCost};//Math.abs(costNum-costNum)
boolean costResult = ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1);
mapManager.setCurMapId(0);
mapManager.setCurXY(0);
mapManager.updateEndlessLocation(0);
if(!costResult){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"行动力不足!");
return;
}
LOGGER.info("传送消耗{}行动力"+Math.abs(costNum-costNum2));
// mapManager.updateEndlessLocation(0);
// int[][] cost = new int[1][];
// int costId = SChallengeSetting.getChallengeSetting().getActionPowerId();
// int costNum = SEndlessMapConfig.sEndlessMapConfigMap.get(mapId).getTeleportCost();
// int costNum2 = SEndlessMapConfig.sEndlessMapConfigMap.get(targetMapId).getTeleportCost();
// int resultCost = Math.abs(costNum-costNum2);
// mapManager.updateEndlessConsumeExecution(mapManager.getEndlessMapInfo().getConsumeExecution()+resultCost);
// cost[0]= new int[]{costId,resultCost};//Math.abs(costNum-costNum)
// boolean costResult = ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1);
// mapManager.setCurMapId(0);
// mapManager.setCurXY(0);
// mapManager.updateEndlessLocation(0);
//
// if(!costResult){
// MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"行动力不足!");
// return;
// }
// LOGGER.info("传送消耗{}行动力"+Math.abs(costNum-costNum2));
}else{
mapManager.updateEndlessLocation(curXY);
if(MapLogic.endlessSeason!=mapManager.getEndlessMapInfo().getSeason()){
mapManager.updateEndlessLocation(0);
}else{
mapManager.updateEndlessLocation(curXY);
}
mapManager.updateEndlessConsumeExecution(0);
mapManager.updateEndlessFightCount(0);
}

View File

@ -64,7 +64,7 @@ public class HotfixUtil{
for (ClassBean cl : list) {
String path = "../conf/hotswap/"+cl.getName();
LOGGER.info("HotfixUtil->i={},path={}", i, path);
vm.loadAgent("../lib/serverlogiclib/hotfix.jar",path);//path参数即agentmain()方法的第一个参数
vm.loadAgent("../lib/hotfix.jar",path);//path参数即agentmain()方法的第一个参数
i++;
}
currVerion = version;

View File

@ -37,7 +37,10 @@ import com.ljsd.jieling.util.TimeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Query;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -164,6 +167,7 @@ public class GlobalDataManaager {
case Endless:
MapLogic.getInstance().updateEndlessSeason(timeControllerOfFunction.getTimes());
serverConfigTmp.setWorldLevel(calWorldLevel());
MongoUtil.getLjsdMongoTemplate().save(serverConfigTmp);
MapLogic.getInstance().setEndlessMapId(getEndleeMapIdByLevel());
break;
default:
@ -350,7 +354,22 @@ public class GlobalDataManaager {
private static int calWorldLevel(){
return 20;
Query query = new Query();
query.with(new Sort(Sort.Direction.DESC,"playerManager.level"));
query.fields().include("playerManager.level");
List<User> users = null;
try {
users = MongoUtil.getLjsdMongoTemplate().findAllByCondition(query, User.class);
} catch (Exception e) {
e.printStackTrace();
}
int size = (int)(users.size()*0.85);
int level = 0;
for(int i = 0 ; i <size;i++){
level+=users.get(i).getPlayerInfoManager().getLevel();
}
LOGGER.info("计算世界等级为{}",level/size);
return level/size;
}
private static int getEndleeMapIdByLevel() throws Exception {
ServerConfig config = MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class);

View File

@ -4,6 +4,8 @@ import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.config.SRechargeCommodityConfig;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.logic.store.GiftGoodsType;
import io.netty.util.internal.ConcurrentSet;
import org.springframework.data.annotation.Transient;
import java.util.*;
@ -16,6 +18,9 @@ public class RechargeInfo extends MongoBase{
private int hadBuyFound;
private int isDayFirst;
@Transient
private Set<Integer> cacheSendedIds = new ConcurrentSet<>();
private Map<Integer,Long> levelBagMap = new HashMap<>();
private Map<Integer,Integer> buyGoodsTimes = new HashMap<>();
@ -28,6 +33,14 @@ public class RechargeInfo extends MongoBase{
}
public boolean addNewSendId(int id){
return cacheSendedIds.add(id);
}
public void clearCacheSendId(){
cacheSendedIds.clear();
}
//检测商品是否过期
public Set<Integer> checkIsGoodsTypeOverTime(){
int now = (int)(System.currentTimeMillis()/1000);

View File

@ -978,9 +978,9 @@ public class CombatLogic {
effect[1] = special;
for(int i = 0 ; i<effect.length;i++){
if(effect[i].length>2){
LOGGER.info("生效的光环为{}{}{}",effect[i][0],effect[i][1],effect[i][2]);
// LOGGER.info("生效的光环为{}{}{}",effect[i][0],effect[i][1],effect[i][2]);
}else{
LOGGER.info("生效的光环为{}{}",effect[i][0],effect[i][1]);
// LOGGER.info("生效的光环为{}{}",effect[i][0],effect[i][1]);
}
}

View File

@ -1,7 +1,11 @@
package com.ljsd.jieling.logic.store;
import com.ljsd.common.mogodb.MongoUpdateCache;
import com.ljsd.common.mogodb.MongoUpdateCacheThreadLocal;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.HandlerLogicThread;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.ktbeans.KtEventUtils;
@ -9,33 +13,33 @@ import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.RechargeInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.network.server.ProtocolsManager;
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.StringUtil;
import com.ljsd.jieling.util.TimeUtils;
import com.ljsd.jieling.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.lang.reflect.Field;
import java.util.*;
/**
* 西
*/
public class BuyGoodsLogic {
private static final Logger LOGGER = LoggerFactory.getLogger(BuyGoodsLogic.class);
public static void testBuyGoods(ISession session,int goodsId) throws Exception {
@ -211,6 +215,12 @@ public class BuyGoodsLogic {
resultRes.setResultCode(1);
KtEventUtils.onKtEvent(user, ParamEventBean.UserPayEvent,goodsId,orderId,resultRes.getResultCode(),price);
notifyPaySuccessFul(uid,goodsId,amount != -999);
Class<? extends MongoUpdateCache> aClass = MongoUpdateCacheThreadLocal.getMongoUpdateCache().getClass();
Field requestMap = aClass.getDeclaredField("requestMap");
requestMap.setAccessible(true);
requestMap.set(MongoUpdateCacheThreadLocal.getMongoUpdateCache(), new HashMap<>());
MongoUtil.getLjsdMongoTemplate().save(user);
return resultRes;
}
@ -266,16 +276,19 @@ public class BuyGoodsLogic {
}
public static List<CommonProto.GiftGoodsInfo> getGoodsBagInfo(int uid) throws Exception {
public static boolean getGoodsBagInfo(int uid,List<CommonProto.GiftGoodsInfo> giftGoodsInfoList,boolean needClear) throws Exception {
User user = UserManager.getUser(uid);
RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo();
long now = TimeUtils.now();
Map<Integer, Integer> buyGoodsTimes = rechargeInfo.getBuyGoodsTimes();
Map<Integer, Long> levelBagMap = rechargeInfo.getLevelBagMap();
Map<Integer,Integer> goodsOrder = new HashMap<>(6);
List<CommonProto.GiftGoodsInfo> giftGoodsInfoList = new ArrayList<>(SRechargeCommodityConfig.rechargeCommodityConfigMap.size());
Map<Integer,CommonProto.GiftGoodsInfo> giftGoodsInfoMap = new HashMap<>();
long createTime = user.getPlayerInfoManager().getCreateTime();
boolean needChange= false;
if(needClear){
rechargeInfo.clearCacheSendId();
}
for(SRechargeCommodityConfig sRechargeCommodityConfig :SRechargeCommodityConfig.rechargeCommodityConfigMap.values()){
int limit = sRechargeCommodityConfig.getLimit();
int goodsId = sRechargeCommodityConfig.getId();
@ -313,7 +326,7 @@ public class BuyGoodsLogic {
startTime = sRechargeCommodityConfig.getTimeLong(createTime,1);
endTime = sRechargeCommodityConfig.getTimeLong(createTime,2);
}
if(now<startTime){
if(now<startTime || (endTime!=0 && now > endTime)){
continue;
}
int order = sRechargeCommodityConfig.getOrder();
@ -326,21 +339,42 @@ public class BuyGoodsLogic {
}
goodsOrder.put(sRechargeCommodityConfig.getType(),order*10000 + goodsId);
giftGoodsInfoMap.put(goodsId,CommonProto.GiftGoodsInfo.newBuilder().setGoodsId(goodsId).setStartTime((int)(startTime/1000)).setBuyTimes(buyTimes).setEndTime((int)(endTime/1000)).build());
boolean isNew = rechargeInfo.addNewSendId(goodsId);
if(isNew){
needChange = true;
}
continue;
}
boolean isNew = rechargeInfo.addNewSendId(goodsId);
if(isNew){
needChange = true;
}
giftGoodsInfoList.add(CommonProto.GiftGoodsInfo.newBuilder().setGoodsId(goodsId).setBuyTimes(buyTimes).setStartTime((int)(startTime/1000)).setEndTime((int)(endTime/1000)).build());
}
giftGoodsInfoList.addAll(giftGoodsInfoMap.values());
return giftGoodsInfoList;
return needChange;
}
public static void sendGiftGooodsIndication(int uid) throws Exception {
List<CommonProto.GiftGoodsInfo> goodsBagInfo = BuyGoodsLogic.getGoodsBagInfo(uid);
PlayerInfoProto.AllGiftGoodsIndication build = PlayerInfoProto.AllGiftGoodsIndication.newBuilder().addAllGiftGoodsInfo(goodsBagInfo).build();
List<CommonProto.GiftGoodsInfo> goodsBagInfo = new ArrayList<>(SRechargeCommodityConfig.rechargeCommodityConfigMap.size());
boolean change = BuyGoodsLogic.getGoodsBagInfo(uid, goodsBagInfo,false);
ISession session = OnlineUserManager.getSessionByUid(uid);
if(session!=null){
if(session!=null && change){
PlayerInfoProto.AllGiftGoodsIndication build = PlayerInfoProto.AllGiftGoodsIndication.newBuilder().addAllGiftGoodsInfo(goodsBagInfo).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ALL_GIFTGOODS_INDICATION_VALUE,build,true);
}
}
public static void minuteCheckReharge() throws Exception {
for (Map.Entry<Integer, ISession> entry : OnlineUserManager.sessionMap.entrySet()) {
ISession value = entry.getValue();
if(value.getFiveReady() == 1){
sendGiftGooodsIndication(entry.getKey());
}
}
}
}

View File

@ -299,7 +299,6 @@ public class ProtocolsManager implements ProtocolsAbstract {
iSession.setOfflineType(ErrorCode.reloginCode);
backUpMsgToRedis(iSession);
OnlineUserManager.userOffline(uid);
LOGGER.info("the channel={}",iSession.getCtx().channel());
return 1;
}
return 0;
@ -401,7 +400,6 @@ public class ProtocolsManager implements ProtocolsAbstract {
}
String key = RedisUtil.getInstence().getKey(RedisKey.RESPONSE_OFFLINE, Integer.toString(session.getUid()));
LOGGER.info("the uid={},the offlineIndex={},",session.getUid(),session.getIndexToMessage().keySet().iterator().next());
RedisUtil.getInstence().set(key,gson.toJson(session.getIndexToMessage()));
}

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.thread.task;
import com.ljsd.GameApplication;
import com.ljsd.jieling.config.ServerConfig;
import com.ljsd.jieling.config.reportData.DataMessageUtils;
import com.ljsd.jieling.core.CoreLogic;
import com.ljsd.jieling.core.GlobalsDef;
@ -18,17 +19,22 @@ import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.STableManager;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.arena.ArenaLogic;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.GuildFightLogic;
import com.ljsd.jieling.logic.fight.CheckFight;
import com.ljsd.jieling.logic.fight.CombatLogic;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.question.QuestionLogic;
import com.ljsd.jieling.logic.store.BuyGoodsLogic;
import com.ljsd.jieling.logic.store.StoreLogic;
import com.ljsd.jieling.network.server.ProtocolsManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Query;
import java.util.Calendar;
import java.util.List;
public class MinuteTask extends Thread {
private static final Logger LOGGER = LoggerFactory.getLogger(MinuteTask.class);
@ -62,7 +68,23 @@ public class MinuteTask extends Thread {
MailLogic.getInstance().checkReadyToMail();
ProtocolsManager.getInstance().minuteCheckForbidUser();
CoreLogic.getInstance().checkCoreCdk();
BuyGoodsLogic.minuteCheckReharge();
RedisUtil.getInstence().set(RedisKey.ONLINE_NUM+RedisKey.Delimiter_colon+GameApplication.serverId, String.valueOf(OnlineUserManager.sessionMap.entrySet().size()));
ServerConfig serverConfigTmp = MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class);
if(serverConfigTmp.getWorldLevel()==1){
Query query = new Query();
query.with(new Sort(Sort.Direction.DESC,"playerManager.level"));
query.fields().include("playerManager.level");
List<User> users = MongoUtil.getLjsdMongoTemplate().findAllByCondition(query, User.class);
int size = (int)(users.size()*0.85);
int level = 0;
for(int i = 0 ; i <size;i++){
level+=users.get(i).getPlayerInfoManager().getLevel();
}
LOGGER.info("计算世界等级为{}",level/size);
serverConfigTmp.setWorldLevel(level/size);
MongoUtil.getLjsdMongoTemplate().save(serverConfigTmp);
}
LOGGER.info("MinuteTask end...");
} catch (Exception e) {
LOGGER.error("e",e);
@ -74,7 +96,7 @@ public class MinuteTask extends Thread {
int minute = calendar.get(Calendar.MINUTE);
if(minute%5 == 0){
KTAppOnline ktAppOnline = new KTAppOnline();
int onlineNum = OnlineUserManager.onlineUserMap.size();
int onlineNum = OnlineUserManager.sessionMap.size();
ParamEventBean paramEventBean = new ParamEventBean(ParamEventBean.OnlineEvent);
int time =(int)(calendar.getTimeInMillis()/1000);
paramEventBean.add(String.valueOf(time));

View File

@ -28,7 +28,7 @@ public class MessageUtil {
backMessage = new byte[0];
} else {
backMessage = generatedMessage.toByteArray();
LOGGER.info(JsonFormat.printToString(generatedMessage));
//LOGGER.info(JsonFormat.printToString(generatedMessage));
}
int length = PackageConstant.UID_FIELD_LEN + PackageConstant.TOKEN_LEN