跨服加公会

back_recharge
jiahuiwen 2022-04-18 15:17:35 +08:00
parent 360e6c846d
commit 30175a75c2
46 changed files with 359 additions and 485 deletions

View File

@ -39,7 +39,7 @@ public class ItemStaticConfig extends AbstractClassStaticConfig {
try {
ItemUtil.initDropReward();
} catch (Exception e) {
LOGGER.error("SRewardItem|SRewardGroup init fail");
LOGGER.error("SRewardItem|SRewardGroup init fail {}", e);
}
try {
euipTppes = new HashMap<>();

View File

@ -103,11 +103,12 @@ public class CarDelayFunction implements FunctionManager {
String value = item.getValue();
int guildId = Integer.parseInt(value);
String rewardByRank = guildRewardConfigTreeMap.floorEntry(rank).getValue();
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
if(guildInfo==null){
continue;
}
guildInfo.clearCarFightSb();
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
Collection<Set<Integer>> values = guildInfo.getMembers().values();
// if(userLevelGuildMap.containsKey(guildId)){
// values.add(usersByGuildId.get(guildId));

View File

@ -329,60 +329,60 @@ public class AreaManager {
private void processChangeGuildName(){
try {
//合并名称
//查找本服所有名称
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
for(Map.Entry<Integer, GuildInfo> entry:guildInfoMap.entrySet()) {
String newKey = RedisKey.getKey(RedisKey.C_Family_Name_Key, entry.getValue().getName(), true);
if(newKey.startsWith(String.valueOf(areaId))){
int length =newKey.length();
newKey = newAreaId+newKey.substring(String.valueOf(areaId).length(),length);
}
Object extFamilyId = RedisUtil.getInstence().get(newKey);
String tempName = newKey;
String tempAdd="" ;
if (extFamilyId != null) {
int i = 0;
while (i < 1000 && extFamilyId != null) {
i++;
tempAdd="_S" + i;
tempName = newKey + tempAdd;
extFamilyId = RedisUtil.getInstence().get(tempName);
}
try {
entry.getValue().setName(entry.getValue().getName()+tempAdd);
Set<Integer> chairmans = entry.getValue().getMembers().get(GlobalsDef.CHAIRMAN);
for (Integer userId : chairmans) {
//sendmail
String title = SErrorCodeEerverConfig.getI18NMessage("hefugaiming_mail_gonghui_title");
String content = SErrorCodeEerverConfig.getI18NMessage("hefugaiming_mail_gonghui_txt");
int[][] values = new int[1][2];
values[0][0] = Global.GEM;
values[0][1] = 100;
String mailReward = ItemUtil.getMailReward(values);
int nowTime = (int) (TimeUtils.now() / 1000);
MailLogic.getInstance().sendMail(userId, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
}
} catch (Exception e) {
LOGGER.info("合并命名异常" + e);
}
}
RedisUtil.getInstence().set(tempName, String.valueOf(extFamilyId),RedisKey.REDIS_OVER_FOREVER);
}
} catch (Exception e) {
LOGGER.info("合并命名异常" + e.toString());
}
// try {
// //合并名称
//
// //查找本服所有名称
// Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
// for(Map.Entry<Integer, GuildInfo> entry:guildInfoMap.entrySet()) {
//
// String newKey = RedisKey.getKey(RedisKey.C_Family_Name_Key, entry.getValue().getName(), true);
//
// if(newKey.startsWith(String.valueOf(areaId))){
// int length =newKey.length();
// newKey = newAreaId+newKey.substring(String.valueOf(areaId).length(),length);
// }
//
// Object extFamilyId = RedisUtil.getInstence().get(newKey);
//
// String tempName = newKey;
// String tempAdd="" ;
// if (extFamilyId != null) {
// int i = 0;
// while (i < 1000 && extFamilyId != null) {
// i++;
// tempAdd="_S" + i;
// tempName = newKey + tempAdd;
// extFamilyId = RedisUtil.getInstence().get(tempName);
// }
//
// try {
//
// entry.getValue().setName(entry.getValue().getName()+tempAdd);
// Set<Integer> chairmans = entry.getValue().getMembers().get(GlobalsDef.CHAIRMAN);
//
// for (Integer userId : chairmans) {
// //sendmail
// String title = SErrorCodeEerverConfig.getI18NMessage("hefugaiming_mail_gonghui_title");
// String content = SErrorCodeEerverConfig.getI18NMessage("hefugaiming_mail_gonghui_txt");
// int[][] values = new int[1][2];
// values[0][0] = Global.GEM;
// values[0][1] = 100;
// String mailReward = ItemUtil.getMailReward(values);
// int nowTime = (int) (TimeUtils.now() / 1000);
// MailLogic.getInstance().sendMail(userId, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
// }
//
// } catch (Exception e) {
// LOGGER.info("合并命名异常" + e);
// }
//
// }
// RedisUtil.getInstence().set(tempName, String.valueOf(extFamilyId),RedisKey.REDIS_OVER_FOREVER);
// }
// } catch (Exception e) {
// LOGGER.info("合并命名异常" + e.toString());
// }
}

View File

@ -4,6 +4,9 @@ import com.alibaba.fastjson.JSON;
import com.google.gson.*;
import com.ljsd.GameApplication;
import com.ljsd.jieling.db.mongo.core.CServerInfo;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
@ -59,7 +62,6 @@ public class MongoUtil {
public static Map<Integer,MongoTemplate> mongoTemplateMap = new HashMap<>();
public static Map<Integer,Integer> guild2serverid= new HashMap<>();
private MongoClient mongoClient;
private LjsdMongoTemplate myMongoTemplate;
@ -77,8 +79,6 @@ public class MongoUtil {
for (CServerInfo cServerInfo : cServerInfos) {
getMonogTemplate(cServerInfo.getServerId());
}
}
public LjsdMongoTemplate getMyMongoTemplate() {
@ -117,32 +117,6 @@ public class MongoUtil {
return MongoUtil.getInstence().coreMongoTemplate;
}
// public static void main(String[] args) {
// try {
// LjsdMongoTemplate ljsdMongoTemplate = getLjsdMongoTemplate();
// Criteria criatira = new Criteria();
// Random random = new Random();
// int minLevel = random.nextInt(10) - 5;
// minLevel = minLevel <= 5 ? 5 : minLevel;
// int maxLevel = random.nextInt(10) + 20;
// long befor3Day = 1558332518379l - 3;
//// criatira.andOperator(Criteria.where("id").nin(10003770),
//// Criteria.where("level").gte(minLevel), Criteria.where("level").lte(maxLevel),
//// Criteria.where("lastLoginTime").gte(befor3Day));//不包含自己
//// Criteria.where("level").is(1);
// Query query = new Query(criatira).limit(100);
// query.fields().include("playerManager");
// long startTime = System.currentTimeMillis();
// List<User> allByCondition = ljsdMongoTemplate.findAllByCondition(query, User.class);
// System.out.println((System.currentTimeMillis() - startTime));
// } catch (UnknownHostException e) {
// e.printStackTrace();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
public static void checkDb() {
Set<Integer> set = OnlineUserManager.sessionMap.keySet();
Integer[] integers = set.toArray(new Integer[0]);
@ -260,45 +234,40 @@ public class MongoUtil {
}
}
} catch (ClassCastException unused) {
is = false;
} catch (NullPointerException unused) {
is = false;
}
return is;
}
//慢查询 弃用 lxr
// public Integer findCUserServerId(int uid){
// BasicQuery basicQuery = new BasicQuery(new BasicDBObject("uid", uid),new BasicDBObject("serverId", 1));
// DBObject c_user_info = coreMongoTemplate.findOne(basicQuery, DBObject.class, "user_info");
// if(c_user_info == null){
// LOGGER.error("the user={} not exists",uid);
// return null;
// }
// String serverid = (String) c_user_info.get("serverId");
//
// return Integer.valueOf(serverid);
// }
public Integer findGuilderverId(int guildId){
if(guild2serverid.containsKey(guildId)){
return guild2serverid.get(guildId);
}else {
guild2serverid.put(guildId, GameApplication.serverId);
return GameApplication.serverId;
}
}
//初始化 数据库映射 公会server映射
public MongoTemplate getMonogTemplate(int serverId){
if (serverId == GameApplication.serverId) {
MongoTemplate mongoTemplate = mongoTemplateMap.get(serverId);
if (mongoTemplate == null) {
String dbName = "jieling_"+serverId;
MappingMongoConverter mappingMongoConverter = (MappingMongoConverter) ConfigurableApplicationContextManager.getBean("mappingMongoConverter1");
MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongoClient, dbName);
mongoTemplate = new MongoTemplate(mongoDbFactory, mappingMongoConverter);
mongoTemplateMap.put(serverId,mongoTemplate);
}
return mongoTemplate;
}
// 如果不参与跨服,不可以获取其他服数据
if (GlobleSystemLogic.crossGroup == 0) {
return null;
}
Integer group = RedisUtil.getInstence().getMapValue(RedisKey.SERVER_SPLIT_INFO, "", Integer.toString(serverId), Integer.class);
if (group == null || group <= 0){
return null;
}
// 不是同一组也不可以获取数据
if (GlobleSystemLogic.crossGroup != group) {
return null;
}
if(!AreaManager.getInstance().checkServerIdAllowPermit(serverId)){
return null;
}
@ -310,24 +279,22 @@ public class MongoUtil {
MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongoClient, dbName);
mongoTemplate = new MongoTemplate(mongoDbFactory, mappingMongoConverter);
mongoTemplateMap.put(serverId,mongoTemplate);
List<GuildInfo> all = mongoTemplate.findAll(GuildInfo.class, GuildInfo._COLLECTION_NAME);
for (GuildInfo guildInfo:all) {
guild2serverid.put(guildInfo.getId(),serverId);
}
}
return mongoTemplate;
}
//初始化 数据库映射 无合服操作拦截
// public MongoTemplate getMonogTemplate2(int serverId){
// MongoTemplate mongoTemplate = mongoTemplateMap.get(serverId);
// if(mongoTemplate == null){
// String dbName = "jieling_"+serverId;
// // new MongoTemplate(this.mongoDbFactory(), this.mappingMongoConverter1())
// MappingMongoConverter mappingMongoConverter = (MappingMongoConverter) ConfigurableApplicationContextManager.getBean("mappingMongoConverter1");
// MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongoClient, dbName);
// mongoTemplate = new MongoTemplate(mongoDbFactory, mappingMongoConverter);
// mongoTemplateMap.put(serverId,mongoTemplate);
// }
// return mongoTemplate;
// }
/**
* id
* @param guildId
* @return
*/
public Integer findGuilderverId(int guildId){
Integer serverId = RedisUtil.getInstence().getObject(RedisKey.GUILD_SERVERID, Integer.toString(guildId), Integer.class, -1);
if(serverId != null){
return serverId;
}else {
return GameApplication.serverId;
}
}
}

View File

@ -143,6 +143,8 @@ public class RedisKey {
public static final String FAMILY_INFO = "FAMILY_INFO";
public static final String FAMILY_NAMES = "FAMILY_NAMES";
public static final String FAMILY_FIGHT = "FAMILY_FIGHT" ;
public static final String FAMILY_ATTACK_BLOOD = "FAMILY_ATTACK_BLOOD";
public static final String FAMILY_FIGHT_RANK = "FAMILY_FIGHT_RANK";
@ -277,9 +279,7 @@ public class RedisKey {
public static final String PLAYER_INFO_CACHE = "PLAYER_INFO_CACHE";
public static final String GUILD_INFO_CACHE = "GUILD_INFO_CACHE";
//排行榜
public final static String CHAMPION_RANK = "CHAMPION_RANK";
public static final String SYSMSG = "SYSMSG";//????
@ -355,7 +355,7 @@ public class RedisKey {
public static final String WORLD_ARENA_RRECORD = "WORLD_ARENA_RRECORD";
public static final String GUILD_LEADER_CACHE = "GUILD_LEADER_CACHE";
public static final String GUILD_SERVERID = "GUILD_SERVERID";
public static final String CROSS_RANK_UPDATE = "CROSS_RANK_UPDATE";
public static final String CROSS_RANK_DELETE = "CROSS_RANK_DELETE";

View File

@ -1419,7 +1419,7 @@ public class RedisUtil {
else if (
RedisKey.PLAYER_INFO_CACHE.equals(type) || RedisKey.FAMILY_INFO.equals(type) ||
RedisKey.PIDGIDTEMP.equals(type) || RedisKey.SERVER_WORLDLEVE_INFO.equals(type) ||
RedisKey.GUILD_INFO_CACHE.equals(type) || RedisKey.SERVER_SPLIT_INFO.equals(type) ||
RedisKey.SERVER_SPLIT_INFO.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) ||
@ -1443,7 +1443,7 @@ public class RedisUtil {
if(RedisKey.PLAYER_INFO_CACHE.equals(type) ||RedisKey.FAMILY_INFO.equals(type)||
RedisKey.PIDGIDTEMP.equals(type)||RedisKey.SERVER_WORLDLEVE_INFO.equals(type)||
RedisKey.GUILD_INFO_CACHE.equals(type)||RedisKey.SERVER_SPLIT_INFO.equals(type)||
RedisKey.SERVER_SPLIT_INFO.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)||

View File

@ -64,7 +64,7 @@ public class FastChallengeHandler extends BaseHandler<FightInfoProto.FastFightCh
}
if(type == 1 || type == 2){
guildInfo = GuilidManager.guildInfoMap.get(user.getPlayerInfoManager().getGuildId());
guildInfo = GuilidManager.getGuildInfo(user.getPlayerInfoManager().getGuildId());
if(guildInfo == null){
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE);
}

View File

@ -58,7 +58,7 @@ public class CommitShejiActivityItemRequestHandler extends BaseHandler<ActivityP
}
//lock all
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
Set<Integer> sendUids = new HashSet<>();
for (Set<Integer> items : guildInfo.getMembers().values()) {
sendUids.addAll(items);
@ -100,6 +100,7 @@ public class CommitShejiActivityItemRequestHandler extends BaseHandler<ActivityP
_result[0][1]= sGodSacrificeSetting.getRewardItemChangRate()[index+3]*proto.getItemNum();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, _result, BIReason.SHEJI_ACTIVITY);
guildInfo.setGuildSheJiScore(score+guildInfo.getGuildSheJiScore());
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
Poster.getPoster().dispatchEvent(new CommitSheJiEvent(guildId,uid,score,proto.getItemId(),proto.getItemNum()));
//社稷捐献次数
user.getUserMissionManager().onGameEvent(user, GameEvent.SHEJI_DONATE,1);

View File

@ -1,17 +1,13 @@
package com.ljsd.jieling.handler.family;
import com.google.protobuf.GeneratedMessage;
import com.ljsd.GameApplication;
import com.ljsd.jieling.core.Lockeys;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
@ -76,7 +72,7 @@ public class FamilyFeteRequestHandler extends BaseHandler<Family.FamilyFeteReque
//drop exp
//lock 操作公会
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
if (guildInfo == null) {
throw new ErrorCodeException(ErrorCode.FAMILY_NULL);
@ -100,6 +96,7 @@ public class FamilyFeteRequestHandler extends BaseHandler<Family.FamilyFeteReque
CrossDeathPathLogic.setCrossGuild(guildInfo);
} else {
guildInfo.updateExp(guildInfo.getExp() + addexp);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
}
int exp = guildInfo.getExp();
return Family.FamilyFeteResponse.newBuilder().setCurExp(exp).setDrop(drop).build();

View File

@ -57,7 +57,7 @@ public class FamilyGetFeteRewardRequestHandler extends BaseHandler<Family.Family
//check value 检查下公会进度;
//TODO 加锁
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
int fete = guildInfo.getFete();
if(sGuildSacrificeRewardConfig.getScore()>fete){
throw new ErrorCodeException("当前公会祭祀积分进度未达成 target"+sGuildSacrificeRewardConfig.getScore()+"now:"+fete);

View File

@ -9,7 +9,6 @@ import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
@ -66,7 +65,7 @@ public class GetCarChallengeListHandler extends BaseHandler {
int zsetSize = RedisUtil.getInstence().getZsetSize(key);
int[] matchSection = STableManager.getConfig(SWorldBossSetting.class).get(1).getMatchSection();
int matchNums = matchSection[0] + matchSection[1];
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
Set<Integer> members = new HashSet<>();
guildInfo.getMembers().values().forEach(integers ->members.addAll(integers));
@ -207,7 +206,7 @@ public class GetCarChallengeListHandler extends BaseHandler {
.setPracticeLevel(csPlayer.getPracticeLevel())
.setServerName(serverName);
if(challengeGuildId!=0){
GuildCache crossGuild = CrossDeathPathLogic.getCrossGuild(challengeGuildId);
GuildInfo crossGuild = CrossDeathPathLogic.getCrossGuild(challengeGuildId);
builder1.setGuildName(crossGuild.getName());
}
builder.addCarChallengeItem(builder1);
@ -232,7 +231,7 @@ public class GetCarChallengeListHandler extends BaseHandler {
builder1.addTeamInfo(CBean2Proto.getSimpleTeamInfoByHero(user, hero,heroInfo.getPosition()));
}
if(challengeGuildId!=0){
GuildInfo challenegeGuildInfo = GuilidManager.guildInfoMap.get(challenegeUser.getPlayerInfoManager().getGuildId());
GuildInfo challenegeGuildInfo = GuilidManager.getGuildInfo(challenegeUser.getPlayerInfoManager().getGuildId());
builder1.setGuildName(challenegeGuildInfo.getName());
}
builder.addCarChallengeItem(builder1);

View File

@ -38,7 +38,7 @@ public class GuildGetHelpLogRequestHandler extends BaseHandler<Family.GuildGetHe
if(guildId == 0){
throw new ErrorCodeException(ErrorCode.FAMILY_NO);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
Set<Integer> sendUids = new HashSet<>();
for (Set<Integer> items : guildInfo.getMembers().values()) {
sendUids.addAll(items);

View File

@ -41,7 +41,7 @@ public class GuildHelpGetAllRequestHandler extends BaseHandler<Family.GuildHelpG
}
//lock all
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
Set<Integer> sendUids = new HashSet<>();
for (Set<Integer> items : guildInfo.getMembers().values()) {
sendUids.addAll(items);

View File

@ -61,7 +61,7 @@ public class GuildHelpHelpOtherRequestHandler extends BaseHandler<Family.GuildHe
//lock all 会修改公会记录
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
Set<Integer> sendUids = new HashSet<>();
for (Set<Integer> items : guildInfo.getMembers().values()) {
sendUids.addAll(items);
@ -102,18 +102,19 @@ public class GuildHelpHelpOtherRequestHandler extends BaseHandler<Family.GuildHe
build.addGuildHelpInfo(CommonProto.GuildHelpInfo.newBuilder().setType(entry.getKey()).setHadtakenum(target.getGuildMyInfo().getGuidHelpHadTakeInfo().getOrDefault(entry.getKey(),0)).setNum(entry.getValue()));
}
build.setName(target.getPlayerInfoManager().getNickName()).setUid(target.getId()).setPracticeLevel(target.getHeroManager().getPracticeLevel());
GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildId), MessageTypeProto.MessageType.GuildHelpInfoIndication,build.build());
GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(guildId), MessageTypeProto.MessageType.GuildHelpInfoIndication,build.build());
GuildHelpLog guildHelpLog = new GuildHelpLog(uid, target.getId(), user.getPlayerInfoManager().getNickName(),
target.getPlayerInfoManager().getNickName(), (int) (System.currentTimeMillis() / 1000), proto.getType(),
user.getHeroManager().getPracticeLevel(), target.getHeroManager().getPracticeLevel());
guildInfo.addGuildHelpLog(guildHelpLog);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
//notify all log
Family.GuildHelpLogIndication build1 = Family.GuildHelpLogIndication.newBuilder()
.setGuildHelpLog(GuildLogic.getLog(guildHelpLog))
.build();
GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildId), MessageTypeProto.MessageType.GuildHelpLogIndication,build1);
GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(guildId), MessageTypeProto.MessageType.GuildHelpLogIndication,build1);
return Family.GuildHelpHelpOtherResponse.newBuilder().setDrop(drop).build();
}

View File

@ -43,7 +43,7 @@ public class GuildSendHelpRequestHandler extends BaseHandler<Family.GuildSendHel
}
//lock all
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
Set<Integer> sendUids = new HashSet<>();
for (Set<Integer> items : guildInfo.getMembers().values()) {
sendUids.addAll(items);
@ -86,7 +86,7 @@ public class GuildSendHelpRequestHandler extends BaseHandler<Family.GuildSendHel
.setName(user.getPlayerInfoManager().getNickName())
.setPracticeLevel(user.getHeroManager().getPracticeLevel())
.build();
GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildId), MessageTypeProto.MessageType.GuildHelpInfoIndication,build);
GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(guildId), MessageTypeProto.MessageType.GuildHelpInfoIndication,build);
long time =System.currentTimeMillis();

View File

@ -22,7 +22,7 @@ public class Cmd_addfete extends GmRoleAbstract {
int guildId = Integer.parseInt(args[0]);
int addexp = Integer.parseInt(args[1]);
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
if (guildInfo == null) {
throw new ErrorCodeException(ErrorCode.FAMILY_NULL);
@ -37,6 +37,7 @@ public class Cmd_addfete extends GmRoleAbstract {
CrossDeathPathLogic.setCrossGuild(guildInfo);
} else {
guildInfo.updateExp(guildInfo.getExp() + addexp);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
}
return true;
}

View File

@ -25,7 +25,7 @@ public class Cmd_guildboss extends GmRoleAbstract {
// 获取公会信息
int guildId = user.getPlayerInfoManager().getGuildId();
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
// 更换boss信息
if(guildInfo.getCurrBossId()!=configMap.size()){
guildInfo.setCurrBossId(Integer.parseInt(arg));
@ -33,7 +33,7 @@ public class Cmd_guildboss extends GmRoleAbstract {
}else{
guildInfo.setBossHpRemain(-1);
}
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
return true;
}
}

View File

@ -42,7 +42,7 @@ public class Cmd_skyeye extends GmRoleAbstract {
// 获取公会信息
GuildInfo guildInfo = null;
if (type == RESET_GUILD_NAME || type == RESET_GUILD_ANNOUNCEMENT){
guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(args[2]));
guildInfo = GuilidManager.getGuildInfo(Integer.parseInt(args[2]));
}
if (guildInfo == null){
LOGGER.error("天眼,修改公会名称报错,找不到公会:{}",args[1]);

View File

@ -15,7 +15,7 @@ public class Cmd_updateguild extends GmAbstract {
public boolean exec(String[] args) throws Exception {
int guildId = Optional.of(Integer.parseInt(args[0])).orElse(0);
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
if (guildInfo == null) {
throw new ErrorCodeException("修改公会,公会不存在,公会id:"+guildId);
}
@ -37,6 +37,7 @@ public class Cmd_updateguild extends GmAbstract {
case "dissolution":
guildInfo.setLevelTime(1);
GuilidManager.addGuildToRelease(guildInfo);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
break;
default:
throw new ErrorCodeException("修改公会,类型错误,公会id:"+guildId+",类型:"+parm);

View File

@ -84,7 +84,7 @@ public class ReportUtil {
int guildId = user.getPlayerInfoManager().getGuildId();
GuildInfo guildInfo = null;
if(guildId!=0){
guildInfo = GuilidManager.guildInfoMap.get(guildId);
guildInfo = GuilidManager.getGuildInfo(guildId);
}
Item coin = user.getItemManager().getItem(COIN_ID);
Item diamond = user.getItemManager().getItem(DIAMOND_ID);

View File

@ -45,7 +45,7 @@ public class GlobleSystemLogic implements IEventHandler {
*/
private static volatile int GLOABLE_WORLD_LEVE_CACHE = 0;
private static volatile int GLOABLE_WORLD_LEVE_CACHE_LINE = 0; // 名次基线 看配置
private static int crossGroup = 0;
public static int crossGroup = 0;
private GlobleSystemLogic() {
Poster.getPoster().listenEvent(this, MinuteTaskEvent.class);

View File

@ -47,7 +47,7 @@ public class ExploreExpectActivity extends AbstractActivity {
User user = UserManager.getUser(session.getUid(), true);
int guildId = user.getPlayerInfoManager().getGuildId();
if(guildId != 0 ){
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
return guildInfo.getExploreKillMonsterNum() >= values[0][0];
}
return false;
@ -59,9 +59,10 @@ public class ExploreExpectActivity extends AbstractActivity {
public void onActivityEndOnMySelf(User user) throws Exception {
int guildId = user.getPlayerInfoManager().getGuildId();
if(guildId !=0){
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
if(guildInfo.getExploreKillMonsterNum()!=0){
guildInfo.setExploreKillMonsterNum(0);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
}
}
}

View File

@ -113,7 +113,7 @@ class SheJiActivity extends AbstractActivity {
}
//lock all 会修改公会记录
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
Set<Integer> sendUids = new HashSet<>();
for (Set<Integer> items : guildInfo.getMembers().values()) {
sendUids.addAll(items);
@ -148,10 +148,9 @@ class SheJiActivity extends AbstractActivity {
public void onActivityEnd() throws Exception {
ThreadManager.getScheduledExecutor().execute(this::sendReward);
ThreadManager.getScheduledExecutor().execute(this::sendGuildReward);
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.getAllGuildInfos();
for(Map.Entry<Integer,GuildInfo> guildInfoEntry:guildInfoMap.entrySet()){
try {
SimpleTransaction transaction = SimpleTransaction.current();
GuildInfo guildInfo = guildInfoEntry.getValue();
Set<Integer> sendUids = new HashSet<>();
for (Set<Integer> items : guildInfo.getMembers().values()) {
@ -159,6 +158,7 @@ class SheJiActivity extends AbstractActivity {
}
Lockeys.getLockeys().lock("guild",sendUids);
guildInfo.setGuildSheJiScore(0);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
}catch (Exception e){
LOGGER.error("Exception resetGuildInfo err");
}finally {
@ -279,7 +279,7 @@ class SheJiActivity extends AbstractActivity {
try {
String guildId = item.getValue();
int guild = Integer.parseInt(guildId);
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guild);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guild);
Set<Integer> sendUids = new HashSet<>();
for (Set<Integer> items : guildInfo.getMembers().values()) {
sendUids.addAll(items);

View File

@ -1,39 +0,0 @@
package com.ljsd.jieling.logic.dao;
/**
* @author lvxinran
* @date 2020/12/11
* @discribe
*/
public class GuildInfoCache {
private int serverId;
private int guildId;
private String guildName;
public int getServerId() {
return serverId;
}
public void setServerId(int serverId) {
this.serverId = serverId;
}
public int getGuildId() {
return guildId;
}
public void setGuildId(int guildId) {
this.guildId = guildId;
}
public String getGuildName() {
return guildName;
}
public void setGuildName(String guildName) {
this.guildName = guildName;
}
}

View File

@ -22,29 +22,62 @@ import java.util.*;
public class GuilidManager {
public static Map<Integer,GuildInfo> guildInfoMap = new HashMap<>();
public static Map<String,GuildInfo> guildNameInfoMap = new HashMap<>();
public static Map<Integer,List<GuildLog>> guildLogInfoMap = new HashMap<>();
public static void addGuildInfo(GuildInfo guildInfo) throws Exception {
Integer guilderverId = MongoUtil.getInstence().findGuilderverId(guildInfo.getId());
MongoTemplate otherMonogTemplate = MongoUtil.getInstence().getMonogTemplate(guilderverId);
saveOrUpdateGuildInfo(guildInfo);
MongoTemplate otherMonogTemplate = MongoUtil.getInstence().getMonogTemplate(guildInfo.getServerId());
otherMonogTemplate.save(guildInfo);
// MongoUtil.getInstence().getMyMongoTemplate().save(guildInfo);
guildInfoMap.put(guildInfo.getId(),guildInfo);
guildNameInfoMap.put(guildInfo.getName(),guildInfo);
RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_NAMES, "", guildInfo.getName(), Integer.toString(guildInfo.getId()));
}
public static void saveOrUpdateGuildInfo(GuildInfo guildInfo) {
RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(guildInfo.getId()), guildInfo);
}
public static GuildInfo getGuildInfo(int guildId){
GuildInfo mapEntry = RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", Integer.toString(guildId), GuildInfo.class);
return mapEntry;
}
public static GuildInfo getGuildInfoByName(String guildName){
String guildId = RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_NAMES, "", guildName, String.class);
if (guildId == null || guildId.isEmpty()) {
return null;
}
GuildInfo guildInfo = getGuildInfo(Integer.parseInt(guildId));
return guildInfo;
}
public static Map<Integer, GuildInfo> getAllGuildInfos(){
Map<String, String> mapValues = RedisUtil.getInstence().getMapValues(RedisKey.FAMILY_NAMES, "", String.class, String.class);
if (mapValues == null || mapValues.isEmpty()) {
return new HashMap<>(0);
}
Map<Integer, GuildInfo> allGuildInfos = new HashMap<>(mapValues.size());
for (Map.Entry<String, String> entry : mapValues.entrySet()) {
GuildInfo guildInfo = getGuildInfo(Integer.parseInt(entry.getValue()));
allGuildInfos.put(guildInfo.getId(), guildInfo);
}
return allGuildInfos;
}
public static int getAllGuildCount(){
Map<String, String> mapValues = RedisUtil.getInstence().getMapValues(RedisKey.FAMILY_NAMES, "", String.class, String.class);
if (mapValues == null || mapValues.isEmpty()) {
return 0;
}
return mapValues.size();
}
public static void removeGuildInfo(GuildInfo guildInfo){
System.out.println("此处删除了工会信息"+guildInfo.getId());
int guildId = guildInfo.getId();
guildInfoMap.remove(guildId);
guildNameInfoMap.remove(guildInfo.getName());
RedisUtil.getInstence().removeMapEntrys(RedisKey.FAMILY_INFO, "", String.valueOf(guildId));
RedisUtil.getInstence().removeMapEntrys(RedisKey.FAMILY_NAMES, "", guildInfo.getName());
guildLogInfoMap.remove(guildId);
Integer guilderverId = MongoUtil.getInstence().findGuilderverId(guildId);
MongoTemplate otherMonogTemplate = MongoUtil.getInstence().getMonogTemplate(guilderverId);
MongoTemplate otherMonogTemplate = MongoUtil.getInstence().getMonogTemplate(guildInfo.getServerId());
otherMonogTemplate.remove(new BasicQuery(new BasicDBObject("_id",guildId)),"guildInfo");
otherMonogTemplate.remove(new BasicQuery(new BasicDBObject("guildId",guildId)),"guildLog");
}
@ -72,9 +105,8 @@ public class GuilidManager {
RedisUtil.getInstence().removeMapEntrys("apply-user-play",Integer.toString(uid),Integer.toString(guild));
}
public static void addGuildLog(GuildLog guildLog) throws Exception {
Integer guilderverId = MongoUtil.getInstence().findGuilderverId(guildLog.getGuildId());
MongoTemplate otherMonogTemplate = MongoUtil.getInstence().getMonogTemplate(guilderverId);
public static void addGuildLog(int serverId, GuildLog guildLog) throws Exception {
MongoTemplate otherMonogTemplate = MongoUtil.getInstence().getMonogTemplate(serverId);
otherMonogTemplate.save(guildLog);
if(!guildLogInfoMap.containsKey(guildLog.getGuildId())){
guildLogInfoMap.put(guildLog.getGuildId(),new ArrayList<>());
@ -83,13 +115,7 @@ public class GuilidManager {
}
public static void init() throws Exception {
List<GuildInfo> all = MongoUtil.getInstence().getMyMongoTemplate().findAll(GuildInfo._COLLECTION_NAME, GuildInfo.class);
List<GuildLog> guildLogs = MongoUtil.getInstence().getMyMongoTemplate().findAll(GuildLog._COLLECTION_NAME, GuildLog.class);
for(GuildInfo guildInfo : all){
guildInfoMap.put(guildInfo.getId(),guildInfo);
guildNameInfoMap.put(guildInfo.getName(),guildInfo);
}
for(GuildLog guildLog : guildLogs){
if(!guildLogInfoMap.containsKey(guildLog.getGuildId())){
guildLogInfoMap.put(guildLog.getGuildId(),new ArrayList<>());
@ -122,7 +148,7 @@ public class GuilidManager {
RedisUtil.getInstence().zsetRemoveOne(RedisUtil.getInstence().getKey(guildRank.getRedisKey(),""),value);
RedisUtil.getInstence().zsetRemoveOne(RedisUtil.getInstence().getKey(guildRank.getCrossRedisKey(),"",false),value);
GuildInfo guildInfo = guildInfoMap.get(Integer.parseInt(value));
GuildInfo guildInfo = RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", value, GuildInfo.class);
if(guildInfo == null){
// 公会不存在
CrossDeathPathLogic.removeCrossGuild(Integer.parseInt(value));
@ -140,7 +166,19 @@ public class GuilidManager {
}
public static Collection<GuildInfo> recommandGuild(User user) {
return guildInfoMap.values();
Map<String, String> mapValues = RedisUtil.getInstence().getMapValues(RedisKey.FAMILY_NAMES, "", String.class, String.class);
if (mapValues == null || mapValues.isEmpty()) {
return new ArrayList<>(0);
}
List<GuildInfo> guildInfo = new ArrayList<>(mapValues.size());
for (Map.Entry<String, String> entry : mapValues.entrySet()) {
GuildInfo mapEntry = RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", entry.getValue(), GuildInfo.class);
if (mapEntry == null) {
continue;
}
guildInfo.add(mapEntry);
}
return guildInfo;
}
public static void addGuildToRelease(GuildInfo guildInfo) {

View File

@ -1,79 +0,0 @@
package com.ljsd.jieling.logic.dao.root;
import com.ljsd.GameApplication;
import com.ljsd.jieling.core.GlobalsDef;
import java.util.Set;
public class GuildCache {
private int serverId;
private int icon;
private int level;
private String name;
private int leaderUId;
public int getServerId() {
return serverId;
}
public void setServerId(int serverId) {
this.serverId = serverId;
}
public int getIcon() {
return icon;
}
public void setIcon(int icon) {
this.icon = icon;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLeaderUId() {
return leaderUId;
}
public void setLeaderUId(int leaderUId) {
this.leaderUId = leaderUId;
}
public GuildCache(int serverId, int icon, int level, String name, int leaderUId) {
this.serverId = serverId;
this.icon = icon;
this.level = level;
this.name = name;
this.leaderUId = leaderUId;
}
/**
*
* @param guildInfo
* @return
*/
public static GuildCache create(GuildInfo guildInfo){
int serverId = GameApplication.serverId;
Set<Integer> set = guildInfo.getMembers().get(GlobalsDef.CHAIRMAN);
Integer userId = set.iterator().next();
return new GuildCache(serverId, guildInfo.getIcon(), guildInfo.getLevel(), guildInfo.getName(), userId);
}
}

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.dao.root;
import com.ljsd.GameApplication;
import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.logic.family.GuildLogic;
import rpc.protocols.Family;
@ -19,6 +20,8 @@ public class GuildInfo extends MongoBase {
private int id;
private int serverId;
private String name;
private String announce;
@ -90,6 +93,7 @@ public class GuildInfo extends MongoBase {
icon = MathUtils.randomInt(SGuildSetting.sGuildSetting.getTotemItem().length)+1;
defendInfo = new ConcurrentHashMap<>();
currBossId = 1;
this.serverId = GameApplication.serverId;
}
public void addMembers(int type,int uid){
@ -190,10 +194,6 @@ public class GuildInfo extends MongoBase {
defendInfo.remove(uid);
removeString("defendInfo."+uid);
}
public void removeAllDefendInfo(){
defendInfo = new HashMap<>();
updateString("defendInfo",new HashMap<>());
}
public int getIcon() {
return icon;
}
@ -337,6 +337,15 @@ public class GuildInfo extends MongoBase {
this.guildSheJiScore = guildSheJiScore;
}
public int getServerId() {
return serverId;
}
public void setServerId(int serverId) {
updateString("serverId",serverId);
this.serverId = serverId;
}
public List<Integer> getHistoryMember() {
return historyMember;
}

View File

@ -125,9 +125,10 @@ public class ExplorerMapLogic {
//同个工会 死亡计数
int guildId = user.getPlayerInfoManager().getGuildId();
if (guildId != 0) {
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
if (guildInfo != null) {
guildInfo.setExploreKillMonsterNum(guildInfo.getExploreKillMonsterNum() + 1);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
Poster.getPoster().dispatchEvent(new ExploreEvent(user.getId(), 1));
Set<Integer> allUid = new HashSet<>();
allUid.addAll(guildInfo.getMembers().get(GlobalsDef.CHAIRMAN));

View File

@ -1,29 +1,21 @@
package com.ljsd.jieling.logic.family;
import com.ljsd.GameApplication;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.mongo.core.CServerInfo;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankEnum;
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
import com.ljsd.jieling.tools.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import util.TimeUtils;
import java.math.BigDecimal;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
/**
* @Author hj
@ -105,8 +97,8 @@ public class CrossDeathPathLogic {
* @param id
* @return
*/
public static GuildCache getCrossGuild(int id){
return RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(id), GuildCache.class);
public static GuildInfo getCrossGuild(int id){
return RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(id), GuildInfo.class);
}
/**
@ -115,7 +107,7 @@ public class CrossDeathPathLogic {
* @return
*/
public static void setCrossGuild(GuildInfo guildInfo){
RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(guildInfo.getId()), GuildCache.create(guildInfo));
RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(guildInfo.getId()), guildInfo);
}
/**
@ -159,7 +151,7 @@ public class CrossDeathPathLogic {
for(ZSetOperations.TypedTuple<String> value:values){
rank++;
int guildId = Integer.parseInt(value.getValue());
GuildCache guild = getCrossGuild(guildId);
GuildInfo guild = getCrossGuild(guildId);
if(guild==null||guild.getServerId()!=serverId){
continue;
}
@ -175,13 +167,13 @@ public class CrossDeathPathLogic {
RedisUtil.getInstence().delVague(RedisKey.DEATH_PATH_DELETE,pattern);
// 旧数据兼容,只执行一次
String one = (String) RedisUtil.getInstence().get(groupId+RedisKey.DEATH_PATH_DELETE_CROSS_ONE);
if (one == null){
Set<String> dimKey = RedisUtil.getInstence().getDimKey("DEATH_PATH*"+groupId+":*", -1);
String[] keys = dimKey.toArray(new String[0]);
RedisUtil.getInstence().del(keys);
RedisUtil.getInstence().set(groupId+RedisKey.DEATH_PATH_DELETE_CROSS_ONE,"1");
}
// String one = (String) RedisUtil.getInstence().get(groupId+RedisKey.DEATH_PATH_DELETE_CROSS_ONE);
// if (one == null){
// Set<String> dimKey = RedisUtil.getInstence().getDimKey("DEATH_PATH*"+groupId+":*", -1);
// String[] keys = dimKey.toArray(new String[0]);
// RedisUtil.getInstence().del(keys);
// RedisUtil.getInstence().set(groupId+RedisKey.DEATH_PATH_DELETE_CROSS_ONE,"1");
// }
}
return hashMap;
}

View File

@ -5,7 +5,6 @@ import com.ljsd.common.mogodb.util.BlockingUniqueQueue;
import com.ljsd.fight.FightType;
import com.ljsd.jieling.chat.logic.ChatLogic;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode;
@ -17,7 +16,6 @@ import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.*;
@ -262,7 +260,7 @@ public class DeathPathLogic {
break;
}
String gid = firstGuild.iterator().next().getValue();
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(gid));
GuildInfo guildInfo = GuilidManager.getGuildInfo(Integer.parseInt(gid));
String message = SErrorCodeEerverConfig.getI18NMessageNeedConvert("guildwar_content", new Object[]{guildInfo.getName()},new int[]{0});
ChatLogic.getInstance().sendSysChatMessage(message, Global.DEATH_PATH_FIRST, "", 0, 0, 0, 0, 0);
break;
@ -330,8 +328,8 @@ public class DeathPathLogic {
LOGGER.info("十绝阵信息,分组情况:{},排名信息:{}",getGroupId(),iterator.toString());
ZSetOperations.TypedTuple<String> next = iterator.next();
int guildId = Integer.parseInt(next.getValue());
GuildCache crossGuild = CrossDeathPathLogic.getCrossGuild(guildId);
Integer serverId = Optional.ofNullable(CrossDeathPathLogic.getCrossGuild(guildId)).map(GuildCache::getServerId).orElse(0);
GuildInfo crossGuild = CrossDeathPathLogic.getCrossGuild(guildId);
Integer serverId = Optional.ofNullable(CrossDeathPathLogic.getCrossGuild(guildId)).map(GuildInfo::getServerId).orElse(0);
String serverName = result ? CrossServiceLogic.simplifyServerName(serverId):"";
Family.DeathPathInfo info = Family.DeathPathInfo.newBuilder().setGuildName(crossGuild.getName()).setPathId(i).setGid(guildId).setServerName(serverName).build();
response.addInfos(info);
@ -377,14 +375,6 @@ public class DeathPathLogic {
tasks.offer(new DeathPathTask(uid,guildId,damage,pathId,getGroupId()));
//挑战次数记录
RedisUtil.getInstence().increment(RedisUtil.getInstence().getKey(RedisKey.DEATH_PATH_CHALLENGE_COUNT,String.valueOf(uid)));
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
// 跨服十绝阵添加
GuildInfoCache guildInfoCache = new GuildInfoCache();
guildInfoCache.setGuildId(guildId);
guildInfoCache.setGuildName(guildInfo.getName());
guildInfoCache.setServerId(GameApplication.serverId);
RedisUtil.getInstence().putMapEntry(RedisKey.GUILD_INFO_CACHE,"",String.valueOf(guildId),guildInfoCache);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, config.getReward(), BIReason.DEATH_PATH_CHALLENGE);
Map<Integer, Long> deathMaxDamage = user.getGuildMyInfo().getDeathMaxDamage();
@ -505,9 +495,9 @@ public class DeathPathLogic {
allGuild = guildTotalRank.getRankByKey("", 0, -1);
}
for (ZSetOperations.TypedTuple<String> n : allGuild) {
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(n.getValue()));
GuildInfo guildInfo = GuilidManager.getGuildInfo(Integer.parseInt(n.getValue()));
if(guildInfo!=null){
GuildCache crossGuild = CrossDeathPathLogic.getCrossGuild(guildInfo.getId());
GuildInfo crossGuild = CrossDeathPathLogic.getCrossGuild(guildInfo.getId());
String name = CrossServiceLogic.simplifyServerName(crossGuild.getServerId());
String serverName = getGroupId()>0?name:"";
Family.DeathPathInfo info = Family.DeathPathInfo.newBuilder()
@ -596,7 +586,7 @@ public class DeathPathLogic {
Family.DoRewardDeathPathResponse response =Family.DoRewardDeathPathResponse.newBuilder().setDrop(drop).build();
Family.RewardInfo info = Family.RewardInfo.newBuilder().setUid(uid).setItemCount(reward[1]).setItemId(reward[0]).setPosition(position).setUsername(user.getPlayerInfoManager().getNickName()).build();
Family.DoRewardIndication indication =Family.DoRewardIndication.newBuilder().setInfo(info).build();
GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildId), MessageTypeProto.MessageType.DEATH_PATH_DO_REWARD_INDICATION,indication);
GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(guildId), MessageTypeProto.MessageType.DEATH_PATH_DO_REWARD_INDICATION,indication);
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);
}

View File

@ -1,8 +1,6 @@
package com.ljsd.jieling.logic.family;
import com.ljsd.jieling.config.clazzStaticCfg.RewardStaticConfig;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
@ -11,7 +9,6 @@ import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.GuildMyInfo;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.*;
@ -78,7 +75,7 @@ public class GuildChallengeLogic {
if(guildId==0){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
int currBossId = guildInfo.getCurrBossId();
@ -114,6 +111,7 @@ public class GuildChallengeLogic {
isRefresh = 1;
}
}
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
int canSweep = 0;
if(guildMyInfo.getLastMonsterId()!=0&&currBossId==guildMyInfo.getLastMonsterId()&&guildMyInfo.getGuildChallengeDamage()>0){
canSweep = 1;
@ -177,7 +175,7 @@ public class GuildChallengeLogic {
}
//锁住
synchronized (lockMap.get(guildId)){
guildInfo = GuilidManager.guildInfoMap.get(guildId);
guildInfo = GuilidManager.getGuildInfo(guildId);
GuildMyInfo guildMyInfo = user.getGuildMyInfo();
if(guildInfo.getCurrBossId()!=bossId){
@ -222,8 +220,6 @@ public class GuildChallengeLogic {
if (GuildLogic.checkGuildLevelMax(guildInfo)&&guildInfo.getExp() + config.getLegionExp() >= levelConfigMap.get(guildInfo.getLevel()).getExp()) {
guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp() - levelConfigMap.get(guildInfo.getLevel()).getExp());
GuildLogic.upLevel(guildInfo,guildInfo.getLevel() + 1);
// 公会升级
CrossDeathPathLogic.setCrossGuild(guildInfo);
} else {
guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp());
}
@ -271,6 +267,7 @@ public class GuildChallengeLogic {
damage = guildMyInfo.getGuildChallengeDamage();
}
}
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
}
}
if(!error.isEmpty()){
@ -400,7 +397,7 @@ public class GuildChallengeLogic {
if(!lockMap.containsKey(guildId)){
lockMap.put(guildId,new Object());
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
SGuildCheckpointConfig config = STableManager.getConfig(SGuildCheckpointConfig.class).get(guildInfo.getCurrBossId());
int[] attributePromote = config.getAttributePromote();
int maxCount = attributePromote.length;
@ -429,6 +426,7 @@ public class GuildChallengeLogic {
guildInfo.setBuffIndex(guildInfo.getBuffIndex()+1);
int fiveTime = (int)(TimeUtils.getLastOrUnderHour(TimeUtils.now(), 0, 0, false)/1000);
guildInfo.setBuffOverTime(Math.min(time,fiveTime));
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
}
Family.GuildChallengeBuyBuffIndication indication = Family.GuildChallengeBuyBuffIndication.newBuilder()
.setBuffTime(guildInfo.getBuffOverTime()> TimeUtils.nowInt()?guildInfo.getBuffOverTime():0)
@ -442,7 +440,7 @@ public class GuildChallengeLogic {
User user = UserManager.getUser(session.getUid());
int guildId = user.getPlayerInfoManager().getGuildId();
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
int memberType = GuildLogic.getMemberType(session.getUid(), guildInfo.getMembers());
if(memberType==3){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
@ -455,6 +453,7 @@ public class GuildChallengeLogic {
if(guildInfo.getNextChallengeMessageTime()<TimeUtils.nowInt()){
guildInfo.setNextChallengeMessageTime(TimeUtils.nowInt()+TimeUtils.SECONDS_HOUR);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
}
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);

View File

@ -22,7 +22,6 @@ import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.blood.BloodLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.*;
@ -89,7 +88,7 @@ public class GuildFightLogic {
public static void viewDefendInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
User user = UserManager.getUser(session.getUid());
int gid = user.getPlayerInfoManager().getGuildId();
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(gid);
GuildInfo guildInfo = GuilidManager.getGuildInfo(gid);
Map<Integer, Integer> defendInfo = guildInfo.getDefendInfo();
Family.FamilyDefendViewResponse.Builder response = Family.FamilyDefendViewResponse.newBuilder();
SGuildSetting guildSetting = sGuildSetting;
@ -188,10 +187,11 @@ public class GuildFightLogic {
if (buildId == 0) {
buildId = 1;
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(user.getPlayerInfoManager().getGuildId());
GuildInfo guildInfo = GuilidManager.getGuildInfo(user.getPlayerInfoManager().getGuildId());
SGuildSetting guildSetting = sGuildSetting;
int memberType = GuildLogic.getMemberType(uid, guildInfo.getMembers());
guildInfo.updateDefendInfo(uid, buildId);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
Family.FamilyDefendInfo.Builder defend = Family.FamilyDefendInfo.newBuilder();
defend.setBuildId(buildId);
defend.setUid(uid);
@ -266,13 +266,13 @@ public class GuildFightLogic {
public static void familyFightMatching() throws Exception {
RedisUtil redisUtil = RedisUtil.getInstence();
// Thread.sleep(10000);
int guildIds = GuilidManager.guildInfoMap.size();
int guildIds = GuilidManager.getAllGuildCount();
if (guildIds < 1) {
return;
}
String key = RedisKey.getKey(RedisKey.FAMILY_FIGHT_RANK, "", false);
SGuildSetting guildSetting = sGuildSetting;
for (Map.Entry<Integer,GuildInfo> guildInfoMapEntry : GuilidManager.guildInfoMap.entrySet()) {
for (Map.Entry<Integer,GuildInfo> guildInfoMapEntry : GuilidManager.getAllGuildInfos().entrySet()) {
Integer gid = guildInfoMapEntry.getKey();
if(redisUtil.getZSetScore("guild-release","",String.valueOf(gid))>0){
continue;
@ -377,17 +377,17 @@ public class GuildFightLogic {
private static void sendMatchingInfo(){
RedisUtil redisUtil = RedisUtil.getInstence();
for (Map.Entry<Integer,GuildInfo> entry : GuilidManager.guildInfoMap.entrySet()) {
for (Map.Entry<Integer,GuildInfo> entry : GuilidManager.getAllGuildInfos().entrySet()) {
Integer gid = entry.getKey();
int enemyFamily = getEnemyFamily(gid);
if (enemyFamily == -1) {
continue;
}
GuildInfo guildInfo = entry.getValue();
GuildCache enemyInfo = CrossDeathPathLogic.getCrossGuild(enemyFamily);
GuildInfo enemyInfo = CrossDeathPathLogic.getCrossGuild(enemyFamily);
Family.EnemyFamily familyInfo = Family.EnemyFamily.newBuilder().setId(enemyFamily)
.setLevel(enemyInfo.getLevel())
.setName(Optional.ofNullable(enemyInfo).map(GuildCache::getName).orElse(""))
.setName(Optional.ofNullable(enemyInfo).map(GuildInfo::getName).orElse(""))
.setPictureId(enemyInfo.getIcon())
.setTotalStar(redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_TOTAL_STAR,"",String.valueOf(enemyFamily),Integer.class))
.setMyTotalStar(redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_TOTAL_STAR,"",String.valueOf(guildInfo.getId()),Integer.class))
@ -492,7 +492,7 @@ public class GuildFightLogic {
//发送indication
Family.DefeatResponse fightResponse = Family.DefeatResponse.newBuilder().setUid(defendUid).setTeamLostStar(getStar).build();
// GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(gid), MessageTypeProto.MessageType.FAMILY_DEFEATE_INDICATION,fightResponse);
GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(userAttack.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.FAMILY_DEFEATE_INDICATION,fightResponse);
GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(userAttack.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.FAMILY_DEFEATE_INDICATION,fightResponse);
//获得星数处理
int attackGuildId = userAttack.getPlayerInfoManager().getGuildId();
String attackRankKey = RedisKey.getKey(RedisKey.FAMILY_FIGHT_STAR_RANK, String.valueOf(attackGuildId), false);
@ -546,16 +546,17 @@ public class GuildFightLogic {
.setRoundEndTime(roundEndTime)
.setAttackCount(attackCount);
// long joinTime = UserManager.getUser(session.getUid()).getGuildMyInfo().getJoinTime();
if(guildId!=0&&status!=0&&!GuilidManager.guildInfoMap.get(guildId).getDefendInfo().keySet().contains(session.getUid())){
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
if (guildInfo != null && status != 0 && !guildInfo.getDefendInfo().keySet().contains(session.getUid())) {
response.setJoinType(1);
}
if (enemyFamily != -1) {
GuildCache enemyInfo = CrossDeathPathLogic.getCrossGuild(enemyFamily);
GuildInfo enemyInfo = CrossDeathPathLogic.getCrossGuild(enemyFamily);
if(enemyInfo!=null){
Family.EnemyFamily familyInfo = Family.EnemyFamily.newBuilder()
.setId(enemyFamily)
.setLevel(enemyInfo.getLevel())
.setName(Optional.of(enemyInfo).map(GuildCache::getName).orElse(""))
.setName(Optional.of(enemyInfo).map(GuildInfo::getName).orElse(""))
.setPictureId(enemyInfo.getIcon())
.setTotalStar(redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_TOTAL_STAR,"",String.valueOf(enemyFamily),Integer.class))
.setMyTotalStar(redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_TOTAL_STAR,"",String.valueOf(guildId),Integer.class))
@ -571,15 +572,15 @@ public class GuildFightLogic {
//todo 人数限制
if(guildId!=0){
Map<Integer, SGuildLevelConfig> configMap = STableManager.getConfig(SGuildLevelConfig.class);
if(GuilidManager.guildInfoMap.get(guildId).getDefendInfo().size()<configMap.get(GuilidManager.guildInfoMap.get(guildId).getLevel()).getDefendNum()){
if(guildInfo.getDefendInfo().size()<configMap.get(guildInfo.getLevel()).getDefendNum()){
response.setType(-1);
response.setRoundEndTime((int) (TimeUtils.getAppointTime(sGuildSetting.getSettleTime()[1][0], sGuildSetting.getSettleTime()[1][1]) / 1000));
}
}
}
}
if(GuilidManager.guildInfoMap.get(guildId)!=null){
long createTime = GuilidManager.guildInfoMap.get(guildId).getCreateTime();
if(guildInfo!=null){
long createTime = guildInfo.getCreateTime();
if(createTime/1000>roundStartTime&&createTime/1000<roundEndTime){
response.setType(-1);
response.setRoundEndTime((int) (TimeUtils.getAppointTime(sGuildSetting.getSettleTime()[1][0], sGuildSetting.getSettleTime()[1][1]) / 1000));
@ -682,7 +683,7 @@ public class GuildFightLogic {
//删除buff信息
redisUtil.removeMapEntrys(RedisKey.FAMILY_FIGHT_BUFF,index,String.valueOf(i));
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(index));
GuildInfo guildInfo = GuilidManager.getGuildInfo(Integer.parseInt(index));
if(guildInfo==null){
continue;
}
@ -756,7 +757,7 @@ public class GuildFightLogic {
}
int getStar = getTotalStar(Integer.parseInt(str));
int loseStar = getTotalStar(enemyFamily);
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(str));
GuildInfo guildInfo = GuilidManager.getGuildInfo(Integer.parseInt(str));
if(guildInfo==null){
continue;
}
@ -807,11 +808,10 @@ public class GuildFightLogic {
if(guildInfo.getExp()+getExp>=levelConfigMap.get(guildInfo.getLevel()).getExp()){
guildInfo.updateExp(guildInfo.getExp()+getExp-levelConfigMap.get(guildInfo.getLevel()).getExp());
GuildLogic.upLevel(guildInfo,guildInfo.getLevel() + 1);
// 公会升级
CrossDeathPathLogic.setCrossGuild(guildInfo);
}else{
guildInfo.updateExp(guildInfo.getExp()+getExp);
}
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
//个人奖励
Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FAMILY_FIGHT_STAR_RANK, String.valueOf(guildInfo.getId()), 0, 20);
if(zsetreverseRangeWithScores.size()<1){
@ -895,7 +895,7 @@ public class GuildFightLogic {
int guildId=UserManager.getUser(session.getUid()).getPlayerInfoManager().getGuildId();
int enemyFamily = getEnemyFamily(guildId);
Family.GuildFightResultResponse.Builder response = Family.GuildFightResultResponse.newBuilder();
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
if(enemyFamily==-1){
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
return;
@ -988,7 +988,7 @@ public class GuildFightLogic {
timeRound = sGuildSetting.getPrepareTime();
if(status==0){
LOGGER.info("阶段变为布防");
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.getAllGuildInfos();
if(guildInfoMap!=null&&guildInfoMap.size()>0){
for(Map.Entry<Integer, GuildInfo> entry:guildInfoMap.entrySet()){
int build = 0;
@ -997,6 +997,7 @@ public class GuildFightLogic {
for(Integer uid:member.getValue()){
entry.getValue().updateDefendInfo(uid,build%3+1);
build=build%3+1;
GuilidManager.saveOrUpdateGuildInfo(entry.getValue());
}
}
}
@ -1173,7 +1174,7 @@ public class GuildFightLogic {
public static void sendBossFightReward( int season) throws Exception {
String title= SErrorCodeEerverConfig.getI18NMessage("guildboss_daily_reward_title");
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.getAllGuildInfos();
int now = (int)(TimeUtils.now()/1000);
float[][] bossReward = SGuildSetting.sGuildSetting.getBossReward();
List<String> delKeys = new ArrayList<>();

View File

@ -12,15 +12,16 @@ import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
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.activity.ActivityTypeEnum;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.activity.event.*;
import com.ljsd.jieling.logic.activity.event.CommitSheJiEvent;
import com.ljsd.jieling.logic.activity.event.GuildForceChangeEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.UserMainTeamForceEvent;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.*;
import com.ljsd.jieling.logic.mail.MailLogic;
@ -97,7 +98,7 @@ public class GuildLogic {
//take rewards checkAndUpdate
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
int fete = guildInfo.getFete();
if(sGuildSacrificeRewardConfig.getScore()>fete){
continue;
@ -138,7 +139,7 @@ public class GuildLogic {
if( 0 == guildId ){
throw new ErrorCodeException(ErrorCode.newDefineCode("guildId wrong"));
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
Family.GetFamilyInfoResponse.Builder builder = Family.GetFamilyInfoResponse.newBuilder()
.setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo))
.setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user, getMemberType(uid, guildInfo.getMembers()))).setGuildBossId(GuildFightLogic.getCurSGuildBossConfig() == null?0:GuildFightLogic.getCurSGuildBossConfig().getId());
@ -196,11 +197,11 @@ public class GuildLogic {
GuilidManager.addGuildInfo(guildInfo);
user.getPlayerInfoManager().setGuildId(guildInfo.getId());
addGuildLog(guildInfo.getId(),GuildDef.Log.CREATE,user.getPlayerInfoManager().getNickName());
// 创建公会
CrossDeathPathLogic.setCrossGuild(guildInfo);
addGuildLog(guildInfo.getId(),GuildDef.Log.CREATE,user.getPlayerInfoManager().getNickName(), guildInfo.getServerId());
// 更新redis
CrossServiceLogic.getInstance().saveBasicPlayerToRedis(user);
RedisUtil.getInstence().setObject(RedisKey.GUILD_SERVERID, Integer.toString(guildInfo.getId()), -1);
PlayerInfoCache cache = RedisUtil.getInstence().getMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(uid), PlayerInfoCache.class);
cache.setGuildPosition(GlobalsDef.CHAIRMAN);
@ -228,11 +229,9 @@ public class GuildLogic {
if(familyName.length()<SGuildSetting.sGuildSetting.getNameSize()[0]||familyName.length()>SGuildSetting.sGuildSetting.getNameSize()[1]){
throw new ErrorCodeException(ErrorCode.NAME_LENGTH_ERROR);
}
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
for(Map.Entry<Integer, GuildInfo> entry:guildInfoMap.entrySet()){
if(entry.getValue().getName().equals(familyName)){
throw new ErrorCodeException(ErrorCode.EXIST_NAME);
}
GuildInfo guildInfoByName = GuilidManager.getGuildInfoByName(familyName);
if (guildInfoByName != null && guildInfoByName.getName().equals(familyName)) {
throw new ErrorCodeException(ErrorCode.EXIST_NAME);
}
}
@ -290,7 +289,7 @@ public class GuildLogic {
if(StringUtil.isEmpty(searchName)){
throw new ErrorCodeException(ErrorCode.FAMILY_SEARCH_NULL);
}
GuildInfo guildInfo = GuilidManager.guildNameInfoMap.get(searchName);
GuildInfo guildInfo = GuilidManager.getGuildInfoByName(searchName);
if(guildInfo == null){
throw new ErrorCodeException(ErrorCode.FAMILY_NULL);
}
@ -321,7 +320,7 @@ public class GuildLogic {
throw new ErrorCodeException(ErrorCode.FAMILY_HAD_APPLY);
}
for(Integer applyGuildId : applyGuilds){
if(GuilidManager.guildInfoMap.get(applyGuildId).getJoinType()!=0&&applyGuilds.size()==0){
if(GuilidManager.getGuildInfo(applyGuildId).getJoinType()!=0&&applyGuilds.size()==0){
if(applyGuilds.size()>1){
throw new ErrorCodeException(ErrorCode.FAMILY_LIMIT_CHANGED);
}
@ -336,7 +335,7 @@ public class GuildLogic {
continue;
}
GuilidManager.addApplyGuildInfo(guildApply);
Map<Integer, Set<Integer>> members = GuilidManager.guildInfoMap.get(applyGuildId).getMembers();
Map<Integer, Set<Integer>> members = GuilidManager.getGuildInfo(applyGuildId).getMembers();
for(Map.Entry<Integer, Set<Integer>> entry: members.entrySet()){
if(entry.getValue().size()<1){
continue;
@ -365,7 +364,7 @@ public class GuildLogic {
if(user.getPlayerInfoManager().getGuildId()!=0){
throw new ErrorCodeException(ErrorCode.FAMILY_IN);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
if(guildInfo == null){
throw new ErrorCodeException(ErrorCode.FAMILY_NULL);
}
@ -391,7 +390,7 @@ public class GuildLogic {
//社稷大典需要初始化分数
Poster.getPoster().dispatchEvent(new CommitSheJiEvent(guildId,uid,0,0,0));
RedisUtil.getInstence().expire(RedisKey.getKey(RedisKey.FAMILY_JOIN,String.valueOf(uid),false), TimeUtils.DAY);
addGuildLog(guildInfo.getId(),GuildDef.Log.JOIN,user.getPlayerInfoManager().getNickName());
addGuildLog(guildInfo.getId(),GuildDef.Log.JOIN,user.getPlayerInfoManager().getNickName(), guildInfo.getServerId());
Family.FamilyJoinIndicaion build = Family.FamilyJoinIndicaion.newBuilder().setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo)).setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user, GlobalsDef.MEMBER)).build();
Family.FamilyJoinResponse response = Family.FamilyJoinResponse.newBuilder().setFamilyJoinIndicaion(build).build();
MessageUtil.sendMessage(session,1,msgId,response,true);
@ -437,7 +436,7 @@ public class GuildLogic {
if(user.getPlayerInfoManager().getGuildId()==0){
throw new ErrorCodeException(ErrorCode.FAMILY_NO);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(user.getPlayerInfoManager().getGuildId());
GuildInfo guildInfo = GuilidManager.getGuildInfo(user.getPlayerInfoManager().getGuildId());
Family.GetFamilyMemberInfoResponse.Builder builder = Family.GetFamilyMemberInfoResponse.newBuilder();
Map<Integer, Set<Integer>> members = guildInfo.getMembers();
for(Map.Entry<Integer,Set<Integer>> memberEntry : members.entrySet()){
@ -502,7 +501,7 @@ public class GuildLogic {
int uid = session.getUid();
User user = UserManager.getUser(uid);
int guildId = user.getPlayerInfoManager().getGuildId();
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
int msgId = MessageTypeProto.MessageType.FAMILY_OPERATION_APPLY_LIST_RESPONSE_VALUE;
if(getMemberType(uid,guildInfo.getMembers())>=GlobalsDef.MEMBER) {
throw new ErrorCodeException(ErrorCode.FAMILY_NO_ACCESS);
@ -604,6 +603,7 @@ public class GuildLogic {
}
GuilidManager.removeOneApplyGuildInfos(guildInfo.getId(),applyId);
guildInfo.addMembers(GlobalsDef.MEMBER,applyId);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
targetUser.getPlayerInfoManager().setGuildId(guildInfo.getId());
MessageUtil.sendIndicationMessage(targetUser.getId(),Family.FamilyFeteRewardProcessIndication.newBuilder().setScore(guildInfo.getFete()).build());
PlayerInfoCache cache = RedisUtil.getInstence().getMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(applyId), PlayerInfoCache.class);
@ -611,10 +611,7 @@ public class GuildLogic {
RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE,"",String.valueOf(applyId),cache);
AyyncWorker ayyncWorker = new AyyncWorker(targetUser, true, new AynMissionWorker(GameEvent.JOIN_FAMILY));
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
// RedisUtil.getInstence().removeMapEntrys(RedisKey.USER_LEVEL_GUILD_INFO,"",String.valueOf(applyId));
Poster.getPoster().dispatchEvent(new GuildForceChangeEvent(targetUser.getId(),targetUser.getPlayerInfoManager().getGuildId(),1,targetUser.getPlayerInfoManager().getMaxForce()));
Family.GuildHelpInfoIndication.Builder builder = Family.GuildHelpInfoIndication.newBuilder();
for (Map.Entry<Integer, Integer> entry : targetUser.getGuildMyInfo().getGuidHelpInfo().entrySet()) {
builder.addGuildHelpInfo(CommonProto.GuildHelpInfo.newBuilder()
@ -629,7 +626,7 @@ public class GuildLogic {
.setName(targetUser.getPlayerInfoManager().getNickName())
.setPracticeLevel(targetUser.getHeroManager().getPracticeLevel())
.build();
GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildInfo.getId()), MessageTypeProto.MessageType.GuildHelpInfoIndication,build);
GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(guildInfo.getId()), MessageTypeProto.MessageType.GuildHelpInfoIndication,build);
}finally {
RedisUtil.getInstence().releaseDistributedLock(RedisKey.OPERATE_FAMILY_APPLY_JOIN,Integer.toString(applyId), Integer.toString(applyId));
}
@ -659,7 +656,7 @@ public class GuildLogic {
if(guildId == 0){
throw new ErrorCodeException(ErrorCode.FAMILY_NO);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
int uidType = getMemberType(uid, guildInfo.getMembers());
int targetType = getMemberType(targetUid, guildInfo.getMembers());
if(uidType>targetType){
@ -683,10 +680,11 @@ public class GuildLogic {
if(guildInfo.getDefendInfo().containsKey((targetUid))){
guildInfo.removeDefendInfo(targetUid);
}
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
targetUser.getPlayerInfoManager().setGuildId(0);
targetUser.getPlayerInfoManager().setWelfareRedPackets(clearRedPacketMap(user));
targetUser.getGuildMyInfo().clearOfLevelGuild();
addGuildLog(guildInfo.getId(),GuildDef.Log.KICK,targetUser.getPlayerInfoManager().getNickName());
addGuildLog(guildInfo.getId(),GuildDef.Log.KICK,targetUser.getPlayerInfoManager().getNickName(), guildInfo.getServerId());
// Family.FamilyKickIndication build = Family.FamilyKickIndication.newBuilder().setType(1).build();
// ISession targetSession = OnlineUserManager.getSessionByUid(targetUid);
// if(targetSession!=null){
@ -722,7 +720,7 @@ public class GuildLogic {
throw new ErrorCodeException(ErrorCode.FAMILY_NO_ACCESS);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(targetUserGuildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(targetUserGuildId);
int uidType = getMemberType(uid, guildInfo.getMembers());
boolean isIn=false;
for(Set<Integer> memberEntry : guildInfo.getMembers().values()){
@ -761,11 +759,11 @@ public class GuildLogic {
sendPositionChange(uid,GlobalsDef.CHAIRMAN_TO_MENBER);
// 转移会长
CrossDeathPathLogic.setCrossGuild(guildInfo);
addGuildLog(guildInfo.getId(),GuildDef.Log.TRANSFER,targetUser.getPlayerInfoManager().getNickName());
addGuildLog(guildInfo.getId(),GuildDef.Log.TRANSFER,targetUser.getPlayerInfoManager().getNickName(), guildInfo.getServerId());
}else{
addGuildLog(guildInfo.getId(),GuildDef.Log.APPOINTMENT,targetUser.getPlayerInfoManager().getNickName());
addGuildLog(guildInfo.getId(),GuildDef.Log.APPOINTMENT,targetUser.getPlayerInfoManager().getNickName(), guildInfo.getServerId());
}
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
MessageUtil.sendMessage(session,1,msgId,null,true);
}
@ -782,7 +780,7 @@ public class GuildLogic {
if(guildId == 0){
throw new ErrorCodeException(ErrorCode.FAMILY_NO);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
int uidType = getMemberType(uid, guildInfo.getMembers());
if(uidType!=1){
throw new ErrorCodeException(ErrorCode.FAMILY_NO_ACCESS);
@ -799,8 +797,11 @@ public class GuildLogic {
}else{
guildInfo.setLevelTime(0);
}
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
sendFamilyBaseUpdateIndication(guildInfo);
GuilidManager.addGuildToRelease(guildInfo);
String key = RedisUtil.getInstence().getKey(RedisKey.GUILD_SERVERID, Integer.toString(guildInfo.getId()));
RedisUtil.getInstence().del(key);
MessageUtil.sendMessage(session,1,msgId,null,true);
}
@ -817,7 +818,7 @@ public class GuildLogic {
if(guildId == 0){
throw new ErrorCodeException(ErrorCode.FAMILY_NO);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
int uidType = getMemberType(uid, guildInfo.getMembers());
if(uidType>2){
throw new ErrorCodeException(ErrorCode.FAMILY_NO_ACCESS);
@ -854,9 +855,9 @@ public class GuildLogic {
guildInfo.setName(content);
// 天眼查询
MessageUtil.sendSkyEyeMsgByGuild(content,user,MessageUtil.skyeye_guildName,guildInfo.getId());
// 修改公会名
CrossDeathPathLogic.setCrossGuild(guildInfo);
}
// 修改公会名
CrossDeathPathLogic.setCrossGuild(guildInfo);
MessageUtil.sendMessage(session,resultCode,msgId,response,true);
}
}
@ -879,13 +880,14 @@ public class GuildLogic {
if(guildId == 0){
throw new ErrorCodeException(ErrorCode.FAMILY_NO);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
int uidType = getMemberType(uid, guildInfo.getMembers());
if(uidType>2){
throw new ErrorCodeException(ErrorCode.FAMILY_NO_ACCESS);
}
guildInfo.updateIntoLevel(joinLevel);
guildInfo.setJoinType(joinType);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
sendFamilyBaseUpdateIndication(guildInfo);
MessageUtil.sendMessage(session,1,msgId,null,true);
}
@ -932,7 +934,7 @@ public class GuildLogic {
if(guildId == 0){
throw new ErrorCodeException(ErrorCode.FAMILY_NO);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
int uidType = getMemberType(uid, guildInfo.getMembers());
if(uidType>1){
throw new ErrorCodeException(ErrorCode.FAMILY_NO_ACCESS);
@ -940,6 +942,7 @@ public class GuildLogic {
guildInfo.removeMember(GlobalsDef.CHAIRMAN,uid);
guildInfo.addMembers(GlobalsDef.MEMBER,uid);
guildInfo.addMembers(GlobalsDef.CHAIRMAN,targetUid);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
sendPositionChange(uid,GlobalsDef.MEMBER);
sendPositionChange(targetUid,GlobalsDef.CHAIRMAN);
MessageUtil.sendMessage(session,1,msgId,null,true);
@ -954,7 +957,7 @@ public class GuildLogic {
if(guildId == 0){
throw new ErrorCodeException(ErrorCode.FAMILY_NO);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
int uidType = getMemberType(uid, guildInfo.getMembers());
if(uidType == GlobalsDef.CHAIRMAN){
throw new ErrorCodeException(ErrorCode.FAMILY_LEADER_QUIT_ERR);
@ -970,10 +973,11 @@ public class GuildLogic {
cache.setGuildPosition(0);
RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE,"",String.valueOf(uid),cache);
guildInfo.removeMember(uidType,uid);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
user.getPlayerInfoManager().setGuildId(0);
user.getPlayerInfoManager().setWelfareRedPackets(clearRedPacketMap(user));
user.getGuildMyInfo().clearOfLevelGuild();
addGuildLog(guildInfo.getId(),GuildDef.Log.LEVEL,user.getPlayerInfoManager().getNickName());
addGuildLog(guildInfo.getId(),GuildDef.Log.LEVEL,user.getPlayerInfoManager().getNickName(), guildInfo.getServerId());
MessageUtil.sendMessage(session,1,msgId,null,true);
//探索活动个人计数重置
exploreActivity(user,guildInfo);
@ -1010,7 +1014,7 @@ public class GuildLogic {
MailLogic.getInstance().sendMail(uid,title,content,"",(int) (TimeUtils.now()/1000), Global.MAIL_EFFECTIVE_TIME);
Family.FamilyPositionUpdateIndication build = Family.FamilyPositionUpdateIndication.newBuilder().setPosition(position).setUid(uid).build();
User userInMem = UserManager.getUserInMem(uid);
sendIndicationToMember(GuilidManager.guildInfoMap.get(userInMem.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.FAMILY_POSITION_UPDATE_INDICAITON,build);
sendIndicationToMember(GuilidManager.getGuildInfo(userInMem.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.FAMILY_POSITION_UPDATE_INDICAITON,build);
}
public static void sendFamilyBaseUpdateIndication(GuildInfo guildInfo){
@ -1050,59 +1054,48 @@ public class GuildLogic {
}*/
user.getGuildMyInfo().move(path);
Family.FamilyWalkIndicaiton familyWalkIndicaiton = CBean2Proto.getFamilyWalkIndicaiton(user);
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
sendIndicationToMember(guildInfo, MessageTypeProto.MessageType.FAMILY_WALK_INDICATION,familyWalkIndicaiton);
MessageUtil.sendMessage(session,1,msgId,null,true);
}
public static void updateMyPos(User user) {
int guildId = user.getPlayerInfoManager().getGuildId();
if(guildId == 0){
return;
}
user.getGuildMyInfo().move(new ArrayList<>());
Family.FamilyWalkIndicaiton familyWalkIndicaiton = CBean2Proto.getFamilyWalkIndicaiton(user);
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
sendIndicationToMember(guildInfo, MessageTypeProto.MessageType.FAMILY_WALK_INDICATION,familyWalkIndicaiton);
}
public static void addGuildLog(int guildId, int type,String name) throws Exception {
public static void addGuildLog(int guildId, int type,String name, int serverId) throws Exception {
switch (type) {
case GuildDef.Log.CREATE: {
// 宗门创立
GuildLog cGuildLog = new GuildLog(guildId,name, SErrorCodeEerverConfig.getI18NMessage("guild.logCreate", new Object[]{name}));
GuilidManager.addGuildLog(cGuildLog);
GuilidManager.addGuildLog(serverId, cGuildLog);
break;
}
case GuildDef.Log.JOIN: {
// 加入宗门
GuildLog cGuildLog = new GuildLog(guildId,name, SErrorCodeEerverConfig.getI18NMessage("guild.logJoin", new Object[]{name}));
GuilidManager.addGuildLog(cGuildLog);
GuilidManager.addGuildLog(serverId, cGuildLog);
break;
}
case GuildDef.Log.KICK: {
// 退出宗门
GuildLog cGuildLog = new GuildLog(guildId,name, SErrorCodeEerverConfig.getI18NMessage("guild.logKick", new Object[]{name}));
GuilidManager.addGuildLog(cGuildLog);
GuilidManager.addGuildLog(serverId, cGuildLog);
break;
}
case GuildDef.Log.TRANSFER: {
// 宗门转让
GuildLog cGuildLog = new GuildLog(guildId,name, SErrorCodeEerverConfig.getI18NMessage("guild.logTransfer", new Object[]{name}));
GuilidManager.addGuildLog(cGuildLog);
GuilidManager.addGuildLog(serverId, cGuildLog);
break;
}
case GuildDef.Log.APPOINTMENT: {
// 宗门任免
GuildLog cGuildLog = new GuildLog(guildId,name, SErrorCodeEerverConfig.getI18NMessage("guild.logAppointment", new Object[]{name}));
GuilidManager.addGuildLog(cGuildLog);
GuilidManager.addGuildLog(serverId, cGuildLog);
break;
}
case GuildDef.Log.LEVEL: {
// 宗门退出
GuildLog cGuildLog = new GuildLog(guildId,name, SErrorCodeEerverConfig.getI18NMessage("guild.logLevel", new Object[]{name}));
GuilidManager.addGuildLog(cGuildLog);
GuilidManager.addGuildLog(serverId, cGuildLog);
break;
}
default: {
@ -1168,7 +1161,7 @@ public class GuildLogic {
if (!b){
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(playerInfoManager.getGuildId());
GuildInfo guildInfo = GuilidManager.getGuildInfo(playerInfoManager.getGuildId());
guildInfo.updateIcon(iconId);
// 修改公会图标
CrossDeathPathLogic.setCrossGuild(guildInfo);
@ -1427,7 +1420,7 @@ public class GuildLogic {
ItemUtil.drop(UserManager.getUser(uid),new int[][]{new int[]{config.getTotalMoney()[0],count}},BIReason.RED_PACKAGE_REWARD);
builder.setCount(count);
builder.setItemId(config.getTotalMoney()[0]);
int position = getMemberType(uid, GuilidManager.guildInfoMap.get(UserManager.getUser(uid).getPlayerInfoManager().getGuildId()).getMembers());
int position = getMemberType(uid, GuilidManager.getGuildInfo(UserManager.getUser(uid).getPlayerInfoManager().getGuildId()).getMembers());
RedisUtil.getInstence().putMapEntry("red_already_list", String.valueOf(redId),String.valueOf(uid),new AcceptRedInfo(uid,config.getTotalMoney()[0], count,(int)(TimeUtils.now()/1000),position));
}else{
throw new ErrorCodeException(ErrorCode.RED_PACKAGE_NOT);
@ -1679,7 +1672,7 @@ public class GuildLogic {
build.setPracticeLevel(user.getHeroManager().getPracticeLevel());
build.addGuildHelpInfo(CommonProto.GuildHelpInfo.newBuilder().setType(entry.getKey()).setNum(-1));
}
GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(user.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.GuildHelpInfoIndication,build.build());
GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(user.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.GuildHelpInfoIndication,build.build());
}
@ -1767,6 +1760,7 @@ public class GuildLogic {
}else{
guildInfo.getHistoryMember().add(userId);
guildInfo.updateHistoryMember();
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
}
Poster.getPoster().dispatchEvent(new WelfareRedPackEvent(chairman.getId(), WelfareRedPacketType.newfish_come.getType(),0));
}

View File

@ -106,7 +106,7 @@ public class HelpHeroLogic {
List<Integer> friends = user.getFriendManager().getFriends();
// 公会列表
Map<Integer, Set<Integer>> members = new HashMap<>();
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(user.getPlayerInfoManager().getGuildId());
GuildInfo guildInfo = GuilidManager.getGuildInfo(user.getPlayerInfoManager().getGuildId());
if (guildInfo != null){
members = guildInfo.getMembers();
}

View File

@ -34,7 +34,7 @@ import com.ljsd.jieling.logic.dao.PurpleMansionSeal;
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.family.GuildLogic;
@ -621,8 +621,9 @@ public class PlayerLogic {
teamInfo.addAllUserMountInfo(CBean2Proto.getUserMountList(user));
int guildId = user.getPlayerInfoManager().getGuildId();
if(guildId!=0){
if(GuilidManager.guildInfoMap.containsKey(guildId)){
String name = GuilidManager.guildInfoMap.get(guildId).getName();
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
if(guildInfo != null){
String name = guildInfo.getName();
oneInfo.setGuildName(name);
}
@ -866,14 +867,14 @@ public class PlayerLogic {
}
//基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder()
.setHead(csPlayer.getHead())
.setHeadFrame(csPlayer.getHeadFrame())
.setUserTitle(csPlayer.getUserTitle())
.setLevel(csPlayer.getLevel())
.setName(csPlayer.getName())
.setGuildName(Optional.ofNullable(mapEntry).map(GuildCache::getName).orElse("")) //csPlayer.getGuildName()
.setGuildName(Optional.ofNullable(mapEntry).map(GuildInfo::getName).orElse("")) //csPlayer.getGuildName()
.setPracticeLevel(csPlayer.getPracticeLevel())
.setUid(user.getId()).setCrossTeamScore(csPlayer.getCrossYuxulundaoNewScore())
.setServerName(serverName);
@ -1104,14 +1105,14 @@ public class PlayerLogic {
}
//基本信息从redis中拿 剩下的队伍 属性 数据量大的数据rpc调用
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
CommonProto.TeamOneInfo.Builder builder = CommonProto.TeamOneInfo.newBuilder()
.setHead(csPlayer.getHead())
.setHeadFrame(csPlayer.getHeadFrame())
.setUserTitle(csPlayer.getUserTitle())
.setLevel(csPlayer.getLevel())
.setName(csPlayer.getName())
.setGuildName(Optional.ofNullable(mapEntry).map(GuildCache::getName).orElse("")) //csPlayer.getGuildName()
.setGuildName(Optional.ofNullable(mapEntry).map(GuildInfo::getName).orElse("")) //csPlayer.getGuildName()
.setPracticeLevel(csPlayer.getPracticeLevel())
.setUid(id).setCrossTeamScore(csPlayer.getCrossYuxulundaoNewScore())
.setServerName(serverName);
@ -1478,7 +1479,7 @@ public class PlayerLogic {
if(user.getPlayerInfoManager().getGuildId()==0){
cache.setGuildPosition(0);
}else{
int memberType = GuildLogic.getMemberType(user.getId(), GuilidManager.guildInfoMap.get(user.getPlayerInfoManager().getGuildId()).getMembers());
int memberType = GuildLogic.getMemberType(user.getId(), GuilidManager.getGuildInfo(user.getPlayerInfoManager().getGuildId()).getMembers());
cache.setGuildPosition(memberType);
}
RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE,"",String.valueOf(user.getId()),cache);

View File

@ -99,12 +99,12 @@ public class CrossRankManager {
*
*/
public void guildCacheHandle(){
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
for (Map.Entry<Integer, GuildInfo> entry : guildInfoMap.entrySet()) {
// 启动游戏,重新赋值公会信息
CrossDeathPathLogic.setCrossGuild(entry.getValue());
}
LOGGER.info("==================工会缓存处理=============");
// Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
// for (Map.Entry<Integer, GuildInfo> entry : guildInfoMap.entrySet()) {
// // 启动游戏,重新赋值公会信息
// CrossDeathPathLogic.setCrossGuild(entry.getValue());
// }
// LOGGER.info("==================工会缓存处理=============");
}
}

View File

@ -4,10 +4,9 @@ import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.TeamEnum;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.rank.IRank;
@ -271,7 +270,7 @@ public abstract class AbstractRank implements IRank {
public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
// 兼容
if (csPlayer.getMainLineForce() == 0){
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(csPlayer.getUserId(), false);
@ -287,7 +286,7 @@ public abstract class AbstractRank implements IRank {
.setForce(csPlayer.getMainLineForce())
.setSex(csPlayer.getSex())
.setHead(csPlayer.getHead())
.setGuildName(Optional.ofNullable(mapEntry).map(GuildCache::getName).orElse(""))
.setGuildName(Optional.ofNullable(mapEntry).map(GuildInfo::getName).orElse(""))
.setHeadFrame(csPlayer.getHeadFrame())
.setUserMount(csPlayer.getUserMount())
.setUserSkin(csPlayer.getSkin())

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.logic.rank.rankImpl;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
@ -10,11 +11,9 @@ import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import com.ljsd.jieling.logic.family.DeathPathLogic;
import org.springframework.data.redis.core.ZSetOperations;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
@ -31,11 +30,11 @@ public class CarDealyGuildRank extends CrossGuildForceRank{
@Override
protected void getCrossOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
if (mapEntry == null){
return;
}
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId());
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getMembers().get(GlobalsDef.CHAIRMAN).iterator().next());
if (csPlayer == null){
return;
}
@ -58,11 +57,11 @@ public class CarDealyGuildRank extends CrossGuildForceRank{
}
ZSetOperations.TypedTuple<String> data = rankByKey.iterator().next();
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
if (mapEntry == null){
return builder;
}
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId());
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getMembers().get(GlobalsDef.CHAIRMAN).iterator().next());
if (csPlayer == null){
return builder;
}
@ -123,7 +122,7 @@ public class CarDealyGuildRank extends CrossGuildForceRank{
protected void getOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
String value = data.getValue();
int guildId = Integer.parseInt(value);
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
if(guildInfo == null){
return;
}

View File

@ -1,9 +1,10 @@
package com.ljsd.jieling.logic.rank.rankImpl;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
import org.springframework.data.redis.core.ZSetOperations;
@ -29,11 +30,11 @@ public class CrossGuildForceRank extends GuildForceRank {
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
if (mapEntry == null){
return;
}
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId());
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getMembers().get(GlobalsDef.CHAIRMAN).iterator().next());
if (csPlayer == null){
return;
}
@ -51,7 +52,7 @@ public class CrossGuildForceRank extends GuildForceRank {
}
ZSetOperations.TypedTuple<String> data = rankByKey.iterator().next();
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
if (mapEntry == null){
return builder;
}
@ -60,7 +61,7 @@ public class CrossGuildForceRank extends GuildForceRank {
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId());
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(mapEntry.getMembers().get(GlobalsDef.CHAIRMAN).iterator().next());
if (csPlayer == null){
return builder;
}

View File

@ -22,7 +22,7 @@ public class DeathPathEveryGuildRank extends CrossGuildForceRank {
@Override
protected void getOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) {
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(data.getValue()));
GuildInfo guildInfo = GuilidManager.getGuildInfo(Integer.parseInt(data.getValue()));
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index)
.setParam1(getParam1(data.getScore()))

View File

@ -1,10 +1,10 @@
package com.ljsd.jieling.logic.rank.rankImpl;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.CrossDeathPathLogic;
@ -15,7 +15,6 @@ import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import java.math.BigDecimal;
import java.util.Optional;
/**
* @author lvxinran
@ -44,7 +43,7 @@ public class DeathPathTotalGuildRank extends CrossGuildForceRank{
@Override
protected void getOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(data.getValue()));
GuildInfo guildInfo = GuilidManager.getGuildInfo(Integer.parseInt(data.getValue()));
DeathChallengeCount countInfo = DeathPathLogic.getInstance().getDeathChallengeCount(guildInfo.getId());
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index)
@ -60,14 +59,14 @@ public class DeathPathTotalGuildRank extends CrossGuildForceRank{
@Override
protected void getCrossOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
GuildInfo mapEntry = CrossDeathPathLogic.getCrossGuild(Integer.parseInt(data.getValue()));
DeathChallengeCount countInfo = DeathPathLogic.getInstance().getDeathChallengeCount(Integer.valueOf(data.getValue()));
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index)
.setParam1(getParam1(data.getScore()))
.setParam2(getParam2(data.getScore()))
.setParam3(countInfo==null?0:countInfo.getUserReward().size());
CSPlayer query = CrossServiceLogic.getPlayerByRedis(mapEntry.getLeaderUId());
CSPlayer query = CrossServiceLogic.getPlayerByRedis(mapEntry.getMembers().get(GlobalsDef.CHAIRMAN).iterator().next());
if (query == null){
return;
}

View File

@ -37,7 +37,7 @@ public class GuildForceRank extends AbstractRank {
@Override
protected void getOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(data.getValue()));
GuildInfo guildInfo = GuilidManager.getGuildInfo(Integer.parseInt(data.getValue()));
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(index)
.setParam1(getParam1(data.getScore()))
@ -83,9 +83,7 @@ public class GuildForceRank extends AbstractRank {
.setParam2(getParam2(data.getScore()))
.setParam3(getParam3(data.getScore()));
// 获取公会信息
GuildInfo guildInfo = Optional.ofNullable(GuilidManager.guildInfoMap)
.map(v -> v.get(Integer.parseInt(data.getValue())))
.orElse(null);
GuildInfo guildInfo = GuilidManager.getGuildInfo(Integer.parseInt(data.getValue()));
if (guildInfo == null){
return builder;
}

View File

@ -52,7 +52,7 @@ public class RandomCardPerfectRank extends AbstractRank {
String familyName = "";
int familySign = 0;
if(guildId!=0){
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
familyName = guildInfo.getName();
familySign = guildInfo.getIcon();
}

View File

@ -42,7 +42,7 @@ public class GuildChangeTask implements GeneralTask{
@Override
public void run() {
long now = time;
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.getAllGuildInfos();
if(chairmanChangeGuilds!=null&&chairmanChangeGuilds.size()>0){
Iterator<Integer> iterator = chairmanChangeGuilds.iterator();
while(iterator.hasNext()){
@ -70,6 +70,7 @@ public class GuildChangeTask implements GeneralTask{
guildInfo.addMembers(GlobalsDef.CHAIRMAN,compareValue.getUid());
guildInfo.removeMember(type,compareValue.getUid());
guildInfo.addMembers(GlobalsDef.MEMBER,chairMan);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
try {
User user = UserManager.getUser(compareValue.getUid());
//发送邮件 GuildLeaderPass_mail_title

View File

@ -32,7 +32,7 @@ public class GuildCheckOfflineTask implements GeneralTask {
LOGGER.info("=-------公会检测开始-------");
long now = TimeUtils.now();
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.getAllGuildInfos();
Set<Integer> chairmanChangeGuilds = new HashSet<>();
Set<Integer> releaseGuilds = new HashSet<>();
Map<Integer, ISession> sessionMap = OnlineUserManager.sessionMap;

View File

@ -262,7 +262,7 @@ public class MinuteTask extends Thread {
RankEnum.toRank(RankEnum.EXPLORE_RANK.getType()).removeRank("");*/
// 公会信息处理
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.getAllGuildInfos();
for(Map.Entry<Integer,GuildInfo> guildInfoEntry:guildInfoMap.entrySet()){
// 公会红包排行处理
RedisUtil.getInstence().del(RedisKey.getKey(RedisKey.GUILD_RED_PACKAGE_RANK,String.valueOf(guildInfoEntry.getKey()),false));
@ -272,6 +272,7 @@ public class MinuteTask extends Thread {
// 公会援助日志处理
GuildInfo guildInfo = guildInfoEntry.getValue();
guildInfo.clearGuildHelpLog();
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
// 公会援助刷新
Set<Integer> sendUids = new HashSet<>();
guildInfo.getMembers().values().forEach(sendUids::addAll);