Merge branch 'master_test_gn' of http://60.1.1.230/backend/jieling_server into master_test_gn

back_recharge
jiahuiwen 2021-09-27 12:01:44 +08:00
commit 3952359f2b
11 changed files with 65 additions and 50 deletions

View File

@ -1272,8 +1272,7 @@ public class TimeUtils {
public static int getHourOfDay() {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
int hour = calendar.get(Calendar.HOUR_OF_DAY);
return hour;
return calendar.get(Calendar.HOUR_OF_DAY);
}
/**
* 获得当前时间是今天的几点(整点)
@ -1283,8 +1282,7 @@ public class TimeUtils {
public static int getMiunte() {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
int minute = calendar.get(Calendar.MINUTE);
return minute;
return calendar.get(Calendar.MINUTE);
}
/**
* 获得当前时间是今天的几点(整点)
@ -1294,8 +1292,7 @@ public class TimeUtils {
public static int getMiunte(long time) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(time);
int minute = calendar.get(Calendar.MINUTE);
return minute;
return calendar.get(Calendar.MINUTE);
}
// /**

View File

@ -90,7 +90,6 @@ public class CrossServiceLogic {
* @throws Exception
*/
public void dispose(User user) throws Exception{
ArenaOfUser query = query(user.getId());
ArenaOfUser arenaOfUser = buildArenaOfUser(user);
countForce(arenaOfUser);
@ -101,6 +100,7 @@ public class CrossServiceLogic {
update(arenaOfUser);
}
}
public ArenaOfUser buildArenaOfUser(User user){
ArenaOfUser arenaOfUser = new ArenaOfUser();
arenaOfUser.setId(user.getId());

View File

@ -581,7 +581,7 @@ public class ArenaLogic {
for(ZSetOperations.TypedTuple<String> item : arenaRankInfo){
String value = item.getValue();
int uid = Integer.parseInt(value);
User user = UserManager.getUser(uid, true);
User user = UserManager.getUserNotCache(uid);
if (null == user) {
continue;
}

View File

@ -203,6 +203,21 @@ public class UserManager {
}
return null;
}
public static User getUserNotCache(int uid) {
// User user = userMap.get(uid);
try {
User user = userMap.get(uid);
if (user != null) {
return user;
}
return MongoUtil.getInstence().getMyMongoTemplate().findById(User.getCollectionName(), uid, User.class);
}catch (Exception e){
LOGGER.error("UserManager::getUser:{} null, exception:{}",uid,e.getMessage());
}
return null;
}
public static void removeUser(int uid) {
userMap.remove(uid);
}

View File

@ -124,7 +124,10 @@ public class CrossDeathPathLogic {
// 结算标识设置
redisUtil.hset(RedisKey.DEATH_PATH_EVERY_OVER_HASH,String.valueOf(GameApplication.serverId),1);
User user = UserManager.getUser(uid);
User user = UserManager.getUserNotCache(uid);
if (user == null){
return;
}
CrossServiceLogic.getInstance().dispose(user);
}

View File

@ -1193,11 +1193,6 @@ public class HeroLogic{
RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), teamForce);
}
if (teamId == GlobalsDef.FORMATION_NORMAL) {
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(iSession.getUid()));
CrossServiceLogic.getInstance().dispose(user);
}
// 跨服 更新编队信息
if (teamId == GlobalsDef.WORLD_TEAM_ARENA_DEFENSE) {
CrossServiceLogic.getInstance().dispose(user);

View File

@ -1014,10 +1014,10 @@ public class ItemLogic {
*/
public void functionEndClearItem(int uid,int type,int reason){
try {
User user = UserManager.getUser(uid);
User user = UserManager.getUserNotCache(uid);
// 根据功能类型获取需要清理的道具列表
List<SItem> itemList = SItem.getItemMapByRecycle().get(type);
if (itemList == null || itemList.isEmpty()){
if (user == null || itemList == null || itemList.isEmpty()){
return;
}
for (SItem item:itemList){

View File

@ -344,7 +344,7 @@ public class MailLogic {
}
//发送邮件
public void sendMail(int uid, String title, String content, String reward, int sendTime, int mailEffectiveTime){
User user = UserManager.getUserInMem(uid);
User user = UserManager.getUserNotCache(uid);
if (user != null){
Mail mail = new Mail(uid,title,content,reward,sendTime, mailEffectiveTime,"system",Global.MAIL_TYPE_SYS);
user.getMailManager().addMail(mail);

View File

@ -95,7 +95,7 @@ public abstract class AbstractRank implements IRank {
*/
public void crossUserCache(int uid){
try {
User user = UserManager.getUser(uid);
User user = UserManager.getUserNotCache(uid);
if (user == null){
return;
}

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.logic.rank.rankImpl;
import com.ljsd.jieling.db.redis.RedisUtil;
import util.TimeUtils;
/**
* @author hj
@ -24,7 +25,7 @@ public class CrossRank extends AbstractRank {
@Override
public double getScore(double... data) {
return data[0];
return data[0]+ TimeUtils.getDoubleTime();
}
}

View File

@ -11,6 +11,7 @@ import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SevenWorldIntegralEvent;
import com.ljsd.jieling.logic.dao.Hero;
@ -269,6 +270,8 @@ public class SevenWorldLogic {
// 层数
user.getPlayerInfoManager().putSevenWorldOpenTier(week,tierId);
}
// 跨服数据保存
CrossServiceLogic.getInstance().dispose(user);
}
// 战斗数据
builder.setResult(fightResult.getResult());
@ -430,39 +433,38 @@ public class SevenWorldLogic {
* 结束发送奖励
*/
public void sendRankReward(){
if (!isTime()){
return;
}
// 排行榜
String crossRedisKey = RankContext.getRankEnum(RankEnum.CROSS_SEVEN_WORLD_RANK.getType()).getCrossRedisKey();
Set<ZSetOperations.TypedTuple<String>> range = RedisUtil.getInstence().getZsetreverseRangeWithScores(crossRedisKey,"",0,-1,false);
// 排名
int rank = 1;
for (ZSetOperations.TypedTuple<String> tuple : range) {
User user = UserManager.getUserInMem(Integer.parseInt(tuple.getValue()));
if (user == null){
return;
}
String title = SErrorCodeEerverConfig.getI18NMessage("Qijie_mail_title");
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("Qijie_mail_txt", new Object[]{rank},new int[0],"#");
// 排行奖励
Map<Integer, SQijieRanking> config = STableManager.getConfig(SQijieRanking.class);
for (SQijieRanking value : config.values()) {
// 排名区间
if (rank >= value.getMinRank() && rank <= value.getMaxRank()){
// 发邮件奖励
String reward = StringUtil.parseArrayToString(value.getRankingReward());
MailLogic.getInstance().sendMail(user.getId(),title,content,reward,TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
// 清除道具
ItemLogic.getInstance().functionEndClearItem(user.getId(),FunctionIdEnum.CrossSevenWorld.getFunctionType(),BIReason.SEVEN_WORLD_FUNCTION_END);
LOGGER.info("七界结束,发送邮件并删除道具,uid:{},奖励:{},",user.getId(),reward);
break;
if (isTime()){
// 排行榜
String crossRedisKey = RankContext.getRankEnum(RankEnum.CROSS_SEVEN_WORLD_RANK.getType()).getCrossRedisKey();
Set<ZSetOperations.TypedTuple<String>> range = RedisUtil.getInstence().getZsetreverseRangeWithScores(crossRedisKey,"",0,-1,false);
// 排名
int rank = 1;
for (ZSetOperations.TypedTuple<String> tuple : range) {
User user = UserManager.getUserNotCache(Integer.parseInt(tuple.getValue()));
if (user == null){
return;
}
String title = SErrorCodeEerverConfig.getI18NMessage("Qijie_mail_title");
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("Qijie_mail_txt", new Object[]{rank},new int[0],"#");
// 排行奖励
Map<Integer, SQijieRanking> config = STableManager.getConfig(SQijieRanking.class);
for (SQijieRanking value : config.values()) {
// 排名区间
if (rank >= value.getMinRank() && rank <= value.getMaxRank()){
// 发邮件奖励
String reward = StringUtil.parseArrayToString(value.getRankingReward());
MailLogic.getInstance().sendMail(user.getId(),title,content,reward,TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
// 清除道具
ItemLogic.getInstance().functionEndClearItem(user.getId(),FunctionIdEnum.CrossSevenWorld.getFunctionType(),BIReason.SEVEN_WORLD_FUNCTION_END);
LOGGER.info("七界结束,发送邮件并删除道具,uid:{},奖励:{},",user.getId(),reward);
break;
}
}
rank++;
}
rank++;
SevenWorldLogic.setEnd(true);
System.out.print("七界试炼活动结束,发奖完成...\n");
}
SevenWorldLogic.setEnd(true);
System.out.print("七界试炼活动结束,发奖完成...\n");
}
/**
@ -473,7 +475,9 @@ public class SevenWorldLogic {
int week = TimeUtils.getDayOfWeek();
int hour = TimeUtils.getHourOfDay();
int minute = TimeUtils.getMiunte();
return week == 7 && hour == 23 && minute == 30;
boolean b = week == 7 && hour == 23 && minute == 30;
LOGGER.info("当前时间:week:{},hour:{},minute:{},result:{}",week,hour,minute,b);
return b;
}
}