道具直购

back_recharge
wangyuan 2020-03-20 11:00:59 +08:00
parent 1a6b3fdd86
commit 651c7697c8
5 changed files with 61 additions and 14 deletions

View File

@ -353,21 +353,31 @@ public class GlobalDataManaager implements IManager {
public static void flushGoodsTimes(User user){ public static void flushGoodsTimes(User user){
Map<Integer, Integer> buyGoodsTimes = user.getPlayerInfoManager().getRechargeInfo().getBuyGoodsTimes(); Map<Integer, Integer> buyGoodsTimes = user.getPlayerInfoManager().getRechargeInfo().getBuyGoodsTimes();
if(buyGoodsTimes!=null && !buyGoodsTimes.isEmpty()){ boolean update = false;
Iterator<Integer> iterator = buyGoodsTimes.keySet().iterator();
boolean update = false;
while (iterator.hasNext()){
Integer goodsId = iterator.next();
if(SRechargeCommodityConfig.rechargeCommodityConfigMap.get(goodsId).getDailyUpdate() == 1){
buyGoodsTimes.put(goodsId,0);
update =true; long now = TimeUtils.now();
} Map<Integer, Long> refreshBagMap = user.getPlayerInfoManager().getRechargeInfo().getRefreshBagMap();
Iterator<Map.Entry<Integer, Long>> iterator = refreshBagMap.entrySet().iterator();
Set<Integer> updateBuyTimesGoodsId = new HashSet<>();
while (iterator.hasNext()){
Map.Entry<Integer, Long> next = iterator.next();
if(next.getValue()<=now){
updateBuyTimesGoodsId.add(next.getKey());
refreshBagMap.put(next.getKey(),next.getValue() + SRechargeCommodityConfig.rechargeCommodityConfigMap.get(next.getKey()).getDailyUpdate() * TimeUtils.ONE_DAY);
update =true;
} }
if(update){ }
if(update){
if(buyGoodsTimes!=null && !buyGoodsTimes.isEmpty()){
updateBuyTimesGoodsId.forEach(e->{
if(buyGoodsTimes.containsKey(e)){
buyGoodsTimes.put(e,0);
}
});
user.getPlayerInfoManager().getRechargeInfo().clearCacheSendId(); user.getPlayerInfoManager().getRechargeInfo().clearCacheSendId();
user.getPlayerInfoManager().getRechargeInfo().setBuyGoodsTimes(buyGoodsTimes); user.getPlayerInfoManager().getRechargeInfo().setBuyGoodsTimes(buyGoodsTimes);
} }
} }
} }

View File

@ -21,6 +21,8 @@ public class RechargeInfo extends MongoBase{
private volatile Set<Integer> cacheSendedIds = new ConcurrentSet<>(); private volatile Set<Integer> cacheSendedIds = new ConcurrentSet<>();
private Map<Integer,Long> levelBagMap = new HashMap<>(); private Map<Integer,Long> levelBagMap = new HashMap<>();
private Map<Integer,Long> refreshBagMap = new HashMap<>();
private Map<Integer,Integer> buyGoodsTimes = new HashMap<>(); private Map<Integer,Integer> buyGoodsTimes = new HashMap<>();
private Map<Integer,Integer> goodseDurationMap = new HashMap<>(); private Map<Integer,Integer> goodseDurationMap = new HashMap<>();
@ -48,6 +50,11 @@ public class RechargeInfo extends MongoBase{
cacheSendedIds.clear(); cacheSendedIds.clear();
} }
public void setRefreshBagMap(Map<Integer, Long> refreshBagMap) {
this.refreshBagMap = refreshBagMap;
updateString("refreshBagMap", refreshBagMap);
}
//检测商品是否过期 //检测商品是否过期
public Set<Integer> checkIsGoodsTypeOverTime(){ public Set<Integer> checkIsGoodsTypeOverTime(){
int now = (int)(System.currentTimeMillis()/1000); int now = (int)(System.currentTimeMillis()/1000);
@ -226,4 +233,8 @@ public class RechargeInfo extends MongoBase{
updateString("dyGoodsCanBuyTimes",dyGoodsCanBuyTimes); updateString("dyGoodsCanBuyTimes",dyGoodsCanBuyTimes);
this.dyGoodsCanBuyTimes = dyGoodsCanBuyTimes; this.dyGoodsCanBuyTimes = dyGoodsCanBuyTimes;
} }
public Map<Integer, Long> getRefreshBagMap() {
return refreshBagMap;
}
} }

View File

@ -15,6 +15,7 @@ import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.logic.store.BuyGoodsLogic;
import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.ItemUtil;
import config.SGameSetting; import config.SGameSetting;
import config.SPlayerLevelConfig; import config.SPlayerLevelConfig;
@ -90,7 +91,7 @@ public class UserManager {
SPlayerLevelConfig sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(1); SPlayerLevelConfig sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(1);
playerManager.setMaxStamina(sPlayerLevelConfig.getMaxEnergy()); playerManager.setMaxStamina(sPlayerLevelConfig.getMaxEnergy());
playerManager.setRideLevel(1); playerManager.setRideLevel(1);
BuyGoodsLogic.initOwernBagInfo(user);
PlayerLogic.getInstance().vipflushEveryDay(user,null); PlayerLogic.getInstance().vipflushEveryDay(user,null);
ActivityLogic.getInstance().newPlayerOpenActivityMission(user); ActivityLogic.getInstance().newPlayerOpenActivityMission(user);
PlayerLogic.getInstance().playerInfoUpdate(user); PlayerLogic.getInstance().playerInfoUpdate(user);

View File

@ -353,6 +353,7 @@ public class BuyGoodsLogic {
Map<Integer, Integer> buyGoodsTimes = rechargeInfo.getBuyGoodsTimes(); Map<Integer, Integer> buyGoodsTimes = rechargeInfo.getBuyGoodsTimes();
Map<Integer, Long> levelBagMap = rechargeInfo.getLevelBagMap(); Map<Integer, Long> levelBagMap = rechargeInfo.getLevelBagMap();
Map<Integer, Long> typeBagMap = rechargeInfo.getTypeBagMap(); Map<Integer, Long> typeBagMap = rechargeInfo.getTypeBagMap();
Map<Integer, Long> refreshBagMap = rechargeInfo.getRefreshBagMap();
Map<Integer,Integer> goodsOrder = new HashMap<>(6); Map<Integer,Integer> goodsOrder = new HashMap<>(6);
Map<Integer,CommonProto.GiftGoodsInfo> giftGoodsInfoMap = new HashMap<>(); Map<Integer,CommonProto.GiftGoodsInfo> giftGoodsInfoMap = new HashMap<>();
long createTime = user.getPlayerInfoManager().getCreateTime(); long createTime = user.getPlayerInfoManager().getCreateTime();
@ -434,8 +435,14 @@ public class BuyGoodsLogic {
} }
}else{ }else{
startTime = ToolsUtil.getTimeLong(sRechargeCommodityConfig.getStartTimeLong(),sRechargeCommodityConfig.getEndTimeLong(),sRechargeCommodityConfig.getTime(),createTime,1); if(sRechargeCommodityConfig.getDailyUpdate()>=1){
endTime = ToolsUtil.getTimeLong(sRechargeCommodityConfig.getStartTimeLong(),sRechargeCommodityConfig.getEndTimeLong(),sRechargeCommodityConfig.getTime(),createTime,2); endTime = refreshBagMap.get(sRechargeCommodityConfig.getId());
startTime = endTime - sRechargeCommodityConfig.getDailyUpdate()*TimeUtils.ONE_DAY;
}else{
startTime = ToolsUtil.getTimeLong(sRechargeCommodityConfig.getStartTimeLong(),sRechargeCommodityConfig.getEndTimeLong(),sRechargeCommodityConfig.getTime(),createTime,1);
endTime = ToolsUtil.getTimeLong(sRechargeCommodityConfig.getStartTimeLong(),sRechargeCommodityConfig.getEndTimeLong(),sRechargeCommodityConfig.getTime(),createTime,2);
}
} }
if(now<startTime){ if(now<startTime){
continue; continue;
@ -500,6 +507,16 @@ public class BuyGoodsLogic {
} }
public static void initOwernBagInfo(User user){
long createTime = user.getPlayerInfoManager().getCreateTime();
Map<Integer, Long> initBagMap = new HashMap<>(SRechargeCommodityConfig.refreshItemInfo.size());
for(SRechargeCommodityConfig sRechargeCommodityConfig : SRechargeCommodityConfig.refreshItemInfo){
long endTime = ToolsUtil.getTimeLong(sRechargeCommodityConfig.getStartTimeLong(),sRechargeCommodityConfig.getEndTimeLong(),sRechargeCommodityConfig.getTime(),createTime,1) + TimeUtils.ONE_DAY * sRechargeCommodityConfig.getDailyUpdate();
initBagMap.put(sRechargeCommodityConfig.getId(),endTime);
}
user.getPlayerInfoManager().getRechargeInfo().setRefreshBagMap(initBagMap);
}

View File

@ -62,6 +62,8 @@ public class SRechargeCommodityConfig implements BaseConfig {
private static Set<Integer> rchargeHeroGet; private static Set<Integer> rchargeHeroGet;
private static Map<Integer,Integer> recharegeHeroTime; private static Map<Integer,Integer> recharegeHeroTime;
public static Set<SRechargeCommodityConfig> refreshItemInfo;
@Override @Override
public void init() throws Exception { public void init() throws Exception {
Map<Integer, SRechargeCommodityConfig> config = STableManager.getConfig(SRechargeCommodityConfig.class); Map<Integer, SRechargeCommodityConfig> config = STableManager.getConfig(SRechargeCommodityConfig.class);
@ -69,6 +71,7 @@ public class SRechargeCommodityConfig implements BaseConfig {
Set<Integer> rchargeHeroGetTemp = new HashSet<>(); Set<Integer> rchargeHeroGetTemp = new HashSet<>();
Map<Integer, Integer> recharegeHeroTimeTmp = new HashMap<>(); Map<Integer, Integer> recharegeHeroTimeTmp = new HashMap<>();
Set<SRechargeCommodityConfig> refreshItemInfoTmp = new HashSet<>();
for(SRechargeCommodityConfig sRechargeCommodityConfig : config.values()){ for(SRechargeCommodityConfig sRechargeCommodityConfig : config.values()){
int[] discountType = sRechargeCommodityConfig.getDiscountType(); int[] discountType = sRechargeCommodityConfig.getDiscountType();
if(discountType!=null && discountType.length>0 &&discountType[0] == 2){ if(discountType!=null && discountType.length>0 &&discountType[0] == 2){
@ -79,6 +82,9 @@ public class SRechargeCommodityConfig implements BaseConfig {
rchargeHeroGetTemp.add(sRechargeCommodityConfig.getId()); rchargeHeroGetTemp.add(sRechargeCommodityConfig.getId());
recharegeHeroTimeTmp.put(discountType[1],sRechargeCommodityConfig.getId()); recharegeHeroTimeTmp.put(discountType[1],sRechargeCommodityConfig.getId());
} }
if(sRechargeCommodityConfig.getDailyUpdate()>0){
refreshItemInfoTmp.add(sRechargeCommodityConfig);
}
int time = sRechargeCommodityConfig.getTime(); int time = sRechargeCommodityConfig.getTime();
String startTime = sRechargeCommodityConfig.getStartTime(); String startTime = sRechargeCommodityConfig.getStartTime();
@ -104,6 +110,7 @@ public class SRechargeCommodityConfig implements BaseConfig {
rechargeLevelMap = rechargeLevelMapTmp; rechargeLevelMap = rechargeLevelMapTmp;
rchargeHeroGet = rchargeHeroGetTemp; rchargeHeroGet = rchargeHeroGetTemp;
recharegeHeroTime = recharegeHeroTimeTmp; recharegeHeroTime = recharegeHeroTimeTmp;
refreshItemInfo = refreshItemInfoTmp;
} }
@ -219,4 +226,5 @@ public class SRechargeCommodityConfig implements BaseConfig {
public static void setRecharegeHeroTime(Map<Integer, Integer> recharegeHeroTime) { public static void setRecharegeHeroTime(Map<Integer, Integer> recharegeHeroTime) {
SRechargeCommodityConfig.recharegeHeroTime = recharegeHeroTime; SRechargeCommodityConfig.recharegeHeroTime = recharegeHeroTime;
} }
} }