循环活动

master_ob2
grimm 2024-04-01 17:01:10 +08:00
parent 18c2f7fb7e
commit 79852857ee
28 changed files with 461 additions and 401 deletions

View File

@ -898,4 +898,42 @@ public class TimeUtils {
public static long getToTomorrowTimeS(){
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

@ -1,20 +1,15 @@
package com.ljsd.jieling.handler;
import com.google.protobuf.GeneratedMessage;
import com.ljsd.GameApplication;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.util.CBean2Proto;
import org.springframework.stereotype.Component;
import rpc.protocols.*;
import util.TimeUtils;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**

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

@ -132,7 +132,7 @@ public class ActivityLogic implements IEventHandler{
*
*/
// private void webPayHandlerLogin(User user){
// 获取key
// 获取key
// String subKey = RedisUtil.getInstence().getKey(String.valueOf(user.getId()), String.valueOf(ActivityType.DAILY_RECHARGE),false);
// String key = RedisUtil.getInstence().getKey(RedisKey.WEB_PAY, subKey);
//
@ -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){
continue;
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, cycleMinute);
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;
}
@ -1690,16 +1702,16 @@ public class ActivityLogic implements IEventHandler{
*/
private CommonProto.Drop.Builder getDrawReward(User user,int activityId,int num,int[][] reward) throws Exception {
if (num == 1){
return getDrawRewardOne(user,activityId,num,reward);
return getDrawRewardOne(user, activityId, reward);
}else {
return getDrawRewardTen(user,activityId,num,reward);
return getDrawRewardTen(user, activityId, reward);
}
}
/**
*
*/
private CommonProto.Drop.Builder getDrawRewardOne(User user,int activityId,int num,int[][] reward) throws Exception {
private CommonProto.Drop.Builder getDrawRewardOne(User user, int activityId, int[][] reward) throws Exception {
// 活动信息
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(activityId);
// up奖励id
@ -1750,7 +1762,7 @@ public class ActivityLogic implements IEventHandler{
/**
*
*/
private CommonProto.Drop.Builder getDrawRewardTen(User user,int activityId,int num,int[][] reward) throws Exception {
private CommonProto.Drop.Builder getDrawRewardTen(User user, int activityId, int[][] reward) throws Exception {
// 活动信息
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(activityId);
// up奖励id
@ -1799,9 +1811,6 @@ public class ActivityLogic implements IEventHandler{
/**
*
* @param user
* @return
* @throws Exception
*/
public ActivityProto.qiMenDunJiaDrawResponse qiMenDunJiaDraw(User user,int activityId,int num) throws Exception {
// 道具消耗
@ -1829,8 +1838,6 @@ public class ActivityLogic implements IEventHandler{
/**
*
* @param user
* @return
*/
private void qiMenConsume(User user,int count) throws Exception {
// 获取抽奖消耗配置
@ -1910,22 +1917,17 @@ public class ActivityLogic implements IEventHandler{
/**
*
* @param session
* @throws Exception
*/
public void zeroResetSpecialMonsterActivity(ISession session) throws Exception {
AbstractActivity activity = ActivityTypeEnum.getActicityById(14501);
if (activity != null){
activity.takeAllReward(session);
}
}
// public void zeroResetSpecialMonsterActivity(ISession session) throws Exception {
// AbstractActivity activity = ActivityTypeEnum.getActicityById(14501);
// if (activity != null){
// activity.takeAllReward(session);
// }
// }
/**
* id
*
* @param user
* @param type
* @return
*/
public int getActivityByTypeToFirst(User user, int type){
List<SGlobalActivity> activities = SGlobalActivity.getsGlobalActivityMapByType(type);
@ -1944,9 +1946,6 @@ public class ActivityLogic implements IEventHandler{
/**
*
*
* @param user
* @return
*/
public Set<Integer> getDesireOpenHeroList(User user) {
// 开服时间戳

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,10 +1,20 @@
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 config.SComposeActivity;
import config.SComposeBook;
import manager.STableManager;
import rpc.protocols.CommonProto;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
@ -16,21 +26,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

@ -46,7 +46,7 @@ public class FifteenActivity extends AbstractActivity {
}
long startTime = ToolsUtil.getTimeLong
(globalActivity.getStartTimeLong(),globalActivity.getEndTimeLong(),globalActivity.getTime(),
user.getPlayerInfoManager().getCreateTime(), 1);
user.getPlayerInfoManager().getCreateTime(), 1, globalActivity.getCycleMinute());
int st = (int)(startTime/1000);
for(Map.Entry<Integer,ActivityProgressInfo> entry : user.getActivityManager().getActivityMissionMap().
get(globalActivity.getId()).getActivityMissionMap().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 createTime = user.getPlayerInfoManager().getCreateTime();
long now = TimeUtils.now();
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();
}
@ -250,7 +250,7 @@ public class OpenServerCompeteRankActivity extends AbstractActivity {
backRankType = chongRankInfo.getBackRankType();
AbstractRank backRank = RankContext.getRankEnum(backRankType);
Set<ZSetOperations.TypedTuple<String>> backRankInfo = backRank.getRankByKey("", 0, -1);
if (backRankInfo != null && backRankInfo.size() > 0){
if (backRankInfo != null && !backRankInfo.isEmpty()){
LOGGER.info("冲榜备份结束备份数据已存在活动id{},排行榜类型:{},排行榜数量:{}",id,backRankType,backRankInfo.size());
return null;
}

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,6 +47,9 @@ 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);
}

View File

@ -15,6 +15,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;
@ -161,16 +162,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,46 +232,6 @@ 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

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,23 +1,16 @@
package com.ljsd.jieling.logic.activity.activityLogic;
import com.ljsd.GameApplication;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.newRechargeInfo.RechargeType;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.RechargeHandler;
import com.ljsd.jieling.network.server.SessionManager;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.ToolsUtil;
import config.SGlobalActivity;
import config.SRechargeCommodityNewConfig;
import config.SWeekRewardConfig;
import config.SWeekcardConfig;
import manager.STableManager;
@ -43,37 +36,8 @@ public class WeekCardLogic {
public final static WeekCardLogic instance = new WeekCardLogic();
}
/**
*
* @return
*/
public long getStartTime(User user, int id){
long startTime = 0;
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
// 绝对时间
if (activity.getTime() == ActivityType.OPEN_TYPE_TIME){
startTime = activity.getStartTimeLong();
}
// 开服时间
if (activity.getTime() == ActivityType.OPEN_TYPE_SERVER) {
String openTime = GameApplication.serverConfig.getOpenTime();
long timeLong2 = TimeUtils.stringToTimeLong2(openTime);
startTime = timeLong2 + activity.getStartTimeLong() * 1000;
}
// 创角时间
if (activity.getTime() == ActivityType.OPEN_TYPE_ROLE) {
long timeLong2 = user.getPlayerInfoManager().getCreateTime();
startTime = timeLong2 + activity.getStartTimeLong() * 1000;
}
return startTime;
}
/**
*
* @param cardId
* @param activityId
* @param valueMap
* @return
*/
private CommonProto.WeekCardInfo packagingWeekCardBuilder(User user, int activityId, int cardId, Map<Integer,Integer> valueMap){
Map<Integer, SWeekcardConfig> config = STableManager.getConfig(SWeekcardConfig.class);
@ -84,9 +48,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];
@ -111,8 +79,6 @@ public class WeekCardLogic {
/**
*
* @param user
* @param activtiyId
*/
public void queryWeekCardInfo(User user, int activtiyId){
ArrayList<CommonProto.WeekCardInfo> list = new ArrayList<>();
@ -127,9 +93,6 @@ public class WeekCardLogic {
/**
*
* @param user
* @param proto
* @throws Exception
*/
public void getWeekCardReward(User user, PlayerInfoProto.GetWeekCardRewardRequest proto) throws Exception {
Map<Integer, Integer> map = user.getPlayerInfoManager().getWeekCard().get(proto.getWeekcardId());
@ -170,9 +133,6 @@ public class WeekCardLogic {
/**
*
* @param user
* @param weekCardId
* @param activityId
*/
public void weekCardInfoIndication(User user, int weekCardId, int activityId){
ISession session = OnlineUserManager.getSessionByUid(user.getId());

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

@ -264,7 +264,7 @@ public class HeroLogic {
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
}
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(sLotterySetting.getActivityId());
long endTimeLong = ToolsUtil.getEndTimeLong(activity.getStartTimeLong(), activity.getEndTimeLong(), activity.getTime(), user.getPlayerInfoManager().getCreateTime(), activity.getGapTime());
long endTimeLong = ToolsUtil.getEndTimeLong(activity.getStartTimeLong(), activity.getEndTimeLong(), activity.getTime(), user.getPlayerInfoManager().getCreateTime(), activity.getGapTime(), activity.getCycleMinute());
if (endTimeLong != 0 && TimeUtils.now() > endTimeLong) {
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
}

View File

@ -16,6 +16,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.EspecialEquipUpEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent;
@ -938,47 +939,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;
}

View File

@ -1326,8 +1326,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

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

@ -799,10 +799,10 @@ public class CBean2Proto {
if (friendManager != null){
Map<Integer, Integer> giveMap =friendManager.getGiveMap();
Map<Integer, Integer> haveRewardMap = friendManager.getHaveRewardMap();
if (giveMap.size() != 0 && giveMap.containsKey(friendId)){
if (!giveMap.isEmpty() && giveMap.containsKey(friendId)){
isGrive = giveMap.get(friendId);
}
if (haveRewardMap.size() != 0 && giveMap.containsKey(friendId) && haveRewardMap.containsKey(friendId)){
if (!haveRewardMap.isEmpty() && giveMap.containsKey(friendId) && haveRewardMap.containsKey(friendId)){
haveReward = haveRewardMap.get(friendId) ==2?0:haveRewardMap.get(friendId);
}
if(friendManager.getMyApplyFriends().contains(friendId)){

View File

@ -2,53 +2,88 @@ package com.ljsd.jieling.util;
import com.ljsd.GameApplication;
import com.ljsd.jieling.logic.activity.ActivityType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import util.TimeUtils;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
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 cycleTime
* @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);
public static long getEndTimeLong(long startTimeLong , long endTimeLong, int time, long createUserTime, int dayOut, int cycleTime){
long timeLong = getTimeLong(startTimeLong, endTimeLong, time, createUserTime, 2, cycleTime);
return timeLong + TimeUtils.DAY * dayOut;
}
@ -93,4 +128,25 @@ public class ToolsUtil {
return array2D;
}
/**
* map
*/
public static int[][] getTwoArrayInt(Map<Integer, Integer> map) {
int[][] object = null;
if (map != null && !map.isEmpty()) {
int size = map.size();
object = new int[size][2];
Iterator<Map.Entry<Integer, Integer>> iterator = map.entrySet().iterator();
for (int i = 0; i < size; i++) {
Map.Entry<Integer, Integer> entry = iterator.next();
int key = entry.getKey();
int value = entry.getValue();
object[i][0] = key;
object[i][1] = value;
}
}
return object;
}
}

View File

@ -9,23 +9,25 @@ import java.util.*;
@Table(name ="GlobalActivity")
public class SGlobalActivity implements BaseConfig {
private int id;
private int id;
private int type;
private int type;
private String startTime;
private String startTime;
private String endtime;
private String endtime;
private int time;
private int time;
private long startTimeLong;
private int cycleMinute;
private long endTimeLong;
private long startTimeLong;
private static Map<Integer, SGlobalActivity> sGlobalActivityMap;
private long endTimeLong;
private String sesc;
private static Map<Integer, SGlobalActivity> sGlobalActivityMap;
private String sesc;
private int isSaving;
@ -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));
}
@ -154,22 +156,26 @@ public class SGlobalActivity implements BaseConfig {
return id;
}
public int getType() {
public int getType() {
return type;
}
public String getStartTime() {
public String getStartTime() {
return startTime;
}
public String getEndtime() {
public String getEndtime() {
return endtime;
}
public int getTime() {
public int getTime() {
return time;
}
public int getCycleMinute() {
return cycleMinute;
}
public static List<SGlobalActivity> getsGlobalActivityMapByType(int type) {
return sGlobalActivityMapByType.get(type);
}