update activity indication
parent
830fc18252
commit
7bb5acac24
|
@ -7,6 +7,7 @@ import com.ljsd.jieling.globals.Global;
|
|||
import com.ljsd.jieling.handler.activity.BlessInfoConfig;
|
||||
import com.ljsd.jieling.ktbeans.KtEventUtils;
|
||||
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.*;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
|
@ -38,7 +39,7 @@ public class ActivityLogic {
|
|||
|
||||
public void flushForLogin(User user) throws Exception {
|
||||
checkActivityIsFinish(user);
|
||||
checkActivityOfUser(user);
|
||||
checkActivityOfUser(user,null);
|
||||
}
|
||||
|
||||
|
||||
|
@ -46,7 +47,7 @@ public class ActivityLogic {
|
|||
public final static ActivityLogic instance = new ActivityLogic();
|
||||
}
|
||||
|
||||
public void checkActiviyStatus() {
|
||||
public void checkActiviyStatus() throws Exception {
|
||||
long now = System.currentTimeMillis();
|
||||
Map<Integer, SGlobalActivity> sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap();
|
||||
for(SGlobalActivity sGlobalActivity:sGlobalActivityMap.values()){
|
||||
|
@ -65,13 +66,30 @@ public class ActivityLogic {
|
|||
}
|
||||
openActivityIds.add(sGlobalActivity.getId());
|
||||
}
|
||||
for(Map.Entry<Integer,ISession> entry:OnlineUserManager.sessionMap.entrySet()){
|
||||
User user = UserManager.getUserInMem(entry.getKey());
|
||||
PlayerInfoProto.ActivityUpateIndication.Builder builder = PlayerInfoProto.ActivityUpateIndication.newBuilder();
|
||||
Set<Integer> openNews = checkActivityOfUser(user,builder);
|
||||
if(!openNews.isEmpty()){
|
||||
Map<Integer, ActivityMission> activityMissionMap = user.getActivityManager().getActivityMissionMap();
|
||||
Map<Integer, ActivityMission> activityUpdateMap = new HashMap<>();
|
||||
for(Integer activityId : openNews){
|
||||
activityUpdateMap.put(activityId,activityMissionMap.get(activityId));
|
||||
}
|
||||
List<CommonProto.ActivityInfo> activityInfos = getActivityInfos(activityUpdateMap, user.getPlayerInfoManager().getCreateTime());
|
||||
builder.addAllActivityInfo(activityInfos);
|
||||
}
|
||||
if(builder.getActivityInfoCount()>0 || builder.getCloseActivityIdCount() >0 ){
|
||||
MessageUtil.sendIndicationMessage(entry.getValue(),1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_INDICATION_VALUE,builder.build(),true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void newPlayerOpenActivityMission(User user) throws Exception {
|
||||
checkActivityOfUser(user);
|
||||
checkActivityOfUser(user,null);
|
||||
}
|
||||
|
||||
public void checkActivityOfUser(User user) throws Exception {
|
||||
public Set<Integer> checkActivityOfUser(User user, PlayerInfoProto.ActivityUpateIndication.Builder builder) throws Exception {
|
||||
long now = TimeUtils.now();
|
||||
ActivityManager activityManager = user.getActivityManager();
|
||||
Map<Integer, SGlobalActivity> sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap();
|
||||
|
@ -80,6 +98,7 @@ public class ActivityLogic {
|
|||
}
|
||||
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
|
||||
long userCreateTime = user.getPlayerInfoManager().getCreateTime();
|
||||
Set<Integer> openNewActivityIds = new HashSet<>();
|
||||
for(SGlobalActivity sGlobalActivity:sGlobalActivityMap.values()){
|
||||
int activityId = sGlobalActivity.getId();
|
||||
if(openActivityIds.contains(activityId)){
|
||||
|
@ -95,7 +114,11 @@ public class ActivityLogic {
|
|||
if(endTime!=0 && now>endTime){
|
||||
ActivityMission activityMission = activityMissionMap.get(activityId);
|
||||
if(activityMission!=null){
|
||||
activityMission.updateActivityState(ActivityType.CLOSE_STATE);
|
||||
activityManager.removeActivity(activityId);
|
||||
LOGGER.info("the uid={},remove the activity id ={}",user.getId(),activityId);
|
||||
if(builder!=null){
|
||||
builder.addCloseActivityId(activityId);
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
@ -105,13 +128,19 @@ public class ActivityLogic {
|
|||
}
|
||||
activityManager.initAllActivityMission(activityId);
|
||||
initOtherActivity(user,sGlobalActivity);
|
||||
openNewActivityIds.add(activityId);
|
||||
}else{
|
||||
ActivityMission activityMission = activityMissionMap.get(activityId);
|
||||
if(activityMission!=null){
|
||||
activityMission.updateActivityState(ActivityType.CLOSE_STATE);
|
||||
activityManager.removeActivity(activityId);
|
||||
LOGGER.info("the uid={},remove the activity id ={}",user.getId(),activityId);
|
||||
if(builder!=null){
|
||||
builder.addCloseActivityId(activityId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return openNewActivityIds;
|
||||
|
||||
}
|
||||
|
||||
|
@ -197,7 +226,7 @@ public class ActivityLogic {
|
|||
dropList.add(finalSTreasureConfig.getTreasureReward());
|
||||
}
|
||||
activityProgressInfo.setState(changeState);
|
||||
activityMission.updateProgressInfo(missionId,activityProgressInfo);
|
||||
activityMission.updateProgressInfo(finalSTreasureConfig.getId(),activityProgressInfo);
|
||||
KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent,activityId,finalSTreasureConfig.getId());
|
||||
}
|
||||
}
|
||||
|
@ -343,16 +372,19 @@ public class ActivityLogic {
|
|||
User user = UserManager.getUser(uid);
|
||||
long createTime = user.getPlayerInfoManager().getCreateTime();
|
||||
int rewardResponseValue = MessageTypeProto.MessageType.GET_ALL_ACTIVITY_RESPONSE_VALUE;
|
||||
checkActivityOfUser(user);
|
||||
ActivityManager activityManager = user.getActivityManager();
|
||||
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
|
||||
checkActivityOfUser(user,null);
|
||||
List<CommonProto.ActivityInfo> activityInfoList =getActivityInfos(user.getActivityManager().getActivityMissionMap(), createTime);
|
||||
PlayerInfoProto.GetAllActivityResponse build = PlayerInfoProto.GetAllActivityResponse.newBuilder().addAllActivityInfo(activityInfoList).build();
|
||||
MessageUtil.sendMessage(session,1,rewardResponseValue,build,true);
|
||||
}
|
||||
|
||||
private List<CommonProto.ActivityInfo> getActivityInfos(Map<Integer, ActivityMission> activityMissionMap, long createTime){
|
||||
Map<Integer, SGlobalActivity> sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap();
|
||||
List<CommonProto.ActivityInfo> activityInfoList = new ArrayList<>(activityMissionMap.size());
|
||||
for(Map.Entry<Integer,ActivityMission> activityState : activityMissionMap.entrySet()){
|
||||
Integer activityId = activityState.getKey();
|
||||
ActivityMission activityMission = activityState.getValue();
|
||||
int activityStatus = activityMission.getActivityState();
|
||||
|
||||
if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType()!=7&&activityStatus != ActivityType.OPEN_STATE){
|
||||
continue;
|
||||
}
|
||||
|
@ -368,9 +400,7 @@ public class ActivityLogic {
|
|||
}
|
||||
activityInfoList.add(CommonProto.ActivityInfo.newBuilder().setActivityId(activityId).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setReallyOpen(activityMission.getOpenType()).build());
|
||||
}
|
||||
PlayerInfoProto.GetAllActivityResponse build = PlayerInfoProto.GetAllActivityResponse.newBuilder().addAllActivityInfo(activityInfoList).build();
|
||||
MessageUtil.sendMessage(session,1,rewardResponseValue,build,true);
|
||||
|
||||
return activityInfoList;
|
||||
}
|
||||
|
||||
public void openActivityReallyOpen(User user,int activityType){
|
||||
|
@ -442,11 +472,11 @@ public class ActivityLogic {
|
|||
if(activityMission.getActivityState() != ActivityType.OPEN_STATE){
|
||||
continue;
|
||||
}
|
||||
checkActivityMissionFinishAndTaked(activityMission);
|
||||
checkActivityMissionFinishAndTaked(item.getKey(),activityMission);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkActivityMissionFinishAndTaked(ActivityMission activityMission){
|
||||
private void checkActivityMissionFinishAndTaked(int activityId,ActivityMission activityMission){
|
||||
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityProgressInfoMap();
|
||||
boolean isAllTaked = true;
|
||||
for(Map.Entry<Integer,ActivityProgressInfo> item : activityProgressInfoMap.entrySet()){
|
||||
|
@ -455,6 +485,11 @@ public class ActivityLogic {
|
|||
if(missionStatus == ActivityType.WILL_TAKE){
|
||||
isAllTaked = false;
|
||||
}
|
||||
if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() == ActivityType.TREASURE){
|
||||
if(missionStatus == ActivityType.HAD_TAKED){
|
||||
isAllTaked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(isAllTaked){
|
||||
activityMission.updateActivityState(ActivityType.FINISH_STATE);
|
||||
|
|
|
@ -33,6 +33,11 @@ public class ActivityManager extends MongoBase {
|
|||
updateString("activityMissionMap." + activityId,activityMission);
|
||||
}
|
||||
|
||||
public void removeActivity(int activityId){
|
||||
activityMissionMap.remove(activityId);
|
||||
removeString(getMongoKey() + ".activityMissionMap." + activityId);
|
||||
}
|
||||
|
||||
public long getTrsendTime() {
|
||||
return trsendTime;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue