礼包错误数据处理

master_ob2
PC-202302260912\Administrator 2023-08-28 17:42:11 +08:00
parent 0ec3fe16b6
commit 513b3b68e1
8 changed files with 38 additions and 35 deletions

View File

@ -14,8 +14,9 @@ import org.springframework.data.convert.ReadingConverter;
public class MongoRechargeConverter implements Converter<BasicDBObject, AbstractWelfareBag> {
@Override
public AbstractWelfareBag convert(BasicDBObject source) {
Object modId = source.getOrDefault("modId", 0);
Gson gson = new Gson();
SRechargeCommodityNewConfig config = STableManager.getConfig(SRechargeCommodityNewConfig.class).get(source.getInt("modId"));
SRechargeCommodityNewConfig config = STableManager.getConfig(SRechargeCommodityNewConfig.class).get((int)modId);
Class<? extends AbstractWelfareBag> target = AbstractWelfareBag.class;
if (config != null){
if(config.getOtype() == RechargeType.timeLimit.getType()){

View File

@ -100,8 +100,8 @@ public class GuildChallengeLogic {
int isRefresh = 0 ;
//先清除特权
if(guildInfo.getCurrBossId()!=0&&guildInfo.getCurrBossId()!= guildMyInfo.getLastMonsterId()&& guildMyInfo.getLastMonsterId()!=0){
if(!guildMyInfo.getRefreshedBoss().contains(guildMyInfo.getLastMonsterId())&&guildMyInfo.getGuildChallengeDamage()!=0){
if(guildInfo.getCurrBossId()!=0 && guildMyInfo.getLastMonsterId()!=0 && guildInfo.getCurrBossId()!=guildMyInfo.getLastMonsterId()){
if(!guildMyInfo.getRefreshedBoss().contains(guildMyInfo.getLastMonsterId()) && guildMyInfo.getGuildChallengeDamage()!=0){
refreshGuildChallengeStore(user, config.getPrivilege());
guildMyInfo.addRefreshedBoss(guildMyInfo.getLastMonsterId());
isRefresh = 1;
@ -137,7 +137,6 @@ public class GuildChallengeLogic {
/**
*
* @param session
*/
public void doGuildChallenge(ISession session,int bossId,int type,MessageTypeProto.MessageType messageType) throws Exception {
int uid = session.getUid();
@ -146,14 +145,11 @@ public class GuildChallengeLogic {
if(guildId==0){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
// 挑战加锁
if(!lockMap.containsKey(guildId)){
lockMap.put(guildId,new Object());
}
String error = "";
/**
*
*/
CommonProto.Drop.Builder drop = null;
CommonProto.FightData fightData = null;
int kill = 0;
@ -287,6 +283,10 @@ public class GuildChallengeLogic {
if(!OnlineUserManager.sessionMap.containsKey(sendUid)){
continue;
}
//如果击败的是最后一关 不需要刷新
if(guildInfo.getBossHpRemain()==-1){
continue;
}
AyyncWorker worker = new AyyncWorker(UserManager.getUser(sendUid),false,(user1)->{
GuildMyInfo guildMyInfo = user1.getGuildMyInfo();
if(guildMyInfo.getGuildChallengeDamage()==0){
@ -295,13 +295,10 @@ public class GuildChallengeLogic {
if(guildMyInfo.getRefreshedBoss().contains(bossId)) {
return;
}
//如果击败的是最后一关 不需要刷新
if(guildInfo.getBossHpRemain()!=-1){
refreshGuildChallengeStore(user1, config.getPrivilege());
guildMyInfo.addRefreshedBoss(bossId);
guildMyInfo.setLastMonsterId(bossId+1);
guildMyInfo.setGuildChallengeDamage(0);
}
refreshGuildChallengeStore(user1, config.getPrivilege());
guildMyInfo.addRefreshedBoss(bossId);
guildMyInfo.setLastMonsterId(bossId+1);
guildMyInfo.setGuildChallengeDamage(0);
});
ProtocolsManager.getInstance().updateAyncWorker(worker);
}

View File

@ -4,6 +4,8 @@ import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import config.SRechargeCommodityNewConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import util.TimeUtils;
import java.util.Map;
@ -15,27 +17,26 @@ import java.util.Map;
*/
public abstract class AbstractRechargeHandler implements RechargeHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractRechargeHandler.class);
@Override
public boolean refreshStatus(User user, int rechargeId){
//判断刷新时间
long now = TimeUtils.now();
AbstractWelfareBag bag = getBag(user, rechargeId);
if (bag == null){
LOGGER.error("查询礼包id为空错误数据删除礼包{}",rechargeId);
user.getPlayerInfoManager().getNewRechargeInfo().removeBag(rechargeId);
return false;
}
long now = TimeUtils.now();
if(bag.getRefreshTime() != 0 && bag.getRefreshTime() < now){
bag.refresh();
return true;
}
return false;
return true;
}
/**
*
* @param result
* @param user
* @param rechargeId
* @return
*/
public boolean refreshTime8(boolean result, User user, int rechargeId){
AbstractWelfareBag bag = getBag(user, rechargeId);

View File

@ -20,8 +20,9 @@ public class GmSingleHandler extends AbstractRechargeHandler {
@Override
public boolean refreshStatus(User user, int rechargeId){
boolean result = false;
AbstractWelfareBag bag = getRechargeMap(user).get(rechargeId);
AbstractWelfareBag bag = getBag(user, rechargeId);
if (bag == null){
user.getPlayerInfoManager().getNewRechargeInfo().removeGmSingle(rechargeId);
return false;
}
GiftMission mission = GmSingleActivityLogic.getInstance().findGiftMission(rechargeId);

View File

@ -18,6 +18,9 @@ public class PerpetualHandler extends AbstractRechargeHandler{
@Override
public boolean refreshStatus(User user, int rechargeId){
boolean result = super.refreshStatus(user, rechargeId);
if (!result){
return false;
}
AbstractWelfareBag bag = getBag(user, rechargeId);
// 礼包开启
if(bag.isOpen()){

View File

@ -4,8 +4,6 @@ import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PushWelfareBag;
import config.SRechargeCommodityNewConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import util.TimeUtils;
import java.util.Map;
@ -17,26 +15,25 @@ import java.util.Map;
*/
public class PushHandler extends AbstractRechargeHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(PushHandler.class);
@Override
public boolean refreshStatus(User user, int rechargeId){
boolean result = super.refreshStatus(user, rechargeId);
if (!result){
return false;
}
long now = TimeUtils.now();
AbstractWelfareBag bag = getBag(user, rechargeId);
if(bag.isOpen()){
long now = TimeUtils.now();
// 结束时间到
if(bag.getEndTime() != 0 && now > bag.getEndTime()){
bag.setOpen(false);
bag.addBuyTimes(1);
result = true;
}
// 月礼包 特殊处理,需要每日都刷新
result = refreshTime8(result, user, rechargeId);
}
else {
user.getPlayerInfoManager().getNewRechargeInfo().removePush(bag.getModId());
result = true;
}
return result;
}

View File

@ -19,15 +19,17 @@ public class ReceiveHandler extends AbstractRechargeHandler {
@Override
public boolean refreshStatus(User user, int rechargeId){
boolean result = super.refreshStatus(user, rechargeId);
AbstractWelfareBag bag = getBag(user, rechargeId);
if (!result){
return false;
}
long now = TimeUtils.now();
AbstractWelfareBag bag = getBag(user, rechargeId);
// 礼包开启
if(bag.isOpen()){
// 结束时间到
if(bag.getEndTime() != 0 && now > bag.getEndTime()){
bag.setOpen(false);
bag.resetBuyTimes();
result = true;
}
// 月礼包 特殊处理,需要每日都刷新
result = refreshTime8(result, user, rechargeId);

View File

@ -23,15 +23,17 @@ public class TimeLimitHandler extends AbstractRechargeHandler{
@Override
public boolean refreshStatus(User user, int rechargeId){
boolean result = super.refreshStatus(user, rechargeId);
//判断刷新时间
if (!result){
return false;
}
long now = TimeUtils.now();
AbstractWelfareBag bag = getBag(user, rechargeId);
//判断刷新时间
if(bag.isOpen()){
// 结束时间到
if(bag.getEndTime() != 0 && now > bag.getEndTime()){
bag.setOpen(false);
bag.resetBuyTimes();
result = true;
}
// 月礼包 特殊处理,需要每日都刷新
return refreshTime8(result, user, rechargeId);
@ -45,7 +47,6 @@ public class TimeLimitHandler extends AbstractRechargeHandler{
bag.setStartTime(time[0]);
bag.setEndTime(time[1]);
bag.setOpen(true);
result = true;
}
}
return result;