天天0.1折活动bug修复
parent
0077a33e52
commit
a94289e86e
|
@ -18,10 +18,7 @@ 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;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author hj
|
||||
|
@ -37,6 +34,7 @@ public class EveryDayDiscountActivity extends AbstractActivity {
|
|||
Poster.getPoster().listenEvent(this, ActivityZeroRefreshEvent.class);
|
||||
Poster.getPoster().listenEvent(this, EveryDayDiscountNumUpdateEvent.class);
|
||||
Poster.getPoster().listenEvent(this, EveryDayDiscountUnlockEvent.class);
|
||||
Poster.getPoster().listenEvent(this, EveryDayDiscountBuyCheckEvent.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -52,127 +50,65 @@ public class EveryDayDiscountActivity extends AbstractActivity {
|
|||
|
||||
@Override
|
||||
public void onEvent(IEvent event) throws Exception {
|
||||
long now = TimeUtils.now();
|
||||
User user = null;
|
||||
|
||||
// 任务完成刷新次数
|
||||
if (event instanceof EveryDayDiscountNumUpdateEvent){
|
||||
EveryDayDiscountNumUpdateEvent event1 = (EveryDayDiscountNumUpdateEvent) event;
|
||||
user = UserManager.getUser(event1.getUserId());
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if (mission == null){
|
||||
return;
|
||||
}
|
||||
ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(countProgress);
|
||||
if (progressInfo == null){
|
||||
progressInfo = new ActivityProgressInfo();
|
||||
}
|
||||
int count = progressInfo.getProgrss();
|
||||
progressInfo.setProgrss(count + event1.getNum());
|
||||
// 道具日志记录
|
||||
ItemLogic.getInstance().addItemLog(new ItemLog(user, 0, BIReason.EVERYDAY_DISCOUNT_GET_REFRESH_COUNT,1578, count, progressInfo.getProgrss()));
|
||||
progressInfo.setState(1);
|
||||
mission.getActivityMissionMap().put(countProgress, progressInfo);
|
||||
}
|
||||
|
||||
// 每日刷新
|
||||
if (event instanceof ActivityZeroRefreshEvent) {
|
||||
ActivityZeroRefreshEvent event1 = (ActivityZeroRefreshEvent) event;
|
||||
user = UserManager.getUser(event1.getUserId());
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.EVERY_DAY_TASK_REFRESH, id);
|
||||
cleanValue(user);
|
||||
}
|
||||
|
||||
// 位置解锁
|
||||
if (event instanceof EveryDayDiscountUnlockEvent) {
|
||||
Map<Integer, SEveryDayGift> giftMap = SEveryDayGift.activitymap.get(id);
|
||||
if (giftMap == null){
|
||||
LOGGER.error("天天0.1折扣活动,活动id未找到对应档位:{},耗时:{}",id,TimeUtils.now()-now);
|
||||
return;
|
||||
}
|
||||
EveryDayDiscountUnlockEvent event1 = (EveryDayDiscountUnlockEvent) event;
|
||||
user = UserManager.getUser(event1.getUserId());
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if (mission == null){
|
||||
return;
|
||||
}
|
||||
for (SEveryDayGift dayGift : giftMap.values()) {
|
||||
int missionId = dayGift.getId();
|
||||
int defaultCount = dayGift.getLimit();
|
||||
ActivityProgressInfo info = mission.getActivityMissionMap().get(missionId);
|
||||
if (info != null){
|
||||
continue;
|
||||
}
|
||||
boolean open = ifOpen(user, missionId);
|
||||
if (!open){
|
||||
continue;
|
||||
}
|
||||
info = new ActivityProgressInfo();
|
||||
info.setProgrss(defaultCount);
|
||||
info.setState(1);
|
||||
mission.getActivityMissionMap().put(missionId, info);
|
||||
// 默认开启次数存储
|
||||
int packId = ToolsUtil.getPackId(missionId);
|
||||
ActivityProgressInfo storage = new ActivityProgressInfo();
|
||||
storage.setProgrss(defaultCount);
|
||||
storage.setState(1);
|
||||
mission.getActivityMissionMap().put(packId, storage);
|
||||
}
|
||||
}
|
||||
|
||||
// 购买礼包
|
||||
// if (event instanceof SuperBoxEvent) {
|
||||
// SuperBoxEvent event1 = (SuperBoxEvent) event;
|
||||
// user = UserManager.getUser(event1.getUserId());
|
||||
// SEveryDayGift dayGift = SEveryDayGift.activitygiftmap.getOrDefault(id, new HashMap<>()).get(event1.getGiftId());
|
||||
// if (dayGift == null){
|
||||
// return;
|
||||
// }
|
||||
// ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
// if (session == null){
|
||||
// LOGGER.error("天天0.1折扣活动,用户未登录,活动id:{},uid:{},耗时:{}",id, user.getId(),TimeUtils.now()-now);
|
||||
// return;
|
||||
// }
|
||||
// takeReward(session, dayGift.getId());
|
||||
// }
|
||||
|
||||
if (user == null) {
|
||||
LOGGER.error("天天0.1折扣活动未知监听退出:{},耗时:{}",id,TimeUtils.now()-now);
|
||||
return;
|
||||
}
|
||||
// 状态推送
|
||||
sendActivityProgress(user, null);
|
||||
LOGGER.info("天天0.1折扣活动:{},耗时:{}",id,TimeUtils.now()-now);
|
||||
finishMissionUpdate(event);
|
||||
// 清零次数
|
||||
cleanValue(event);
|
||||
// 解锁商品位置
|
||||
unlockGoodPosition(event);
|
||||
// 购买检查
|
||||
buyCheckAndUpdate(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断档位是否解锁
|
||||
* 任务完成刷新次数
|
||||
*/
|
||||
public static boolean ifOpen(User user, int id) {
|
||||
SEveryDayGift dayGift = SEveryDayGift.map.get(id);
|
||||
if (dayGift == null){
|
||||
return false;
|
||||
public void finishMissionUpdate(IEvent event) throws Exception {
|
||||
long now = TimeUtils.now();
|
||||
if (!(event instanceof EveryDayDiscountNumUpdateEvent)) {
|
||||
return;
|
||||
}
|
||||
for (int[] ints : dayGift.getCondition()) {
|
||||
if (ints[0] == 1) { // 等级
|
||||
if (user.getPlayerInfoManager().getLevel() < ints[1]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
EveryDayDiscountNumUpdateEvent event1 = (EveryDayDiscountNumUpdateEvent) event;
|
||||
User user = UserManager.getUser(event1.getUserId());
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if (mission == null){
|
||||
LOGGER.error("天天0.1折扣活动,任务完成刷新抽奖次数退出,玩家任务信息为空:{},uid:{},耗时:{}",id, user.getId(), TimeUtils.now()-now);
|
||||
return;
|
||||
}
|
||||
return true;
|
||||
ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(countProgress);
|
||||
if (progressInfo == null){
|
||||
progressInfo = new ActivityProgressInfo();
|
||||
}
|
||||
int count = progressInfo.getProgrss();
|
||||
progressInfo.setProgrss(count + event1.getNum());
|
||||
// 道具日志记录
|
||||
ItemLogic.getInstance().addItemLog(new ItemLog(user, 0, BIReason.EVERYDAY_DISCOUNT_GET_REFRESH_COUNT,1578, count, progressInfo.getProgrss()));
|
||||
progressInfo.setState(1);
|
||||
mission.getActivityMissionMap().put(countProgress, progressInfo);
|
||||
|
||||
sendActivityProgress(user, null);
|
||||
LOGGER.info("天天0.1折扣活动,任务完成刷新抽奖次数:{},耗时:{}",id,TimeUtils.now()-now);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清零次数, 并保留默认次数
|
||||
*/
|
||||
public void cleanValue(User user){
|
||||
public void cleanValue(IEvent event) throws Exception {
|
||||
long now = TimeUtils.now();
|
||||
if (!(event instanceof ActivityZeroRefreshEvent)) {
|
||||
return;
|
||||
}
|
||||
ActivityZeroRefreshEvent event1 = (ActivityZeroRefreshEvent) event;
|
||||
User user = UserManager.getUser(event1.getUserId());
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.EVERY_DAY_TASK_REFRESH, id);
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if (mission == null){
|
||||
LOGGER.error("天天0.1折扣活动,清零次数退出,玩家任务信息为空:{},uid:{},耗时:{}",id, user.getId(), TimeUtils.now()-now);
|
||||
return;
|
||||
}
|
||||
Map<Integer, SEveryDayGift> giftMap = SEveryDayGift.activitymap.get(id);
|
||||
if (giftMap == null){
|
||||
LOGGER.error("天天0.1折扣活动,清零次数退出,天天礼包表无活动信息:{},耗时:{}",id,TimeUtils.now()-now);
|
||||
return;
|
||||
}
|
||||
for (SEveryDayGift dayGift : giftMap.values()) {
|
||||
|
@ -192,6 +128,131 @@ public class EveryDayDiscountActivity extends AbstractActivity {
|
|||
progressInfo.setProgrss(count);
|
||||
mission.getActivityMissionMap().put(missionId, progressInfo);
|
||||
}
|
||||
sendActivityProgress(user, null);
|
||||
LOGGER.info("天天0.1折扣活动,清零次数:{},耗时:{}",id,TimeUtils.now()-now);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解锁商品位置
|
||||
*/
|
||||
public void unlockGoodPosition(IEvent event) throws Exception {
|
||||
long now = TimeUtils.now();
|
||||
if (!(event instanceof EveryDayDiscountUnlockEvent)) {
|
||||
return;
|
||||
}
|
||||
Map<Integer, SEveryDayGift> giftMap = SEveryDayGift.activitymap.get(id);
|
||||
if (giftMap == null){
|
||||
LOGGER.error("天天0.1折扣活动,解锁商品位置退出,活动id未找到对应档位:{},耗时:{}",id,TimeUtils.now()-now);
|
||||
return;
|
||||
}
|
||||
EveryDayDiscountUnlockEvent event1 = (EveryDayDiscountUnlockEvent) event;
|
||||
User user = UserManager.getUser(event1.getUserId());
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if (mission == null){
|
||||
LOGGER.error("天天0.1折扣活动,解锁商品位置退出,玩家任务信息为空:{},uid:{},耗时:{}",id, user.getId(), TimeUtils.now()-now);
|
||||
return;
|
||||
}
|
||||
for (SEveryDayGift dayGift : giftMap.values()) {
|
||||
int missionId = dayGift.getId();
|
||||
int defaultCount = dayGift.getLimit();
|
||||
ActivityProgressInfo info = mission.getActivityMissionMap().get(missionId);
|
||||
if (info != null){
|
||||
continue;
|
||||
}
|
||||
boolean open = ifOpen(user, missionId);
|
||||
if (!open){
|
||||
continue;
|
||||
}
|
||||
info = new ActivityProgressInfo();
|
||||
info.setProgrss(defaultCount);
|
||||
info.setState(1);
|
||||
mission.getActivityMissionMap().put(missionId, info);
|
||||
// 默认开启次数存储
|
||||
int packId = ToolsUtil.getPackId(missionId);
|
||||
ActivityProgressInfo storage = new ActivityProgressInfo();
|
||||
storage.setProgrss(defaultCount);
|
||||
storage.setState(1);
|
||||
mission.getActivityMissionMap().put(packId, storage);
|
||||
}
|
||||
sendActivityProgress(user, null);
|
||||
LOGGER.info("天天0.1折扣活动,解锁商品位置:{},耗时:{}",id,TimeUtils.now()-now);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查验购买次数
|
||||
*/
|
||||
public void buyCheckAndUpdate(IEvent event) throws Exception {
|
||||
long now = TimeUtils.now();
|
||||
if (!(event instanceof EveryDayDiscountBuyCheckEvent)) {
|
||||
return;
|
||||
}
|
||||
EveryDayDiscountBuyCheckEvent event1 = (EveryDayDiscountBuyCheckEvent) event;
|
||||
User user = UserManager.getUser(event1.getUserId());
|
||||
int giftId = event1.getGiftId();
|
||||
int updateState = event1.getUpdateState();
|
||||
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if (mission == null){
|
||||
LOGGER.error("天天0.1折扣活动,查验购买次数退出,玩家没有活动信息,uid:{},活动id:{},耗时:{}",user.getId(), id,TimeUtils.now()-now);
|
||||
throw new ErrorTableException(182);// 活动不存在
|
||||
}
|
||||
SEveryDayGift dayGift = SEveryDayGift.activitygiftmap.getOrDefault(id, new HashMap<>()).get(giftId);
|
||||
if (dayGift == null){
|
||||
LOGGER.error("天天0.1折扣活动,查验购买次数退出,EveryDayGift没有活动信息,活动id:{},耗时:{}", id,TimeUtils.now()-now);
|
||||
throw new ErrorTableException(183);// 档位不存在
|
||||
}
|
||||
int missionId = dayGift.getId();
|
||||
ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId);
|
||||
if (progressInfo == null){
|
||||
LOGGER.error("天天0.1折扣活动,查验购买次数退出,没有商品信息,uid:{},活动id:{},商品id:{},耗时:{}",user.getId(), id, missionId, TimeUtils.now()-now);
|
||||
throw new ErrorTableException(183);// 档位不存在
|
||||
}
|
||||
if (progressInfo.getState() != 1){
|
||||
LOGGER.error("天天0.1折扣活动,查验购买次数退出,商品为解锁,uid:{},活动id:{},商品id:{},耗时:{}",user.getId(), id, missionId, TimeUtils.now()-now);
|
||||
throw new ErrorTableException(184);// 档位未解锁
|
||||
}
|
||||
if (progressInfo.getProgrss() <= 0){
|
||||
LOGGER.error("天天0.1折扣活动,查验购买次数退出,商品够吗次数不足,uid:{},活动id:{},商品id:{},耗时:{}",user.getId(), id, missionId, TimeUtils.now()-now);
|
||||
throw new ErrorTableException(185);// 购买次数不足
|
||||
}
|
||||
// 消耗
|
||||
if (updateState == 1){
|
||||
LOGGER.error("天天0.1折扣活动,查验购买次数消耗,uid:{},活动id:{},商品id:{}",user.getId(), id, missionId);
|
||||
// 消耗默认次数
|
||||
if (progressInfo.getProgrss() == dayGift.getLimit()){
|
||||
int packId = ToolsUtil.getPackId(missionId);
|
||||
ActivityProgressInfo packInfo = mission.getActivityMissionMap().get(packId);
|
||||
if (packInfo != null && packInfo.getProgrss() > 0){
|
||||
packInfo.setProgrss(packInfo.getProgrss() - 1);
|
||||
mission.getActivityMissionMap().put(packId,packInfo);
|
||||
}
|
||||
}
|
||||
// 道具日志记录
|
||||
ItemLogic.getInstance().addItemLog(new ItemLog(user, 1, BIReason.EVERYDAY_DISCOUNT_COST_MISSION_COUNT,dayGift.getItemID(), progressInfo.getProgrss(), progressInfo.getProgrss()-1));
|
||||
progressInfo.setProgrss(progressInfo.getProgrss() - 1);
|
||||
// 更新数据库
|
||||
mission.getActivityMissionMap().put(missionId,progressInfo);
|
||||
sendActivityProgress(user, null);
|
||||
}
|
||||
LOGGER.info("天天0.1折扣活动,查验购买次数:{},耗时:{}",id,TimeUtils.now()-now);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断档位是否解锁
|
||||
*/
|
||||
public static boolean ifOpen(User user, int id) {
|
||||
SEveryDayGift dayGift = SEveryDayGift.map.get(id);
|
||||
if (dayGift == null){
|
||||
return false;
|
||||
}
|
||||
for (int[] ints : dayGift.getCondition()) {
|
||||
if (ints[0] == 1) { // 等级
|
||||
if (user.getPlayerInfoManager().getLevel() < ints[1]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -292,33 +353,6 @@ public class EveryDayDiscountActivity extends AbstractActivity {
|
|||
progressInfo.setProgrss(progressInfo.getProgrss() - 1);
|
||||
mission.getActivityMissionMap().put(missionId, progressInfo);
|
||||
}
|
||||
// 其他档位id,消耗次数
|
||||
else {
|
||||
SEveryDayGift dayGift = SEveryDayGift.map.get(missionId);
|
||||
if (dayGift == null){
|
||||
throw new ErrorTableException(183);// 档位不存在
|
||||
}
|
||||
if (progressInfo.getState() != 1){
|
||||
throw new ErrorTableException(184);// 档位未解锁
|
||||
}
|
||||
if (progressInfo.getProgrss() <= 0){
|
||||
throw new ErrorTableException(185);// 购买次数不足
|
||||
}
|
||||
// 消耗默认次数
|
||||
if (progressInfo.getProgrss() == dayGift.getLimit()){
|
||||
int packId = ToolsUtil.getPackId(missionId);
|
||||
ActivityProgressInfo packInfo = mission.getActivityMissionMap().get(packId);
|
||||
if (packInfo != null && packInfo.getProgrss() > 0){
|
||||
packInfo.setProgrss(packInfo.getProgrss() - 1);
|
||||
mission.getActivityMissionMap().put(packId,packInfo);
|
||||
}
|
||||
}
|
||||
// 道具日志记录
|
||||
ItemLogic.getInstance().addItemLog(new ItemLog(user, 1, BIReason.EVERYDAY_DISCOUNT_COST_MISSION_COUNT,dayGift.getItemID(), progressInfo.getProgrss(), progressInfo.getProgrss()-1));
|
||||
progressInfo.setProgrss(progressInfo.getProgrss() - 1);
|
||||
// 更新数据库
|
||||
mission.getActivityMissionMap().put(missionId,progressInfo);
|
||||
}
|
||||
// 协议返回
|
||||
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().build();
|
||||
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package com.ljsd.jieling.logic.activity.event;
|
||||
|
||||
/**
|
||||
* @Author hj
|
||||
* @Date 2021/5/26 11:05
|
||||
* @Description: 每日折扣购买检验
|
||||
* @Version 1.0
|
||||
*/
|
||||
public class EveryDayDiscountBuyCheckEvent implements IEvent {
|
||||
|
||||
private int userId;//uid
|
||||
private int giftId;//礼包id
|
||||
private int updateState;//0 不消耗 1消耗
|
||||
|
||||
public EveryDayDiscountBuyCheckEvent() {
|
||||
}
|
||||
|
||||
public EveryDayDiscountBuyCheckEvent(int userId, int giftId, int updateState) {
|
||||
this.userId = userId;
|
||||
this.giftId = giftId;
|
||||
this.updateState = updateState;
|
||||
}
|
||||
|
||||
public int getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public int getGiftId() {
|
||||
return giftId;
|
||||
}
|
||||
|
||||
public int getUpdateState() {
|
||||
return updateState;
|
||||
}
|
||||
}
|
|
@ -188,6 +188,8 @@ public class BuyGoodsNewLogic {
|
|||
private static void rechargeHandler(User user, String orderId, int giftId, int amount, List<int[][]> list) throws Exception {
|
||||
// 其他礼包活动
|
||||
Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),giftId,1,1));
|
||||
// 天天零点1折购买消耗
|
||||
Poster.getPoster().dispatchEvent(new EveryDayDiscountBuyCheckEvent(user.getId(),giftId,1));
|
||||
|
||||
SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(giftId);
|
||||
// 测试购买 || 扶持购买
|
||||
|
@ -1062,9 +1064,6 @@ public class BuyGoodsNewLogic {
|
|||
|
||||
/**
|
||||
* 礼包购买判断
|
||||
* @param session
|
||||
* @param goodsId
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void checkBuyGoods(ISession session,int goodsId) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
|
@ -1085,6 +1084,7 @@ public class BuyGoodsNewLogic {
|
|||
if(config.getPrice() > 0){
|
||||
order = KeyGenUtils.produceIdByModule(UUIDEnum.ORDER, user.getId());
|
||||
}
|
||||
|
||||
PlayerInfoProto.CheckBuyGoodsResponse response = PlayerInfoProto.CheckBuyGoodsResponse.newBuilder().setOrderId(order).build();
|
||||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.CHECK_BUY_GOODS_RESPONSE_VALUE,response);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue