Merge branch 'master_test_gn' of http://60.1.1.230/backend/jieling_server into master_test_gn
commit
f7041150b6
|
@ -1,8 +1,5 @@
|
|||
package com.ljsd.jieling.db.redis;
|
||||
|
||||
import com.ljsd.jieling.db.mongo.AreaManager;
|
||||
import com.ljsd.jieling.logic.GlobleSystemLogic;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -356,7 +353,8 @@ public class RedisKey {
|
|||
|
||||
public static final String GUILD_LEADER_CACHE = "GUILD_LEADER_CACHE";
|
||||
|
||||
public static final String CROSS_RANK_UPDATE_VERSION = "CROSS_RANK_UPDATE_VERSION";
|
||||
public static final String CROSS_RANK_UPDATE = "CROSS_RANK_UPDATE";
|
||||
public static final String CROSS_RANK_DELETE = "CROSS_RANK_DELETE";
|
||||
|
||||
//玉虚论道
|
||||
public static final String CROSS_YUXULUNDAO_RANK = "CROSS_YUXULUNDAO_RANK";//排行榜信息 废弃
|
||||
|
|
|
@ -1429,27 +1429,27 @@ public class RedisUtil {
|
|||
if (result == null){
|
||||
result = AreaManager.areaId + RedisKey.Delimiter_colon + type + RedisKey.Delimiter_colon + key;
|
||||
}
|
||||
deathPathKeyHandler(result);
|
||||
helpHeroKeyHandler(result);
|
||||
|
||||
// 保存需要清理的key
|
||||
saveRemoveKeyHandler(result);
|
||||
return result;}
|
||||
|
||||
/**
|
||||
* 十绝阵rediskey处理
|
||||
* 保存需要清理的key
|
||||
*/
|
||||
private void deathPathKeyHandler(String key){
|
||||
private void saveRemoveKeyHandler(String key){
|
||||
// 十绝阵相关
|
||||
if(key.contains("DEATH_PATH")){
|
||||
RedisUtil.getInstence().sSet(RedisKey.DEATH_PATH_DELETE,key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 助战rediskey处理
|
||||
*/
|
||||
private void helpHeroKeyHandler(String key){
|
||||
// 助战相关
|
||||
if(key.contains("HELP_FIGHT")){
|
||||
RedisUtil.getInstence().sSet(RedisKey.HELP_FIGHT_DELETE,key);
|
||||
}
|
||||
// 跨服排行榜相关
|
||||
if(key.contains("CROSS_RANK_UPDATE")){
|
||||
RedisUtil.getInstence().sSet(RedisKey.CROSS_RANK_DELETE,key);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static final String LOCK_SUCCESS = "OK";
|
||||
|
|
|
@ -34,8 +34,7 @@ public class WeekCardHandler extends BaseHandler<ActivityProto.WeekCardRewardReq
|
|||
|
||||
@Override
|
||||
public void processWithProto(ISession session, ActivityProto.WeekCardRewardRequest proto) throws Exception{
|
||||
return;
|
||||
/*User user = UserManager.getUser(session.getUid());
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
int weekId = proto.getId();
|
||||
Map<Integer, WeekCardInfo> weekCard = user.getPlayerInfoManager().getWeekCard();
|
||||
ActivityProto.WeekCardRewardResponse.Builder res = ActivityProto.WeekCardRewardResponse.newBuilder();
|
||||
|
@ -71,6 +70,5 @@ public class WeekCardHandler extends BaseHandler<ActivityProto.WeekCardRewardReq
|
|||
singleWeekCard.setLeaveGetRewardDays(TimeUtils.getDayOfWeek());
|
||||
user.getPlayerInfoManager().setWeekCard(weekCard);
|
||||
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.WeekCardRewardResponse.getNumber(), res.build(), true);
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,10 +34,7 @@ public class WeekCardInfoHandler extends BaseHandler<ActivityProto.WeekCardInfo
|
|||
*/
|
||||
@Override
|
||||
public void processWithProto(ISession session, ActivityProto.WeekCardInfoRequest proto) throws Exception{
|
||||
ActivityProto.WeekCardInfoResponse.Builder res = ActivityProto.WeekCardInfoResponse.newBuilder();
|
||||
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.WeekCardInfoResponse.getNumber(), res.build(), true);
|
||||
return;
|
||||
/*User user = UserManager.getUser(session.getUid());
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
int[] weekType = WeekCardLogic.getInstance().getWeekCardType(user);
|
||||
if(weekType == null){
|
||||
return;
|
||||
|
@ -45,6 +42,6 @@ public class WeekCardInfoHandler extends BaseHandler<ActivityProto.WeekCardInfo
|
|||
ActivityProto.WeekCardInfoResponse.Builder res = ActivityProto.WeekCardInfoResponse.newBuilder();
|
||||
List<CommonProto.WeekCard> weekCardList = WeekCardLogic.getInstance().initAllWeekCardInfo(user);
|
||||
res.addAllAllWeekCardInfo(weekCardList);
|
||||
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.WeekCardInfoResponse.getNumber(), res.build(), true);*/
|
||||
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.WeekCardInfoResponse.getNumber(), res.build(), true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -407,8 +407,6 @@ public class GlobalDataManaager implements IManager {
|
|||
public static void checkNeedReFlush(ISession session,User user,PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception {
|
||||
// 需要隔天刷新的字段统一在这里处理
|
||||
if (TimeUtils.isOverTime(0,user.getPlayerInfoManager().getLoginTime())) {
|
||||
//周卡每日刷新
|
||||
//WeekCardLogic.getInstance().sendWeekCardInitInfo(session);
|
||||
//活动刷新
|
||||
ActivityLogic.getInstance().flushEveryDay(user,fBuilder);
|
||||
PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder);
|
||||
|
@ -434,6 +432,10 @@ public class GlobalDataManaager implements IManager {
|
|||
SevenWorldLogic.getInstance().sevenWorldInfoIndication(session);
|
||||
// 御剑行
|
||||
RidingSwardLogic.getInstance().zeroClearRidingSwardByUser(user);
|
||||
//周卡每日刷新
|
||||
WeekCardLogic.getInstance().sendWeekCardInitInfo(session);
|
||||
//周卡邮件发放未领取奖励
|
||||
WeekCardLogic.getInstance().sendWeekCardRewardMail(session);
|
||||
|
||||
// GuildChallengeLogic.getInstance().resetBossDamage(user);
|
||||
if(TimeUtils.isSpanTime(user.getPlayerInfoManager().getLoginTime(),TimeUtils.now(),1,0)){
|
||||
|
|
|
@ -243,8 +243,6 @@ public class GlobleSystemLogic implements IEventHandler {
|
|||
LOGGER.error("跨服分组,未获取到锁");
|
||||
return;
|
||||
}
|
||||
// 跨服排行榜处理
|
||||
CrossRankManager.getInstance().cleanCrossRank();
|
||||
|
||||
//这里为所有服务器的世界等级
|
||||
Map<String,Integer> worldLevelMap = redisUtil.getMapValues(RedisKey.SERVER_WORLDLEVE_INFO,"",String.class,Integer.class);
|
||||
|
@ -285,13 +283,20 @@ public class GlobleSystemLogic implements IEventHandler {
|
|||
redisUtil.del(RedisKey.CHAT_CROSS_MSG_ID+i);
|
||||
}
|
||||
|
||||
// 重新分组,需要删除旧排行榜数据,重新分组
|
||||
redisUtil.delVague(RedisKey.CROSS_RANK_DELETE,"CROSS_RANK_UPDATE:.*");
|
||||
|
||||
//释放分布式锁
|
||||
redisUtil.del("SERVER_SPLIT_REDIS_LOCK");
|
||||
|
||||
LOGGER.info("跨服分组结束");
|
||||
// splitInfo = RedisUtil.getInstence().getMapValues(RedisKey.SERVER_SPLIT_INFO,"",String.class,Integer.class);
|
||||
}
|
||||
//获取当前区服的跨服区组 -1为未在分组内
|
||||
|
||||
/**
|
||||
* 获取当前区服的跨服区组 -1为未在分组内
|
||||
* @return
|
||||
*/
|
||||
public int getCrossGroup(){
|
||||
//测试服不参与分组和跨服
|
||||
if(!GameApplication.serverProperties.isArenaCross()){
|
||||
|
@ -299,8 +304,23 @@ public class GlobleSystemLogic implements IEventHandler {
|
|||
}
|
||||
Integer group = RedisUtil.getInstence().getMapValue(RedisKey.SERVER_SPLIT_INFO, "", String.valueOf(GameApplication.serverId), Integer.class);
|
||||
crossGroup = group==null?-1:group;
|
||||
return crossGroup;
|
||||
}
|
||||
|
||||
return crossGroup;
|
||||
/**
|
||||
* 获取和当前分组同一分组的服务器id
|
||||
* @return
|
||||
*/
|
||||
public List<String> getCrossServersByGroup(){
|
||||
int group = getCrossGroup();
|
||||
Map<String, Integer> values = RedisUtil.getInstence().getMapValues(RedisKey.SERVER_SPLIT_INFO, "", String.class, Integer.class);
|
||||
ArrayList<String> list = new ArrayList<>();
|
||||
for (Map.Entry<String, Integer> entry : values.entrySet()) {
|
||||
if (entry.getValue() == group){
|
||||
list.add(entry.getKey());
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,22 +1,25 @@
|
|||
package com.ljsd.jieling.logic.activity.activityLogic;
|
||||
|
||||
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.WeekCardInfo;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import config.SErrorCodeEerverConfig;
|
||||
import config.SWeekcardConfig;
|
||||
import config.SWeekcardRotationConfig;
|
||||
import manager.STableManager;
|
||||
import rpc.protocols.ActivityProto;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import util.StringUtil;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
public class WeekCardLogic {
|
||||
|
||||
|
@ -25,7 +28,6 @@ public class WeekCardLogic {
|
|||
|
||||
public static class Instance {
|
||||
public final static WeekCardLogic instance = new WeekCardLogic();
|
||||
|
||||
}
|
||||
|
||||
public static WeekCardLogic getInstance() {
|
||||
|
@ -39,7 +41,54 @@ public class WeekCardLogic {
|
|||
res.addAllAllWeekCardInfo(weekCardList);
|
||||
//MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.WeekCardIndicationInfoResponse, res.build(), true);
|
||||
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.WeekCardIndicationInfoResponse_VALUE,res.build(),true);
|
||||
}
|
||||
|
||||
public void sendWeekCardRewardMail(ISession session)throws Exception{
|
||||
//发每周未领取的奖励
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
Map<Integer, WeekCardInfo> weekCard = user.getPlayerInfoManager().getWeekCard();
|
||||
Map<Integer,Integer>dropMap = new HashMap<>();
|
||||
boolean isSave = false;
|
||||
for(WeekCardInfo weekCardVal:weekCard.values()){
|
||||
Map<Integer, SWeekcardConfig> config = STableManager.getConfig(SWeekcardConfig.class);
|
||||
if(!config.containsKey(weekCardVal.getId())){
|
||||
continue;
|
||||
}
|
||||
if(!weekCardVal.isBuy()){
|
||||
continue;
|
||||
}
|
||||
if(TimeUtils.isSameWeek7(weekCardVal.getBugTime())){
|
||||
continue;
|
||||
}
|
||||
if(Calendar.DAY_OF_WEEK - weekCardVal.getLeaveGetRewardDays()>0){
|
||||
for(int i= (Calendar.DAY_OF_WEEK - weekCardVal.getLeaveGetRewardDays());i>0;i--){
|
||||
int [][]drop =config.get(weekCardVal.getId()).getBaseReward();
|
||||
for(int[] single:drop){
|
||||
if(dropMap.containsKey(single[0])){
|
||||
dropMap.put(single[0],dropMap.get(single[0])+single[1]);
|
||||
}else{
|
||||
dropMap.put(single[0],single[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
weekCardVal.setBuy(false);
|
||||
weekCardVal.setBugTime(0);
|
||||
isSave =true;
|
||||
int [][] dropArray= dropMap.entrySet().stream().map(n->new int[]{n.getKey(),n.getValue()}).toArray(int[][]::new);
|
||||
/*String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("MsRankContent",new Object[]{(i + 1)},new int[0],"#");
|
||||
MailLogic.getInstance().sendMail(arenaRankfilt.get(i), title, content,
|
||||
StringUtil.parseArrayToString(config.getSeasonReward()), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);*/
|
||||
MailLogic.getInstance().sendMail(user.getId(), "周卡未领取奖励", "周卡奖励",
|
||||
StringUtil.parseArrayToString(dropArray), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
|
||||
}else{
|
||||
weekCardVal.setBuy(false);
|
||||
weekCardVal.setBugTime(0);
|
||||
isSave = true;
|
||||
}
|
||||
if(isSave){
|
||||
user.getPlayerInfoManager().setWeekCard(weekCard);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<CommonProto.WeekCard> initAllWeekCardInfo(User user) throws Exception{
|
||||
|
@ -54,7 +103,6 @@ public class WeekCardLogic {
|
|||
boolean isSaveToDb =false;
|
||||
List<CommonProto.WeekCard> weekCardList=new ArrayList<>();
|
||||
for(int i= 1;i<weekCardType.length;i++){
|
||||
//if(config.containsKey(weekCardType[i])){
|
||||
CommonProto.WeekCard.Builder weekCardProto = CommonProto.WeekCard.newBuilder();
|
||||
//周卡是否存在 判断是否过期
|
||||
if(!weekCard.containsKey(weekCardType[i])){
|
||||
|
@ -75,7 +123,6 @@ public class WeekCardLogic {
|
|||
weekCardProto.setIsBuy(singleWeekCard.isBuy());
|
||||
weekCardProto.setLeaveGetRewardDays(TimeUtils.getDayOfWeek()-singleWeekCard.getLeaveGetRewardDays());
|
||||
weekCardList.add(weekCardProto.build());
|
||||
//}
|
||||
}
|
||||
if(isSaveToDb){
|
||||
user.getPlayerInfoManager().setWeekCard(weekCard);
|
||||
|
@ -106,10 +153,14 @@ public class WeekCardLogic {
|
|||
if(level == 0){
|
||||
level = user.getPlayerInfoManager().getLevel();
|
||||
}
|
||||
if(level>=cardType[0][0]&&level<=cardType[1][0]){
|
||||
return cardType[0];
|
||||
if(cardType.length>1){
|
||||
if(level>=cardType[0][0]&&level<=cardType[1][0]){
|
||||
return cardType[0];
|
||||
}else {
|
||||
return cardType[1];
|
||||
}
|
||||
}else {
|
||||
return cardType[1];
|
||||
return cardType[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.ljsd.jieling.logic.rank;
|
||||
|
||||
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.dao.GuilidManager;
|
||||
|
@ -11,6 +12,7 @@ import org.slf4j.LoggerFactory;
|
|||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -37,15 +39,10 @@ public class CrossRankManager {
|
|||
return CrossRankManager.Instance.INSTANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上次排行榜初始化时间
|
||||
*/
|
||||
private long time = 0L;
|
||||
|
||||
/**
|
||||
* 跨服排行处理
|
||||
*/
|
||||
public void crossRankHandle(boolean choice){
|
||||
public void crossRankHandle(){
|
||||
// 时间验证
|
||||
if (isTime()){
|
||||
// 全部排行遍历
|
||||
|
@ -57,11 +54,20 @@ public class CrossRankManager {
|
|||
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
|
||||
if(crossGroup != -1){
|
||||
AbstractRank rank = RankContext.getRankEnum(type);
|
||||
// 获取本服排行榜数据
|
||||
Set<ZSetOperations.TypedTuple<String>> range = RedisUtil.getInstence().getZsetreverseRangeWithScores(rank.getRedisKey(), "", 0, 100, true);
|
||||
// 批量放入跨服排行榜
|
||||
// 获取跨服key
|
||||
String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false);
|
||||
RedisUtil.getInstence().zsetAddAall(key,range);
|
||||
// 清理旧榜数据
|
||||
RedisUtil.getInstence().del(key);
|
||||
// 获取本组的服务器列表
|
||||
List<String> servers = GlobleSystemLogic.getInstence().getCrossServersByGroup();
|
||||
for (String server : servers) {
|
||||
String localKey = RedisUtil.getInstence().getKey(server, rank.getRedisKey(), false);
|
||||
// 获取本地服排行榜数据
|
||||
Set<ZSetOperations.TypedTuple<String>> range =
|
||||
RedisUtil.getInstence().getZsetreverseRangeWithScores(localKey,"",0,100, false);
|
||||
// 批量放入跨服排行榜
|
||||
RedisUtil.getInstence().zsetAddAall(key,range);
|
||||
}
|
||||
LOGGER.info("=====================跨服排行榜处理========,key:{}",key);
|
||||
}
|
||||
}
|
||||
|
@ -74,14 +80,17 @@ public class CrossRankManager {
|
|||
* @return
|
||||
*/
|
||||
private boolean isTime(){
|
||||
long now = TimeUtils.now();
|
||||
long twoHour = TimeUtils.HOUR * 2;
|
||||
if (now >= twoHour+time){
|
||||
time = now;
|
||||
return true;
|
||||
}else{
|
||||
int group = GlobleSystemLogic.getInstence().getCrossGroup();
|
||||
if (group == -1){
|
||||
return false;
|
||||
}
|
||||
String key = RedisUtil.getInstence().getKey(RedisKey.CROSS_RANK_UPDATE, String.valueOf(group), false);
|
||||
Object object = RedisUtil.getInstence().get(key);
|
||||
if (object != null){
|
||||
return false;
|
||||
}
|
||||
RedisUtil.getInstence().set(key,"1",TimeUtils.HOUR * 2);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -95,25 +104,4 @@ public class CrossRankManager {
|
|||
LOGGER.info("==================工会缓存处理=============");
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理跨服排行榜
|
||||
*/
|
||||
public void cleanCrossRank(){
|
||||
for (RankEnum value : RankEnum.values()) {
|
||||
int type = value.getType();
|
||||
//跨服
|
||||
if (RankContext.isCrossRank2(type) && RankContext.isCrossRank(type)) {
|
||||
// 获取分组id,是否跨服
|
||||
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
|
||||
if (crossGroup != -1) {
|
||||
AbstractRank rank = RankContext.getRankEnum(type);
|
||||
String key = RedisUtil.getInstence().getKey(rank.getCrossRedisKey(),"",false);
|
||||
RedisUtil.getInstence().del(key);
|
||||
time = 0L;
|
||||
LOGGER.info("=====================跨服排行榜清理========,key:{},time:{}",key,time);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -11,7 +11,6 @@ import com.ljsd.jieling.globals.Global;
|
|||
import com.ljsd.jieling.ktbeans.ReportEventEnum;
|
||||
import com.ljsd.jieling.ktbeans.ReportUtil;
|
||||
import com.ljsd.jieling.logic.GlobleSystemLogic;
|
||||
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
|
||||
import com.ljsd.jieling.logic.dao.Hero;
|
||||
import com.ljsd.jieling.logic.dao.TeamEnum;
|
||||
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
|
||||
|
|
|
@ -402,8 +402,8 @@ public class BuyGoodsNewLogic {
|
|||
}
|
||||
//周卡
|
||||
if(type==GiftGoodsType.WEEKCARD){
|
||||
//WeekCardLogic.getInstance().buyWeekCard(user,config.getId());
|
||||
//WeekCardLogic.getInstance().sendWeekCardInitInfo(session);
|
||||
WeekCardLogic.getInstance().buyWeekCard(user,config.getId());
|
||||
WeekCardLogic.getInstance().sendWeekCardInitInfo(session);
|
||||
}
|
||||
if(drop!=null&&session!=null){
|
||||
PlayerInfoProto.DirectBuyIndication build = PlayerInfoProto.DirectBuyIndication.newBuilder().setDrop(drop).build();
|
||||
|
|
|
@ -163,10 +163,10 @@ public class MinuteTask extends Thread {
|
|||
}
|
||||
|
||||
try {
|
||||
CrossRankManager.getInstance().crossRankHandle(false);
|
||||
CrossRankManager.getInstance().crossRankHandle();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
LOGGER.error("跨服排行榜初始化一次,Exception::=>{}",e.toString());
|
||||
LOGGER.error("跨服排行榜初始化异常,Exception::=>{}",e.toString());
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
Loading…
Reference in New Issue