优化活动

main
grimm 2025-03-19 21:17:24 +08:00
parent 36014b9c73
commit 13b8ac585f
4 changed files with 30 additions and 20 deletions

View File

@ -116,6 +116,15 @@ public class LjsdMongoTemplate implements MongoUpdateImp {
public <T> T findById(String collectionName, int id, Class<T> clazz) {
//id和服务器id一样,说明是系统邮件或者(测试服中玩家名字和serverId一样了,肯定是本服id),直接返回本服id
if(id == GameApplication.serverId){
MongoTemplate otherMonogTemplate = getMongoTemplate(id);
if(otherMonogTemplate==null){
return null;
}
return otherMonogTemplate.findById(id,clazz,collectionName);
}
//根据用户id查询服务器id
int serverIdByUid = AreaManager.getInstance().getServerIdByUid(id, GameApplication.serverId);
MongoTemplate otherMonogTemplate = getMongoTemplate(serverIdByUid);
if(otherMonogTemplate==null){

View File

@ -84,7 +84,10 @@ public class MongoUtil {
List<CServerInfo> cServerInfos = coreMongoTemplate.findAll(CServerInfo.class);
for (CServerInfo cServerInfo : cServerInfos) {
serverId2ServerInfo.put(cServerInfo.getServerId(), cServerInfo);
getMonogTemplate(cServerInfo.getServerId());
if(cServerInfo.getServerId() == GameApplication.serverId){
//只初始化本服的数据库连接,其他服的需要的时候再初始化
getMonogTemplate(cServerInfo.getServerId());
}
if(cServerInfo.getServerId() == GameApplication.serverId && cServerInfo.getArea() > 0) {
areaIds.add(cServerInfo.getArea());
}

View File

@ -329,12 +329,11 @@ public class ActivityLogic implements IEventHandler {
systemEndLong = seasonActivityIds.get(id).getEndTime();
if (now < systemOpenLong || (now > systemEndLong)) {
closeList.add(id);
continue;
}
long endTime = seasonActivityIds.get(id).getEndTime();
if (now > endTime) {
closeList.add(id);
}
// long endTime = seasonActivityIds.get(id).getEndTime();
// if (now > endTime) {
// closeList.add(id);
// }
} else {
long seasonOpenLong = sGlobalActivity.getStartTimeLong(); //活动开启时间
long seasonEndLong = sGlobalActivity.getEndTimeLong(); //活动结束时间(秒) 注:孙龙的宝藏时间是任务时间,奖励时间在此基础上多一天 东海寻仙包括了活动结束后的预告时间
@ -576,7 +575,6 @@ public class ActivityLogic implements IEventHandler {
if(activityMission.getActivityMissionMap() != null && activityMission.getActivityMissionMap().size() == sActivityRewardConfigs.size()) {
continue;
}else {
List<Integer> idList = SActivityRewardConfig.getsActivityIdByActivityId(openActivityId);
Iterator<Integer> iterator = idList.iterator();
while (iterator.hasNext()){
@ -622,6 +620,15 @@ public class ActivityLogic implements IEventHandler {
if(!isUserCreateTimeOpen(sGlobalActivity, userCreateTime, now)) {
continue;
}
//不在时间内,不初始化
if(now > timeIDinfo.getEndTime() || now < timeIDinfo.getStartTime()){
continue;
}
int activityOpenState = getActivityOpenState(user, openActivityId);
//不够开启条件,不初始化
if(activityOpenState == ActivityType.UNOPEN_STATE){
continue;
}
ActivityMission activityMission = activityManager.getActivityMissionMap().get(openActivityId);
if (activityMission != null) {
if (activityMission.getSeason() == 0) {
@ -644,7 +651,6 @@ public class ActivityLogic implements IEventHandler {
if(activityMission.getCreatTime() >= startTime) {
continue;
}
if(sGlobalActivity.getType() == ActivityType.COW_FLY_SKY
&& activityMission.getSeason() != timeIDinfo.getTimes()
&& now <= timeIDinfo.getEndTime() + sGlobalActivity.getGapTime() * TimeUtils.ONE_DAY) {
@ -660,25 +666,17 @@ public class ActivityLogic implements IEventHandler {
continue;
}
// if(!initOtherActivity(user, sGlobalActivity)){
initAllActivityMission(activityManager.getActivityMissionMap(), openActivityId, timeIDinfo.getTimes());
// }
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(openActivityId);
if (null == abstractActivity) {
continue;
}
abstractActivity.initActivity(user);
// //ReportUtil.onReportEvent(user, ReportEventEnum.JOIN_ACTIVITY.getType(),String.valueOf(openActivityId));
int activityOpenState = getActivityOpenState(user, openActivityId);
abstractActivity.setOpenState(user, activityOpenState);
if (activityOpenState == ActivityType.UNOPEN_STATE) {
continue;
}
abstractActivity.initActivity(user);
//非角色活动开启通知
openNewActivityIds.add(openActivityId);
}

View File

@ -42,15 +42,15 @@ public class JunBeiTiaoPeiActivity extends AbstractActivity {
LOGGER.info("[集字活动--军备调配 任务活动] [初始化玩家数据] [uid:{}] [activityId:{}]",user.getId(),this.id);
super.initActivity(user);
ActivityMission mission = new ActivityMission();
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
if(mission == null){
mission = new ActivityMission();
}
List<SWordExchangeConfig> rewardConfigs = SWordExchangeConfig.sWordExchangeConfigByActivityIdMap.get(id);
ArrayList<Integer> integers = new ArrayList<>(rewardConfigs.size());
rewardConfigs.forEach(v->integers.add(v.getId()));
ActivityLogic.getInstance().initOtherMission(mission, integers);
user.getActivityManager().getActivityMissionMap().put(id, mission);
user.getUserMissionManager().onGameEvent(user, GameEvent.JUNBEITIAOPEI_REFRESH, id);
LOGGER.info("集字活动--军备调配 活动刷新...");