天天0.1折活动bug修复

grimm 2024-06-10 18:35:24 +08:00
parent a94289e86e
commit 10e3680e1e
4 changed files with 78 additions and 41 deletions

View File

@ -7,6 +7,7 @@ import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.exception.ErrorTableException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.GlobalItemType;
import com.ljsd.jieling.handler.activity.BlessInfoConfig;
@ -23,6 +24,8 @@ import com.ljsd.jieling.logic.dao.SecretBoxManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.item.ItemLog;
import com.ljsd.jieling.logic.item.ItemLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.MissionType;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
@ -2004,4 +2007,67 @@ public class ActivityLogic implements IEventHandler{
return result;
}
/**
* 0.1
*/
public void EveryDayDiscountBuyCheck(User user, int goodId, int update) throws ErrorTableException {
long now = TimeUtils.now();
Map<Integer, SEveryDayGift> giftMap = SEveryDayGift.giftactivitymap.get(goodId);
if (giftMap == null || giftMap.isEmpty()){
LOGGER.error("天天0.1折扣活动查验购买次数退出EveryDayGift没有活动信息礼包id{},耗时:{}", goodId, TimeUtils.now()-now);
throw new ErrorTableException(183);// 档位不存在
}
for (Map.Entry<Integer, SEveryDayGift> entry : giftMap.entrySet()) {
Integer activityId = entry.getKey();
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(activityId);
if (mission == null){
LOGGER.error("天天0.1折扣活动查验购买次数退出玩家没有活动信息uid{}活动id{},耗时:{}",user.getId(), activityId,TimeUtils.now()-now);
continue;
}
EveryDayDiscountBuyCheckAndUpdate(user, activityId, entry.getValue().getId(), update);
break;
}
}
/**
* 0.1
*/
public void EveryDayDiscountBuyCheckAndUpdate(User user, int activityId, int missionId, int update) throws ErrorTableException {
long now = TimeUtils.now();
SEveryDayGift dayGift = SEveryDayGift.map.get(missionId);
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(activityId);
ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId);
if (progressInfo == null){
LOGGER.error("天天0.1折扣活动查验购买次数退出没有商品信息uid{}活动id{}商品id{},耗时:{}",user.getId(), activityId, missionId, TimeUtils.now()-now);
throw new ErrorTableException(183);// 档位不存在
}
if (progressInfo.getState() != 1){
LOGGER.error("天天0.1折扣活动查验购买次数退出商品为解锁uid{}活动id{}商品id{},耗时:{}",user.getId(), activityId, missionId, TimeUtils.now()-now);
throw new ErrorTableException(184);// 档位未解锁
}
if (progressInfo.getProgrss() <= 0){
LOGGER.error("天天0.1折扣活动查验购买次数退出商品够吗次数不足uid{}活动id{}商品id{},耗时:{}",user.getId(), activityId, missionId, TimeUtils.now()-now);
throw new ErrorTableException(185);// 购买次数不足
}
// 消耗
if (update == 1){
LOGGER.error("天天0.1折扣活动查验购买次数消耗uid{}活动id{}商品id{}",user.getId(), activityId, 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);
}
}
}

View File

@ -190,50 +190,13 @@ public class EveryDayDiscountActivity extends AbstractActivity {
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.error("天天0.1折扣活动查验购买次数退出EveryDayGift未找到对应档位{}礼包id{},耗时:{}",id,giftId,TimeUtils.now()-now);
return;
}
ActivityLogic.getInstance().EveryDayDiscountBuyCheckAndUpdate(user,id,dayGift.getId(),updateState);
sendActivityProgress(user, null);
LOGGER.info("天天0.1折扣活动,查验购买次数:{},耗时:{}",id,TimeUtils.now()-now);
}

View File

@ -1079,6 +1079,9 @@ public class BuyGoodsNewLogic {
throw new ErrorTableException(104,"礼包已购买");
}
// 天天礼包活动查验购买
ActivityLogic.getInstance().EveryDayDiscountBuyCheck(user, goodsId, 0);
//生成cp订单号
String order = "0";
if(config.getPrice() > 0){

View File

@ -31,6 +31,8 @@ public class SEveryDayGift implements BaseConfig {
public static Map<Integer, Map<Integer, SEveryDayGift>> activitygiftmap = new HashMap<>();
public static Map<Integer, Map<Integer, SEveryDayGift>> giftactivitymap = new HashMap<>();
@Override
public void init() throws Exception {
map = STableManager.getConfig(SEveryDayGift.class);
@ -40,6 +42,9 @@ public class SEveryDayGift implements BaseConfig {
activitygiftmap.putIfAbsent(value.getGlobalActivity(), new HashMap<>());
activitygiftmap.get(value.getGlobalActivity()).put(value.getRechargeID(), value);
giftactivitymap.putIfAbsent(value.getRechargeID(), new HashMap<>());
giftactivitymap.get(value.getRechargeID()).put(value.getGlobalActivity(), value);
}
}