fix level activity

back_recharge
wangyuan 2020-04-27 09:39:48 +08:00
parent f20ce8ad39
commit d9d3baaa03
3 changed files with 30 additions and 13 deletions

View File

@ -1121,6 +1121,11 @@ public class RedisUtil {
return result;
}
public boolean existsKey(String type,String key){
String rkey = getKey(type, key);
return redisTemplate.hasKey(rkey);
}
public <K,T> Map<K,T> getMapValues(String type,String key,Class<K> keyClazz,Type valueType){
Map<K,T> result = new HashMap<>();
String rkey = getKey(type, key);

View File

@ -306,15 +306,11 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
}
Integer missionId = missionProgress.getKey();
ActivityProgressInfo activityProgressInfo = missionProgress.getValue();
missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(getProgress(missionId,activityProgressInfo)).setState(activityProgressInfo.getState()).build());
missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(activityProgressInfo.getProgrss()).setState(activityProgressInfo.getState()).build());
}
return missionInfos;
}
public int getProgress(int missionId, ActivityProgressInfo activityProgressInfo ){
return activityProgressInfo.getProgrss();
}
/**
*
*

View File

@ -9,11 +9,10 @@ import com.ljsd.jieling.logic.activity.event.*;
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.protocols.CommonProto;
import config.SActivityRewardConfig;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
public class LevelExpectActivity extends ExpectRankActivity {
public LevelExpectActivity(int id) {
@ -28,6 +27,9 @@ public class LevelExpectActivity extends ExpectRankActivity {
@Override
public void onActivityStart() throws Exception {
if(RedisUtil.getInstence().existsKey(RedisKey.ACTIVITY_GIFT_LIMIT,String.valueOf(id))){
return;
}
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
Map<String,Integer> numLimits = new HashMap<>(sActivityRewardConfigs.size());
sActivityRewardConfigs.forEach(item->{
@ -53,14 +55,28 @@ public class LevelExpectActivity extends ExpectRankActivity {
}
@Override
public int getProgress(int missionId,ActivityProgressInfo activityProgressInfo) {
return RedisUtil.getInstence().getMapValue(RedisKey.ACTIVITY_GIFT_LIMIT,String.valueOf(id),String.valueOf(missionId),Integer.class);
}
@Override
public void onActivityEnd() throws Exception {
String rkey =RedisUtil.getInstence().getKey(RedisKey.ACTIVITY_GIFT_LIMIT,String.valueOf(id));
RedisUtil.getInstence().del(rkey);
}
@Override
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(ActivityMission activityMission, Set<Integer> filter) {
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
Map<Integer, Integer> mapValues = RedisUtil.getInstence().getMapValues(RedisKey.ACTIVITY_GIFT_LIMIT, String.valueOf(id), Integer.class, Integer.class);
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(activityProgressInfoMap.size());
for (Map.Entry<Integer, ActivityProgressInfo> missionProgress : activityProgressInfoMap.entrySet()) {
if (filter != null && !filter.contains(missionProgress.getKey())) {
continue;
}
Integer missionId = missionProgress.getKey();
ActivityProgressInfo activityProgressInfo = missionProgress.getValue();
int progress = mapValues.getOrDefault(missionId, 0);
progress=progress>0?progress:0;
missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(progress).setState(activityProgressInfo.getState()).build());
}
return missionInfos;
}
}