超值返利活动

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);
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);
//玉虚论道每日刷新

View File

@ -105,8 +105,6 @@ public interface ActivityType {
int CONTINUOUS_GIFT_NEW = 87;//新连续礼包
int ARENA_RANK_EXPERIMENT = 88;//竞技试炼
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 SPECIAL_MONSTER_RANDOM_ACTIVITY = 100;//灵兽宝阁活动
int SPECIAL_MONSTER_GIFT_ACTIVITY = 101;//灵兽礼包
@ -147,4 +145,8 @@ public interface ActivityType {
int RECHARGE_FIRST = 108;//直充首冲活动
int FREE_RECHARGE = 109;//免费充值,仙充
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),//方寸寻宝
CONTINUOUS_GIFT_NEW(ActivityType.CONTINUOUS_GIFT_NEW,ContinuousGiftActivity::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元七天特惠活动
SUMMON_TREASURE(ActivityType.SUMMON_TREASURE,SummonTreasureActivity::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);
int state = getState(user, rewardConfig, progressInfo);
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
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;
import com.ljsd.jieling.jbean.ActivityManager;
import com.ljsd.jieling.jbean.ActivityMission;
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.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.root.User;
import com.ljsd.jieling.network.session.ISession;
import config.SActivityRewardConfig;
import rpc.protocols.CommonProto;
import java.util.HashSet;
import java.util.Map;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
*
*/
class NewRechargeSumDayActivity extends AbstractActivity {
public NewRechargeSumDayActivity(int 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
public void onEvent(IEvent event) throws Exception {
super.onEvent(event);
if (!(event instanceof RechargeRewardEvent)) {
if (!(event instanceof SuperBoxEvent)) {
return;
}
RechargeRewardEvent rechargeRewardEvent = (RechargeRewardEvent) event;
int rechargeCount=rechargeRewardEvent.getRechargeCount();
User user = UserManager.getUser(rechargeRewardEvent.getUid());
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
for (Map.Entry<Integer, ActivityProgressInfo> item : activityMission.getActivityMissionMap().entrySet()) {
ActivityProgressInfo activityProgressInfo = item.getValue();
int missionId=item.getKey();
SActivityRewardConfig missionConfig=SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
if (missionConfig.getSort()-1==activityMission.getV()&&activityProgressInfo.getState()==ActivityType.WILL_TAKE){
int dayRechargeCount= activityProgressInfo.getProgrss()+rechargeCount;
activityProgressInfo.setProgrss(dayRechargeCount);
}
activityMission.getActivityMissionMap().put(item.getKey(), activityProgressInfo);
SuperBoxEvent superBox = (SuperBoxEvent) event;
User user = UserManager.getUser(superBox.getUserId());
int goodId = superBox.getGiftId();
// 不同状态礼包信息
if (goodId == SuperBoxEvent.zero_init){
zeroUpdate(user);
}else {
goodUpdate(user, goodId);
}
// 状态推送
sendActivityProgress(user, user.getActivityManager().getActivityMissionMap().get(id), null);
}
/**
*
* @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
public void onResume(User user)throws Exception {
ActivityManager activityManager = user.getActivityManager();
ActivityMission activityMission = activityManager.getActivityMissionMap().get(id);
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);
}
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user, ActivityMission activityMission, Set<Integer> filter) {
if (activityMission == null){
return new ArrayList<>();
}
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()) {
//补发未领取的奖励
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
takeAllReward(sessionByUid);
ActivityLogic.getInstance().initMissionInfo(activityMission,id);
}
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
return missionInfos;
}
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
*/
private void zeroRefresh(User user, int typeId) throws Exception {
if (typeId != SuperBoxEvent.fund_zero_init){
if (typeId != SuperBoxEvent.zero_init){
return;
}
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);

View File

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

View File

@ -13,19 +13,15 @@ public class SuperBoxEvent implements IEvent {
*/
public static int default_id = -1;
/**
* ,
*
*/
public static int fund_zero_init = -2;
/**
* ,
*/
public static int fund_old_user = -3;
public static int zero_init = -2;
private int userId;
/**
* 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 RechargeRewardEvent(user.getId(),(int)price));
int[] forbid = config.getForbid();
if(forbid!=null&&forbid.length>0){
//每日礼包一键购买之后,把所有单个的每日礼包的购买次数加一

View File

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