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.java
master_dev
grimm 2024-04-08 11:23:08 +08:00
commit a9014b74ca
46 changed files with 558 additions and 460 deletions

View File

@ -1,5 +1,4 @@
{
"version":"5",
"classes":[
]
"classes":[]
}

View File

@ -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;
}
/**
* /
*/

View File

@ -2,18 +2,12 @@ package com.ljsd.jieling.config.clazzStaticCfg;
import com.ljsd.GameApplication;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.dao.ExpeditionItem;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.GuildFightLogic;
import com.ljsd.jieling.logic.hero.HeroLogic;
import config.*;
import manager.AbstractClassStaticConfig;
import manager.STableManager;
import manager.Table;
import util.TimeUtils;
import util.CellUtil;
import util.MathUtils;
import util.TimeUtils;
import java.util.*;

View File

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

View File

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

View File

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

View File

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

View File

@ -11,8 +11,8 @@ public interface ActivityType {
int OPEN_TYPE_TIME = 1; // 活动开启类型:绝对时间
int OPEN_TYPE_ROLE = 2; // 活动开启类型:创角时间
int OPEN_TYPE_SERVER = 3; // 活动开启类型:开服时间
int OPEN_TYPE_MONTHS = 5 ; // 活动开启类型:开服自然月
int OPEN_TYPE_MONTHS = 5; // 活动开启类型:开服自然月
int OPEN_TYPE_CYCLE = 6; // 活动开启类型:循环活动
int WILL_TAKE = 0; //未领取

View File

@ -1,6 +1,5 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.GameApplication;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager;
@ -14,7 +13,11 @@ import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.RechargeHandler;
import com.ljsd.jieling.network.session.ISession;
import config.*;
import com.ljsd.jieling.util.ToolsUtil;
import config.SGlobalActivity;
import config.SGoodsConfig;
import config.SRechargeCommodityNewConfig;
import config.SThemeActivityShop;
import manager.STableManager;
import rpc.protocols.CommonProto;
import util.TimeUtils;
@ -49,6 +52,7 @@ public class ContinuousGiftActivity extends AbstractActivity {
// 初始化阶段奖励
ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
user.getActivityManager().getActivityMissionMap().put(id, mission);
LOGGER.info("连续礼包活动初始化..."+id);
}
@Override
@ -74,7 +78,7 @@ public class ContinuousGiftActivity extends AbstractActivity {
* @param giftId
* @param missionMap
*/
private void giftHandle(User user, int giftId, int giftNum, int type){
public void giftHandle(User user, int giftId, int giftNum, int type){
if (giftId < 0 || giftNum <= 0){
// 非礼包处理
return;
@ -172,16 +176,18 @@ public class ContinuousGiftActivity extends AbstractActivity {
@Override
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user,ActivityMission activityMission, Set<Integer> filter) {
long now = TimeUtils.now();
long start = getSrartTime();
long end = getEndTime();
// 验证活动是否开启
if (now < start || now > end){
return new ArrayList<>();
}
if (activityMission == null){
LOGGER.error("活动不存在数据库中id:{},uid:{}",id,user.getId());
return new ArrayList<>();
}
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
if (activity == null){
LOGGER.error("活动不存在数据表中,id:{}",id);
return new ArrayList<>();
}
long now = TimeUtils.now();
long createTime = user.getPlayerInfoManager().getCreateTime();
long start = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),createTime,1, 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);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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;
// }
}

View File

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

View File

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

View File

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

View File

@ -1,6 +1,5 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.GameApplication;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
@ -15,6 +14,7 @@ import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.RechargeHandler;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ToolsUtil;
import config.SGlobalActivity;
import config.SRechargeCommodityNewConfig;
import config.SSurpriseBox;
@ -78,7 +78,7 @@ public class SuperBoxActivity extends AbstractActivity {
* @param giftId
* @param missionMap
*/
private void giftHandle(User user, int giftId){
public void giftHandle(User user, int giftId){
if (giftId < 0){
// 非礼包处理
return;
@ -161,16 +161,18 @@ public class SuperBoxActivity extends AbstractActivity {
@Override
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user,ActivityMission activityMission, Set<Integer> filter) {
long now = TimeUtils.now();
long start = getSrartTime();
long end = getEndTime();
// 验证活动是否开启
if (now < start || now > end){
return new ArrayList<>();
}
if (activityMission == null){
LOGGER.error("活动不存在数据库中id:{},uid:{}",id,user.getId());
return new ArrayList<>();
}
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
if (activity == null){
LOGGER.error("活动不存在数据表中,id:{}",id);
return new ArrayList<>();
}
long now = TimeUtils.now();
long createTime = user.getPlayerInfoManager().getCreateTime();
long start = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),createTime,1, 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);

View File

@ -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;
}
// 更新数据

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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);
}
/**

View File

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

View File

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

View File

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

View File

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

View File

@ -80,7 +80,7 @@ public abstract class AbstractMissionType {
}
public Set<Integer> getDoingMissionIds() {
return doingMissionIds;
return doingMissionIds;
}
public void addFinishMissionId(int missionId) {

View File

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

View File

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

View File

@ -8,6 +8,7 @@ import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.exception.ErrorTableException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.jbean.ActivityMission;
@ -1025,7 +1026,7 @@ public class BuyGoodsNewLogic {
RechargeHandler handler = getRechargeHandler(config.getOtype());
AbstractWelfareBag bag = handler.getBag(user, goodsId);
if (bag == null || !bag.isBuy()){
throw new ErrorCodeException(ErrorCode.SHOP_NO_ITEM);
throw new ErrorTableException(104,"礼包已购买");
}
//生成cp订单号

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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