Merge branch 'master_0.05' into master_dev
# Conflicts: # gamecommon/src/main/java/util/TimeUtils.java # serverlogic/src/main/java/com/ljsd/jieling/logic/activity/activityLogic/WeekCardLogic.javamaster_dev
commit
a9014b74ca
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"version":"5",
|
||||
"classes":[
|
||||
]
|
||||
"classes":[]
|
||||
}
|
|
@ -415,6 +415,9 @@ public class TimeUtils {
|
|||
return calendar.getTimeInMillis();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定时间的当天0点
|
||||
*/
|
||||
public static long getAppointTimeInXDay(long date, int hour) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTimeInMillis(date);
|
||||
|
@ -898,6 +901,45 @@ public class TimeUtils {
|
|||
return getTomorrowZero() - now();
|
||||
}
|
||||
|
||||
/**
|
||||
* 给定三个时间,一个开始时间,一个间隔时间,一个当前时间
|
||||
* 计算距离当前时间最近的开始时间,两个开始时间需间隔一个间隔时间
|
||||
* @param startTimeMillis 开始时间
|
||||
* @param currentMillis 当前时间
|
||||
* @param intervalMillis 间隔时间
|
||||
* @return 最近得开始时间
|
||||
*/
|
||||
public static long getLatelyTime(long startTimeMillis, long intervalMillis, long currentMillis){
|
||||
return startTimeMillis + (currentMillis - startTimeMillis) / intervalMillis * intervalMillis;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算距离当前时间最近的开始时间
|
||||
*
|
||||
* @param startTime 开始时间的时间戳(毫秒)
|
||||
* @param interval 间隔时间(毫秒)
|
||||
* @param currentTime 当前时间的时间戳(毫秒)
|
||||
* @return 最近的开始时间的时间戳(毫秒)
|
||||
*/
|
||||
public static long calculateNextStartTime(long startTime, long interval, long currentTime) {
|
||||
// 计算从开始时间到当前时间的差异
|
||||
long timeDiff = currentTime - startTime;
|
||||
|
||||
// 计算间隔时间的完整倍数
|
||||
long intervalCount = timeDiff / interval;
|
||||
|
||||
// 计算距离当前时间最近的开始时间
|
||||
long nextStartTime = startTime + interval * intervalCount;
|
||||
|
||||
// 如果计算出的时间小于或等于当前时间,则选择下一个开始时间
|
||||
if (nextStartTime <= currentTime) {
|
||||
nextStartTime += interval;
|
||||
}
|
||||
|
||||
return nextStartTime;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 计算当前时间距离下周零点的时间,单位/毫秒
|
||||
*/
|
||||
|
|
|
@ -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.*;
|
||||
|
||||
|
|
|
@ -16,8 +16,6 @@ public class EquipUpLevelHandler extends BaseHandler<PlayerInfoProto.EquipUpLeve
|
|||
public void processWithProto(ISession iSession, PlayerInfoProto.EquipUpLevelRequest proto) throws Exception {
|
||||
int activityId = proto.getActivityId();
|
||||
int equipId = proto.getEquipId();
|
||||
int itemId = proto.getItemId();
|
||||
int itemNum = proto.getItemNum();
|
||||
ItemLogic.getInstance().equipUpLevel(iSession,activityId,equipId,itemId,itemNum, MessageTypeProto.MessageType.EQUIP_UPLEVEL_RESPONSE);
|
||||
ItemLogic.getInstance().equipUpLevel(iSession,activityId,equipId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,8 +62,8 @@ public class Cmd_changename extends GmRoleAbstract {
|
|||
if(!storeInfoMap.containsKey(10) && !storeInfoMap.containsKey(15)){
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(10);
|
||||
long userCreateTime = user.getPlayerInfoManager().getCreateTime();
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),userCreateTime, 1);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),userCreateTime, 2);
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),userCreateTime, 1, sGlobalActivity.getCycleMinute());
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),userCreateTime, 2, sGlobalActivity.getCycleMinute());
|
||||
StoreLogic.getInstance().initOnsStoereWithTime(user,10,startTime,endTime);
|
||||
LOGGER.info("hotfix user={} store end",user.getId());
|
||||
}
|
||||
|
|
|
@ -229,7 +229,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
|
|||
User user = UserManager.getUser(session.getUid());
|
||||
List<int[][]> itemArrs = new LinkedList<>();
|
||||
getAllMissRewards(user, session, itemArrs);
|
||||
if (itemArrs.size() == 0) {
|
||||
if (itemArrs.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
|
|
|
@ -168,66 +168,71 @@ public class ActivityLogic implements IEventHandler{
|
|||
|
||||
//检查开启的活动 非相对创角时间
|
||||
for (SGlobalActivity sGlobalActivity : sGlobalActivityMap.values()) {
|
||||
int id = sGlobalActivity.getId();
|
||||
int time = sGlobalActivity.getTime();
|
||||
ActivityTypeEnum.getActicityById(sGlobalActivity.getId());
|
||||
int type = sGlobalActivity.getType();
|
||||
long startTimeLong = sGlobalActivity.getStartTimeLong();
|
||||
long endTimeLong = sGlobalActivity.getEndTimeLong();
|
||||
int cycleMinute = sGlobalActivity.getCycleMinute();
|
||||
|
||||
AbstractActivity activity = ActivityTypeEnum.getActicityById(id);
|
||||
if (time == ActivityType.OPEN_TYPE_ROLE) {
|
||||
// 创角时间活动
|
||||
continue;
|
||||
}
|
||||
if(sGlobalActivity.getType() == ActivityType.DAILY_PREFERENTIAL_GIFT){
|
||||
if(type == ActivityType.DAILY_PREFERENTIAL_GIFT){
|
||||
continue;
|
||||
}
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 1);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 2);
|
||||
long startTime = ToolsUtil.getTimeLong(startTimeLong, endTimeLong, time,0, 1, cycleMinute);
|
||||
long endTime = ToolsUtil.getTimeLong(startTimeLong, endTimeLong, time,0, 2, cycleMinute);
|
||||
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;
|
||||
long gapEndTime = endTime + sGlobalActivity.getGapTime() * TimeUtils.DAY;
|
||||
if (endTime != 0 && now > endTime) {
|
||||
if (!openActivityIds.contains(sGlobalActivity.getId())) {
|
||||
if(now<gapEndTime){
|
||||
openActivityIds.add(sGlobalActivity.getId());
|
||||
if (!openActivityIds.contains(id)) {
|
||||
if(now < gapEndTime){
|
||||
openActivityIds.add(id);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(now>gapEndTime){
|
||||
openActivityIds.remove(sGlobalActivity.getId());
|
||||
if(now > gapEndTime){
|
||||
openActivityIds.remove(id);
|
||||
}
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityById(sGlobalActivity.getId());
|
||||
if (null == abstractActivity) {
|
||||
if (null == activity) {
|
||||
continue;
|
||||
}
|
||||
//活動結束 預約的展示期間
|
||||
if(now<gapEndTime){
|
||||
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 +275,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());
|
||||
|
@ -321,7 +327,7 @@ public class ActivityLogic implements IEventHandler{
|
|||
ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo();
|
||||
activityProgressInfo.setProgrss(0);
|
||||
activityProgressInfo.setState(0);
|
||||
activityMission.getActivityMissionMap().put(missionId, activityProgressInfo);
|
||||
activityMission.getActivityMissionMap().put(missionId, activityProgressInfo);
|
||||
}
|
||||
activityMission.setOpenType(1);
|
||||
activityMission.setV(0);
|
||||
|
@ -355,40 +361,16 @@ public class ActivityLogic implements IEventHandler{
|
|||
LOGGER.info("checkActivityOfUser uid={} remove activity={}", user.getId(), openActivityId);
|
||||
continue;
|
||||
}
|
||||
//多少天内不会出现 创角判断
|
||||
int[] ifOpen = sGlobalActivity.getIfOpen();
|
||||
//创角
|
||||
if(ifOpen!=null && ifOpen.length>0 && ifOpen[0]==1){
|
||||
if(userCreateTime + ifOpen[1]*TimeUtils.ONE_DAY > now){
|
||||
if(userCreateTime + ifOpen[1] * TimeUtils.ONE_DAY > now){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
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]);
|
||||
|
@ -397,19 +379,15 @@ public class ActivityLogic implements IEventHandler{
|
|||
Poster.getPoster().dispatchEvent(new ActivityStateChangeEvent(user.getId(),openActivityId,1));
|
||||
}
|
||||
}
|
||||
// 循环活动初始化
|
||||
int time = sGlobalActivity.getTime();
|
||||
if (time == ActivityType.OPEN_TYPE_CYCLE){
|
||||
refreshCycleActivity(user, sGlobalActivity, builder);
|
||||
}
|
||||
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 +395,19 @@ 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();
|
||||
int cycleMinute = sGlobalActivity.getCycleMinute();
|
||||
|
||||
long startTime = ToolsUtil.getTimeLong(startTimeLong, endTimeLong, time, userCreateTime, 1, cycleMinute);
|
||||
long endTime = ToolsUtil.getTimeLong(startTimeLong, endTimeLong, time, userCreateTime, 2, cycleMinute);
|
||||
long gepTimeLong = endTime + gapTime * TimeUtils.ONE_DAY;
|
||||
|
||||
if(type == ActivityType.DAILY_PREFERENTIAL_GIFT){
|
||||
continue;
|
||||
}
|
||||
int activityId = sGlobalActivity.getId();
|
||||
|
@ -444,73 +434,100 @@ 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());
|
||||
if(now < startTime){
|
||||
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);
|
||||
boolean isRemove = now > gepTimeLong;
|
||||
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, isRemove);
|
||||
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);
|
||||
}
|
||||
else {
|
||||
goRewardActivity(user, activityId, builder, isRemove);
|
||||
}
|
||||
}
|
||||
return openNewActivityIds;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新循环活动
|
||||
* @param user 玩家
|
||||
* @param activity 活动
|
||||
* @param builder 返回roto
|
||||
* @throws Exception 异常
|
||||
*/
|
||||
public void refreshCycleActivity(User user, SGlobalActivity activity, PlayerInfoProto.ActivityUpateIndication.Builder builder) throws Exception {
|
||||
ActivityManager activityManager = user.getActivityManager();
|
||||
int activityId = activity.getId();
|
||||
long now = TimeUtils.now();
|
||||
long startTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(), activity.getEndTimeLong(), activity.getTime(), 0, 1, activity.getCycleMinute());
|
||||
long endTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(), activity.getEndTimeLong(), activity.getTime(), 0, 2, activity.getCycleMinute());
|
||||
// 当前期活动未开始
|
||||
if (now < startTime || now > endTime) {
|
||||
return;
|
||||
}
|
||||
ActivityMission mission = activityManager.getActivityMissionMap().get(activityId);
|
||||
// 活动存在,(当前时间大于最近的结束时间 或 活动创建时间大于最近得开启时间),表示当期活动结束
|
||||
if (mission.getCreatTime() < startTime){
|
||||
goRewardActivity(user, activityId, builder, true);
|
||||
checkStateAndInitFromActivity(user, activityId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化活动并校验活动状态是否开启
|
||||
* @return true 未开启, false 开启
|
||||
*/
|
||||
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) {
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityById(activityId);
|
||||
if (null==abstractActivity) {
|
||||
return;
|
||||
}
|
||||
if(activityMission.getOpenType()!=ActivityType.CLOSE_STATE){
|
||||
abstractActivity.onActivityEndSelfWithDealReward(user);
|
||||
abstractActivity.setOpenState(user,ActivityType.CLOSE_STATE);
|
||||
Poster.getPoster().dispatchEvent(new ActivityStateChangeEvent(user.getId(),activityId,ActivityType.CLOSE_STATE));
|
||||
}
|
||||
|
||||
if(isRemoveInfo){
|
||||
user.getActivityManager().getActivityMissionMap().remove(activityId);
|
||||
LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId);
|
||||
if (builder != null) {
|
||||
builder.addCloseActivityId(activityId);
|
||||
}
|
||||
if (activityMission == null) {
|
||||
return;
|
||||
}
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityById(activityId);
|
||||
if (null == abstractActivity) {
|
||||
return;
|
||||
}
|
||||
if(activityMission.getOpenType() != ActivityType.CLOSE_STATE){
|
||||
abstractActivity.onActivityEndSelfWithDealReward(user);
|
||||
abstractActivity.setOpenState(user,ActivityType.CLOSE_STATE);
|
||||
Poster.getPoster().dispatchEvent(new ActivityStateChangeEvent(user.getId(),activityId,ActivityType.CLOSE_STATE));
|
||||
}
|
||||
if(isRemoveInfo){
|
||||
user.getActivityManager().getActivityMissionMap().remove(activityId);
|
||||
LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId);
|
||||
if (builder != null) {
|
||||
builder.addCloseActivityId(activityId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -577,15 +594,16 @@ public class ActivityLogic implements IEventHandler{
|
|||
if(sGlobalActivity == null){
|
||||
continue;
|
||||
}
|
||||
///旧版积天豪礼数据兼容
|
||||
if (sGlobalActivity.getType()==ActivityType.RECHARGE_SUM_DAY){
|
||||
if (activityMissionMap.get(activityId).getV()<=0||activityMissionMap.get(activityId).getV()>=15) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
long startTimeLong = sGlobalActivity.getStartTimeLong();
|
||||
long endTimeLong = sGlobalActivity.getEndTimeLong();
|
||||
int timeType = sGlobalActivity.getTime();
|
||||
int type = sGlobalActivity.getType();
|
||||
int gapTime = sGlobalActivity.getGapTime();
|
||||
int cycleMinute = sGlobalActivity.getCycleMinute();
|
||||
|
||||
if(activityStatus == ActivityType.CLOSE_STATE){
|
||||
long prepareTime = ToolsUtil.getEndTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, sGlobalActivity.getGapTime());
|
||||
long prepareTime = ToolsUtil.getEndTimeLong(startTimeLong, endTimeLong, timeType,0, gapTime);
|
||||
activityInfoList.add(CommonProto.ActivityInfo.newBuilder().setActivityId(activityId).setEndTime((int)(prepareTime/1000)).build());
|
||||
continue;
|
||||
}
|
||||
|
@ -609,24 +627,22 @@ public class ActivityLogic implements IEventHandler{
|
|||
if (sGlobalActivity.getIsSaving()==0 && activityStatus != ActivityType.OPEN_STATE) {
|
||||
continue;
|
||||
}
|
||||
int startTime,endTime;
|
||||
if(sGlobalActivity.getType() == ActivityType.DAILY_PREFERENTIAL_GIFT){
|
||||
startTime=(int)(activityState.getValue().getCreatTime()/1000);
|
||||
int startTime = (int) (ToolsUtil.getTimeLong(startTimeLong, endTimeLong, timeType,createTime, 1, cycleMinute) / 1000);
|
||||
int endTime = (int) (ToolsUtil.getTimeLong(startTimeLong, endTimeLong, timeType,createTime, 2, cycleMinute) / 1000);
|
||||
|
||||
if(type == ActivityType.DAILY_PREFERENTIAL_GIFT){ // 每日特惠活动
|
||||
startTime = (int)(activityState.getValue().getCreatTime()/1000);
|
||||
endTime = startTime+604800;
|
||||
}else{
|
||||
startTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 1) / 1000);
|
||||
if(sGlobalActivity.getGapTime()!=0){
|
||||
endTime = (int) (ToolsUtil.getEndTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, sGlobalActivity.getGapTime()) / 1000);
|
||||
}else{
|
||||
endTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 2) / 1000);
|
||||
}
|
||||
}
|
||||
else{
|
||||
endTime = endTime + (int) (TimeUtils.DAY * gapTime / 1000);
|
||||
}
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityById(sGlobalActivity.getId());
|
||||
if(abstractActivity==null){
|
||||
LOGGER.error(sGlobalActivity.getId()+":活动类型不存在");
|
||||
continue;
|
||||
}
|
||||
List<CommonProto.ActivityInfo.MissionInfo> missionInfos =abstractActivity.getAllMissInfo(user,activityMission);
|
||||
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = abstractActivity.getAllMissInfo(user,activityMission);
|
||||
CommonProto.ActivityInfo build = CommonProto.ActivityInfo.newBuilder()
|
||||
.setActivityId(activityId)
|
||||
.addAllMission(missionInfos)
|
||||
|
@ -799,8 +815,8 @@ public class ActivityLogic implements IEventHandler{
|
|||
}
|
||||
|
||||
long createTime = user.getPlayerInfoManager().getCreateTime();
|
||||
int startTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 1) / 1000);
|
||||
int endTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 2) / 1000);
|
||||
int startTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 1, sGlobalActivity.getCycleMinute()) / 1000);
|
||||
int endTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 2, sGlobalActivity.getCycleMinute()) / 1000);
|
||||
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = abstractActivity.getAllMissInfo(user,activityMission);
|
||||
fBuilder.addActivityInfo(CommonProto.ActivityInfo.newBuilder().setValue(activityMission.getV()).setActivityId(activityId).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setReallyOpen(activityMission.getOpenType()).build());
|
||||
fBuilder.setHadLuckTime(user.getPlayerInfoManager().getLuckWheelLimitTime());
|
||||
|
@ -1401,9 +1417,9 @@ public class ActivityLogic implements IEventHandler{
|
|||
if(sGlobalActivities.isEmpty()){
|
||||
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
||||
}
|
||||
Function<SGlobalActivity,Integer> function = v->(int)ToolsUtil.getTimeLong(v.getStartTimeLong(),v.getEndTimeLong(),v.getTime(),user.getPlayerInfoManager().getCreateTime(),1);
|
||||
Function<SGlobalActivity,Integer> function = v->(int)ToolsUtil.getTimeLong(v.getStartTimeLong(),v.getEndTimeLong(),v.getTime(),user.getPlayerInfoManager().getCreateTime(),1, v.getCycleMinute());
|
||||
Stream<SGlobalActivity> stream = sGlobalActivities.stream().sorted(Comparator.comparing(function))
|
||||
.filter(v->ToolsUtil.getTimeLong(v.getStartTimeLong(), v.getEndTimeLong(), v.getTime(), user.getPlayerInfoManager().getCreateTime(), 1) > TimeUtils.now());
|
||||
.filter(v->ToolsUtil.getTimeLong(v.getStartTimeLong(), v.getEndTimeLong(), v.getTime(), user.getPlayerInfoManager().getCreateTime(), 1, v.getCycleMinute()) > TimeUtils.now());
|
||||
List<SGlobalActivity> collect = stream.collect(Collectors.toList());
|
||||
if(collect.isEmpty()){
|
||||
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
||||
|
@ -1413,7 +1429,7 @@ public class ActivityLogic implements IEventHandler{
|
|||
if(sGlobalActivity==null){
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
}
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(),1);
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(),1, sGlobalActivity.getCycleMinute());
|
||||
PlayerInfoProto.NextActivityResponse response = PlayerInfoProto.NextActivityResponse.newBuilder().setId(id).setTime((int)(startTime/1000)).build();
|
||||
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);
|
||||
|
@ -1577,13 +1593,9 @@ public class ActivityLogic implements IEventHandler{
|
|||
|
||||
public static long[] getStartAndEndTime(User user,int activityId){
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
|
||||
long createUserTime = 0;
|
||||
if (sGlobalActivity.getTime() == ActivityType.OPEN_TYPE_ROLE) {
|
||||
createUserTime = user.getPlayerInfoManager().getCreateTime();
|
||||
}
|
||||
long[] result = new long[2];
|
||||
result[0] = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createUserTime, 1);
|
||||
result[1] = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createUserTime, 2);
|
||||
result[0] = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1, sGlobalActivity.getCycleMinute());
|
||||
result[1] = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 2, sGlobalActivity.getCycleMinute());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -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, activity.getCycleMinute());
|
||||
// 更新记录天数
|
||||
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,11 +1,25 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import config.SComposeActivity;
|
||||
import config.SComposeBook;
|
||||
import config.SLuxuryFund;
|
||||
import manager.STableManager;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class EquipUpLevelActivity extends AbstractActivity {
|
||||
|
@ -16,22 +30,58 @@ public class EquipUpLevelActivity extends AbstractActivity {
|
|||
@Override
|
||||
public void initActivity(User user) throws Exception {
|
||||
ActivityMission mission = new ActivityMission();
|
||||
Map<Integer, Map<Integer,SComposeActivity>> configMap = SComposeActivity.getConfigMap();
|
||||
Map<Integer,Integer> useTypeMap = new HashMap<>();
|
||||
for(Map.Entry<Integer,SComposeActivity> entry : configMap.get(id).entrySet()){
|
||||
useTypeMap.put(entry.getValue().getId(),entry.getValue().getCount());
|
||||
}
|
||||
for(Map.Entry<Integer,Integer> entry : useTypeMap.entrySet()){
|
||||
ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
|
||||
Map<Integer, SComposeActivity> composeActivityMap = SComposeActivity.getConfigMap().get(id);
|
||||
for (SComposeActivity composeActivity : composeActivityMap.values()) {
|
||||
ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo();
|
||||
activityProgressInfo.setProgrss(entry.getValue());
|
||||
activityProgressInfo.setProgrss(composeActivity.getCount());
|
||||
activityProgressInfo.setState(0);
|
||||
mission.getActivityMissionMap().put(entry.getKey(), activityProgressInfo);
|
||||
mission.getActivityMissionMap().put(composeActivity.getId(), activityProgressInfo);
|
||||
}
|
||||
mission.setOpenType(1);
|
||||
mission.setV(0);
|
||||
mission.setActivityState(ActivityType.OPEN_STATE);
|
||||
user.getActivityManager().getActivityMissionMap().put(id, mission);
|
||||
LOGGER.info("云游商人初始化...uid={} activityId={}",user.getId(), id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 领取奖励
|
||||
* @param session 玩家缓存
|
||||
* @param equipId 装备id
|
||||
* @return 道具
|
||||
* @throws Exception 异常
|
||||
*/
|
||||
public CommonProto.Drop.Builder takeReward2(ISession session, int equipId) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
Map<Integer, SComposeBook> config = STableManager.getConfig(SComposeBook.class);
|
||||
SComposeBook composeBook = config.get(equipId);
|
||||
if(composeBook == null){
|
||||
throw new ErrorCodeException(ErrorCode.CFG_NULL,"云游商人,idkey配置不存在:"+equipId);
|
||||
}
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if(mission == null){
|
||||
LOGGER.error("misson为空,activityId:{}",id);
|
||||
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
||||
}
|
||||
Map<Integer, SComposeActivity> integerSComposeActivityMap = SComposeActivity.getConfigMap().get(id);
|
||||
int typeId = integerSComposeActivityMap.get(composeBook.getType()).getId();
|
||||
ActivityProgressInfo progress = mission.getActivityMissionMap().get(typeId);
|
||||
if(progress == null){
|
||||
LOGGER.error("progress为空,type:{}",composeBook.getType());
|
||||
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
||||
}
|
||||
if(progress.getProgrss() <= 0){
|
||||
LOGGER.error("progress次数不足,num:{}",progress.getProgrss());
|
||||
throw new ErrorCodeException(ErrorCode.REFRESH_WHEL_TIME_NOT);
|
||||
}
|
||||
boolean itemCost = ItemUtil.itemCost(user, new int[][]{composeBook.getNeedItems()[0],composeBook.getNeedCost()[0]}, BIReason.EQUIP_UPLEVEL_COST, equipId);
|
||||
if(!itemCost){
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
progress.setProgrss(progress.getProgrss()-1);
|
||||
mission.getActivityMissionMap().put(typeId,progress);
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user,new int[][]{composeBook.getGoalItems()[0]},BIReason.EQUIP_UPLEVEL_REWARD);
|
||||
//发推送
|
||||
sendActivityProgress(user, null);
|
||||
return drop;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ public class FifteenActivity extends AbstractActivity {
|
|||
if(activityMission == null){
|
||||
return;
|
||||
}
|
||||
long startTime = ToolsUtil.getTimeLong(globalActivity.getStartTimeLong(),globalActivity.getEndTimeLong(),globalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1);
|
||||
long startTime = ToolsUtil.getTimeLong(globalActivity.getStartTimeLong(),globalActivity.getEndTimeLong(),globalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1, globalActivity.getCycleMinute());
|
||||
int time = (int)(startTime/1000);
|
||||
Map<Integer, ActivityProgressInfo> progressInfoMap = activityMission.getActivityMissionMap();
|
||||
for(Map.Entry<Integer,ActivityProgressInfo> entry : progressInfoMap.entrySet()){
|
||||
|
|
|
@ -50,8 +50,8 @@ public class FightMainEventHandler implements IEventHandler{
|
|||
activityMission.setActivityState(ActivityType.OPEN_STATE);
|
||||
ActivityLogic.getInstance().sendActivityInfo(user,sGlobalActivity.getId());
|
||||
if(sGlobalActivity.getShopId().length>0){
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 2);
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1, sGlobalActivity.getCycleMinute());
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 2, sGlobalActivity.getCycleMinute());
|
||||
for (int shopId : sGlobalActivity.getShopId()) {
|
||||
ActivityLogic.getInstance().checkNeedOpenStore(user,shopId,startTime,endTime);
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ class MissSearchExpectRankActivity extends ExpectRankActivity {
|
|||
public void initActivity(User user) throws Exception {
|
||||
super.initActivity(user);
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(), sGlobalActivity.getEndTimeLong(), sGlobalActivity.getTime(), 0, 2);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(), sGlobalActivity.getEndTimeLong(), sGlobalActivity.getTime(), 0, 2, sGlobalActivity.getCycleMinute());
|
||||
user.getPlayerInfoManager().addVipByTime(155,(int)(endTime/1000));
|
||||
Set<Integer> vipInfo = new HashSet<>();
|
||||
vipInfo.add(155);
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
|||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ToolsUtil;
|
||||
import config.SActivityRewardConfig;
|
||||
import config.SGlobalActivity;
|
||||
import util.TimeUtils;
|
||||
|
@ -22,12 +23,10 @@ public class NewEightActivity extends AbstractActivity {
|
|||
@Override
|
||||
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
SGlobalActivity globalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
if (globalActivity.getTime()==1){
|
||||
return TimeUtils.getOverTimeCount(globalActivity.getStartTimeLong(), System.currentTimeMillis(), 0) >= sActivityRewardConfig.getValues()[0][0] - 1;
|
||||
}else if (globalActivity.getTime()==2){
|
||||
return TimeUtils.getOverTimeCount(user.getPlayerInfoManager().getCreateTime(), System.currentTimeMillis(), 0) >= sActivityRewardConfig.getValues()[0][0] - 1;
|
||||
}
|
||||
return true;
|
||||
long now = TimeUtils.now();
|
||||
long createTime = user.getPlayerInfoManager().getCreateTime();
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
long startTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(), activity.getEndTimeLong(), activity.getTime(), createTime, 1, activity.getCycleMinute());
|
||||
return TimeUtils.getOverTimeCount(startTime, now, 0) >= sActivityRewardConfig.getValues()[0][0] - 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -197,7 +197,7 @@ public class OpenServerCompeteRankActivity extends AbstractActivity {
|
|||
if (info == null || activity == null){
|
||||
return 0;
|
||||
}
|
||||
long startTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),0, 1);
|
||||
long startTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),0, 1, activity.getCycleMinute());
|
||||
long rankEndTime = startTime + info.getCloseTime()*1000L;
|
||||
return rankEndTime-TimeUtils.now();
|
||||
}
|
||||
|
@ -211,7 +211,7 @@ public class OpenServerCompeteRankActivity extends AbstractActivity {
|
|||
if (info == null || activity == null){
|
||||
return false;
|
||||
}
|
||||
long startTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),0, 1);
|
||||
long startTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),0, 1, activity.getCycleMinute());
|
||||
long rankStartTime = startTime + info.getOpenTime()*1000L;
|
||||
long rankEndTime = startTime + info.getCloseTime()*1000L;
|
||||
long now = TimeUtils.now();
|
||||
|
@ -229,7 +229,7 @@ public class OpenServerCompeteRankActivity extends AbstractActivity {
|
|||
if (info == null || activity == null){
|
||||
return 0;
|
||||
}
|
||||
int endTime = (int)(ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),0, 2)/1000);
|
||||
int endTime = (int)(ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),0, 2, activity.getCycleMinute())/1000);
|
||||
return endTime-TimeUtils.nowInt();
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,6 @@ import com.ljsd.jieling.network.session.ISession;
|
|||
import config.SActivityRankingReward;
|
||||
import config.SActivityRewardConfig;
|
||||
import config.SErrorCodeEerverConfig;
|
||||
import config.SGlobalActivity;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
import util.StringUtil;
|
||||
import util.TimeUtils;
|
||||
|
@ -98,9 +97,8 @@ public class PowerRiceActivity extends AbstractActivity{
|
|||
globalSystemControl.addActivityPreEnd(id,TimeUtils.now());
|
||||
GlobalSystemControl.save(globalSystemControl);
|
||||
}
|
||||
public List<SActivityRankingReward> getRankReward() throws Exception{
|
||||
List<SActivityRankingReward> sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id);
|
||||
return sActivityRankingReward;
|
||||
public List<SActivityRankingReward> getRankReward() {
|
||||
return SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -108,15 +106,15 @@ public class PowerRiceActivity extends AbstractActivity{
|
|||
* @param user
|
||||
* @return
|
||||
*/
|
||||
public int getStage(User user){
|
||||
long []time = ActivityLogic.getStartAndEndTime(user,id);
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
long gapTime = time[1] +sGlobalActivity.getGapTime()*TimeUtils.ONE_DAY;
|
||||
if(TimeUtils.now()>=time[0]&&TimeUtils.now()<=time[1]){
|
||||
return 0;
|
||||
}else if(TimeUtils.now()>=time[1]&&TimeUtils.now()<=gapTime){
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
// public int getStage(User user){
|
||||
// long []time = ActivityLogic.getStartAndEndTime(user,id);
|
||||
// SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
// long gapTime = time[1] +sGlobalActivity.getGapTime()*TimeUtils.ONE_DAY;
|
||||
// if(TimeUtils.now()>=time[0]&&TimeUtils.now()<=time[1]){
|
||||
// return 0;
|
||||
// }else if(TimeUtils.now()>=time[1]&&TimeUtils.now()<=gapTime){
|
||||
// return 1;
|
||||
// }
|
||||
// return -1;
|
||||
// }
|
||||
}
|
||||
|
|
|
@ -6,8 +6,6 @@ import com.ljsd.jieling.logic.activity.event.Poster;
|
|||
import com.ljsd.jieling.logic.activity.event.SecretEvent;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import com.ljsd.jieling.util.ToolsUtil;
|
||||
import config.SGlobalActivity;
|
||||
|
||||
|
@ -30,7 +28,7 @@ class SecretExpectRankActivity extends ExpectRankActivity {
|
|||
listValue.add(153);//额外购买次数
|
||||
listValue.add(154);//额外免费次数
|
||||
Set<Integer> changedSet = new HashSet<>();
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(), sGlobalActivity.getEndTimeLong(), sGlobalActivity.getTime(), 0, 2);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(), sGlobalActivity.getEndTimeLong(), sGlobalActivity.getTime(), 0, 2, sGlobalActivity.getCycleMinute());
|
||||
int time = (int)(endTime / 1000);
|
||||
listValue.forEach(privilegeId -> {
|
||||
changedSet.add(privilegeId);
|
||||
|
|
|
@ -25,7 +25,7 @@ public class SevenHappyActivity extends DefaultEmptyActivity{
|
|||
user.getActivityManager().getActivityMissionMap().put(id, mission);
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.SERVENHAPPY_REFRESH,id);
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1);
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1, sGlobalActivity.getCycleMinute());
|
||||
user.getActivityManager().setSenvenStartTime(startTime);
|
||||
}
|
||||
|
||||
|
|
|
@ -47,7 +47,11 @@ public class SubActivity extends AbstractActivity {
|
|||
if(null!=subRewardPoolInfo){
|
||||
subRewardPoolInfo.setLay(0);
|
||||
}
|
||||
ActivityMission mission = new ActivityMission();
|
||||
ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
|
||||
user.getActivityManager().getActivityMissionMap().put(id, mission);
|
||||
randomReward(user, true);
|
||||
LOGGER.info("易经宝库初始化...uid={} activityId={}",user.getId(), id);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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, activity.getCycleMinute());
|
||||
// 更新记录天数
|
||||
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);
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.ljsd.jieling.logic.dao.UserManager;
|
|||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.ToolsUtil;
|
||||
import config.*;
|
||||
import manager.STableManager;
|
||||
import util.TimeUtils;
|
||||
|
@ -37,6 +38,8 @@ public class WeekCardActivity extends AbstractActivity {
|
|||
ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
|
||||
user.getActivityManager().getActivityMissionMap().put(id, mission);
|
||||
|
||||
// 刷新礼包信息
|
||||
// refreshGood(user);
|
||||
// 初始化礼包信息
|
||||
user.getPlayerInfoManager().setWeekCard(new HashMap<>());
|
||||
LOGGER.info("月卡初始化...uid={} activityId={}",user.getId(), id);
|
||||
|
@ -66,21 +69,42 @@ public class WeekCardActivity extends AbstractActivity {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新礼包信息
|
||||
*/
|
||||
// private void refreshGood(User user){
|
||||
// SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
// if (activity == null){
|
||||
// return;
|
||||
// }
|
||||
// int[] canBuyRechargeId = activity.getCanBuyRechargeId();
|
||||
// if (canBuyRechargeId == null || canBuyRechargeId.length <= 0){
|
||||
// return;
|
||||
// }
|
||||
// Map<Integer, AbstractWelfareBag> receiveMap = user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap();
|
||||
// for (int goodId : canBuyRechargeId) {
|
||||
// AbstractWelfareBag bag = receiveMap.get(goodId);
|
||||
// if (bag == null){
|
||||
// LOGGER.error("礼包刷新结束,礼包不存在,活动id:{},礼包id:{}",id, canBuyRechargeId[0]);
|
||||
// continue;
|
||||
// }
|
||||
// PerpetualWelfareBag welfareBag = (PerpetualWelfareBag) bag;
|
||||
// welfareBag.refresh();
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 封装周卡信息
|
||||
* @param cardId
|
||||
* @param activityId
|
||||
* @param valueMap
|
||||
* @return
|
||||
*/
|
||||
private Map<Integer,Integer> packagingWeekCardMap(User user, int activityId, int cardId, Map<Integer,Integer> valueMap){
|
||||
HashMap<Integer, Integer> result = new HashMap<>();
|
||||
Map<Integer, SWeekcardConfig> config = STableManager.getConfig(SWeekcardConfig.class);
|
||||
|
||||
SWeekcardConfig sWeekcardConfig = config.get(cardId);
|
||||
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
|
||||
long createTime = user.getPlayerInfoManager().getCreateTime();
|
||||
// 计算间隔时间
|
||||
long startTimeLong = WeekCardLogic.getInstance().getStartTime(user, activityId);
|
||||
long startTimeLong = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),createTime,1, activity.getCycleMinute());
|
||||
int days = TimeUtils.differentDays(startTimeLong, TimeUtils.now()) + 1;
|
||||
|
||||
for (int[] ints : sWeekcardConfig.getBaseRewardID()) {
|
||||
|
@ -111,8 +135,11 @@ public class WeekCardActivity extends AbstractActivity {
|
|||
Map<Integer, Map<Integer, Integer>> weekCard = user.getPlayerInfoManager().getWeekCard();
|
||||
Map<Integer, SWeekRewardConfig> rewardConfigMap = STableManager.getConfig(SWeekRewardConfig.class);
|
||||
Map<Integer, SWeekcardConfig> configMap = STableManager.getConfig(SWeekcardConfig.class);
|
||||
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
long createTime = user.getPlayerInfoManager().getCreateTime();
|
||||
// 计算间隔时间
|
||||
long startTimeLong = WeekCardLogic.getInstance().getStartTime(user,id);
|
||||
long startTimeLong = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),createTime,1, activity.getCycleMinute());
|
||||
int days = TimeUtils.differentDays(startTimeLong, TimeUtils.now())+1;
|
||||
for (Map.Entry<Integer, Map<Integer, Integer>> entry : weekCard.entrySet()) {
|
||||
|
||||
|
@ -151,7 +178,7 @@ public class WeekCardActivity extends AbstractActivity {
|
|||
}
|
||||
weekCard.put(weekCardId,value);
|
||||
}
|
||||
if (itemArrs.size() == 0) {
|
||||
if (itemArrs.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
// 更新数据
|
||||
|
|
|
@ -6,7 +6,7 @@ import com.ljsd.jieling.logic.activity.event.Poster;
|
|||
import com.ljsd.jieling.logic.activity.event.XunBaoMiZongEvent;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
|
||||
public class XunBaoMiZongActivity extends AbstractActivity {
|
||||
public class XunBaoMiZongActivity extends DefaultEmptyActivity {
|
||||
|
||||
public XunBaoMiZongActivity(int id) {
|
||||
super(id);
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
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;
|
||||
|
@ -11,6 +10,7 @@ import com.ljsd.jieling.logic.dao.root.User;
|
|||
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.SWeekRewardConfig;
|
||||
import config.SWeekcardConfig;
|
||||
|
@ -73,9 +73,13 @@ 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);
|
||||
int days = TimeUtils.differentDays(startTimeLong, TimeUtils.now())+1;
|
||||
long now = TimeUtils.now();
|
||||
long startTimeLong = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),createTime,1, activity.getCycleMinute());
|
||||
|
||||
int days = TimeUtils.differentDays(startTimeLong, now)+1;
|
||||
|
||||
for (int[] ints : sWeekcardConfig.getBaseRewardID()) {
|
||||
int day = ints[0];
|
||||
|
|
|
@ -32,8 +32,8 @@ public class ActivityStateChangeHandler implements IEventHandler {
|
|||
if(state == ActivityType.OPEN_STATE){
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
|
||||
if(sGlobalActivity.getShopId().length>0){
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 2);
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1, sGlobalActivity.getCycleMinute());
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),user.getPlayerInfoManager().getCreateTime(), 2, sGlobalActivity.getCycleMinute());
|
||||
for (int shopId : sGlobalActivity.getShopId()) {
|
||||
ActivityLogic.getInstance().checkNeedOpenStore(user,shopId,startTime,endTime);
|
||||
}
|
||||
|
|
|
@ -180,16 +180,7 @@ public class UserMissionManager extends MongoBase {
|
|||
* @throws Exception
|
||||
*/
|
||||
public void calCumulationDataResult(User user, MissionType missionType, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object...parm) throws Exception {
|
||||
if(missionType == MissionType.BLOODY_KILL_NUMS){
|
||||
if(!bloodyMissionIdsType.getDoingMissionIds().isEmpty()){
|
||||
CumulationData.Result result = new CumulationData.Result(missionType, 0);
|
||||
bloodyMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.BLOODYMISSION),null);
|
||||
if(result.value == 1){
|
||||
updateString("bloodyMissionIdsType",bloodyMissionIdsType);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if(!dailyMissionIdsType.getDoingMissionIds().isEmpty()){
|
||||
List<SDailyTasksConfig> sTaskConfigs = SDailyTasksConfig.getsTaskConfigByTypeMap(missionType.getMissionTypeValue());
|
||||
if (sTaskConfigs != null) {
|
||||
|
@ -247,6 +238,7 @@ public class UserMissionManager extends MongoBase {
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
if(!jadeDynastyMissionType.getDoingMissionIds().isEmpty() ){
|
||||
List<SThemeActivityTaskConfig> sThemeActivityTaskConfigs = SThemeActivityTaskConfig.sThemeTaskConfigListByTypeMapTmp.get(missionType.getMissionTypeValue());
|
||||
if(sThemeActivityTaskConfigs!=null){
|
||||
|
@ -284,9 +276,8 @@ public class UserMissionManager extends MongoBase {
|
|||
}
|
||||
|
||||
if(!achievementMissionTypMap.getDoingMissionIds().isEmpty() ){
|
||||
|
||||
List<SAchievementConfig> sAchievementConfigs = SAchievementConfig.sTaskConfigByTypeMap.get(missionType.getMissionTypeValue());
|
||||
if(sAchievementConfigs!=null&&sAchievementConfigs.size()!=0){
|
||||
if(sAchievementConfigs!=null&& !sAchievementConfigs.isEmpty()){
|
||||
CumulationData.Result result= achievementMap.updateData(missionType, parm);
|
||||
if(result!=null){
|
||||
achievementMissionTypMap.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.ACHIEVEMISSION),achievementMap);
|
||||
|
@ -296,6 +287,7 @@ public class UserMissionManager extends MongoBase {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
// 东海寻仙
|
||||
if (!donghaiXunxianMission.getDoingMissionIds().isEmpty()){
|
||||
CumulationData.Result result = donghaiXunxianData.updateData(missionType, parm);
|
||||
|
@ -305,10 +297,11 @@ public class UserMissionManager extends MongoBase {
|
|||
updateString("donghaiXunxianMission",donghaiXunxianMission);
|
||||
}
|
||||
}
|
||||
|
||||
//缥缈之旅
|
||||
if(!mistyTripMissionType.getDoingMissionIds().isEmpty() ){
|
||||
Map<Integer, SJourneyWithWind> config = STableManager.getConfig(SJourneyWithWind.class);
|
||||
if(config!=null&&config.size()!=0){
|
||||
if(config!=null&& !config.isEmpty()){
|
||||
int starSum = HardStageLogic.getHardStageStarsSum(user);
|
||||
if(starSum != 0 && mistyTripCumulationData.getHardstage_stars() == 0){
|
||||
mistyTripCumulationData.setHardstage_stars(starSum);
|
||||
|
@ -327,9 +320,10 @@ public class UserMissionManager extends MongoBase {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 公用任务类型,累计次数形式
|
||||
CumulationData.Result result = cumulationData.updateData(missionType, parm);
|
||||
if(result!=null){
|
||||
if(result != null){
|
||||
updateString("cumulationData",cumulationData);
|
||||
// vip任务
|
||||
vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData);
|
||||
|
|
|
@ -94,30 +94,45 @@ public class GuildInfo extends MongoBase {
|
|||
this.serverId = GameApplication.serverId;
|
||||
}
|
||||
|
||||
public void addMembers(int type,int uid){
|
||||
public void setMembers(Map<Integer, Set<Integer>> members) {
|
||||
this.members = members;
|
||||
updateString("members", members);
|
||||
}
|
||||
|
||||
public void addMembers(int type, int uid){
|
||||
if(!members.containsKey(type)){
|
||||
members.put(type,new HashSet<>());
|
||||
}
|
||||
members.get(type).add(uid);
|
||||
totalMembers++;
|
||||
updateString("members." + type,members.get(type));
|
||||
updateString("totalMembers",totalMembers);
|
||||
setMembers(members);
|
||||
}
|
||||
|
||||
public boolean removeMember(int type,int uid){
|
||||
boolean remove = members.get(type).remove(uid);
|
||||
if(remove){
|
||||
totalMembers--;
|
||||
updateString("members." + type,members.get(type));
|
||||
updateString("totalMembers",totalMembers);
|
||||
setMembers(members);
|
||||
}
|
||||
return remove;
|
||||
}
|
||||
|
||||
public void appointMember(int oldPost, int newPost, int uid){
|
||||
boolean removed = members.get(oldPost).remove(uid);
|
||||
if(removed){
|
||||
if(!members.containsKey(newPost)){
|
||||
members.put(newPost,new HashSet<>());
|
||||
}
|
||||
members.get(newPost).add(uid);
|
||||
}
|
||||
setMembers(members);
|
||||
}
|
||||
|
||||
public void setAnnounce(String announce) {
|
||||
this.announce = announce;
|
||||
updateString("announce",announce);
|
||||
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
|
|
|
@ -633,12 +633,12 @@ public class EquipLogic {
|
|||
ArrayList<int[][]> costList = new ArrayList<>();
|
||||
costList.add(config.getFormula());
|
||||
costList.add(config.getResource());
|
||||
|
||||
boolean cost = ItemUtil.itemCost(user, costList, BIReason.GIFT_UP_STAR_COST, 1);
|
||||
boolean cost = ItemUtil.checkCost(user, costList);
|
||||
if (!cost){
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[][]{{giftId, 1}}, BIReason.GIFT_UP_STAR_GET);
|
||||
ItemUtil.itemCost(user, costList, BIReason.GIFT_EQUIP_UP_COST, 0);
|
||||
HeroInfoProto.GiftEquipUpStarResponse.Builder builder = HeroInfoProto.GiftEquipUpStarResponse.newBuilder().setDrop(drop);
|
||||
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GiftEquipUpStarResponse_VALUE, builder.build(), true);
|
||||
}
|
||||
|
|
|
@ -685,7 +685,7 @@ public class GuildLogic {
|
|||
|
||||
GuildInfo guildInfo = GuilidManager.getGuildInfo(targetGuildId);
|
||||
int uidType = getMemberType(uid, guildInfo.getMembers());
|
||||
boolean isIn=false;
|
||||
boolean isIn = false;
|
||||
for(Set<Integer> memberEntry : guildInfo.getMembers().values()){
|
||||
if(memberEntry.contains(targetUid)){
|
||||
isIn =true;
|
||||
|
@ -707,8 +707,7 @@ public class GuildLogic {
|
|||
throw new ErrorCodeException(ErrorCode.FAMILY_LEADER_MAX);
|
||||
}
|
||||
}
|
||||
guildInfo.removeMember(targetType,targetUid);
|
||||
guildInfo.addMembers(position,targetUid);
|
||||
guildInfo.appointMember(targetType, position, targetUid);
|
||||
sendPositionChange(targetUid,position,guildId);
|
||||
if(position == GlobalsDef.CHAIRMAN){
|
||||
guildInfo.removeMember(GlobalsDef.CHAIRMAN,uid);
|
||||
|
|
|
@ -4,10 +4,7 @@ import com.ljsd.jieling.logic.dao.Baubles;
|
|||
import com.ljsd.jieling.logic.dao.Hero;
|
||||
import com.ljsd.jieling.logic.dao.PropertyItem;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author hj
|
||||
|
@ -58,6 +55,8 @@ public class HelpHero {
|
|||
|
||||
private List<Baubles> baublesList = new ArrayList<>();
|
||||
|
||||
private Set<Integer> heroGiftEquipList = new HashSet<>();//礼物装备列表
|
||||
|
||||
public int getUid() {
|
||||
return uid;
|
||||
}
|
||||
|
@ -145,4 +144,16 @@ public class HelpHero {
|
|||
public void setBaublesList(List<Baubles> baublesList) {
|
||||
this.baublesList = baublesList;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getHomeEquipMap() {
|
||||
return homeEquipMap;
|
||||
}
|
||||
|
||||
public Set<Integer> getHeroGiftEquipList() {
|
||||
return heroGiftEquipList;
|
||||
}
|
||||
|
||||
public void setHeroGiftEquipList(Set<Integer> heroGiftEquipList) {
|
||||
this.heroGiftEquipList = heroGiftEquipList;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6998,18 +6998,17 @@ public class HeroLogic {
|
|||
|
||||
HeroInfoProto.PotentialUpLvResponse.Builder builder = HeroInfoProto.PotentialUpLvResponse.newBuilder();
|
||||
builder.setUpLv(hero.getPotentialLv(type));
|
||||
builder.setGiftLv(getGiftPotentialLv(user, heroId));
|
||||
builder.setGiftLv(getGiftPotentialLv(user, hero));
|
||||
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.PotentialUpLvResponse_VALUE, builder.build(), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取礼物加成得潜能等级
|
||||
*/
|
||||
public int getGiftPotentialLv(User user, String heroId) {
|
||||
public int getGiftPotentialLv(User user, Hero hero) {
|
||||
Map<Integer, SEquipConfig> configMap = SEquipConfig.equipConfigMap;
|
||||
Set<Integer> playerGiftEquipList = user.getPlayerInfoManager().getPlayerGiftEquipList();
|
||||
|
||||
Hero hero = user.getHeroManager().getHero(heroId);
|
||||
Set<Integer> heroGiftEquipList = hero.getHeroGiftEquipList();
|
||||
|
||||
HashSet<Integer> set = new HashSet<>();
|
||||
|
@ -7079,7 +7078,7 @@ public class HeroLogic {
|
|||
if (!openPotential) {
|
||||
return 0;
|
||||
}
|
||||
int giftPotentialLv = getGiftPotentialLv(user, hero.getId());
|
||||
int giftPotentialLv = getGiftPotentialLv(user, hero);
|
||||
int potentialLv = hero.getPotentialLv(type);
|
||||
SPotentialNew potentialNew = SPotentialNew.typeMap.get(type).get(potentialLv + giftPotentialLv);
|
||||
if (potentialNew == null) {
|
||||
|
|
|
@ -14,6 +14,7 @@ import com.ljsd.jieling.ktbeans.ReportEventEnum;
|
|||
import com.ljsd.jieling.ktbeans.ReportUtil;
|
||||
import com.ljsd.jieling.logic.activity.AbstractActivity;
|
||||
import com.ljsd.jieling.logic.activity.ActivityTypeEnum;
|
||||
import com.ljsd.jieling.logic.activity.EquipUpLevelActivity;
|
||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||
import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent;
|
||||
import com.ljsd.jieling.logic.dao.*;
|
||||
|
@ -761,47 +762,17 @@ public class ItemLogic {
|
|||
/**
|
||||
*装备升星(云游商人)
|
||||
*/
|
||||
public void equipUpLevel(ISession session, int activityId,int equipId,int itemId,int itemNum,MessageTypeProto.MessageType messageType) throws Exception{
|
||||
public void equipUpLevel(ISession session, int activityId, int equipId) throws Exception{
|
||||
PlayerInfoProto.EquipUpLevelResponse.Builder response = PlayerInfoProto.EquipUpLevelResponse.newBuilder();
|
||||
response.setResult(false);
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
Map<Integer, SComposeBook> config = STableManager.getConfig(SComposeBook.class);
|
||||
SComposeBook composeBook = config.get(equipId);
|
||||
if(composeBook == null){
|
||||
throw new ErrorCodeException(ErrorCode.CFG_NULL,"云游商人,idkey配置不存在:"+equipId);
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityById(activityId);
|
||||
if (abstractActivity == null){
|
||||
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN,"云游商人,活动不存在:"+activityId);
|
||||
}
|
||||
ActivityMission misson = user.getActivityManager().getActivityMissionMap().get(activityId);
|
||||
if(misson == null){
|
||||
LOGGER.error("misson为空,activityId:{}",activityId);
|
||||
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
||||
}
|
||||
Map<Integer, SComposeActivity> integerSComposeActivityMap = SComposeActivity.getConfigMap().get(activityId);
|
||||
int typeId = integerSComposeActivityMap.get(composeBook.getType()).getId();
|
||||
ActivityProgressInfo progress = misson.getActivityMissionMap().get(typeId);
|
||||
if(progress == null){
|
||||
LOGGER.error("progress为空,type:{}",composeBook.getType());
|
||||
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
||||
}
|
||||
if(progress.getProgrss() <= 0){
|
||||
LOGGER.error("progress次数不足,num:{}",progress.getProgrss());
|
||||
throw new ErrorCodeException(ErrorCode.REFRESH_WHEL_TIME_NOT);
|
||||
}
|
||||
boolean itemCost = ItemUtil.itemCost(user, new int[][]{composeBook.getNeedItems()[0],composeBook.getNeedCost()[0]}, BIReason.EQUIP_UPLEVEL_COST, equipId);
|
||||
if(!itemCost){
|
||||
LOGGER.error("item不足,equipId:{},itemId:{},itemNum:{}",equipId,itemId,itemNum);
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
progress.setProgrss(progress.getProgrss()-1);
|
||||
user.getActivityManager().getActivityMissionMap().put(activityId,misson);
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user,new int[][]{composeBook.getGoalItems()[0]},BIReason.EQUIP_UPLEVEL_REWARD);
|
||||
EquipUpLevelActivity activity = (EquipUpLevelActivity) abstractActivity;
|
||||
CommonProto.Drop.Builder drop = activity.takeReward2(session, equipId);
|
||||
response.setResult(true);
|
||||
response.setDrop(drop);
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
|
||||
//发推送
|
||||
AbstractActivity acticityType = ActivityTypeEnum.getActicityById(activityId);
|
||||
if(acticityType!=null){
|
||||
acticityType.sendActivityProgress(session, null);
|
||||
}
|
||||
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.EQUIP_UPLEVEL_RESPONSE.getNumber(),response.build(),true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -39,8 +39,8 @@ public class MissionLogic {
|
|||
return null;
|
||||
}
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 1);
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 2);
|
||||
long startTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 1, sGlobalActivity.getCycleMinute());
|
||||
long endTime = ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, 2, sGlobalActivity.getCycleMinute());
|
||||
if(TimeUtils.now()>endTime){
|
||||
return null;
|
||||
}
|
||||
|
@ -103,13 +103,13 @@ public class MissionLogic {
|
|||
return task;
|
||||
}
|
||||
|
||||
public int[] resetJadeDynastyTaskInfo(User user, int type, int activityId, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap){
|
||||
public void resetJadeDynastyTaskInfo(User user, int type, int activityId, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap){
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
JadeDynastyMissionType jadeDynastyMissionType = missionManager.getJadeDynastyMissionType();
|
||||
//周刷新检测
|
||||
if (type == 2) {
|
||||
if (jadeDynastyMissionType.getWeekRefresh() != 0 && TimeUtils.now()<jadeDynastyMissionType.getWeekRefresh() ) {
|
||||
return null;
|
||||
return;
|
||||
}
|
||||
jadeDynastyMissionType.setWeekRefresh(TimeUtils.now());
|
||||
}
|
||||
|
@ -142,6 +142,5 @@ public class MissionLogic {
|
|||
if(type==2){
|
||||
missionManager.setJadeDynastyWeekCumulationData(jadeDynastyCumulationData);
|
||||
}
|
||||
return tasks;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,10 +9,7 @@ import com.ljsd.jieling.logic.mission.main.CowFlySkyMissionType;
|
|||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import config.SArroGantFly;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
public class CowFlySkyRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.ljsd.jieling.logic.mission.event;
|
||||
|
||||
import com.ljsd.jieling.logic.dao.UserMissionManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.mission.GameMisionType;
|
||||
|
@ -13,7 +12,6 @@ import java.util.Map;
|
|||
public class JadeDynastyRefreshEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
//当前轮次破阵诛仙的活动ID
|
||||
int jadeAid = (int) parm[0];
|
||||
MissionLogic.getInstance().resetJadeDynastyTaskInfo(user,1, jadeAid, misionTypeListMap);
|
||||
|
|
|
@ -20,7 +20,7 @@ public class MistyTripRefreshEventProcess implements BaseGameEventProcessor {
|
|||
UserMissionManager missionManager = user.getUserMissionManager();
|
||||
MistyTripMissionType mistyTripMissionType = missionManager.getMistyTripMissionType();
|
||||
//任务开始
|
||||
if(mistyTripMissionType.getDoingMissionIds().size() != 0 || mistyTripMissionType.getFinishMissionIds().size() != 0){
|
||||
if(!mistyTripMissionType.getDoingMissionIds().isEmpty() || !mistyTripMissionType.getFinishMissionIds().isEmpty()){
|
||||
return;
|
||||
}
|
||||
Set<Integer> journeyWithWind = STableManager.getConfig(SJourneyWithWind.class).keySet();
|
||||
|
|
|
@ -80,7 +80,7 @@ public abstract class AbstractMissionType {
|
|||
}
|
||||
|
||||
public Set<Integer> getDoingMissionIds() {
|
||||
return doingMissionIds;
|
||||
return doingMissionIds;
|
||||
}
|
||||
|
||||
public void addFinishMissionId(int missionId) {
|
||||
|
|
|
@ -1046,7 +1046,7 @@ public class PlayerLogic {
|
|||
|
||||
builder.setForce(HeroLogic.getInstance().calForce(heroNotBufferAttribute));
|
||||
builder.setHero(CBean2Proto.getHongmengHero(userInMem, hero));
|
||||
builder.setPlayerGiftLv(HeroLogic.getInstance().getGiftPotentialLv(userInMem, heroId));
|
||||
builder.setPlayerGiftLv(HeroLogic.getInstance().getGiftPotentialLv(userInMem, hero));
|
||||
Map<Integer, Integer> guildSkill = userInMem.getGuildMyInfo().getGuildSkill();
|
||||
int profession = SCHero.getsCHero().get(hero.getTemplateId()).getProfession();
|
||||
Integer skill = guildSkill.getOrDefault(profession, 0);
|
||||
|
@ -1095,8 +1095,8 @@ public class PlayerLogic {
|
|||
if (timingMailIds.contains(sTestWelfare.getId())) {
|
||||
continue;
|
||||
}
|
||||
long startTime = ToolsUtil.getTimeLong(sTestWelfare.getStartTimeLong(),sTestWelfare.getEndTimeLong(),sTestWelfare.getTime(), 0, 1);
|
||||
long endTime = ToolsUtil.getTimeLong(sTestWelfare.getStartTimeLong(),sTestWelfare.getEndTimeLong(),sTestWelfare.getTime(), 0, 2);
|
||||
long startTime = ToolsUtil.getTimeLong(sTestWelfare.getStartTimeLong(),sTestWelfare.getEndTimeLong(),sTestWelfare.getTime(), 0, 1, 0);
|
||||
long endTime = ToolsUtil.getTimeLong(sTestWelfare.getStartTimeLong(),sTestWelfare.getEndTimeLong(),sTestWelfare.getTime(), 0, 2, 0);
|
||||
if (now < startTime) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.ljsd.jieling.logic.activity.event.UserMainTeamForceEvent;
|
|||
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.rank.RankEnum;
|
||||
import com.ljsd.jieling.util.ToolsUtil;
|
||||
import config.SActivityRankingReward;
|
||||
import config.SGlobalActivity;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
|
@ -59,13 +60,14 @@ public class PowerRiceRank extends AbstractRank implements IEventHandler {
|
|||
}
|
||||
//判斷是否在展示期
|
||||
Map<Integer, SGlobalActivity> sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap();
|
||||
SGlobalActivity sGlobalActivity = sGlobalActivityMap.get(activityId);
|
||||
if (sGlobalActivity == null) {
|
||||
SGlobalActivity activity = sGlobalActivityMap.get(activityId);
|
||||
if (activity == null) {
|
||||
return;
|
||||
}
|
||||
long[] startAndEndTime = ActivityLogic.getStartAndEndTime(null, activityId);
|
||||
long start = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),0,1, activity.getCycleMinute());
|
||||
long end = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),0,2, activity.getCycleMinute());
|
||||
long now = TimeUtils.now();
|
||||
if (now > startAndEndTime[0] && now < startAndEndTime[1]) {
|
||||
if (now > start && now < end) {
|
||||
if (event instanceof UserMainTeamForceEvent) {
|
||||
int uid = ((UserMainTeamForceEvent) event).getUid();
|
||||
CSPlayer player = CrossServiceLogic.getPlayerByRedis(uid);
|
||||
|
|
|
@ -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订单号
|
||||
|
|
|
@ -58,8 +58,8 @@ public class StoreLogic {
|
|||
long startTime, endTime;
|
||||
switch (sStoreTypeConfig.getStoreOpenRule()){
|
||||
case 3:
|
||||
startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_TIME, 0, 1);
|
||||
endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_TIME, 0, 2);
|
||||
startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_TIME, 0, 1, 0);
|
||||
endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_TIME, 0, 2, 0);
|
||||
if (startTime != 0 && endTime != 0 && now > startTime && now < endTime && !openStoreInfo.contains(sStoreTypeConfig.getId())) {
|
||||
for (ISession session : OnlineUserManager.sessionMap.values()) {
|
||||
if (session.getFiveReady() == 1) {
|
||||
|
@ -88,8 +88,8 @@ public class StoreLogic {
|
|||
continue;
|
||||
}
|
||||
long userCreateTime = user.getPlayerInfoManager().getCreateTime();
|
||||
startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE, userCreateTime, 1);
|
||||
endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE, userCreateTime, 2);
|
||||
startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE, userCreateTime, 1, 0);
|
||||
endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE, userCreateTime, 2, 0);
|
||||
if (now < startTime || now > endTime) {
|
||||
continue;
|
||||
}
|
||||
|
@ -103,8 +103,8 @@ public class StoreLogic {
|
|||
}
|
||||
break;
|
||||
case 7:
|
||||
startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER, 0, 1);
|
||||
endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER, 0, 2);
|
||||
startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER, 0, 1, 0);
|
||||
endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER, 0, 2, 0);
|
||||
if (now < startTime || now > endTime) {
|
||||
continue;
|
||||
}
|
||||
|
@ -300,13 +300,13 @@ public class StoreLogic {
|
|||
}
|
||||
if(sStoreTypeConfig.getStoreOpenRule() == 6 ){
|
||||
long userCreateTime = user.getPlayerInfoManager().getCreateTime();
|
||||
startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(),ActivityType.OPEN_TYPE_ROLE,userCreateTime, 1);
|
||||
endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(),sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE,userCreateTime, 2);
|
||||
startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(),ActivityType.OPEN_TYPE_ROLE,userCreateTime, 1, 0);
|
||||
endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(),sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE,userCreateTime, 2, 0);
|
||||
}
|
||||
if(sStoreTypeConfig.getStoreOpenRule() == 7 ){
|
||||
long userCreateTime = user.getPlayerInfoManager().getCreateTime();
|
||||
startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(),ActivityType.OPEN_TYPE_SERVER,userCreateTime, 1);
|
||||
endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(),sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER,userCreateTime, 2);
|
||||
startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(),ActivityType.OPEN_TYPE_SERVER,userCreateTime, 1, 0);
|
||||
endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(),sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER,userCreateTime, 2, 0);
|
||||
}
|
||||
Map<Integer, Integer> itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user);
|
||||
storeManager.newStoreInfo(sStoreTypeConfig.getId(),System.currentTimeMillis(),startTime,endTime,itemNumMap);
|
||||
|
@ -389,8 +389,8 @@ public class StoreLogic {
|
|||
continue;
|
||||
}
|
||||
if(sStoreTypeConfig.getStoreOpenRule() == 7){
|
||||
long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(),ActivityType.OPEN_TYPE_SERVER,0, 1);
|
||||
long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(),sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER,0, 2);
|
||||
long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(),ActivityType.OPEN_TYPE_SERVER,0, 1, 0);
|
||||
long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(),sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER,0, 2, 0);
|
||||
long now = TimeUtils.now();
|
||||
if(now>startTime&&now<endTime){
|
||||
Map<Integer, Integer> itemNumMap = getStoreItem(storeId,sStoreTypeConfig,user);
|
||||
|
|
|
@ -17,6 +17,7 @@ public class TimeLimitWelfareBag extends AbstractWelfareBag {
|
|||
int anInt = value[1];
|
||||
if(ActivityLogic.checkActivityOpen(user,anInt)){
|
||||
setOpen(true);
|
||||
|
||||
long[] result = ActivityLogic.getStartAndEndTime(user, anInt);
|
||||
setStartTime(result[0]);
|
||||
setEndTime(result[1]);
|
||||
|
|
|
@ -220,9 +220,9 @@ public class ThreadManager implements IManager {
|
|||
|
||||
public static void reStart(){
|
||||
LOGGER.info("重启线程池!!");
|
||||
// scheduledExecutor.shutdown();
|
||||
scheduledFutureSets.forEach(future -> future.cancel(false));
|
||||
scheduledFutureSets.clear();
|
||||
TaskKit.reset();
|
||||
go();
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.ljsd.jieling.util;
|
|||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.locks.ReadWriteLock;
|
||||
|
@ -26,7 +27,7 @@ public class DynamicLRUCache<K, V> {
|
|||
}
|
||||
|
||||
public V get(K key) {
|
||||
lock.readLock().lock();
|
||||
// lock.readLock().lock();
|
||||
try {
|
||||
TimedCacheEntry<V> entry = cache.get(key);
|
||||
if (entry != null && !isEntryExpired(entry)) {
|
||||
|
@ -35,7 +36,7 @@ public class DynamicLRUCache<K, V> {
|
|||
}
|
||||
return null;
|
||||
} finally {
|
||||
lock.readLock().unlock();
|
||||
// lock.readLock().unlock();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -52,34 +53,34 @@ public class DynamicLRUCache<K, V> {
|
|||
}
|
||||
|
||||
public void remove(K key) {
|
||||
lock.writeLock().lock();
|
||||
// lock.writeLock().lock();
|
||||
try {
|
||||
cache.remove(key);
|
||||
} finally {
|
||||
lock.writeLock().unlock();
|
||||
// lock.writeLock().unlock();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean containsKey(K key) {
|
||||
lock.readLock().lock();
|
||||
// lock.readLock().lock();
|
||||
try {
|
||||
return cache.containsKey(key);
|
||||
} finally {
|
||||
lock.readLock().unlock();
|
||||
// lock.readLock().unlock();
|
||||
}
|
||||
}
|
||||
|
||||
public int size() {
|
||||
lock.readLock().lock();
|
||||
// lock.readLock().lock();
|
||||
try {
|
||||
return cache.size();
|
||||
} finally {
|
||||
lock.readLock().unlock();
|
||||
// lock.readLock().unlock();
|
||||
}
|
||||
}
|
||||
|
||||
public List<V> getAll() {
|
||||
lock.readLock().lock();
|
||||
// lock.readLock().lock();
|
||||
try {
|
||||
List<V> values = new ArrayList<>();
|
||||
for (TimedCacheEntry<V> entry : cache.values()) {
|
||||
|
@ -89,28 +90,28 @@ public class DynamicLRUCache<K, V> {
|
|||
}
|
||||
return values;
|
||||
} finally {
|
||||
lock.readLock().unlock();
|
||||
// lock.readLock().unlock();
|
||||
}
|
||||
}
|
||||
|
||||
public void shrinkToFit() {
|
||||
lock.writeLock().lock();
|
||||
try {
|
||||
// 减少缓存大小调整的频率
|
||||
if (cache.size() < maxSize / 2 && maxSize > 100) {
|
||||
maxSize /= 2; // 缩小缓存容量
|
||||
}
|
||||
Iterator<Map.Entry<K, TimedCacheEntry<V>>> iterator = cache.entrySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<K, TimedCacheEntry<V>> entry = iterator.next();
|
||||
if (isEntryExpired(entry.getValue())) {
|
||||
iterator.remove(); // 使用迭代器来安全移除条目
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
lock.writeLock().unlock();
|
||||
long now = TimeUtils.now();
|
||||
// 减少缓存大小调整的频率
|
||||
if (cache.size() < maxSize / 2 && maxSize > 100) {
|
||||
maxSize /= 2; // 缩小缓存容量
|
||||
}
|
||||
LOGGER.info("当前用户缓存列表大小,num:{},max:{}", size(), maxSize);
|
||||
Iterator<Map.Entry<K, TimedCacheEntry<V>>> iterator = cache.entrySet().iterator();
|
||||
HashSet<Integer> removeUsers = new HashSet<>();
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<K, TimedCacheEntry<V>> entry = iterator.next();
|
||||
if (isEntryExpired(entry.getValue())) {
|
||||
removeUsers.add((Integer) entry.getKey());
|
||||
}
|
||||
}
|
||||
for (Integer id : removeUsers) {
|
||||
cache.remove(id);
|
||||
}
|
||||
LOGGER.info("当前用户缓存列表大小,num:{},max:{},time:{}ms", size(), maxSize, TimeUtils.now()-now);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1508,6 +1508,20 @@ public class ItemUtil {
|
|||
return checkCostLong(user,longMap);
|
||||
}
|
||||
|
||||
public static boolean checkCost(User user, List<int[][]> item) throws Exception {
|
||||
HashMap<Integer, Integer> itemMap = new HashMap<>();
|
||||
for (int[][] ints : item) {
|
||||
selectCost(ints,itemMap);
|
||||
}
|
||||
return checkCost(user,itemMap);
|
||||
}
|
||||
|
||||
public static boolean checkCost(User user, int[][] item) throws Exception {
|
||||
HashMap<Integer, Integer> itemMap = new HashMap<>();
|
||||
selectCost(item,itemMap);
|
||||
return checkCost(user,itemMap);
|
||||
}
|
||||
|
||||
public static boolean checkCostLong(User user, Map<Integer, Long> itemMap) throws Exception {
|
||||
if (itemMap == null || itemMap.isEmpty()) {
|
||||
return true;
|
||||
|
|
|
@ -1,52 +1,89 @@
|
|||
package com.ljsd.jieling.util;
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.logic.activity.ActivityLogic;
|
||||
import com.ljsd.jieling.logic.activity.ActivityType;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class ToolsUtil {
|
||||
|
||||
public static long getTimeLong(long startTimeLong, long endTimeLong, int time, long createUserTime, int type){
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(ToolsUtil.class);
|
||||
/**
|
||||
* 根据不同类型获取活动时间
|
||||
*
|
||||
* @param startTimeLong 表里面得开始时间
|
||||
* @param endTimeLong 表里面得结束时间
|
||||
* @param time 时间类型
|
||||
* @param createUserTime 创角时间
|
||||
* @param type 1 开始时间, 2 结束时间
|
||||
* @param cycleTime 循环时间
|
||||
* @return 时间
|
||||
*/
|
||||
public static long getTimeLong(long startTimeLong, long endTimeLong, int time, long createUserTime, int type, int cycleTime){
|
||||
long baseTime = startTimeLong;
|
||||
if(type == 2){
|
||||
baseTime = endTimeLong;
|
||||
}
|
||||
long startTime=0;
|
||||
long resultTime=0;
|
||||
switch (time){
|
||||
case ActivityType.OPEN_TYPE_TIME:
|
||||
startTime = baseTime;
|
||||
case ActivityType.OPEN_TYPE_TIME://绝对时间
|
||||
resultTime = baseTime;
|
||||
break;
|
||||
case ActivityType.OPEN_TYPE_ROLE:
|
||||
startTime = TimeUtils.getAppointTimeInXDay(createUserTime,0) + baseTime*1000;
|
||||
case ActivityType.OPEN_TYPE_ROLE://创角时间
|
||||
resultTime = TimeUtils.getAppointTimeInXDay(createUserTime,0) + baseTime*1000;
|
||||
break;
|
||||
case ActivityType.OPEN_TYPE_SERVER:
|
||||
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();
|
||||
// 循环时间
|
||||
long cycleTimeMils = cycleTime * TimeUtils.ONE_MINUTE;
|
||||
// 最近的开始时间
|
||||
long latelyStartTime = TimeUtils.getLatelyTime(startTimeLong, cycleTimeMils, now);
|
||||
if (type == 1){
|
||||
resultTime = latelyStartTime;
|
||||
}else {
|
||||
// 最近的结束时间
|
||||
resultTime = latelyStartTime + (endTimeLong - startTimeLong);
|
||||
}
|
||||
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){
|
||||
long timeLong = getTimeLong(startTimeLong, endTimeLong, time, createUserTime, 2);
|
||||
long timeLong = getTimeLong(startTimeLong, endTimeLong, time, createUserTime, 2, 0);
|
||||
return timeLong + TimeUtils.DAY * dayOut;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,8 @@ public class SGlobalActivity implements BaseConfig {
|
|||
|
||||
private int time;
|
||||
|
||||
private int cycleMinute;
|
||||
|
||||
private long startTimeLong;
|
||||
|
||||
private long endTimeLong;
|
||||
|
@ -74,7 +76,7 @@ public class SGlobalActivity implements BaseConfig {
|
|||
int time = sGlobalActivity.getTime();
|
||||
String startTime = sGlobalActivity.getStartTime();
|
||||
String endtime = sGlobalActivity.getEndtime();
|
||||
if(time == 1 ){//ActivityType.OPEN_TYPE_TIME
|
||||
if(time == 1 || time == 6){//ActivityType.OPEN_TYPE_TIME
|
||||
if(!"0".equals(startTime)){
|
||||
sGlobalActivity.setStartTimeLong(TimeUtils.parseTimeToMiles(startTime,TimeUtils.Stand_CeHua_Data_format));
|
||||
}
|
||||
|
@ -170,6 +172,10 @@ public class SGlobalActivity implements BaseConfig {
|
|||
return time;
|
||||
}
|
||||
|
||||
public int getCycleMinute() {
|
||||
return cycleMinute;
|
||||
}
|
||||
|
||||
public static List<SGlobalActivity> getsGlobalActivityMapByType(int type) {
|
||||
return sGlobalActivityMapByType.get(type);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue