master_ob2
PC-202302260912\Administrator 2023-08-02 13:57:08 +08:00
parent 60cbfe2590
commit de1bc8de1a
5 changed files with 82 additions and 113 deletions

View File

@ -7,8 +7,8 @@ import com.ljsd.common.mogodb.MongoUpdateImp;
import com.ljsd.jieling.db.mongo.core.ServerAreaInfoManager;
import com.ljsd.jieling.logic.dao.ServerConfig;
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.mongodb.*;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import config.SMServerArenaSetting;
import manager.STableManager;
import org.slf4j.Logger;
@ -49,7 +49,7 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
otherMonogTemplate.save(obj);
}
public <T> void saveWithoutMongoRoot(T obj) throws Exception {
public <T> void saveWithoutMongoRoot(T obj) {
MongoTemplate monogTemplate = MongoUtil.getInstence().getMonogTemplate(GameApplication.serverId);
monogTemplate.save(obj);
}
@ -73,8 +73,7 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
} else {
MongoTemplate mongoTemplate = MongoUtil.mongoTemplateMap.get(GameApplication.serverId);
if (mongoTemplate != null) {
List<T> all = mongoTemplate.findAll(clazz);
return all;
return mongoTemplate.findAll(clazz);
}
// for (MongoTemplate mongoTemplate : MongoUtil.mongoTemplateMap.values()) {
@ -86,7 +85,7 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
//return mongoTemplate.findAll(clazz,collectionName);
}
public <T> List<T> findAllByCondition(Query query, Class<T> entityClass) throws Exception {
public <T> List<T> findAllByCondition(Query query, Class<T> entityClass) {
List<T> list = new ArrayList<>();
ServerAreaInfoManager serverArenaInfoManagerCache = AreaManager.serverArenaInfoManagerCache;
@ -131,7 +130,7 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
}
return otherMonogTemplate.findById(id,clazz,collectionName);
}
public <T> T findByIdMy(String collectionName, String id, Class<T> clazz) throws Exception {
public <T> T findByIdMy(String collectionName, String id, Class<T> clazz) {
//int serverIdByUid = AreaManager.getInstance().getServerIdByUid(Integer.parseInt(id), GameApplication.serverId);
MongoTemplate otherMonogTemplate = getMongoTemplate(GameApplication.serverId);
if(otherMonogTemplate==null){
@ -197,11 +196,7 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
//
public MongoTemplate getMongoTemplate(int serverId) {
MongoTemplate otherMonogTemplate = MongoUtil.getInstence().getMonogTemplate(serverId);
if (otherMonogTemplate == null) {
return null;
}
return otherMonogTemplate;
return MongoUtil.getInstence().getMonogTemplate(serverId);
}
public void updateMongoData( Map<String, Map<String, MongoUpdateCache.UpdateRequest>> updateRequestMap) {
@ -215,7 +210,7 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
BasicDBObject dbobj = new BasicDBObject();
BasicDBObject removedbobj = new BasicDBObject();
MongoTemplate otherMonogTemplate=null;
MongoTemplate otherMonogTemplate;
if(collection.equals("guildInfo")){
Integer guilderverId = MongoUtil.getInstence().findGuilderverId(Integer.parseInt(id));
otherMonogTemplate = MongoUtil.getInstence().getMonogTemplate(guilderverId);

View File

@ -28,7 +28,6 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.net.UnknownHostException;
import java.util.*;
@ -98,9 +97,9 @@ public class MongoUtil {
int maxLevel = level + randomLevel;
long befor3Day = System.currentTimeMillis() - BEFOR_3_DAY;
criatira.andOperator(Criteria.where("id").nin(uid),
criatira.andOperator(Criteria.where("id").nin(uid),//不包含自己
Criteria.where("playerManager.level").gte(minLevel), Criteria.where("playerManager.level").lte(maxLevel),
Criteria.where("playerManager.loginTime").gte(befor3Day));//不包含自己
Criteria.where("playerManager.loginTime").gte(befor3Day));
Query query = new Query(criatira).limit(size * 2 + 1);
query.fields().include("playerManager");
return this.myMongoTemplate.findAllByCondition(query, User.class);
@ -138,20 +137,13 @@ public class MongoUtil {
@Override
public boolean shouldSkipField(FieldAttributes arg0) {
Transient annotation = arg0.getAnnotation(Transient.class);
if (annotation != null) {
return true;
}
return false;
return annotation != null;
}
}).registerTypeAdapter(Map.class, new JsonSerializer<AbstractMap>() {
@Override
public JsonElement serialize(AbstractMap abstractMap, Type type, JsonSerializationContext jsonSerializationContext) {
TreeMap<Object, Object> treeMap = new TreeMap<>(abstractMap);
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(String.valueOf(JSON.toJSON(treeMap)));
return je;
}
}
}).registerTypeAdapter(Map.class, (JsonSerializer<AbstractMap>) (abstractMap, type, jsonSerializationContext) -> {
TreeMap<Object, Object> treeMap = new TreeMap<>(abstractMap);
JsonParser jp = new JsonParser();
return jp.parse(String.valueOf(JSON.toJSON(treeMap)));
}
).create();

View File

@ -1356,33 +1356,52 @@ public class RedisUtil {
* key
*/
private String getKeyImpl(String type,String key) {
if (RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) ||
RedisKey.PIDGIDTEMP.equals(type) || RedisKey.SERVER_WORLDLEVE_INFO.equals(type) ||
RedisKey.FAMILY_RED_PACKAGE.equals(type) || "red_remain_list".equals(type) ||
RedisKey.FAMILY_RED_PACKAGE_INCRE_ID.equals(type) || "red_already_list".equals(type) ||
RedisKey.CAR_DEALY_GUILD_FIGHT_PEOPLE_NUM.equals(type) ||
RedisKey.SERVER_SPLIT_INFO.equals(type) || RedisKey.FAMILY_LOGS.equals(type) ||
RedisKey.SERVER_SPLIT_MAIL_INFO.equals(type) || RedisKey.CROSS_ARENA_ROBOT_INFO.equals(type) ||
RedisKey.CROSS_SERVICE_ARENA.equals(type) || RedisKey.WORLD_ARENA_RANK_MY_MATH.equals(type) ||
RedisKey.WORLD_ARENA_MY_PRON.equals(type) || RedisKey.WORLD_ARENA_RRECORD.equals(type) ||
RedisKey.TOKEN.equals(type) || RedisKey.USER_SERVER_INFO.equals(type) ||
RedisKey.CDKEY.equals(type) || RedisKey.ServerArenaJob.equals(type) ||
RedisKey.CROSS_SERVER_GROUP.equals(type) || RedisKey.HERO_HOT_RANK.equals(type) ||
RedisKey.USER_LIKE_HERO_HOT_RANK.equals(type) || RedisKey.CROSS_YUXULUNDAO_RANK.equals(type) ||
RedisKey.CROSS_YUXULUNDAO_ROBOT_INFO.equals(type) || RedisKey.CROSS_YUXULUNDAO_RECORD.equals(type) || RedisKey.CROSS_YUXULUNDAO_RANK_PERSON.equals(type) ||
RedisKey.CROSS_LINGMAISECRET_INFO.equals(type) || RedisKey.CROSS_LINGMAISECRET_RECORD.equals(type) || RedisKey.CROSS_LINGMAI_RANK_PERSON.equals(type))
{
return type + RedisKey.Delimiter_colon + key;
Set<String> predefinedKeys = new HashSet<>();
predefinedKeys.add(RedisKey.PLAYER_INFO_CACHE);
predefinedKeys.add(RedisKey.FAMILY_INFO);
predefinedKeys.add(RedisKey.PIDGIDTEMP);
predefinedKeys.add(RedisKey.SERVER_WORLDLEVE_INFO);
predefinedKeys.add(RedisKey.FAMILY_RED_PACKAGE);
predefinedKeys.add(RedisKey.FAMILY_RED_PACKAGE_INCRE_ID);
predefinedKeys.add("red_remain_list");
predefinedKeys.add("red_already_list");
predefinedKeys.add(RedisKey.CAR_DEALY_GUILD_FIGHT_PEOPLE_NUM);
predefinedKeys.add(RedisKey.SERVER_SPLIT_INFO);
predefinedKeys.add(RedisKey.FAMILY_LOGS);
predefinedKeys.add(RedisKey.SERVER_SPLIT_MAIL_INFO);
predefinedKeys.add(RedisKey.CROSS_ARENA_ROBOT_INFO);
predefinedKeys.add(RedisKey.CROSS_SERVICE_ARENA);
predefinedKeys.add(RedisKey.WORLD_ARENA_RANK_MY_MATH);
predefinedKeys.add(RedisKey.WORLD_ARENA_MY_PRON);
predefinedKeys.add(RedisKey.WORLD_ARENA_RRECORD);
predefinedKeys.add(RedisKey.TOKEN);
predefinedKeys.add(RedisKey.USER_SERVER_INFO);
predefinedKeys.add(RedisKey.CDKEY);
predefinedKeys.add(RedisKey.ServerArenaJob);
predefinedKeys.add(RedisKey.CROSS_SERVER_GROUP);
predefinedKeys.add(RedisKey.HERO_HOT_RANK);
predefinedKeys.add(RedisKey.USER_LIKE_HERO_HOT_RANK);
predefinedKeys.add(RedisKey.CROSS_YUXULUNDAO_RANK);
predefinedKeys.add(RedisKey.CROSS_YUXULUNDAO_ROBOT_INFO);
predefinedKeys.add(RedisKey.CROSS_YUXULUNDAO_RECORD);
predefinedKeys.add(RedisKey.CROSS_YUXULUNDAO_RANK_PERSON);
predefinedKeys.add(RedisKey.CROSS_LINGMAISECRET_INFO);
predefinedKeys.add(RedisKey.CROSS_LINGMAISECRET_RECORD);
predefinedKeys.add(RedisKey.CROSS_LINGMAI_RANK_PERSON);
String delimiter = RedisKey.Delimiter_colon;
if (predefinedKeys.contains(type)){
return type + delimiter + key;
}
if (!RedisKey.newAreaCacChe.contains(type) && !RedisKey.rankCacChe.contains(type) && key.length() == 8) {
Integer serverId = RedisUtil.getInstence().getObject(RedisKey.CUser_ServerId_Key, key, Integer.class, GlobalsDef.REDIS_OVER_TIME_DAY * 10);
if (serverId != null) {
return serverId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
return serverId + delimiter + type + delimiter + key;
}
}
return AreaManager.areaId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
return AreaManager.areaId + delimiter + type + delimiter + key;
}
/**

View File

@ -46,6 +46,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.Map;
@SuppressWarnings("unused")
public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.HardStageFightRequest> {
@Override
@ -59,7 +60,7 @@ public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.Ha
int nodeId = proto.getNodeId();
int teamId = proto.getTeamId();
CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder();
List<Integer> dropList = new ArrayList<Integer>();
List<Integer> dropList = new ArrayList<>();
SHardStage nodeConfig = SHardStage.getConfigMap().get(nodeId);
long createTime = user.getPlayerInfoManager().getCreateTime();
@ -135,7 +136,7 @@ public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.Ha
CommonProto.FightTeamInfo fightTeamInfo = HardStageLogic.getFightTeamInfo(user, teamId, nodeConfig);
LuaValue getFightData = FightDataUtil.getFinalFightData(fightTeamInfo, monsterGroupList);
getFightData.set("nodeId", nodeId);
LuaValue getOptionData = FightDataUtil.getOptionData(user.getId() + "");
LuaValue getOptionData = FightDataUtil.getOptionData(String.valueOf(user.getId()));
long[][] fight = CheckFight.getInstance().checkHardStageFight(seed, 20, getFightData, getOptionData, FightType.HardStage);
int[] resultNum = new int[3];
resultNum[0] = (int) fight[1][1];
@ -175,42 +176,16 @@ public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.Ha
com.ljsd.jieling.logic.dao.root.ArenaRecord arenaRecord = new com.ljsd.jieling.logic.dao.root.ArenaRecord();
arenaRecord.setId("1_" + nodeId);
arenaRecord.setType(1);
arenaRecord.setStageId(nodeId);
arenaRecord.setCreateTime(TimeUtils.nowInt());
arenaRecord.setAttackId(user.getId());
arenaRecord.setLevel(user.getPlayerInfoManager().getLevel());
arenaRecord.setHead(user.getPlayerInfoManager().getHead());
arenaRecord.setUserName(user.getPlayerInfoManager().getNickName());
arenaRecord.setHeadFrame(user.getPlayerInfoManager().getHeadFrame());
arenaRecord.setFightData(fightData.toByteArray());
arenaRecord.setAttackForce(force);
ljsdMongoTemplate.save(user.getId(), arenaRecord);
setAreanRecord(user, nodeId, fightData, force, ljsdMongoTemplate, arenaRecord);
}
if (minForcePassRecordMongo == null) {
com.ljsd.jieling.logic.dao.root.ArenaRecord minForcePassRecord = new com.ljsd.jieling.logic.dao.root.ArenaRecord();
minForcePassRecord.setId("2_" + nodeId);
minForcePassRecord.setType(2);
minForcePassRecord.setStageId(nodeId);
minForcePassRecord.setCreateTime(TimeUtils.nowInt());
minForcePassRecord.setAttackId(user.getId());
minForcePassRecord.setLevel(user.getPlayerInfoManager().getLevel());
minForcePassRecord.setHead(user.getPlayerInfoManager().getHead());
minForcePassRecord.setUserName(user.getPlayerInfoManager().getNickName());
minForcePassRecord.setHeadFrame(user.getPlayerInfoManager().getHeadFrame());
minForcePassRecord.setFightData(fightData.toByteArray());
minForcePassRecord.setAttackForce(force);
ljsdMongoTemplate.save(user.getId(), minForcePassRecord);
setAreanRecord(user, nodeId, fightData, force, ljsdMongoTemplate, minForcePassRecord);
} else {
if (force < minForcePassRecordMongo.getAttackForce()) {
minForcePassRecordMongo.setCreateTime(TimeUtils.nowInt());
minForcePassRecordMongo.setAttackId(user.getId());
minForcePassRecordMongo.setLevel(user.getPlayerInfoManager().getLevel());
minForcePassRecordMongo.setHead(user.getPlayerInfoManager().getHead());
minForcePassRecordMongo.setUserName(user.getPlayerInfoManager().getNickName());
minForcePassRecordMongo.setHeadFrame(user.getPlayerInfoManager().getHeadFrame());
minForcePassRecordMongo.setFightData(fightData.toByteArray());
minForcePassRecordMongo.setAttackForce(force);
ljsdMongoTemplate.save(user.getId(), minForcePassRecordMongo);
setArena(user, fightData, force, ljsdMongoTemplate, minForcePassRecordMongo);
}
}
//排行榜星级
@ -255,7 +230,7 @@ public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.Ha
//开新分页 新章的时候 推送刷新消息
int maxChapter = chapterMap.keySet().stream().max(Comparator.comparing(Integer::intValue)).orElse(0);
if (maxChapter % 10 == 1) {
int nextPage = maxChapter % 10 == 0 ? maxChapter / 10 : maxChapter / 10 + 1;
int nextPage = maxChapter / 10 + 1;
if (nextPage != page) {
//更新消息
HardStageLogic.sendHardStageIndication(user, nextPage);
@ -264,4 +239,21 @@ public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.Ha
//埋点数据
ReportUtil.onReportEvent(user, ReportEventEnum.HARD_STAGE.getType(), logType, logSectionId, String.valueOf(logResult), logStarNum);
}
private void setAreanRecord(User user, int nodeId, CommonProto.FightData fightData, int force, LjsdMongoTemplate ljsdMongoTemplate, com.ljsd.jieling.logic.dao.root.ArenaRecord arenaRecord) throws Exception {
arenaRecord.setStageId(nodeId);
setArena(user, fightData, force, ljsdMongoTemplate, arenaRecord);
}
private void setArena(User user, CommonProto.FightData fightData, int force, LjsdMongoTemplate ljsdMongoTemplate, com.ljsd.jieling.logic.dao.root.ArenaRecord arenaRecord) throws Exception {
arenaRecord.setCreateTime(TimeUtils.nowInt());
arenaRecord.setAttackId(user.getId());
arenaRecord.setLevel(user.getPlayerInfoManager().getLevel());
arenaRecord.setHead(user.getPlayerInfoManager().getHead());
arenaRecord.setUserName(user.getPlayerInfoManager().getNickName());
arenaRecord.setHeadFrame(user.getPlayerInfoManager().getHeadFrame());
arenaRecord.setFightData(fightData.toByteArray());
arenaRecord.setAttackForce(force);
ljsdMongoTemplate.save(user.getId(), arenaRecord);
}
}

View File

@ -107,12 +107,6 @@ public class ItemUtil {
/**
*
* @param user
* @param itemArr
* @param count
* @param reason
* @return
* @throws Exception
*/
public static CommonProto.Drop.Builder drop(User user, int[][] itemArr, float count, int reason) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
@ -124,13 +118,6 @@ public class ItemUtil {
/**
*
* @param user
* @param itemArr
* @param count
* @param reason
* @param drop
* @return
* @throws Exception
*/
public static CommonProto.Drop.Builder drop(User user, int[][] itemArr, float count, int reason, CommonProto.Drop.Builder drop) throws Exception {
ItemMap itemObj = new ItemMap();
@ -160,7 +147,6 @@ public class ItemUtil {
ItemMap itemObj = new ItemMap();
selectItemArr(itemArr,itemObj);
// useRandomItem(user,randomMap,reason);
mapToAdd(user,itemObj,dropBuilder,reason);
return dropBuilder;
}
@ -169,7 +155,6 @@ public class ItemUtil {
ItemMap itemObj = new ItemMap();
selectItemArr(itemArr,itemObj);
// useRandomItem(user,randomMap,reason);
int ints = addItemByMail(user, itemObj.getItemMap(), dropBuilder, reason);
maptoAddWithOutItem(user,itemObj,dropBuilder,reason);
return ints;
@ -253,13 +238,7 @@ public class ItemUtil {
}
/**
*
* @param user
* @param dropGroupIds
* @param dropRatio
* @param isMapping 1
* @return
* @throws Exception
*
*/
public static CommonProto.Drop.Builder drop(User user, int[] dropGroupIds,float dropRatio, int isMapping,int reason) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
@ -270,11 +249,7 @@ public class ItemUtil {
}
/**
*
* @param user
* @param dropGroupIds
* @return
* @throws Exception
*
*/
public static CommonProto.Drop.Builder dropToPrivilege(User user, int[] dropGroupIds, int reason) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
@ -297,7 +272,7 @@ public class ItemUtil {
ItemMap itemObj = new ItemMap();
combineRewardDropGroup(user, dropGroupIds, dropRatio,itemObj);
//TODO Inconvertible types; cannot cast 'java.lang.Long' to 'java.lang.Integer'
Map<Integer,Integer> itemMap = itemObj.getItemMap().entrySet().stream().collect(Collectors.toMap(e->e.getKey(),e->Integer.parseInt(e.getValue().toString())));
Map<Integer,Integer> itemMap = itemObj.getItemMap().entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e->Integer.parseInt(e.getValue().toString())));
combineItem.putAll(itemObj.getCardMap());
combineItem.putAll(itemObj.getEquipMap());
combineItem.putAll(itemMap);
@ -305,11 +280,7 @@ public class ItemUtil {
}
/**
* @param user
* @param dropGroupIds
* @param dropRatio
* @return
* @throws Exception
*
*/
public static String getMailReward (User user,int[] dropGroupIds,float dropRatio) throws Exception {
ItemMap itemObj = new ItemMap();