公会代码格式优化

back_recharge
duhui 2023-02-22 11:32:48 +08:00
parent b1b66941ba
commit 99a9bc9b1e
8 changed files with 93 additions and 111 deletions

View File

@ -18,12 +18,13 @@ import com.ljsd.jieling.logic.family.GuildDef;
import com.ljsd.jieling.logic.family.GuildLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.player.PlayerLogic;
import rpc.protocols.CommonProto;
import rpc.protocols.Family;
import rpc.protocols.MessageTypeProto;
import com.ljsd.jieling.util.ItemUtil;
import config.SGuildHelpConfig;
import manager.STableManager;
import rpc.protocols.CommonProto;
import rpc.protocols.Family;
import rpc.protocols.MessageTypeProto;
import util.TimeUtils;
import java.util.HashSet;
import java.util.Map;
@ -116,7 +117,7 @@ public class GuildHelpHelpOtherRequestHandler extends BaseHandler<Family.GuildHe
}
GuildHelpLog guildHelpLog = new GuildHelpLog(uid, target.getId(), user.getPlayerInfoManager().getNickName(),
target.getPlayerInfoManager().getNickName(), (int) (System.currentTimeMillis() / 1000), proto.getType(),
target.getPlayerInfoManager().getNickName(), TimeUtils.nowInt(), proto.getType(),
user.getHeroManager().getPracticeLevel(), target.getHeroManager().getPracticeLevel());
guildInfo.addGuildHelpLog(guildHelpLog);
GuilidManager.saveOrUpdateGuildInfo(guildInfo);

View File

@ -12,11 +12,11 @@ import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.GuildLogic;
import config.SGuildHelpConfig;
import manager.STableManager;
import rpc.protocols.CommonProto;
import rpc.protocols.Family;
import rpc.protocols.MessageTypeProto;
import config.SGuildHelpConfig;
import manager.STableManager;
import java.util.*;
@ -90,7 +90,7 @@ public class GuildSendHelpRequestHandler extends BaseHandler<Family.GuildSendHel
long time =System.currentTimeMillis();
boolean b = (time - guildMyInfo.getGuildHelpSendTime()) > 1000 * sGuildHelpConfig.getRecourseCD();
boolean b = (time - guildMyInfo.getGuildHelpSendTime()) > 1000L * sGuildHelpConfig.getRecourseCD();
if(proto.getSendMessage()&&b){
guildMyInfo.setGuildHelpSendTime(time);
}

View File

@ -20,6 +20,7 @@ import config.SGuildSetting;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.BasicQuery;
import org.springframework.data.redis.core.ZSetOperations;
import util.TimeUtils;
import java.util.*;
@ -39,8 +40,7 @@ public class GuilidManager {
}
public static GuildInfo getGuildInfo(int guildId){
GuildInfo mapEntry = RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", Integer.toString(guildId), GuildInfo.class);
return mapEntry;
return RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", Integer.toString(guildId), GuildInfo.class);
}
public static GuildInfo getGuildInfoByName(String guildName){
@ -48,8 +48,7 @@ public class GuilidManager {
if (guildId == null || guildId.isEmpty()) {
return null;
}
GuildInfo guildInfo = getGuildInfo(Integer.parseInt(guildId));
return guildInfo;
return getGuildInfo(Integer.parseInt(guildId));
}
public static Map<Integer, GuildInfo> getAllGuildInfos(){
@ -133,23 +132,15 @@ public class GuilidManager {
}
public static void init() throws Exception {
// List<GuildLog> guildLogs = MongoUtil.getInstence().getMyMongoTemplate().findAll(GuildLog._COLLECTION_NAME, GuildLog.class);
// for(GuildLog guildLog : guildLogs){
// if(!guildLogInfoMap.containsKey(guildLog.getGuildId())){
// guildLogInfoMap.put(guildLog.getGuildId(),new ArrayList<>());
// }
// guildLogInfoMap.get(guildLog.getGuildId()).add(guildLog);
// }
Map<String, BaseCrossHandler> beansOfType = ConfigurableApplicationContextManager.getBeansOfType(BaseCrossHandler.class);
for (BaseCrossHandler baseBehavior : beansOfType.values()) {
baseCrossHandlerHashMap.put(baseBehavior.getOpsType(), baseBehavior);
}
}
public static void checkNeedReleaseGuild() throws Exception {
int now = (int)(System.currentTimeMillis()/1000);
int now = TimeUtils.nowInt();
int round=0;
boolean needContinue = true;

View File

@ -2,13 +2,13 @@ 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;
import rpc.protocols.MessageTypeProto;
import config.SGuildSetting;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.family.GuildLogic;
import config.SGuildSetting;
import rpc.protocols.Family;
import rpc.protocols.MessageTypeProto;
import util.MathUtils;
import java.util.*;
@ -79,10 +79,8 @@ public class GuildInfo extends MongoBase {
this.id = ((Long)RedisUtil.getInstence().increment(RedisKey.FAMILY_ID)).intValue();
this.name = name;
this.announce = announce;
members = new ConcurrentHashMap();
if(!members.containsKey(GlobalsDef.CHAIRMAN)){
members.put(GlobalsDef.CHAIRMAN,new HashSet<>());
}
members = new ConcurrentHashMap<>();
members.put(GlobalsDef.CHAIRMAN, new HashSet<>());
members.get(GlobalsDef.CHAIRMAN).add(creator);
this.createTime = System.currentTimeMillis();
this.init(id,"");

View File

@ -637,15 +637,6 @@ public class DeathPathLogic {
// 删除rediskey
String pattern = serverId+":DEATH_PATH.*";
RedisUtil.getInstence().delVague(RedisKey.DEATH_PATH_DELETE,pattern);
// 旧数据兼容,只执行一次
String one = (String) RedisUtil.getInstence().get(serverId + RedisKey.DEATH_PATH_DELETE_ONE);
if (one == null){
Set<String> dimKey = RedisUtil.getInstence().getDimKey(serverId + ":DEATH_PATH*", -1);
String[] keys = dimKey.toArray(new String[0]);
RedisUtil.getInstence().del(keys);
RedisUtil.getInstence().set(serverId + RedisKey.DEATH_PATH_DELETE_ONE,"1");
}
}
/**

View File

@ -1,18 +1,18 @@
package com.ljsd.jieling.logic.family.GuildCrossHandler;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.GuildDef;
import com.ljsd.jieling.logic.family.GuildLogic;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.AyncWorkerRunnable;
import com.ljsd.jieling.util.AyyncWorker;
import config.SErrorCodeEerverConfig;
import org.springframework.stereotype.Component;
import rpc.protocols.CommonProto;
import rpc.protocols.Family;
import rpc.protocols.MessageTypeProto;
import util.TimeUtils;
import java.util.Map;
@ -20,7 +20,7 @@ import java.util.Map;
public class KickOutGuildHandler extends BaseCrossHandler {
@Override
public int getOpsType() {
return GuildDef.UPDATE_YUANZHU;
return GuildDef.UPDATE_KICK_OUT;
}
@Override
@ -28,21 +28,30 @@ public class KickOutGuildHandler extends BaseCrossHandler {
AyyncWorker ayyncWorker = new AyyncWorker(thisUser, true, new AyncWorkerRunnable() {
@Override
public void work(User user) throws Exception {
user.getGuildMyInfo().setGuidHelpInfo(otherUser.getGuildMyInfo().getGuidHelpInfo());
GuildLogic.OnUserLeveFamily(user);
int guildId = user.getPlayerInfoManager().getGuildId();
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
user.getPlayerInfoManager().setGuildId(0);
user.getPlayerInfoManager().setWelfareRedPackets(clearRedPacketMap(user));
user.getGuildMyInfo().clearOfLevelGuild();
// 发送通知邮件
String title = SErrorCodeEerverConfig.getI18NMessage("family_kick_title");
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("family_kick_txt",new Object[]{guildInfo.getName()},new int[]{0},"#");
MailLogic.getInstance().sendMail(user.getId(),title,content,"",(int) (TimeUtils.now()/1000), Global.MAIL_EFFECTIVE_TIME);
}
});
// 更新mongo
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
// 玩家在线,通知玩家
ISession sessionByUid = OnlineUserManager.getSessionByUid(thisUser.getId());
if (sessionByUid != null) {
Family.GuildHelpInfoIndication.Builder build = Family.GuildHelpInfoIndication.newBuilder();
for (Map.Entry<Integer, Integer> entry : otherUser.getGuildMyInfo().getGuidHelpInfo().entrySet()) {
build.addGuildHelpInfo(CommonProto.GuildHelpInfo.newBuilder().setType(entry.getKey()).setHadtakenum(otherUser.getGuildMyInfo().getGuidHelpHadTakeInfo().getOrDefault(entry.getKey(), 0)).setNum(entry.getValue()));
}
private Map<Integer,Integer> clearRedPacketMap(User user){
Map<Integer,Integer> map = user.getPlayerInfoManager().getWelfareRedPackets();
for(Map.Entry<Integer,Integer> entry : map.entrySet()){
if(entry.getValue() != -1){
entry.setValue(0);
}
int guildId = thisUser.getPlayerInfoManager().getGuildId();
build.setName(otherUser.getPlayerInfoManager().getNickName()).setUid(otherUser.getId()).setPracticeLevel(otherUser.getHeroManager().getPracticeLevel());
GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(guildId), MessageTypeProto.MessageType.GuildHelpInfoIndication, build.build());
}
return map;
}
}

View File

@ -1,57 +1,43 @@
package com.ljsd.jieling.logic.family.GuildCrossHandler;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.GuildDef;
import com.ljsd.jieling.logic.family.GuildLogic;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.util.AyncWorkerRunnable;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.AyyncWorker;
import config.SErrorCodeEerverConfig;
import org.springframework.stereotype.Component;
import util.TimeUtils;
import rpc.protocols.CommonProto;
import rpc.protocols.Family;
import rpc.protocols.MessageTypeProto;
import java.util.Map;
@Component
public class UpdateYuanZhuHandler extends BaseCrossHandler {
@Override
public int getOpsType() {
return GuildDef.UPDATE_KICK_OUT;
return GuildDef.UPDATE_YUANZHU;
}
@Override
public void process(User thisUser, User otherUser) {
AyyncWorker ayyncWorker = new AyyncWorker(thisUser, true, new AyncWorkerRunnable() {
@Override
public void work(User user) throws Exception {
GuildLogic.OnUserLeveFamily(user);
int guildId = user.getPlayerInfoManager().getGuildId();
GuildInfo guildInfo = GuilidManager.getGuildInfo(guildId);
user.getPlayerInfoManager().setGuildId(0);
user.getPlayerInfoManager().setWelfareRedPackets(clearRedPacketMap(user));
user.getGuildMyInfo().clearOfLevelGuild();
// 发送通知邮件
String title = SErrorCodeEerverConfig.getI18NMessage("family_kick_title");
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("family_kick_txt",new Object[]{guildInfo.getName()},new int[]{0},"#");
MailLogic.getInstance().sendMail(user.getId(),title,content,"",(int) (TimeUtils.now()/1000), Global.MAIL_EFFECTIVE_TIME);
}
});
AyyncWorker ayyncWorker = new AyyncWorker(thisUser, true, user -> user.getGuildMyInfo().setGuidHelpInfo(otherUser.getGuildMyInfo().getGuidHelpInfo()));
// 更新mongo
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
}
private Map<Integer,Integer> clearRedPacketMap(User user){
Map<Integer,Integer> map = user.getPlayerInfoManager().getWelfareRedPackets();
for(Map.Entry<Integer,Integer> entry : map.entrySet()){
if(entry.getValue() != -1){
entry.setValue(0);
// 玩家在线,通知玩家
ISession sessionByUid = OnlineUserManager.getSessionByUid(thisUser.getId());
if (sessionByUid != null) {
Family.GuildHelpInfoIndication.Builder build = Family.GuildHelpInfoIndication.newBuilder();
for (Map.Entry<Integer, Integer> entry : otherUser.getGuildMyInfo().getGuidHelpInfo().entrySet()) {
build.addGuildHelpInfo(CommonProto.GuildHelpInfo.newBuilder().setType(entry.getKey()).setHadtakenum(otherUser.getGuildMyInfo().getGuidHelpHadTakeInfo().getOrDefault(entry.getKey(), 0)).setNum(entry.getValue()));
}
int guildId = thisUser.getPlayerInfoManager().getGuildId();
build.setName(otherUser.getPlayerInfoManager().getNickName()).setUid(otherUser.getId()).setPracticeLevel(otherUser.getHeroManager().getPracticeLevel());
GuildLogic.sendIndicationToMember(GuilidManager.getGuildInfo(guildId), MessageTypeProto.MessageType.GuildHelpInfoIndication, build.build());
}
return map;
}
}

View File

@ -249,34 +249,40 @@ public class MinuteTask extends Thread {
// 公会信息处理
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));
// 公会祭祀处理
guildInfoEntry.getValue().reSetFete();
LOGGER.info("{}更新公会祭祀完毕",guildInfoEntry.getValue().getName());
// 公会援助日志处理
GuildInfo guildInfo = guildInfoEntry.getValue();
guildInfo.clearGuildHelpLog();
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
// 公会援助刷新
Set<Integer> sendUids = new HashSet<>();
guildInfo.getMembers().values().forEach(sendUids::addAll);
for (Integer sendUid : sendUids) {
User target = UserManager.getUserNotCache(sendUid);
if (target == null){
continue;
try {
// 公会红包排行处理
RedisUtil.getInstence().del(RedisKey.getKey(RedisKey.GUILD_RED_PACKAGE_RANK,String.valueOf(guildInfoEntry.getKey()),false));
LOGGER.info("{}更新公会红包完毕",guildInfoEntry.getValue().getName());
// 公会祭祀处理
guildInfoEntry.getValue().reSetFete();
LOGGER.info("{}更新公会祭祀完毕",guildInfoEntry.getValue().getName());
// 公会援助日志处理
GuildInfo guildInfo = guildInfoEntry.getValue();
guildInfo.clearGuildHelpLog();
GuilidManager.saveOrUpdateGuildInfo(guildInfo);
LOGGER.info("{}更新公会援助日志完毕",guildInfoEntry.getValue().getName());
// 公会援助刷新
Set<Integer> sendUids = new HashSet<>();
guildInfo.getMembers().values().forEach(sendUids::addAll);
for (Integer sendUid : sendUids) {
User target = UserManager.getUserNotCache(sendUid);
if (target == null){
continue;
}
AyyncWorker ayyncWorker = new AyyncWorker(target, true, user -> {
GuildLogic.sendGuildHelpRewardEmail(target);
GuildMyInfo guildMyInfo = target.getGuildMyInfo();
guildMyInfo.setGuidHelpInfo(new HashMap<>());
guildMyInfo.setGuidHelpHadTakeInfo(new HashMap<>());
guildMyInfo.setGuildHelpSendTime(0);
guildMyInfo.setGuildHelpReward(false);
guildMyInfo.setGuildHelpTime(0);
LOGGER.info("公会援助刷新uid=>{}", sendUid);
});
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
}
AyyncWorker ayyncWorker = new AyyncWorker(target, true, user -> {
GuildLogic.sendGuildHelpRewardEmail(target);
GuildMyInfo guildMyInfo = target.getGuildMyInfo();
guildMyInfo.setGuidHelpInfo(new HashMap<>());
guildMyInfo.setGuidHelpHadTakeInfo(new HashMap<>());
guildMyInfo.setGuildHelpSendTime(0);
guildMyInfo.setGuildHelpReward(false);
guildMyInfo.setGuildHelpTime(0);
LOGGER.info("公会援助刷新uid=>{}", sendUid);
});
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
}catch (Exception e){
e.printStackTrace();
}
//入库
MongoUtil.getInstence().lastUpdate();