刷冲特权活动,无限资源阁活动,每日道具清理

back_recharge
duhui 2022-09-09 15:38:17 +08:00
parent 8c86bb20f7
commit fad92b7455
8 changed files with 436 additions and 9 deletions

View File

@ -45,7 +45,15 @@ public interface GlobalItemType {
int LIKABILITY_CHIP = 35;//好感度碎片
int EQUIP_CHIP = 36;//装备碎片
int ONE_RECHARGE_CARD = 000;//一元直充卡
int ONE_RMB_RECHARGE_CARD = 42;//1元直充卡
int TRUE_RECHARGE_JUAN = 43;//真充券
int RMB_CARD = 44;//现金卡
int XIAN_RECHARGE_CARD = 45;//仙充卡
int DAY_TRUE_RECHARGE_JUAN = 46;//真充券,当日生效
int DAY_RMB_CARD = 47;//现金卡,当日生效
int DAY_XIAN_RECHARGE_CARD = 48;//仙充卡,当日生效
//物品使用类型
int NO_USE = 0 ; //不使用

View File

@ -31,6 +31,7 @@ import com.ljsd.jieling.logic.hardStage.HardStageLogic;
import com.ljsd.jieling.logic.help.HelpHeroLogic;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.home.ArchitectureUnLockHandler;
import com.ljsd.jieling.logic.item.ItemLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.GameMisionType;
import com.ljsd.jieling.logic.mission.data.DataManagerDistributor;
@ -50,6 +51,7 @@ import com.ljsd.jieling.thread.task.RPCServerTask;
import com.ljsd.jieling.thread.task.RPCWorldServerTask;
import com.ljsd.jieling.util.CBean2Proto;
import com.ljsd.jieling.util.ConfigurableApplicationContextManager;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SDailyTasksConfig;
import config.SGlobalSystemConfig;
@ -452,6 +454,7 @@ public class GlobalDataManaager implements IManager {
PlayerLogic.getInstance().sendTimingMail(user);
user.getGuildMyInfo().setLastHurt(0);
ItemLogic.getInstance().zeroCleanItem(user);
// 四灵试炼,计算每天次数
FourChallengeLogic.getInstance().addFourChallengeNum(user,user.getPlayerInfoManager().getLoginTime());
// 助战清理

View File

@ -137,7 +137,10 @@ public interface ActivityType {
int WEEK_CARD = 102;//月卡
int ALL_PEOPLE_WELFARE = 105;//全民福利
//***************************************bt活动=====================================//
int BRUSH_PRIVILEGE = 103;//刷充特权
int INFINITE_RESOURCES_PAVILION = 104;//无限资源阁
int ALL_PEOPLE_WELFARE = 105;//全民福利
int GIVE_ENDLESS_DRAW = 106;//送无限抽
}

View File

@ -108,10 +108,12 @@ public enum ActivityTypeEnum {
EXPLORE_EXPECT_ACTIVITY(ActivityType.EXPLORE_EXPECT_ACTIVITY,ExploreExpectActivity::new),
POWER_RICE_ACTIVITY(ActivityType.POWER_RICE_ACTIVITY,PowerRiceActivity::new),//战力冲刺
DONGHAI_XUNXIAN_ACTIVITY(ActivityType.DonghaiXunxian,DonghaiXunxianActivity::new),//东海寻仙
WHOEL_LIFE_ACTIVITY(ActivityType.WHOLE_LIFE_CARD,WholeLifeActivity::new),//东海寻仙
WHOEL_LIFE_ACTIVITY(ActivityType.WHOLE_LIFE_CARD,WholeLifeActivity::new),//终生卡
ENCHANTER_STORE(ActivityType.ENCHANTER_STORE,DefaultEmptyActivity::new),//寻仙商城
WEEK_CARD(ActivityType.WEEK_CARD,WeekCardActivity::new),//
WEEK_CARD(ActivityType.WEEK_CARD,WeekCardActivity::new),//
// bt
BRUSH_PRIVILEGE(ActivityType.BRUSH_PRIVILEGE, BrushPrivilegeActivity::new),//刷充特权
INFINITE_RESOURCES_PAVILION(ActivityType.INFINITE_RESOURCES_PAVILION, InfiniteResourcesPavilionActivity::new),//无限资源阁
ALL_PEOPLE_WELFARE(ActivityType.ALL_PEOPLE_WELFARE,AllPeopleWelfareActivity::new),//全民福利
GIVE_ENDLESS_DRAW(ActivityType.GIVE_ENDLESS_DRAW, GiveEndlessDrawActivity::new),//送无限抽
;

View File

@ -0,0 +1,209 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
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.SuperBoxEvent;
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.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SGlobalActivity;
import config.SRechargeCommodityNewConfig;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author hj
* bt
* 2022-9-6
*/
public class BrushPrivilegeActivity extends AbstractActivity {
BrushPrivilegeActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, SuperBoxEvent.class);
}
@Override
public void initActivity(User user) throws Exception {
// 活动信息初始化
ActivityMission mission = new ActivityMission();
ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
user.getActivityManager().getActivityMissionMap().put(id, mission);
// 刷冲特权第一个礼包默认开启
update(user,activity.getCanBuyRechargeId()[0]);
LOGGER.info("刷冲特权-bt版...uid={},activityId={}",user.getId(), id);
}
@Override
public void onEvent(IEvent event) throws Exception {
// 类型验证
if (!(event instanceof SuperBoxEvent)) {
return;
}
// 获取信息
SuperBoxEvent event1 = (SuperBoxEvent) event;
User user = UserManager.getUser(event1.getUserId());
// 礼包处理
update(user, event1.getGiftId());
// 客户端推送
ISession session = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(session, user.getActivityManager().getActivityMissionMap().get(id), null);
}
@Override
public void update(User user, int giftId) {
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
if (giftId < 0 || activity == null || activity.getCanBuyRechargeId() == null || activityMission == null){
return;
}
for (int id : activity.getCanBuyRechargeId()) {
if (id != giftId){
continue;
}
ActivityProgressInfo info = new ActivityProgressInfo();
info.setProgrss(1);
info.setState(TimeUtils.nowInt());
activityMission.getActivityMissionMap().putIfAbsent(giftId, info);
}
}
@Override
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user,ActivityMission activityMission, Set<Integer> filter) {
if (activityMission == null){
return new ArrayList<>();
}
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
if (activity == null || activity.getCanBuyRechargeId() == null){
return new ArrayList<>();
}
// 库里存储的活动档位信息
Map<Integer, ActivityProgressInfo> progressInfoMap = activityMission.getActivityMissionMap();
// 返回对象
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(activity.getCanBuyRechargeId().length);
for (int giftId : activity.getCanBuyRechargeId()) {
SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(giftId);
if (config == null){
continue;
}
ActivityProgressInfo info = progressInfoMap.get(giftId);
int progress = getProgress(activityMission,giftId,info);
int state = getState(info);
// 封装proto并返回
CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder()
.setMissionId(giftId)
.setProgress(progress)
.setState(state)
.build();
missionInfos.add(build);
}
return missionInfos;
}
/**
*
* @param progressInfo
* @return
*/
private int getProgress(ActivityMission mission, int missionId, ActivityProgressInfo progressInfo){
int progress = 0;
if (progressInfo == null){
return progress;
}
// 上次领取时间
int time = TimeUtils.getZeroInt(progressInfo.getState());
// 当前时间
int now = TimeUtils.getZeroInt(TimeUtils.nowInt());
// 间隔天数
progress = TimeUtils.getSoFarWentDays(time * 1000, now * 1000);
progressInfo.setProgrss(progress);
mission.getActivityMissionMap().put(missionId,progressInfo);
return progress;
}
/**
*
* @param progress
* @return
*/
private int getState(ActivityProgressInfo progress){
int state = 0;
if (progress == null){
return state;
}
if (progress.getProgrss() > 0){
state = 1;
}else {
state = 2;
}
return state;
}
/**
*
* @param session
* @param missionId
* @return
* @throws Exception
*/
@Override
public boolean takeReward(ISession session, int missionId) throws Exception {
User user = UserManager.getUser(session.getUid());
// activity check
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
if (mission == null){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"活动信息不存在:"+id);
}
SRechargeCommodityNewConfig newConfig = SRechargeCommodityNewConfig.getConfigById(missionId);
ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId);
int progress = getProgress(mission, missionId, progressInfo);
int state = getState(progressInfo);
if (state != 1){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"领取条件不满足活动id ==> 挡位id"+id+"==>"+missionId);
}
// reward
CommonProto.Drop.Builder drop = ItemUtil.drop(user, newConfig.getExtraReward(), progress, BIReason.TAKE_ACTIVITY_REWARD);
// 更新数据库
updateProgress(mission,missionId);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
// 打点上报
reportTakeActivityReward(user,newConfig.getExtraReward(),missionId);
return true;
}
@Override
void updateProgress(ActivityMission activityMission, int giftId) {
ActivityProgressInfo info = new ActivityProgressInfo();
info.setProgrss(0);
info.setState(TimeUtils.nowInt());
activityMission.getActivityMissionMap().put(giftId,info);
}
@Override
public boolean checkActivityMissionFinishAndTake(int uid, int activityId, ActivityMission activityMission) {
return false;
}
}

View File

@ -0,0 +1,176 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
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.SuperBoxEvent;
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.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SGlobalActivity;
import config.SRechargeCommodityNewConfig;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author hj
* bt
* 2022-9-6
*/
public class InfiniteResourcesPavilionActivity extends AbstractActivity {
InfiniteResourcesPavilionActivity(int id) {
super(id);
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("无限资源阁-bt版...uid={},activityId={}",user.getId(), id);
}
@Override
public void onEvent(IEvent event) throws Exception {
// 类型验证
if (!(event instanceof SuperBoxEvent)) {
return;
}
// 获取信息
SuperBoxEvent event1 = (SuperBoxEvent) event;
User user = UserManager.getUser(event1.getUserId());
// 礼包处理
update(user, event1.getGiftId());
// 客户端推送
ISession session = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(session, user.getActivityManager().getActivityMissionMap().get(id), null);
}
@Override
public void update(User user, int giftId) {
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
if (giftId < 0 || activity == null || activity.getCanBuyRechargeId() == null || activityMission == null){
return;
}
for (int id : activity.getCanBuyRechargeId()) {
if (id != giftId){
continue;
}
activityMission.getActivityMissionMap().putIfAbsent(giftId,new ActivityProgressInfo());
}
}
@Override
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user,ActivityMission activityMission, Set<Integer> filter) {
if (activityMission == null){
return new ArrayList<>();
}
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
if (activity == null || activity.getCanBuyRechargeId() == null){
return new ArrayList<>();
}
// 库里存储的活动档位信息
Map<Integer, ActivityProgressInfo> progressInfoMap = activityMission.getActivityMissionMap();
// 返回对象
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(activity.getCanBuyRechargeId().length);
for (int giftId : activity.getCanBuyRechargeId()) {
SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(giftId);
if (config == null){
continue;
}
ActivityProgressInfo info = progressInfoMap.get(giftId);
int state = getState(info);
// 封装proto并返回
CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder()
.setMissionId(giftId)
.setProgress(0)
.setState(state)
.build();
missionInfos.add(build);
}
return missionInfos;
}
/**
*
* @param progress 0-1-2|||
* @return
*/
private int getState(ActivityProgressInfo progress){
int state = 0;
if (progress == null){
return state;
}
int time = TimeUtils.getZeroInt(progress.getProgrss());
int now = TimeUtils.getZeroInt(TimeUtils.nowInt());
if (now > time){
state = 1;
}else {
state = 2;
}
return state;
}
/**
*
* @param session
* @param missionId
* @return
* @throws Exception
*/
@Override
public boolean takeReward(ISession session, int missionId) throws Exception {
User user = UserManager.getUser(session.getUid());
// activity check
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
if (mission == null){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"活动信息不存在:"+id);
}
SRechargeCommodityNewConfig newConfig = SRechargeCommodityNewConfig.getConfigById(missionId);
ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId);
int state = getState(progressInfo);
if (state != 1){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE,"领取条件不满足活动id ==> 挡位id"+id+"==>"+missionId);
}
// reward
CommonProto.Drop.Builder drop = ItemUtil.drop(user, newConfig.getExtraReward(), BIReason.TAKE_ACTIVITY_REWARD);
// 更新数据库
ActivityProgressInfo info = new ActivityProgressInfo();
info.setState(2);
info.setProgrss(TimeUtils.nowInt());
mission.getActivityMissionMap().put(missionId,info);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
// 打点上报
reportTakeActivityReward(user,newConfig.getExtraReward(),missionId);
return true;
}
@Override
public boolean checkActivityMissionFinishAndTake(int uid, int activityId, ActivityMission activityMission) {
return false;
}
}

View File

@ -1048,4 +1048,26 @@ public class ItemLogic {
}
}
/**
*
* @param user
*/
public void zeroCleanItem(User user){
ItemManager itemManager = user.getItemManager();
Map<Integer, Item> itemMap = new HashMap<>(itemManager.getItemMap());
Map<Integer, SItem> sItemMap = SItem.getsItemMap();
for (Map.Entry<Integer, Item> itemEntry : itemMap.entrySet()) {
SItem sItem = sItemMap.get(itemEntry.getValue().getItemId());
if (sItem == null
|| sItem.getItemType() == GlobalItemType.ONE_RMB_RECHARGE_CARD
|| sItem.getItemType() == GlobalItemType.DAY_TRUE_RECHARGE_JUAN
|| sItem.getItemType() == GlobalItemType.DAY_RMB_CARD
|| sItem.getItemType() == GlobalItemType.DAY_XIAN_RECHARGE_CARD )
{
itemManager.removeItem(itemEntry.getKey());
}
}
}
}

View File

@ -1,6 +1,5 @@
package com.ljsd.jieling.util;
import com.ljsd.GameApplication;
import com.ljsd.jieling.chat.logic.ChatLogic;
import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig;
import com.ljsd.jieling.core.GlobalsDef;
@ -17,7 +16,6 @@ import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.AiWanPlayerInfoUpload;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.activity.event.*;
@ -640,6 +638,13 @@ public class ItemUtil {
case GlobalItemType.TRANSFORMATION_CARD:
case GlobalItemType.HOOK_PROP:
case GlobalItemType.PLAYER_SKIN:
case GlobalItemType.ONE_RMB_RECHARGE_CARD:
case GlobalItemType.TRUE_RECHARGE_JUAN:
case GlobalItemType.RMB_CARD:
case GlobalItemType.XIAN_RECHARGE_CARD:
case GlobalItemType.DAY_TRUE_RECHARGE_JUAN:
case GlobalItemType.DAY_RMB_CARD:
case GlobalItemType.DAY_XIAN_RECHARGE_CARD:
itemType = GlobalItemType.ITEM;
break;
default:
@ -1871,7 +1876,7 @@ public class ItemUtil {
case GlobalItemType.RUNNE:
sourceNum = parseTheValueByPrivilegeMap(user,sourceNum,VipPrivilegeType.ADVENTURE_RUNNE_REWARD);
break;
case GlobalItemType.ONE_RECHARGE_CARD:
case GlobalItemType.ONE_RMB_RECHARGE_CARD:
sourceNum = parseTheValueByPrivilegeMap(user,sourceNum,VipPrivilegeType.CHALLENGE_MAINLINE_ADD_ONE_RECHARGE_NUM);
break;
default:
@ -1883,7 +1888,6 @@ public class ItemUtil {
/**
*
* @param user
* @param reason
* @param itemType
* @param sourceNum
* @return
@ -1896,7 +1900,7 @@ public class ItemUtil {
case GlobalItemType.RUNNE:
sourceNum = parseTheValueByPrivilegeMap(user,sourceNum,VipPrivilegeType.ADVENTURE_RUNNE_REWARD);
break;
case GlobalItemType.ONE_RECHARGE_CARD:
case GlobalItemType.ONE_RMB_RECHARGE_CARD:
sourceNum = parseTheValueByPrivilegeMap(user,sourceNum,VipPrivilegeType.HANGUP_ADD_ONE_RECHARGE_NUM);
break;
default: