循环活动,time类型为6

master_otnew
grimm 2024-01-16 17:19:42 +08:00
parent fe5bed800a
commit f6de5eb7d0
9 changed files with 143 additions and 240 deletions

View File

@ -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);

View File

@ -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.*;

View File

@ -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) {

View File

@ -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; //未领取

View File

@ -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);

View File

@ -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);

View File

@ -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()) {

View File

@ -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订单号

View File

@ -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){