循环活动,time类型为6
parent
fe5bed800a
commit
f6de5eb7d0
|
|
@ -421,6 +421,9 @@ public class TimeUtils {
|
|||
return calendar.getTimeInMillis();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定时间的当天0点
|
||||
*/
|
||||
public static long getAppointTimeInXDay(long date, int hour) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTimeInMillis(date);
|
||||
|
|
|
|||
|
|
@ -2,18 +2,12 @@ package com.ljsd.jieling.config.clazzStaticCfg;
|
|||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.logic.dao.ExpeditionItem;
|
||||
import com.ljsd.jieling.logic.dao.Hero;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.family.GuildFightLogic;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import config.*;
|
||||
import manager.AbstractClassStaticConfig;
|
||||
import manager.STableManager;
|
||||
import manager.Table;
|
||||
import util.TimeUtils;
|
||||
import util.CellUtil;
|
||||
import util.MathUtils;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
|
|
|||
|
|
@ -169,7 +169,8 @@ public class ActivityLogic implements IEventHandler{
|
|||
//检查开启的活动 非相对创角时间
|
||||
for (SGlobalActivity sGlobalActivity : sGlobalActivityMap.values()) {
|
||||
int time = sGlobalActivity.getTime();
|
||||
ActivityTypeEnum.getActicityById(sGlobalActivity.getId());
|
||||
int id = sGlobalActivity.getId();
|
||||
AbstractActivity activity = ActivityTypeEnum.getActicityById(id);
|
||||
if (time == ActivityType.OPEN_TYPE_ROLE) {
|
||||
continue;
|
||||
}
|
||||
|
|
@ -180,54 +181,52 @@ public class ActivityLogic implements IEventHandler{
|
|||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 2);
|
||||
if (now < startTime) {
|
||||
//如果没到活动开启时间,但是openActivityIds里有了这个活动,证明是热更延迟开启的活动,需要清除掉
|
||||
openActivityIds.remove(sGlobalActivity.getId());
|
||||
openActivityIds.remove(id);
|
||||
continue;
|
||||
}
|
||||
// 开服条件判断
|
||||
boolean open = SGlobalActivity.checkActivityIfOpen(sGlobalActivity.getId(),0,GameApplication.serverConfig.getCacheOpenTime());
|
||||
boolean open = SGlobalActivity.checkActivityIfOpen(id,0,GameApplication.serverConfig.getCacheOpenTime());
|
||||
if (!open){
|
||||
openActivityIds.remove(sGlobalActivity.getId());
|
||||
openActivityIds.remove(id);
|
||||
continue;
|
||||
}
|
||||
long gapEndTime = endTime+sGlobalActivity.getGapTime()*TimeUtils.DAY;
|
||||
if (endTime != 0 && now > endTime) {
|
||||
if (!openActivityIds.contains(sGlobalActivity.getId())) {
|
||||
if (!openActivityIds.contains(id)) {
|
||||
if(now<gapEndTime){
|
||||
openActivityIds.add(sGlobalActivity.getId());
|
||||
openActivityIds.add(id);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(now>gapEndTime){
|
||||
openActivityIds.remove(sGlobalActivity.getId());
|
||||
openActivityIds.remove(id);
|
||||
}
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityById(sGlobalActivity.getId());
|
||||
if (null == abstractActivity) {
|
||||
if (null == activity) {
|
||||
continue;
|
||||
}
|
||||
//活動結束 預約的展示期間
|
||||
if(now<gapEndTime){
|
||||
GlobalSystemControl globalSystemControl = GlobalSystemControl.getGlobalSystemControl();
|
||||
HashMap<Integer, Long> activityPreMap = globalSystemControl.getActivityPreEnd();
|
||||
if(activityPreMap.containsKey(sGlobalActivity.getId())){
|
||||
if(activityPreMap.get(sGlobalActivity.getId())>=endTime && activityPreMap.get(sGlobalActivity.getId())<=gapEndTime){
|
||||
if(activityPreMap.containsKey(id)){
|
||||
if(activityPreMap.get(id)>=endTime && activityPreMap.get(id)<=gapEndTime){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
abstractActivity.onActivityPreEnd();
|
||||
activity.onActivityPreEnd();
|
||||
continue;
|
||||
}
|
||||
abstractActivity.onActivityEnd();
|
||||
activity.onActivityEnd();
|
||||
continue;
|
||||
}
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityById(sGlobalActivity.getId());
|
||||
if (null == abstractActivity) {
|
||||
if (null == activity) {
|
||||
continue;
|
||||
}
|
||||
if(openActivityIds.contains(sGlobalActivity.getId())) {
|
||||
if(openActivityIds.contains(id)) {
|
||||
continue;
|
||||
}
|
||||
abstractActivity.onActivityStart();
|
||||
openActivityIds.add(sGlobalActivity.getId());
|
||||
activity.onActivityStart();
|
||||
openActivityIds.add(id);
|
||||
}
|
||||
//活动数据处理分发到角色线程
|
||||
InnerMessageUtil.broadcastWithRandom(user1 -> {
|
||||
|
|
@ -270,6 +269,7 @@ public class ActivityLogic implements IEventHandler{
|
|||
}, new LinkedList<>(OnlineUserManager.sessionMap.keySet()),2);
|
||||
|
||||
}
|
||||
|
||||
public void newPlayerOpenActivityMission(User user) throws Exception {
|
||||
checkActivityOfUser(user, null);
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
|
|
@ -364,31 +364,7 @@ public class ActivityLogic implements IEventHandler{
|
|||
}
|
||||
ActivityMission activityMission = activityManager.getActivityMissionMap().get(openActivityId);
|
||||
if (activityMission != null) {
|
||||
if(openActivityId == ActivityType.RechargeTotal){
|
||||
//首冲3天 -> 7天 容错
|
||||
int chargeMoneyCount = 0;
|
||||
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(openActivityId);
|
||||
if(sActivityRewardConfigs.size() != activityMission.getActivityMissionMap().size()){
|
||||
for(ActivityProgressInfo progressInfo:activityMission.getActivityMissionMap().values()){
|
||||
if(chargeMoneyCount != progressInfo.getProgrss()){
|
||||
chargeMoneyCount = progressInfo.getProgrss();
|
||||
}
|
||||
}
|
||||
}
|
||||
for (SActivityRewardConfig config:sActivityRewardConfigs) {
|
||||
if(!activityMission.getActivityMissionMap().containsKey(config.getId())){
|
||||
if(activityMission.getActivityState()==2){
|
||||
activityMission.setActivityState(1);
|
||||
}
|
||||
ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo();
|
||||
activityProgressInfo.setProgrss(ActivityLogic.getInstance().getInitActivityMissionProgress(openActivityId));
|
||||
activityProgressInfo.setState(0);
|
||||
activityProgressInfo.setProgrss(chargeMoneyCount);
|
||||
activityMission.getActivityMissionMap().put(config.getId(), activityProgressInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 登录检测已开启的活动,商店是否开启
|
||||
// 商店初始化
|
||||
int[] shopId = sGlobalActivity.getShopId();
|
||||
if (shopId != null && shopId.length > 0 && shopId[0] != 0) {
|
||||
boolean b = user.getStoreManager().getStoreInfoMap().containsKey(shopId[0]);
|
||||
|
|
@ -399,17 +375,8 @@ public class ActivityLogic implements IEventHandler{
|
|||
}
|
||||
continue;
|
||||
}
|
||||
initAllActivityMission(activityManager.getActivityMissionMap(),openActivityId);
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityById(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){
|
||||
boolean checked = checkStateAndInitFromActivity(user, openActivityId);
|
||||
if (checked){
|
||||
continue;
|
||||
}
|
||||
//非角色活动开启通知
|
||||
|
|
@ -417,7 +384,17 @@ public class ActivityLogic implements IEventHandler{
|
|||
}
|
||||
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
|
||||
for (SGlobalActivity sGlobalActivity : sGlobalActivityMap.values()) {
|
||||
if(sGlobalActivity.getType() == ActivityType.DAILY_PREFERENTIAL_GIFT){
|
||||
|
||||
long startTimeLong = sGlobalActivity.getStartTimeLong();
|
||||
long endTimeLong = sGlobalActivity.getEndTimeLong();
|
||||
int time = sGlobalActivity.getTime();
|
||||
int gapTime = sGlobalActivity.getGapTime();
|
||||
int type = sGlobalActivity.getType();
|
||||
|
||||
long startTime = ToolsUtil.getTimeLong(startTimeLong, endTimeLong, time, userCreateTime, 1);
|
||||
long endTime = ToolsUtil.getTimeLong(startTimeLong, endTimeLong, time, userCreateTime, 2);
|
||||
|
||||
if(type == ActivityType.DAILY_PREFERENTIAL_GIFT){
|
||||
continue;
|
||||
}
|
||||
int activityId = sGlobalActivity.getId();
|
||||
|
|
@ -444,54 +421,59 @@ public class ActivityLogic implements IEventHandler{
|
|||
}
|
||||
} else if (activityMissionMap.containsKey(activityId)) {
|
||||
//如果活动没有开启,但是玩家有这个活动的数据,则清除,并通知客户端活动关闭
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),userCreateTime, 1);
|
||||
if(TimeUtils.now() < startTime){
|
||||
LOGGER.info("[活动延期,清除遗留玩家数据] [uid:{}] [activityId:{}] [activityType:{}] [activityStartTime:{}]",user.getId(),activityId,sGlobalActivity.getType(),sGlobalActivity.getStartTimeLong());
|
||||
LOGGER.info("[活动延期,清除遗留玩家数据] [uid:{}] [activityId:{}] [activityType:{}] [activityStartTime:{}]",user.getId(),activityId, type, startTimeLong);
|
||||
activityMissionMap.remove(activityId);
|
||||
if (builder != null) {
|
||||
builder.addCloseActivityId(activityId);
|
||||
}
|
||||
}
|
||||
}
|
||||
int time = sGlobalActivity.getTime();
|
||||
if (time == ActivityType.OPEN_TYPE_ROLE) {
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),userCreateTime, 1);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),userCreateTime, 2);
|
||||
if (time == ActivityType.OPEN_TYPE_ROLE) {//创角
|
||||
if (now < startTime) {
|
||||
continue;
|
||||
}
|
||||
if (endTime != 0 && now > endTime) {
|
||||
goRewardActivity(user,activityId,builder,now>endTime+sGlobalActivity.getGapTime()*TimeUtils.ONE_DAY);
|
||||
goRewardActivity(user,activityId,builder,now>endTime+ gapTime *TimeUtils.ONE_DAY);
|
||||
continue;
|
||||
}
|
||||
ActivityMission activityMission = activityMissionMap.get(activityId);
|
||||
if (activityMission != null) {
|
||||
continue;
|
||||
}
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityById(activityId);
|
||||
if (null==abstractActivity) {
|
||||
continue;
|
||||
}
|
||||
// ReportUtil.onReportEvent(user, ReportEventEnum.JOIN_ACTIVITY.getType(),String.valueOf(activityId));
|
||||
abstractActivity.initActivity(user);
|
||||
// if(!initOtherActivity(user, sGlobalActivity)){
|
||||
initAllActivityMission(activityManager.getActivityMissionMap(),activityId);
|
||||
//
|
||||
int activityOpenState = getActivityOpenState(user, activityId );
|
||||
abstractActivity.setOpenState(user,activityOpenState);
|
||||
if(activityOpenState == ActivityType.UNOPEN_STATE){
|
||||
boolean checked = checkStateAndInitFromActivity(user, activityId);
|
||||
if (checked){
|
||||
continue;
|
||||
}
|
||||
openNewActivityIds.add(activityId);
|
||||
|
||||
} else {
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),userCreateTime, 2);
|
||||
goRewardActivity(user,activityId,builder,now>endTime + sGlobalActivity.getGapTime()*TimeUtils.ONE_DAY);
|
||||
}
|
||||
if (time == ActivityType.OPEN_TYPE_CYCLE){// 循环
|
||||
ActivityMission mission = activityMissionMap.get(activityId);
|
||||
if (mission == null){
|
||||
continue;
|
||||
}
|
||||
long creatTime = mission.getCreatTime();
|
||||
if (creatTime >= endTimeLong){
|
||||
checkStateAndInitFromActivity(user, activityId);
|
||||
}
|
||||
}
|
||||
else {
|
||||
goRewardActivity(user,activityId,builder,now>endTime + gapTime *TimeUtils.ONE_DAY);
|
||||
}
|
||||
}
|
||||
return openNewActivityIds;
|
||||
|
||||
}
|
||||
|
||||
private boolean checkStateAndInitFromActivity(User user, int activityId) throws Exception {
|
||||
ActivityManager activityManager = user.getActivityManager();
|
||||
initAllActivityMission(activityManager.getActivityMissionMap(),activityId);
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityById(activityId);
|
||||
if (null == abstractActivity) {
|
||||
return true;
|
||||
}
|
||||
abstractActivity.initActivity(user);
|
||||
int activityOpenState = getActivityOpenState(user, activityId);
|
||||
abstractActivity.setOpenState(user,activityOpenState);
|
||||
return activityOpenState == ActivityType.UNOPEN_STATE;
|
||||
}
|
||||
|
||||
private static void goRewardActivity(User user,int activityId,PlayerInfoProto.ActivityUpateIndication.Builder builder,boolean isRemoveInfo) throws Exception {
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(activityId);
|
||||
if (activityMission != null) {
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ public interface ActivityType {
|
|||
int OPEN_TYPE_TIME = 1; // 活动开启类型:绝对时间
|
||||
int OPEN_TYPE_ROLE = 2; // 活动开启类型:创角时间
|
||||
int OPEN_TYPE_SERVER = 3; // 活动开启类型:开服时间
|
||||
|
||||
int OPEN_TYPE_MONTHS = 5 ; // 活动开启类型:开服自然月
|
||||
int OPEN_TYPE_MONTHS = 5; // 活动开启类型:开服自然月
|
||||
int OPEN_TYPE_CYCLE = 6; // 循环活动
|
||||
|
||||
|
||||
int WILL_TAKE = 0; //未领取
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
|
|
@ -14,7 +13,11 @@ import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
|
|||
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.RechargeHandler;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import config.*;
|
||||
import com.ljsd.jieling.util.ToolsUtil;
|
||||
import config.SGlobalActivity;
|
||||
import config.SGoodsConfig;
|
||||
import config.SRechargeCommodityNewConfig;
|
||||
import config.SThemeActivityShop;
|
||||
import manager.STableManager;
|
||||
import rpc.protocols.CommonProto;
|
||||
import util.TimeUtils;
|
||||
|
|
@ -49,6 +52,7 @@ public class ContinuousGiftActivity extends AbstractActivity {
|
|||
// 初始化阶段奖励
|
||||
ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
|
||||
user.getActivityManager().getActivityMissionMap().put(id, mission);
|
||||
LOGGER.info("连续礼包活动初始化..."+id);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -74,7 +78,7 @@ public class ContinuousGiftActivity extends AbstractActivity {
|
|||
* @param giftId
|
||||
* @param missionMap
|
||||
*/
|
||||
private void giftHandle(User user, int giftId, int giftNum, int type){
|
||||
public void giftHandle(User user, int giftId, int giftNum, int type){
|
||||
if (giftId < 0 || giftNum <= 0){
|
||||
// 非礼包处理
|
||||
return;
|
||||
|
|
@ -172,16 +176,18 @@ public class ContinuousGiftActivity extends AbstractActivity {
|
|||
|
||||
@Override
|
||||
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user,ActivityMission activityMission, Set<Integer> filter) {
|
||||
long now = TimeUtils.now();
|
||||
long start = getSrartTime();
|
||||
long end = getEndTime();
|
||||
// 验证活动是否开启
|
||||
if (now < start || now > end){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
if (activityMission == null){
|
||||
LOGGER.error("活动不存在数据库中,id:{},uid:{}",id,user.getId());
|
||||
return new ArrayList<>();
|
||||
}
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
if (activity == null){
|
||||
LOGGER.error("活动不存在数据表中,id:{}",id);
|
||||
return new ArrayList<>();
|
||||
}
|
||||
long now = TimeUtils.now();
|
||||
long createTime = user.getPlayerInfoManager().getCreateTime();
|
||||
long start = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),createTime,1);
|
||||
// 更新记录天数
|
||||
activityMission.setV(TimeUtils.getSoFarWentDays(start, now)+1);
|
||||
// 库里存储的活动档位信息
|
||||
|
|
@ -240,53 +246,13 @@ public class ContinuousGiftActivity extends AbstractActivity {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
* @return
|
||||
*/
|
||||
public long getSrartTime(){
|
||||
long startTime = 0;
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
// 绝对时间
|
||||
if (activity.getTime() == ActivityType.OPEN_TYPE_TIME){
|
||||
startTime = activity.getStartTimeLong();
|
||||
}
|
||||
// 开服时间
|
||||
else if (activity.getTime() == ActivityType.OPEN_TYPE_SERVER) {
|
||||
String openTime = GameApplication.serverConfig.getOpenTime();
|
||||
long timeLong2 = TimeUtils.stringToTimeLong2(openTime);
|
||||
startTime = timeLong2 + activity.getStartTimeLong() * 1000;
|
||||
}
|
||||
return startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
* @return
|
||||
*/
|
||||
public long getEndTime(){
|
||||
long endTime = 0;
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
// 绝对时间
|
||||
if (activity.getTime() == ActivityType.OPEN_TYPE_TIME){
|
||||
endTime = activity.getEndTimeLong();
|
||||
}
|
||||
// 开服时间
|
||||
else if (activity.getTime() == ActivityType.OPEN_TYPE_SERVER) {
|
||||
String openTime = GameApplication.serverConfig.getOpenTime();
|
||||
long timeLong2 = TimeUtils.stringToTimeLong2(openTime);
|
||||
endTime = timeLong2 + activity.getEndTimeLong() * 1000;
|
||||
}
|
||||
return endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证前置礼包购买状态
|
||||
* @param user
|
||||
* @param boxId
|
||||
* @return
|
||||
*/
|
||||
private boolean checkBuyAgo(User user, int boxId){
|
||||
public boolean checkBuyAgo(User user, int boxId){
|
||||
// 获取消息
|
||||
Map<Integer, ActivityProgressInfo> missionMap = user.getActivityManager().getActivityMissionMap().get(id).getActivityMissionMap();
|
||||
SThemeActivityShop themes = STableManager.getConfig(SThemeActivityShop.class).get(boxId);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||
|
|
@ -15,6 +14,7 @@ import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
|
|||
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.RechargeHandler;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ToolsUtil;
|
||||
import config.SGlobalActivity;
|
||||
import config.SRechargeCommodityNewConfig;
|
||||
import config.SSurpriseBox;
|
||||
|
|
@ -78,7 +78,7 @@ public class SuperBoxActivity extends AbstractActivity {
|
|||
* @param giftId
|
||||
* @param missionMap
|
||||
*/
|
||||
private void giftHandle(User user, int giftId){
|
||||
public void giftHandle(User user, int giftId){
|
||||
if (giftId < 0){
|
||||
// 非礼包处理
|
||||
return;
|
||||
|
|
@ -161,16 +161,18 @@ public class SuperBoxActivity extends AbstractActivity {
|
|||
|
||||
@Override
|
||||
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user,ActivityMission activityMission, Set<Integer> filter) {
|
||||
long now = TimeUtils.now();
|
||||
long start = getSrartTime();
|
||||
long end = getEndTime();
|
||||
// 验证活动是否开启
|
||||
if (now < start || now > end){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
if (activityMission == null){
|
||||
LOGGER.error("活动不存在数据库中,id:{},uid:{}",id,user.getId());
|
||||
return new ArrayList<>();
|
||||
}
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
if (activity == null){
|
||||
LOGGER.error("活动不存在数据表中,id:{}",id);
|
||||
return new ArrayList<>();
|
||||
}
|
||||
long now = TimeUtils.now();
|
||||
long createTime = user.getPlayerInfoManager().getCreateTime();
|
||||
long start = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),createTime,1);
|
||||
// 更新记录天数
|
||||
activityMission.setV(TimeUtils.getSoFarWentDays(start, now)+1);
|
||||
// 库里存储的活动档位信息
|
||||
|
|
@ -229,53 +231,13 @@ public class SuperBoxActivity extends AbstractActivity {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
* @return
|
||||
*/
|
||||
public long getSrartTime(){
|
||||
long startTime = 0;
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
// 绝对时间
|
||||
if (activity.getTime() == ActivityType.OPEN_TYPE_TIME){
|
||||
startTime = activity.getStartTimeLong();
|
||||
}
|
||||
// 开服时间
|
||||
else if (activity.getTime() == ActivityType.OPEN_TYPE_SERVER) {
|
||||
String openTime = GameApplication.serverConfig.getOpenTime();
|
||||
long timeLong2 = TimeUtils.stringToTimeLong2(openTime);
|
||||
startTime = timeLong2 + activity.getStartTimeLong() * 1000;
|
||||
}
|
||||
return startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
* @return
|
||||
*/
|
||||
public long getEndTime(){
|
||||
long endTime = 0;
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
// 绝对时间
|
||||
if (activity.getTime() == ActivityType.OPEN_TYPE_TIME){
|
||||
endTime = activity.getEndTimeLong();
|
||||
}
|
||||
// 开服时间
|
||||
else if (activity.getTime() == ActivityType.OPEN_TYPE_SERVER) {
|
||||
String openTime = GameApplication.serverConfig.getOpenTime();
|
||||
long timeLong2 = TimeUtils.stringToTimeLong2(openTime);
|
||||
endTime = timeLong2 + activity.getEndTimeLong() * 1000;
|
||||
}
|
||||
return endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证前置礼包购买状态
|
||||
* @param user
|
||||
* @param boxId
|
||||
* @return
|
||||
*/
|
||||
private boolean checkBuyAgo(User user, int boxId){
|
||||
public boolean checkBuyAgo(User user, int boxId){
|
||||
// 获取消息
|
||||
Map<Integer, ActivityProgressInfo> missionMap = user.getActivityManager().getActivityMissionMap().get(id).getActivityMissionMap();
|
||||
SSurpriseBox box = STableManager.getConfig(SSurpriseBox.class).get(boxId);
|
||||
|
|
|
|||
|
|
@ -1,23 +1,16 @@
|
|||
package com.ljsd.jieling.logic.activity.activityLogic;
|
||||
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.activity.ActivityType;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.RechargeType;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.RechargeHandler;
|
||||
import com.ljsd.jieling.network.server.SessionManager;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import com.ljsd.jieling.util.ToolsUtil;
|
||||
import config.SGlobalActivity;
|
||||
import config.SRechargeCommodityNewConfig;
|
||||
import config.SWeekRewardConfig;
|
||||
import config.SWeekcardConfig;
|
||||
import manager.STableManager;
|
||||
|
|
@ -43,37 +36,8 @@ public class WeekCardLogic {
|
|||
public final static WeekCardLogic instance = new WeekCardLogic();
|
||||
}
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
* @return
|
||||
*/
|
||||
public long getStartTime(User user, int id){
|
||||
long startTime = 0;
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
// 绝对时间
|
||||
if (activity.getTime() == ActivityType.OPEN_TYPE_TIME){
|
||||
startTime = activity.getStartTimeLong();
|
||||
}
|
||||
// 开服时间
|
||||
if (activity.getTime() == ActivityType.OPEN_TYPE_SERVER) {
|
||||
String openTime = GameApplication.serverConfig.getOpenTime();
|
||||
long timeLong2 = TimeUtils.stringToTimeLong2(openTime);
|
||||
startTime = timeLong2 + activity.getStartTimeLong() * 1000;
|
||||
}
|
||||
// 创角时间
|
||||
if (activity.getTime() == ActivityType.OPEN_TYPE_ROLE) {
|
||||
long timeLong2 = user.getPlayerInfoManager().getCreateTime();
|
||||
startTime = timeLong2 + activity.getStartTimeLong() * 1000;
|
||||
}
|
||||
return startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 封装周卡信息
|
||||
* @param cardId
|
||||
* @param activityId
|
||||
* @param valueMap
|
||||
* @return
|
||||
*/
|
||||
private CommonProto.WeekCardInfo packagingWeekCardBuilder(User user, int activityId, int cardId, Map<Integer,Integer> valueMap){
|
||||
Map<Integer, SWeekcardConfig> config = STableManager.getConfig(SWeekcardConfig.class);
|
||||
|
|
@ -84,8 +48,10 @@ public class WeekCardLogic {
|
|||
SWeekcardConfig sWeekcardConfig = config.get(cardId);
|
||||
ArrayList<CommonProto.WeekCardDay> list1 = new ArrayList<>();
|
||||
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
|
||||
long createTime = user.getPlayerInfoManager().getCreateTime();
|
||||
// 计算间隔时间
|
||||
long startTimeLong = getStartTime(user, activityId);
|
||||
long startTimeLong = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),createTime,1);
|
||||
int days = TimeUtils.differentDays(startTimeLong, TimeUtils.now())+1;
|
||||
|
||||
for (int[] ints : sWeekcardConfig.getBaseRewardID()) {
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import com.ljsd.jieling.db.redis.RedisKey;
|
|||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.exception.ErrorTableException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
|
|
@ -1025,7 +1026,7 @@ public class BuyGoodsNewLogic {
|
|||
RechargeHandler handler = getRechargeHandler(config.getOtype());
|
||||
AbstractWelfareBag bag = handler.getBag(user, goodsId);
|
||||
if (bag == null || !bag.isBuy()){
|
||||
throw new ErrorCodeException(ErrorCode.SHOP_NO_ITEM);
|
||||
throw new ErrorTableException(104,"礼包已购买");
|
||||
}
|
||||
|
||||
//生成cp订单号
|
||||
|
|
|
|||
|
|
@ -13,36 +13,65 @@ public class ToolsUtil {
|
|||
if(type == 2){
|
||||
baseTime = endTimeLong;
|
||||
}
|
||||
long startTime=0;
|
||||
long resultTime=0;
|
||||
switch (time){
|
||||
case ActivityType.OPEN_TYPE_TIME:
|
||||
startTime = baseTime;
|
||||
resultTime = baseTime;
|
||||
break;
|
||||
case ActivityType.OPEN_TYPE_ROLE:
|
||||
startTime = TimeUtils.getAppointTimeInXDay(createUserTime,0) + baseTime*1000;
|
||||
resultTime = TimeUtils.getAppointTimeInXDay(createUserTime,0) + baseTime*1000;
|
||||
break;
|
||||
case ActivityType.OPEN_TYPE_SERVER:
|
||||
long serverOpenTime = GameApplication.serverConfig.getCacheOpenTime();
|
||||
startTime = serverOpenTime + baseTime*1000;
|
||||
resultTime = serverOpenTime + baseTime * 1000;
|
||||
break;
|
||||
case ActivityType.OPEN_TYPE_MONTHS:
|
||||
if(type == 1){
|
||||
if(baseTime == 1){//第一个月
|
||||
startTime = GameApplication.serverConfig.getCacheOpenTime();
|
||||
resultTime = GameApplication.serverConfig.getCacheOpenTime();
|
||||
}else{
|
||||
startTime = TimeUtils.getMonthStartTime(GameApplication.serverConfig.getCacheOpenTime(),1,(int)baseTime-1);
|
||||
resultTime = TimeUtils.getMonthStartTime(GameApplication.serverConfig.getCacheOpenTime(),1,(int)baseTime-1);
|
||||
}
|
||||
}
|
||||
if(type == 2){
|
||||
if(baseTime ==1){
|
||||
startTime = TimeUtils.getMonthEndTime(GameApplication.serverConfig.getCacheOpenTime());
|
||||
resultTime = TimeUtils.getMonthEndTime(GameApplication.serverConfig.getCacheOpenTime());
|
||||
}else{
|
||||
startTime = TimeUtils.getMonthStartTime(GameApplication.serverConfig.getCacheOpenTime(),1,(int)baseTime);
|
||||
resultTime = TimeUtils.getMonthStartTime(GameApplication.serverConfig.getCacheOpenTime(),1,(int)baseTime);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ActivityType.OPEN_TYPE_CYCLE://循环活动
|
||||
long now = TimeUtils.now();
|
||||
// 未到开启时间
|
||||
if (now >= startTimeLong) {
|
||||
long timeLong = endTimeLong - startTimeLong;
|
||||
while (endTimeLong < now){
|
||||
endTimeLong += timeLong;
|
||||
}
|
||||
startTimeLong = endTimeLong - timeLong;
|
||||
}
|
||||
// 开始时间
|
||||
if(type == 1){
|
||||
resultTime = startTimeLong;
|
||||
}
|
||||
// 结束时间
|
||||
if(type == 2){
|
||||
resultTime = endTimeLong;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// 开始时间
|
||||
if(type == 1){
|
||||
resultTime = startTimeLong;
|
||||
}
|
||||
// 结束时间
|
||||
if(type == 2){
|
||||
resultTime = endTimeLong;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return startTime;
|
||||
return resultTime;
|
||||
}
|
||||
|
||||
public static long getEndTimeLong(long startTimeLong , long endTimeLong,int time,long createUserTime,int dayOut){
|
||||
|
|
|
|||
Loading…
Reference in New Issue