package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig; import com.ljsd.jieling.logic.store.bean.*; import config.SRechargeCommodityConfig; import io.netty.util.internal.ConcurrentSet; import manager.STableManager; import org.springframework.data.annotation.Transient; import util.MathUtils; import java.util.*; public class RechargeInfo extends MongoBase{ private double saveAmt;//累计充值 private int soulCrystalAmt;//累计充值购买魂晶 private double monthSaveAmt ; //月卡累计总额 monthRr private double smonthSaveAmt ; //豪华月卡累计总额 monthRr private int isFirst; private long createTime; private long firstTime;//首冲时间 private int isDayFirst; private double maxSingleR;//单次最大充值金额 private int pushpackCoun; @Transient private volatile Set cacheSendedIds = new ConcurrentSet<>(); private Map levelBagMap = new HashMap<>();//等级开启 private Map levelAndMoneyBagMap = new HashMap<>();//等级礼包开启 private Map refreshBagMap = new HashMap<>(); private Map buyGoodsTimes = new HashMap<>(); private Map goodseDurationMap = new HashMap<>(); private Map goodseSendDailyMap = new HashMap<>(); private Map pushTimeMap = new HashMap<>(); //特殊类型控制触发开启的商品表 如五星妖灵师类型5 private Map typeBagMap = new HashMap<>(); //动态商品可买数量 private Map dyGoodsCanBuyTimes = new HashMap<>(); private Map perpetualMap = new HashMap<>();//永久礼包 private Map timeLimitMap = new HashMap<>();//限时刷新礼包 private Map receiveMap = new HashMap<>();//限时刷新礼包 private Map pushMap = new HashMap<>();//推送礼包 private long lostTime; //上次记录时间 private int mainLineLost; //记录主线失败次数 private int towerLost; //记录爬塔失败次数 private long nextPushTime; //上次推送时间 private long lastRefreshTime; public static int FIVESTARLIMIT = 999;//临时五星成长礼每天最多两次 ---2022.06.17不做限制了---- private Map tempLimitMap = new HashMap<>();//五星成长礼每天购买次数 private Map limitMap = new HashMap<>();//推送次数 private Map dailyLimitMap = new HashMap<>();//每日推送次数 private long clubGiftBuyTime = 0;//俱乐部特权礼包购买激活时间 private int clubGiftTaskRewardTimes = 0;//俱乐部特权礼包发奖次数 private long voucherGiftBuyTime = 0;//现金券特权礼包购买激活时间 private int voucherGiftTaskRewardTimes = 0;//现金券特权礼包发奖次数 @Transient private Map cacheSendedTypes = new HashMap<>(); public RechargeInfo(){ } public boolean addNewSendId(int id){ cacheSendedIds.remove(-id); return cacheSendedIds.add(id); } public void clearCacheSendId(){ cacheSendedIds.clear(); } public void setRefreshBagMap(Map refreshBagMap) { this.refreshBagMap = refreshBagMap; updateString("refreshBagMap", refreshBagMap); } //检测商品是否过期 public Set checkIsGoodsTypeOverTime(){ int now = (int)(System.currentTimeMillis()/1000); Set removeGoodsType = new HashSet<>(); Iterator> iterator = goodseDurationMap.entrySet().iterator(); while (iterator.hasNext()){ Map.Entry next = iterator.next(); Integer key = next.getKey(); Integer value = next.getValue(); if(now> value){ removeString(getMongoKey()+".goodseDurationMap." + key); iterator.remove(); removeGoodsType.add(key); if(goodseSendDailyMap.containsKey(key)){ removeString(getMongoKey()+".goodseSendDailyMap." + key); goodseSendDailyMap.remove(key); } } } return removeGoodsType; } public boolean checkOneGoodsIsOverTimeByPrivilege(int privilageId){ for(Map.Entry item: goodseDurationMap.entrySet()){ SRechargeCommodityConfig sRechargeCommodityConfig = SRechargeCommodityConfig.rechargeCommodityConfigMap.get(item.getKey()); int[] openPrivilege = sRechargeCommodityConfig.getOpenPrivilege(); for(int privilege : openPrivilege){ if(privilege == privilageId){ if(System.currentTimeMillis()/1000 <= item.getValue()){ return true; } break; } } } return false; } public void setSaveAmt(double saveAmt){ if(this.saveAmt == 0){ createTime = System.currentTimeMillis(); updateString("createTime",createTime); } updateString("saveAmt",saveAmt); this.saveAmt = saveAmt; } public void addAmt(double amt) { this.saveAmt = MathUtils.doubleAdd(this.saveAmt, amt); updateString("saveAmt", this.saveAmt); } public void setFirst(int first) { updateString("isFirst",first); isFirst = first; } public void setDailyFirst(int first) { updateString("isDayFirst",first); isDayFirst = first; } public void setCreateTime(long createTime) { updateString("createTime",createTime); this.createTime = createTime; } public void setLevelBagMap(Map levelBagMap) { updateString("levelBagMap",levelBagMap); this.levelBagMap = levelBagMap; } public void setBuyGoodsTimes(Map buyGoodsTimes) { updateString("buyGoodsTimes",buyGoodsTimes); this.buyGoodsTimes = buyGoodsTimes; } public void updateBuyGoodsTimes(int goodsId,int times) { updateString("buyGoodsTimes."+goodsId,times); this.buyGoodsTimes.put(goodsId,times); cacheSendedIds.remove(goodsId); } public void updateGoodsTypeDuration(int goodsId,int durTime) { updateString("goodseDurationMap." + goodsId,durTime); this.goodseDurationMap.put(goodsId,durTime); } public double getSaveAmt() { return saveAmt; } public long getCreateTime() { return createTime; } public Map getLevelBagMap() { return levelBagMap; } public Map getBuyGoodsTimes() { return buyGoodsTimes; } public int getIsFirst() { return isFirst; } public int getIsDayFirst() { return isDayFirst; } public Map getGoodsDurationMap() { return goodseDurationMap; } public Map getGoodseSendDailyMap() { return goodseSendDailyMap; } public void updateGoodsSendTime(int goodsType,int sendTime) { updateString("goodseSendDailyMap." + goodsType,sendTime); this.goodseSendDailyMap.put(goodsType,sendTime); } // public int getSoulCrystalAmt() { // return soulCrystalAmt; // } // // public void addSoulCrystalAmt(int soulCrystalAmt) { // this.soulCrystalAmt += soulCrystalAmt; // updateString("soulCrystalAmt",soulCrystalAmt); // } public Map getTypeBagMap() { return typeBagMap; } public void addTypeBagMap(Integer type, Long createTime) { this.typeBagMap.put(type, createTime); updateString("typeBagMap",typeBagMap); } public void removeTypeBagMap(Integer type) { this.typeBagMap.remove(type); updateString("typeBagMap",typeBagMap); } public Map getCacheSendedTypes() { return cacheSendedTypes; } public void setCacheSendedTypes(Map cacheSendedTypes) { this.cacheSendedTypes = cacheSendedTypes; } public Map getDyGoodsCanBuyTimes() { return dyGoodsCanBuyTimes; } public void addDyGoodsCanBuyTimes(Integer type) { this.dyGoodsCanBuyTimes.put(type,this.dyGoodsCanBuyTimes.getOrDefault(type,0)+1 ); updateString("dyGoodsCanBuyTimes",dyGoodsCanBuyTimes); } public void putDyGoodsCanBuyTimes(Integer type,Integer value) { this.dyGoodsCanBuyTimes.put(type,value ); cacheSendedIds.remove(type); updateString("dyGoodsCanBuyTimes",dyGoodsCanBuyTimes); } public void removeDyGoodsCanBuyTimes(Integer type) { this.dyGoodsCanBuyTimes.remove(type); updateString("dyGoodsCanBuyTimes",dyGoodsCanBuyTimes); } public void setDyGoodsCanBuyTimes(Map dyGoodsCanBuyTimes) { updateString("dyGoodsCanBuyTimes",dyGoodsCanBuyTimes); this.dyGoodsCanBuyTimes = dyGoodsCanBuyTimes; } public Map getRefreshBagMap() { return refreshBagMap; } public void updateRefreshMapByKey(int key,Long time){ refreshBagMap.put(key,time); updateString("refreshBagMap", refreshBagMap); } public double getMonthSaveAmt() { return monthSaveAmt; } public void setMonthSaveAmt(double monthSaveAmt) { this.monthSaveAmt = monthSaveAmt; updateString("monthSaveAmt",monthSaveAmt); } public double getSmonthSaveAmt() { return smonthSaveAmt; } public void setSmonthSaveAmt(double smonthSaveAmt) { this.smonthSaveAmt = smonthSaveAmt; updateString("smonthSaveAmt",smonthSaveAmt); } public Map getLevelAndMoneyBagMap() { return levelAndMoneyBagMap; } public void putLevelAndMoneyBagMap(Integer type,Long value) { this.levelAndMoneyBagMap.put(type,value ); cacheSendedIds.remove(type); updateString("levelAndMoneyBagMap",levelAndMoneyBagMap); } public void removeLevelAndMoneyBagMap(Integer type) { this.levelAndMoneyBagMap.remove(type); cacheSendedIds.remove(type); updateString("levelAndMoneyBagMap",levelAndMoneyBagMap); } public List getTimeLimitBagList(){ List list = new ArrayList<>(); for(AbstractWelfareBag bag : timeLimitMap.values()){ if(bag.isOpen() && bag.getEndTime() > 0){ list.add(bag); } } for(AbstractWelfareBag bag : receiveMap.values()){ bag = (ReceiveWelfareBag)bag; if(((ReceiveWelfareBag) bag).isBought()){ list.add(bag); } } for(AbstractWelfareBag bag : pushMap.values()){ if(bag.isOpen() && bag.getEndTime() > 0){ list.add(bag); } } return list; } public List getPushList(){ List list = new ArrayList<>(); for(AbstractWelfareBag bag : pushMap.values()){ if(bag.isOpen()){ list.add(bag.getModId()); } } return list; } public long getFirstTime() { return firstTime; } public void setFirstTime(long firstTime) { this.firstTime = firstTime; updateString("firstTime",firstTime); } public void setIsDayFirst(int isDayFirst) { this.isDayFirst = isDayFirst; updateString("isDayFirst",isDayFirst); } public Map getPerpetualMap() { return perpetualMap; } public Map getTimeLimitMap() { return timeLimitMap; } public Map getReceiveMap() { return receiveMap; } public Map getPushMap() { return pushMap; } public void addPerpetual(PerpetualWelfareBag bag){ perpetualMap.put(bag.getModId(),bag); bag.init(this.getRootId(),getMongoKey() + ".perpetualMap." + bag.getModId()); updateString("perpetualMap."+bag.getModId(),bag); } public void addTimeLimit(TimeLimitWelfareBag bag){ timeLimitMap.put(bag.getModId(),bag); bag.init(this.getRootId(),getMongoKey() + ".timeLimitMap." + bag.getModId()); updateString("timeLimitMap."+bag.getModId(),bag); } public void addReceive(ReceiveWelfareBag bag){ receiveMap.put(bag.getModId(),bag); bag.init(this.getRootId(),getMongoKey() + ".receiveMap." + bag.getModId()); updateString("receiveMap."+bag.getModId(),bag); } public void addPush(PushWelfareBag bag){ pushMap.put(bag.getModId(),bag); bag.init(this.getRootId(),getMongoKey() + ".pushMap." + bag.getModId()); updateString("pushMap."+bag.getModId(),bag); } public void removePush(PushWelfareBag bag){ pushMap.remove(bag.getModId()); removeString(getMongoKey() + ".pushMap."+bag.getModId()); } public int getMainLineLost() { return mainLineLost; } public void setMainLineLost(int mainLineLost) { this.mainLineLost = mainLineLost; updateString("mainLineLost",mainLineLost); } public void addMainLineLost() { mainLineLost++; updateString("mainLineLost",mainLineLost); } public int getTowerLost() { return towerLost; } public void setTowerLost(int towerLost) { this.towerLost = towerLost; updateString("towerLost",towerLost); } public void addTowerLost() { towerLost++; updateString("towerLost",towerLost); } public void setPerpetualMap(Map perpetualMap) { this.perpetualMap = perpetualMap; updateString("perpetualMap",perpetualMap); } public void setTimeLimitMap(Map timeLimitMap) { this.timeLimitMap = timeLimitMap; } public void setReceiveMap(Map receiveMap) { this.receiveMap = receiveMap; } public void setPushMap(Map pushMap) { this.pushMap = pushMap; } public long getLostTime() { return lostTime; } public void setLostTime(long lostTime) { this.lostTime = lostTime; updateString("lostTime",lostTime); } public long getNextPushTime() { return nextPushTime; } public void setNextPushTime(long nextPushTime) { this.nextPushTime = nextPushTime; updateString("nextPushTime",nextPushTime); } public long getLastRefreshTime() { return lastRefreshTime; } public void setLastRefreshTime(long lastRefreshTime) { this.lastRefreshTime = lastRefreshTime; updateString("lastRefreshTime",lastRefreshTime); } public double getMaxSingleR() { return maxSingleR; } public void setMaxSingleR(double maxSingleR) { this.maxSingleR = maxSingleR; updateString("maxSingleR",maxSingleR); } public Map getTempLimitMap() { return tempLimitMap; } public void setTempLimitMap(Map tempLimitMap) { this.tempLimitMap = tempLimitMap; } public Map getLimitMap() { return limitMap; } public void addlimit(int id){ int num=limitMap.getOrDefault(id,0); num++; limitMap.put(id,num); updateString("limitMap." + id, num); } public int getPushpackCoun() { return pushpackCoun; } public void setPushpackCoun(int pushpackCoun) { this.pushpackCoun = pushpackCoun; updateString("pushpackCoun",pushpackCoun); } public void addPushpackCoun(int type) { if(type==1){ this.pushpackCoun++; }else { this.pushpackCoun--; } int[] limit= STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getPushpackCountLimit(); int low=limit[0]; int max=limit[1]; if(this.pushpackCounmax){ this.pushpackCoun=max; } updateString("pushpackCoun",pushpackCoun); } public Map getPushTimeMap() { return pushTimeMap; } public void setPushTimeMap(Map pushTimeMap) { this.pushTimeMap = pushTimeMap; updateString("pushTimeMap",pushTimeMap); } public Map getDailyLimitMap() { return dailyLimitMap; } public void addDailyLimit(int id){ int value = dailyLimitMap.getOrDefault(id,0); int newValue = value + 1; dailyLimitMap.put(id,newValue); updateString("dailyLimitMap." + id, newValue); } public void cleanDailyLimit(){ dailyLimitMap.clear(); updateString("dailyLimitMap" , dailyLimitMap); } public long getClubGiftBuyTime() { return clubGiftBuyTime; } public void setClubGiftBuyTime(long clubGiftBuyTime) { this.clubGiftBuyTime = clubGiftBuyTime; updateString("clubGiftBuyTime" , clubGiftBuyTime); } public int getClubGiftTaskRewardTimes() { return clubGiftTaskRewardTimes; } public void setClubGiftTaskRewardTimes(int clubGiftTaskRewardTimes) { this.clubGiftTaskRewardTimes = clubGiftTaskRewardTimes; updateString("clubGiftTaskRewardTimes" , clubGiftTaskRewardTimes); } public long getVoucherGiftBuyTime() { return voucherGiftBuyTime; } public void setVoucherGiftBuyTime(long voucherGiftBuyTime) { this.voucherGiftBuyTime = voucherGiftBuyTime; updateString("voucherGiftBuyTime" , voucherGiftBuyTime); } public int getVoucherGiftTaskRewardTimes() { return voucherGiftTaskRewardTimes; } public void setVoucherGiftTaskRewardTimes(int voucherGiftTaskRewardTimes) { this.voucherGiftTaskRewardTimes = voucherGiftTaskRewardTimes; updateString("voucherGiftTaskRewardTimes" , voucherGiftTaskRewardTimes); } }