超值返利活动

duhui 2022-11-12 17:11:35 +08:00
parent ef14f61e68
commit b5323a534e
10 changed files with 123 additions and 66 deletions

View File

@ -514,7 +514,7 @@ public class GlobalDataManaager implements IManager {
BuyGoodsNewLogic.refreshWelfareState(user); BuyGoodsNewLogic.refreshWelfareState(user);
user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0); user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0);
// 惊喜礼盒,超值基金,零点逻辑(可以同用一个状态) // 惊喜礼盒,超值基金,零点逻辑(可以同用一个状态)
Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),SuperBoxEvent.fund_zero_init)); Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),SuperBoxEvent.zero_init));
// 心愿格子信息刷新 // 心愿格子信息刷新
HeroLogic.getInstance().resetWishDrawCardInfoMap(user); HeroLogic.getInstance().resetWishDrawCardInfoMap(user);
//玉虚论道每日刷新 //玉虚论道每日刷新

View File

@ -105,8 +105,6 @@ public interface ActivityType {
int CONTINUOUS_GIFT_NEW = 87;//新连续礼包 int CONTINUOUS_GIFT_NEW = 87;//新连续礼包
int ARENA_RANK_EXPERIMENT = 88;//竞技试炼 int ARENA_RANK_EXPERIMENT = 88;//竞技试炼
int DAILY_PREFERENTIAL_GIFT = 89;//每日特惠礼包开启的活动 int DAILY_PREFERENTIAL_GIFT = 89;//每日特惠礼包开启的活动
int NEW_RECHARGE_SUM_DAY_6 = 90;//新积天豪礼6元充值活动
int NEW_RECHARGE_SUM_DAY_30 = 92;//新积天豪礼30元充值活动
int NEW_DAILY_RECHARGE = 93;//新每日充值 int NEW_DAILY_RECHARGE = 93;//新每日充值
int SPECIAL_MONSTER_RANDOM_ACTIVITY = 100;//灵兽宝阁活动 int SPECIAL_MONSTER_RANDOM_ACTIVITY = 100;//灵兽宝阁活动
int SPECIAL_MONSTER_GIFT_ACTIVITY = 101;//灵兽礼包 int SPECIAL_MONSTER_GIFT_ACTIVITY = 101;//灵兽礼包
@ -147,4 +145,8 @@ public interface ActivityType {
int RECHARGE_FIRST = 108;//直充首冲活动 int RECHARGE_FIRST = 108;//直充首冲活动
int FREE_RECHARGE = 109;//免费充值,仙充 int FREE_RECHARGE = 109;//免费充值,仙充
int OPEN_SERVER_COMPETE_RANK = 110;//开服冲榜活动 int OPEN_SERVER_COMPETE_RANK = 110;//开服冲榜活动
int NEW_RECHARGE_SUM_DAY_6 = 90;//超值返利6
int NEW_RECHARGE_SUM_DAY_12 = 111;//超值返利12
int NEW_RECHARGE_SUM_DAY_30 = 92;//超值返利30
} }

View File

@ -96,8 +96,11 @@ public enum ActivityTypeEnum {
TRANSFORMATION_DRAW_CARD(ActivityType.TRANSFORMATION_DRAW_CARD,DefaultEmptyActivity::new),//方寸寻宝 TRANSFORMATION_DRAW_CARD(ActivityType.TRANSFORMATION_DRAW_CARD,DefaultEmptyActivity::new),//方寸寻宝
CONTINUOUS_GIFT_NEW(ActivityType.CONTINUOUS_GIFT_NEW,ContinuousGiftActivity::new),//新连续礼包 CONTINUOUS_GIFT_NEW(ActivityType.CONTINUOUS_GIFT_NEW,ContinuousGiftActivity::new),//新连续礼包
ARENA_RANK_EXPERIMENT(ActivityType.ARENA_RANK_EXPERIMENT,ArenaRankActivity::new),//竞技试炼 ARENA_RANK_EXPERIMENT(ActivityType.ARENA_RANK_EXPERIMENT,ArenaRankActivity::new),//竞技试炼
NEW_RECHARGE_SUM_DAY_6(ActivityType.NEW_RECHARGE_SUM_DAY_6,NewRechargeSumDayActivity::new),//新积天豪礼
NEW_RECHARGE_SUM_DAY_30(ActivityType.NEW_RECHARGE_SUM_DAY_30,NewRechargeSumDayActivity::new),//新积天豪礼 NEW_RECHARGE_SUM_DAY_6(ActivityType.NEW_RECHARGE_SUM_DAY_6,NewRechargeSumDayActivity::new),//超值返利6
NEW_RECHARGE_SUM_DAY_12(ActivityType.NEW_RECHARGE_SUM_DAY_12,NewRechargeSumDayActivity::new),//超值返利12
NEW_RECHARGE_SUM_DAY_30(ActivityType.NEW_RECHARGE_SUM_DAY_30,NewRechargeSumDayActivity::new),//超值返利30
DAILY_PREFERENTIAL_GIFT(ActivityType.DAILY_PREFERENTIAL_GIFT,DailyPreferentialGiftActivity::new), //每日特惠中60元七天特惠活动 DAILY_PREFERENTIAL_GIFT(ActivityType.DAILY_PREFERENTIAL_GIFT,DailyPreferentialGiftActivity::new), //每日特惠中60元七天特惠活动
SUMMON_TREASURE(ActivityType.SUMMON_TREASURE,SummonTreasureActivity::new),//招募秘宝 SUMMON_TREASURE(ActivityType.SUMMON_TREASURE,SummonTreasureActivity::new),//招募秘宝
NEW_PLAYER_SHOP(ActivityType.NEW_PLAYER_SHOP, NewPlayerShopActivity::new), NEW_PLAYER_SHOP(ActivityType.NEW_PLAYER_SHOP, NewPlayerShopActivity::new),

View File

@ -147,7 +147,7 @@ public class GiveEndlessDrawActivity extends AbstractActivity {
ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId); ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId);
int state = getState(user, rewardConfig, progressInfo); int state = getState(user, rewardConfig, progressInfo);
if (state != 1){ if (state != 1){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"领取条件不满足活动id ==> 挡位id"+id+"==>"+missionId); throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"领取失败activityId->missionId->state, "+id+"->"+missionId+"->"+state);
} }
// reward // reward
CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD); CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD);

View File

@ -1,77 +1,137 @@
package com.ljsd.jieling.logic.activity; package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.jbean.ActivityManager;
import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo; import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager;
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.RechargeRewardEvent; import com.ljsd.jieling.logic.activity.event.SuperBoxEvent;
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.network.session.ISession;
import config.SActivityRewardConfig; import config.SActivityRewardConfig;
import rpc.protocols.CommonProto;
import java.util.HashSet; import java.util.ArrayList;
import java.util.Map; import java.util.Comparator;
import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
/**
*
*/
class NewRechargeSumDayActivity extends AbstractActivity { class NewRechargeSumDayActivity extends AbstractActivity {
public NewRechargeSumDayActivity(int id) { public NewRechargeSumDayActivity(int id) {
super(id); super(id);
Poster.getPoster().listenEvent(this, RechargeRewardEvent.class); Poster.getPoster().listenEvent(this, SuperBoxEvent.class);
}
@Override
public void initActivity(User user) throws Exception {
ActivityMission mission = new ActivityMission();
// 初始化阶段奖励
ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
user.getActivityManager().getActivityMissionMap().put(id, mission);
LOGGER.info("超值返利初始化..."+id);
} }
@Override @Override
public void onEvent(IEvent event) throws Exception { public void onEvent(IEvent event) throws Exception {
super.onEvent(event); if (!(event instanceof SuperBoxEvent)) {
if (!(event instanceof RechargeRewardEvent)) {
return; return;
} }
RechargeRewardEvent rechargeRewardEvent = (RechargeRewardEvent) event; SuperBoxEvent superBox = (SuperBoxEvent) event;
int rechargeCount=rechargeRewardEvent.getRechargeCount(); User user = UserManager.getUser(superBox.getUserId());
User user = UserManager.getUser(rechargeRewardEvent.getUid()); int goodId = superBox.getGiftId();
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); // 不同状态礼包信息
for (Map.Entry<Integer, ActivityProgressInfo> item : activityMission.getActivityMissionMap().entrySet()) { if (goodId == SuperBoxEvent.zero_init){
ActivityProgressInfo activityProgressInfo = item.getValue(); zeroUpdate(user);
int missionId=item.getKey(); }else {
SActivityRewardConfig missionConfig=SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); goodUpdate(user, goodId);
if (missionConfig.getSort()-1==activityMission.getV()&&activityProgressInfo.getState()==ActivityType.WILL_TAKE){ }
int dayRechargeCount= activityProgressInfo.getProgrss()+rechargeCount; // 状态推送
activityProgressInfo.setProgrss(dayRechargeCount); sendActivityProgress(user, user.getActivityManager().getActivityMissionMap().get(id), null);
} }
activityMission.getActivityMissionMap().put(item.getKey(), activityProgressInfo);
/**
*
* @param user
*/
private void zeroUpdate(User user){
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
mission.setV(0);
}
/**
*
* @param user
* @param goodId
*/
private void goodUpdate(User user, int goodId){
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
// 表示已购买今天的礼包
if (mission.getV() == 1){
return;
}
List<SActivityRewardConfig> rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
// 奖励按天数排序
List<SActivityRewardConfig> list = rewardConfigs.stream().sorted(Comparator.comparing(SActivityRewardConfig::getSort)).collect(Collectors.toList());
for (SActivityRewardConfig config : list) {
// null礼包表示没有买的礼包
ActivityProgressInfo info = mission.getActivityMissionMap().get(config.getId());
if (info == null){
// 礼包id能对上赋值入库
if (goodId == config.getValues()[0][0]){
info = new ActivityProgressInfo();
info.setState(2);
mission.getActivityMissionMap().put(config.getId(),info);
// 更新已购买标记
mission.setV(1);
}
break;
}
} }
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
} }
@Override @Override
public void onResume(User user)throws Exception { public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user, ActivityMission activityMission, Set<Integer> filter) {
ActivityManager activityManager = user.getActivityManager(); if (activityMission == null){
ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); return new ArrayList<>();
int buyNum=0;
for (Map.Entry<Integer, ActivityProgressInfo> progressInfoEntry : activityMission.getActivityMissionMap().entrySet()) {
SActivityRewardConfig rewardConfig= SActivityRewardConfig.getsActivityRewardConfigByMissionId(progressInfoEntry.getKey());
if (progressInfoEntry.getValue().getProgrss()>=rewardConfig.getValues()[0][0]||progressInfoEntry.getValue().getState()==ActivityType.HAD_TAKED){
buyNum++;
}else{
progressInfoEntry.getValue().setProgrss(0);
}
} }
if (buyNum > activityMission.getV()) { // 策划表的配置
activityMission.setV(activityMission.getV() + 1); List<SActivityRewardConfig> rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
// 返回对象
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(rewardConfigs.size());
// 做标记用
ArrayList<Integer> mark = new ArrayList<>();
for (SActivityRewardConfig config : rewardConfigs) {
// 参数初始化
int missionId = config.getId();
ActivityProgressInfo info = activityMission.getActivityMissionMap().get(missionId);
int state = getState(info, activityMission.getV(), mark);
// 封装proto并返回
CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder()
.setMissionId(missionId)
.setProgress(0)
.setState(state)
.build();
missionInfos.add(build);
} }
if (activityMission.getV() >= SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).size()) { return missionInfos;
//补发未领取的奖励
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
takeAllReward(sessionByUid);
ActivityLogic.getInstance().initMissionInfo(activityMission,id);
}
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
} }
private int getState(ActivityProgressInfo info, int status, ArrayList<Integer> mark){
if (info != null && info.getState() == 2){
return 2;
}
if (status == 1){
return 0;
}
if (mark.size() == 0){
mark.add(1);
return 1;
}
return 0;
}
} }

View File

@ -75,7 +75,7 @@ public class SuperFundNewActivity extends AbstractActivity {
* @throws Exception * @throws Exception
*/ */
private void zeroRefresh(User user, int typeId) throws Exception { private void zeroRefresh(User user, int typeId) throws Exception {
if (typeId != SuperBoxEvent.fund_zero_init){ if (typeId != SuperBoxEvent.zero_init){
return; return;
} }
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.activity.event; package com.ljsd.jieling.logic.activity.event;
@Deprecated
public class RechargeRewardEvent implements IEvent { public class RechargeRewardEvent implements IEvent {
private int uid; private int uid;
private int rechargeCount;//充值金额 private int rechargeCount;//充值金额

View File

@ -13,19 +13,15 @@ public class SuperBoxEvent implements IEvent {
*/ */
public static int default_id = -1; public static int default_id = -1;
/** /**
* , *
*/ */
public static int fund_zero_init = -2; public static int zero_init = -2;
/**
* ,
*/
public static int fund_old_user = -3;
private int userId; private int userId;
/** /**
* id * id
*/ */
private int giftId = default_id; private int giftId;
/** /**
* *
*/ */

View File

@ -240,8 +240,6 @@ public class BuyGoodsNewLogic {
Poster.getPoster().dispatchEvent(new AutoRechargeBackEvent(user.getId(),goodsId,orderId)); Poster.getPoster().dispatchEvent(new AutoRechargeBackEvent(user.getId(),goodsId,orderId));
} }
Poster.getPoster().dispatchEvent(new RechargeRewardEvent(user.getId(),(int)price));
int[] forbid = config.getForbid(); int[] forbid = config.getForbid();
if(forbid!=null&&forbid.length>0){ if(forbid!=null&&forbid.length>0){
//每日礼包一键购买之后,把所有单个的每日礼包的购买次数加一 //每日礼包一键购买之后,把所有单个的每日礼包的购买次数加一

View File

@ -1505,12 +1505,9 @@ public class ItemUtil {
switch (sItem.getItemType()){ switch (sItem.getItemType()){
case GlobalItemType.RMB_CARD: case GlobalItemType.RMB_CARD:
case GlobalItemType.DAY_RMB_CARD: case GlobalItemType.DAY_RMB_CARD:
info.addRmb(num);
break;
case GlobalItemType.XIAN_RECHARGE_CARD: case GlobalItemType.XIAN_RECHARGE_CARD:
case GlobalItemType.DAY_XIAN_RECHARGE_CARD: case GlobalItemType.DAY_XIAN_RECHARGE_CARD:
info.addRmb(num); info.addRmb(num);
Poster.getPoster().dispatchEvent(new RechargeRewardEvent(user.getId(),num));
break; break;
default: default:
result = false; result = false;