删除公会 删除排行

back_recharge
lvxinran 2021-02-24 00:07:11 +08:00
parent 2dbe80f3a5
commit 5a1f8e8268
6 changed files with 97 additions and 28 deletions

View File

@ -822,9 +822,6 @@ public class RedisUtil {
}
public void zsetRemoveOne(String key, String value){
if(key.contains(RedisKey.CAR_DEALY_RANK)){
LOGGER.info("此处删除了车迟斗法排行key:{},value:{}",key,value);
}
for (int i = 0; i < MAX_TRY_TIMES; i++) {
try {
redisTemplate.opsForZSet().remove(key, value);

View File

@ -340,7 +340,7 @@ public class GlobalDataManaager implements IManager {
BuyGoodsLogic.flushEveryDay(user);
ExpeditionLogic.getInstance().flushUserdataEveryDay(user);
user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0);
user.getUserMissionManager().onGameEvent(user, GameEvent.BLOODY_REFRESH,0);
// user.getUserMissionManager().onGameEvent(user, GameEvent.BLOODY_REFRESH,0);
FriendLogic.getInstance().refreshState(session);
PlayerLogic.getInstance().sendTimingMail(user);
user.getGuildMyInfo().setLastHurt(0);

View File

@ -119,4 +119,20 @@ public class RankLogic {
PlayerInfoProto.RankProudResponse response = PlayerInfoProto.RankProudResponse.newBuilder().setDrop(dropBuilder.build()).build();
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);
}
/**
* value
* @param type
* @param rkey
* @param value
*/
public void removeOneRankByPiece(int type,String rkey,String value){
AbstractRank rank = RankContext.getRankEnum(type);
rank.removeOneRankByPiece(rkey,value);
}
public void removeAllRank(int type,String rkey){
AbstractRank rank = RankContext.getRankEnum(type);
rank.removeAllRank(rkey);
}
}

View File

@ -5,12 +5,15 @@ import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.rank.IRank;
import org.springframework.data.redis.core.Cursor;
import rpc.protocols.CommonProto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.ZSetOperations;
import rpc.protocols.PlayerInfoProto;
import java.io.IOException;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.function.BiConsumer;
@ -215,4 +218,22 @@ public abstract class AbstractRank implements IRank {
return RedisUtil.getInstence().getZSetreverseRank(redisKey,rkey,Integer.toString(uid)).intValue();
}
public void removeOneRankByPiece(String rkey,String value){
RedisUtil.getInstence().zsetRemoveOne(RedisKey.getKey(redisKey,rkey,false),value);
}
public void removeAllRank(String rkey){
try {
Cursor<String> cursor2 =RedisUtil.getInstence().scan( RedisKey.getKey(redisKey,rkey,false)+"*", 200);
while (cursor2.hasNext()){
String next = cursor2.next();
LOGGER.info("删除排行{}",next);
RedisUtil.getInstence().del(next);
}
cursor2.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@ -1,12 +1,16 @@
package com.ljsd.jieling.thread.task;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.mongo.LjsdMongoTemplate;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.dao.GuilidManager;
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.mail.MailLogic;
import com.ljsd.jieling.logic.rank.RankEnum;
import com.ljsd.jieling.logic.rank.RankLogic;
import config.SErrorCodeEerverConfig;
import util.TimeUtils;
@ -84,12 +88,30 @@ public class GuildChangeTask implements GeneralTask{
String title = SErrorCodeEerverConfig.getI18NMessage("GuildDismiss_mail_title");
String content = SErrorCodeEerverConfig.getI18NMessage("GuildDismiss_mail_content", new Object[]{guildInfo.getName()});
sendMailToGuild(guildInfo,title,content,(int)(now/1000));
Map<Integer, Set<Integer>> members = guildInfo.getMembers();
for(Map.Entry<Integer, Set<Integer>> entry:members.entrySet()){
for(int uid:entry.getValue()){
try {
UserManager.getUser(uid).getPlayerInfoManager().setGuildId(0);
} catch (Exception e) {
e.printStackTrace();
}
}
}
RankLogic.getInstance().removeAllRank(RankEnum.GUILD_CHALLENGE_RANK.getType(),String.valueOf(guildInfo.getId()));
RankLogic.getInstance().removeOneRankByPiece(RankEnum.GUILD_FORCE_RANK.getType(),"",String.valueOf(guildInfo.getId()));
GuilidManager.removeGuildInfo(guildInfo);
} catch (Exception e) {
e.printStackTrace();
}
}
}
try {
MongoUtil.getLjsdMongoTemplate().lastUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
private void sendMailToGuild(GuildInfo info,String title,String content,int sendTime){

View File

@ -24,12 +24,13 @@ public class GuildCheckOfflineTask implements GeneralTask {
private static final Logger LOGGER = LoggerFactory.getLogger(GuildCheckOfflineTask.class);
@Override
public void run() {
LOGGER.info("=-------公会检测开始-------");
long now = TimeUtils.now();
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
Set<Integer> chairmanChangeGuilds = new HashSet<>();
Set<Integer> releaseGuilds = new HashSet<>();
for(Map.Entry<Integer, GuildInfo> entry:guildInfoMap.entrySet()){
LOGGER.info("{}公会已完成离线检测",entry.getKey());
LOGGER.info("{}公会已开始离线检测",entry.getKey());
GuildInfo value = entry.getValue();
Map<Integer, Set<Integer>> members = value.getMembers();
//判断会长
@ -58,42 +59,54 @@ public class GuildCheckOfflineTask implements GeneralTask {
e.printStackTrace();
}
}
boolean isNeedRelease=true;
//看官员职位
Set<Integer> admins = members.get(GlobalsDef.ADMINISTRATORS);
for(int uid:admins){
try {
User user = UserManager.getUser(uid);
if(user==null||user.getPlayerInfoManager()==null){
LOGGER.error("{}公会官员数据需要修理==>{}",entry.getKey(),uid);
}else{
long offLineTime = user.getPlayerInfoManager().getOffLineTime();
if(now-offLineTime<TimeUnit.DAYS.toMillis(15)){
continue;
if(admins!=null&&admins.size()>0){
for(int uid:admins){
try {
User user = UserManager.getUser(uid);
if(user==null||user.getPlayerInfoManager()==null){
LOGGER.error("{}公会官员数据需要修理==>{}",entry.getKey(),uid);
}else{
long offLineTime = user.getPlayerInfoManager().getOffLineTime();
if(now-offLineTime<TimeUnit.DAYS.toMillis(15)){
isNeedRelease = false;
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
Set<Integer> member = members.get(GlobalsDef.ADMINISTRATORS);
for(int uid:member) {
try {
User user = UserManager.getUser(uid);
if(user==null||user.getPlayerInfoManager()==null){
LOGGER.error("{}公会会员数据需要修理==>{}",entry.getKey(),uid);
}else{
long offLineTime = user.getPlayerInfoManager().getOffLineTime();
if(now-offLineTime<TimeUnit.DAYS.toMillis(15)){
continue;
if(member!=null&&member.size()>0){
for(int uid:member) {
try {
User user = UserManager.getUser(uid);
if(user==null||user.getPlayerInfoManager()==null){
LOGGER.error("{}公会会员数据需要修理==>{}",entry.getKey(),uid);
}else{
long offLineTime = user.getPlayerInfoManager().getOffLineTime();
if(now-offLineTime<TimeUnit.DAYS.toMillis(15)){
isNeedRelease = false;
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
if(isNeedRelease){
releaseGuilds.add(entry.getKey());
}
releaseGuilds.add(entry.getKey());
}
ThreadManager.commitGeneralTask(new GuildChangeTask(chairmanChangeGuilds,releaseGuilds));
LOGGER.info("=-------公会检测结束-------");
}
}