限时抽卡修改
parent
c52180e981
commit
39b48bf320
|
@ -328,5 +328,15 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
protected Set<Integer> getRankSet(int start, int end) {
|
||||||
|
Set<Integer> set = new HashSet<>();
|
||||||
|
if (start > end) {
|
||||||
|
return set;
|
||||||
|
}
|
||||||
|
for (int i = start; i <= end; i++) {
|
||||||
|
set.add(i);
|
||||||
|
}
|
||||||
|
return set;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -255,6 +255,12 @@ public class ActivityLogic implements IEventHandler{
|
||||||
for (SGlobalActivity sGlobalActivity : sGlobalActivityMap.values()) {
|
for (SGlobalActivity sGlobalActivity : sGlobalActivityMap.values()) {
|
||||||
int activityId = sGlobalActivity.getId();
|
int activityId = sGlobalActivity.getId();
|
||||||
if (openActivityIds.contains(activityId)) {
|
if (openActivityIds.contains(activityId)) {
|
||||||
|
if(sGlobalActivity.getGapTime()>0){
|
||||||
|
long endTime = ToolsUtil.getEndTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),userCreateTime, sGlobalActivity.getGapTime());
|
||||||
|
if(TimeUtils.now()>=endTime){
|
||||||
|
goRewardActivity(user,activityId,builder,false);
|
||||||
|
}
|
||||||
|
}
|
||||||
int[] ifOpen = sGlobalActivity.getIfOpen();
|
int[] ifOpen = sGlobalActivity.getIfOpen();
|
||||||
if(ifOpen!=null && ifOpen.length>0){
|
if(ifOpen!=null && ifOpen.length>0){
|
||||||
if(ifOpen[0]==1){ //创角
|
if(ifOpen[0]==1){ //创角
|
||||||
|
@ -274,19 +280,20 @@ public class ActivityLogic implements IEventHandler{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (endTime != 0 && now > endTime) {
|
if (endTime != 0 && now > endTime) {
|
||||||
ActivityMission activityMission = activityMissionMap.get(activityId);
|
// ActivityMission activityMission = activityMissionMap.get(activityId);
|
||||||
if (activityMission != null) {
|
// if (activityMission != null) {
|
||||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId());
|
// AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId());
|
||||||
if (null==abstractActivity) {
|
// if (null==abstractActivity) {
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
abstractActivity .onActivityEndSelfWithDealReward(user);
|
// abstractActivity .onActivityEndSelfWithDealReward(user);
|
||||||
activityManager.removeActivity(activityId);
|
// activityManager.removeActivity(activityId);
|
||||||
LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId);
|
// LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId);
|
||||||
if (builder != null) {
|
// if (builder != null) {
|
||||||
builder.addCloseActivityId(activityId);
|
// builder.addCloseActivityId(activityId);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
goRewardActivity(user,activityId,builder,true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ActivityMission activityMission = activityMissionMap.get(activityId);
|
ActivityMission activityMission = activityMissionMap.get(activityId);
|
||||||
|
@ -309,24 +316,29 @@ public class ActivityLogic implements IEventHandler{
|
||||||
openNewActivityIds.add(activityId);
|
openNewActivityIds.add(activityId);
|
||||||
checkNeedOpenStore(user,sGlobalActivity.getShopId(),startTime,endTime);
|
checkNeedOpenStore(user,sGlobalActivity.getShopId(),startTime,endTime);
|
||||||
} else {
|
} else {
|
||||||
ActivityMission activityMission = activityMissionMap.get(activityId);
|
goRewardActivity(user,activityId,builder,true);
|
||||||
if (activityMission != null) {
|
|
||||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId());
|
|
||||||
if (null==abstractActivity) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
abstractActivity.onActivityEndSelfWithDealReward(user);
|
|
||||||
activityManager.removeActivity(activityId);
|
|
||||||
LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId);
|
|
||||||
if (builder != null) {
|
|
||||||
builder.addCloseActivityId(activityId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return openNewActivityIds;
|
return openNewActivityIds;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
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.getActicityType(activityId);
|
||||||
|
if (null==abstractActivity) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
abstractActivity.onActivityEndSelfWithDealReward(user);
|
||||||
|
if(isRemoveInfo){
|
||||||
|
user.getActivityManager().removeActivity(activityId);
|
||||||
|
LOGGER.info("the uid={},remove the activity id ={}", user.getId(), activityId);
|
||||||
|
if (builder != null) {
|
||||||
|
builder.addCloseActivityId(activityId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static ActivityLogic getInstance() {
|
public static ActivityLogic getInstance() {
|
||||||
|
|
|
@ -119,14 +119,4 @@ class ExpectRankActivity extends AbstractActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Set<Integer> getRankSet(int start, int end) {
|
|
||||||
Set<Integer> set = new HashSet<>();
|
|
||||||
if (start > end) {
|
|
||||||
return set;
|
|
||||||
}
|
|
||||||
for (int i = start; i <= end; i++) {
|
|
||||||
set.add(i);
|
|
||||||
}
|
|
||||||
return set;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,16 +117,16 @@ class ForceRankActivity extends AbstractActivity {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Set<Integer> getRankSet(int start, int end) {
|
// private Set<Integer> getRankSet(int start, int end) {
|
||||||
Set<Integer> set = new HashSet<>();
|
// Set<Integer> set = new HashSet<>();
|
||||||
if (start > end) {
|
// if (start > end) {
|
||||||
return set;
|
// return set;
|
||||||
}
|
// }
|
||||||
for (int i = start; i <= end; i++) {
|
// for (int i = start; i <= end; i++) {
|
||||||
set.add(i);
|
// set.add(i);
|
||||||
}
|
// }
|
||||||
return set;
|
// return set;
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityEndDealReward(User user) throws Exception {
|
public void onActivityEndDealReward(User user) throws Exception {
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.activity;
|
||||||
import com.ljsd.jieling.core.GlobalsDef;
|
import com.ljsd.jieling.core.GlobalsDef;
|
||||||
import com.ljsd.jieling.db.redis.RedisKey;
|
import com.ljsd.jieling.db.redis.RedisKey;
|
||||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||||
|
import com.ljsd.jieling.globals.Global;
|
||||||
import com.ljsd.jieling.logic.activity.event.IEvent;
|
import com.ljsd.jieling.logic.activity.event.IEvent;
|
||||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||||
import com.ljsd.jieling.logic.activity.event.RandomCardEvent;
|
import com.ljsd.jieling.logic.activity.event.RandomCardEvent;
|
||||||
|
@ -10,15 +11,20 @@ import com.ljsd.jieling.logic.dao.ActivityMission;
|
||||||
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
|
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
|
||||||
import com.ljsd.jieling.logic.dao.UserManager;
|
import com.ljsd.jieling.logic.dao.UserManager;
|
||||||
import com.ljsd.jieling.logic.dao.root.User;
|
import com.ljsd.jieling.logic.dao.root.User;
|
||||||
|
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||||
import com.ljsd.jieling.logic.rank.RankContext;
|
import com.ljsd.jieling.logic.rank.RankContext;
|
||||||
import com.ljsd.jieling.logic.rank.RankEnum;
|
import com.ljsd.jieling.logic.rank.RankEnum;
|
||||||
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
|
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
|
||||||
import com.ljsd.jieling.network.session.ISession;
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
import config.SActivityRewardConfig;
|
import com.ljsd.jieling.util.ItemUtil;
|
||||||
import config.SCHero;
|
import config.*;
|
||||||
import config.SSpecialConfig;
|
import org.springframework.data.redis.core.ZSetOperations;
|
||||||
import util.TimeUtils;
|
import util.TimeUtils;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
@ -62,7 +68,70 @@ public class LimitRandomCardActivity extends AbstractActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityEnd() throws Exception {
|
public void onActivityEnd() throws Exception {
|
||||||
RedisUtil.getInstence().del(RedisKey.RANDOM_CARD_RANK);
|
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||||
|
if(sGlobalActivity.getOpenRanking()==0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<SActivityRankingReward> sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id);
|
||||||
|
if(null==sActivityRankingReward)
|
||||||
|
return;
|
||||||
|
int maxRank = 0;
|
||||||
|
int maxRewardId = 0;
|
||||||
|
Map<Integer, Integer> rank2miss = new HashMap<>();
|
||||||
|
for (SActivityRankingReward sActivityRankingReward1 : sActivityRankingReward) {
|
||||||
|
if(sActivityRankingReward1.getMaxRank()==-1){
|
||||||
|
maxRank =-1;
|
||||||
|
maxRewardId = sActivityRankingReward1.getId();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(maxRank!=-1)
|
||||||
|
{
|
||||||
|
maxRank = Math.max(maxRank, sActivityRankingReward1.getMaxRank());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Integer rank : getRankSet(sActivityRankingReward1.getMinRank(), sActivityRankingReward1.getMaxRank())) {
|
||||||
|
rank2miss.put(rank, sActivityRankingReward1.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<ZSetOperations.TypedTuple<String>> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.RANDOM_CARD_RANK, Integer.toString(id), 0, (maxRank==-1?0:maxRank) - 1);
|
||||||
|
int rank = 1;
|
||||||
|
int nowTime = (int) (TimeUtils.now() / 1000);
|
||||||
|
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
|
||||||
|
String value = item.getValue();
|
||||||
|
int uid = Integer.parseInt(value);
|
||||||
|
User user = UserManager.getUser(uid, true);
|
||||||
|
if (null == user) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||||
|
if (activityMission == null || activityMission.getOpenType() == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
int missionId;
|
||||||
|
if (rank2miss.containsKey(rank)) {
|
||||||
|
missionId = rank2miss.get(rank);
|
||||||
|
} else {
|
||||||
|
if (maxRank == -1) {
|
||||||
|
missionId = maxRewardId;
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//check value
|
||||||
|
SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId);
|
||||||
|
//sendmail
|
||||||
|
|
||||||
|
String title = SErrorCodeEerverConfig.getI18NMessage("expertrank_activity_title", new Object[]{sGlobalActivity.getSesc()});
|
||||||
|
String content = SErrorCodeEerverConfig.getI18NMessage("expertrank_activity_txt", new Object[]{sGlobalActivity.getSesc(), rank++});
|
||||||
|
String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward());
|
||||||
|
MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
|
||||||
|
RedisUtil.getInstence().del(RedisKey.getKey(RedisKey.RANDOM_CARD_PERFECT_RANK,"",false));
|
||||||
|
RedisUtil.getInstence().del(RedisKey.getKey(RedisKey.RANDOM_CARD_RANK,"",false));
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -222,21 +222,18 @@ public class HeroLogic{
|
||||||
//检验消耗
|
//检验消耗
|
||||||
boolean allowFree = false;
|
boolean allowFree = false;
|
||||||
int privilege = 0;
|
int privilege = 0;
|
||||||
if(perCount == 1){
|
switch (sLotterySetting.getLotteryType()){
|
||||||
switch (sLotterySetting.getLotteryType()){
|
case 1:
|
||||||
case 1:
|
privilege = VipPrivilegeType.FREE_HERO_RANDOM;
|
||||||
privilege = VipPrivilegeType.FREE_HERO_RANDOM;
|
break;
|
||||||
|
case 3:
|
||||||
|
privilege = VipPrivilegeType.TIME_RANDOM_FREE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
case 3:
|
}
|
||||||
privilege = VipPrivilegeType.TIME_RANDOM_FREE;
|
if(privilege!=0){
|
||||||
break;
|
allowFree = PlayerLogic.getInstance().check(user,privilege, perCount);
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(privilege!=0){
|
|
||||||
allowFree = PlayerLogic.getInstance().check(user,privilege, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if(!allowFree){
|
if(!allowFree){
|
||||||
boolean enoughCost = false;
|
boolean enoughCost = false;
|
||||||
|
|
Loading…
Reference in New Issue