From 9baf7f486ef7171521c43c6764fc2c0c300ff41d Mon Sep 17 00:00:00 2001 From: "PC-202302260912\\Administrator" <1769111741@qq.com> Date: Wed, 28 Jun 2023 14:41:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E9=87=91=E5=8D=B7=E8=B4=AD=E4=B9=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/mongo/MongoRechargeConverter.java | 3 + .../com/ljsd/jieling/globals/BIReason.java | 2 + .../{bt => goods}/GmBuyGoodHandler.java | 2 +- .../handler/goods/VouchersBuyGiftHandler.java | 67 ++++++++++++++++++ .../jieling/logic/GlobalDataManaager.java | 13 ++-- .../activity/NewRechargeSumDayActivity.java | 2 +- .../activityLogic/GmActivityLogic.java | 2 +- .../jieling/logic/store/BuyGoodsNewLogic.java | 68 ++++++++++--------- .../newRechargeInfo/NewRechargeInfo.java | 12 ---- .../AbstractRechargeHandler.java | 3 + .../rechargeHandler/GmSingleHandler.java | 4 -- .../config/SRechargeCommodityNewConfig.java | 9 +-- 12 files changed, 122 insertions(+), 65 deletions(-) rename serverlogic/src/main/java/com/ljsd/jieling/handler/{bt => goods}/GmBuyGoodHandler.java (99%) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/goods/VouchersBuyGiftHandler.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoRechargeConverter.java b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoRechargeConverter.java index b6efb7bbd..bd7854c96 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoRechargeConverter.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/MongoRechargeConverter.java @@ -30,6 +30,9 @@ public class MongoRechargeConverter implements Converter { + + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.VouchersBuyGiftRequest; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.GmBuyGoodRequest proto) throws Exception { + // 用户信息 + User user = UserManager.getUser(iSession.getUid()); + int goodsId = proto.getGoodsId(); + SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(goodsId); + if (config == null){ + throw new ErrorCodeException(ErrorCode.CFG_NULL,"礼包id不存在:"+goodsId); + } + // 道具是否足够 + boolean cost = ItemUtil.itemCost(user, config.getOtherBuy(), BIReason.VOUCHERS_BUY_GOOD_COST, 0); + if (!cost){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + // 走礼包逻辑发送奖励 + BuyGoodsNewLogic.vouchersBuyGoods(iSession, goodsId); + } + + /** + * 验证礼包是否购买 + * @param user + * @param goodId + * @return + */ + private static boolean checkGoodStatus(User user, int goodId){ + SRechargeCommodityNewConfig recharge = SRechargeCommodityNewConfig.getConfigById(goodId); + RechargeHandler rechargeHandler = BuyGoodsNewLogic.getRechargeHandler(recharge.getOtype()); + AbstractWelfareBag bag = rechargeHandler.getRechargeMap(user).get(goodId); + if (bag == null){ + return false; + } + // 是否可买 + return bag.isBuy(); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index ec617ed83..5797af534 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -457,16 +457,13 @@ public class GlobalDataManaager implements IManager { Map config = SDailyTasksConfig.config; int dailymissionType = GameMisionType.DAILYMISSION.getType(); int day = TimeUtils.getDayOfPeriod(GameApplication.serverConfig.getCacheOpenTime(),Calendar.DAY_OF_MONTH);//当月第几天 - boolean refreshStype = false; - if(TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(),TimeUtils.now())){ - refreshStype = true; - } + boolean refreshStype = TimeUtils.isSameMonth2(GameApplication.serverConfig.getCacheOpenTime(), TimeUtils.now()); for(SDailyTasksConfig sDailyTasksConfig:config.values()){ - if(refreshStype){ - if(day >= sDailyTasksConfig.getViewDateUp()&& day <=sDailyTasksConfig.getViewDataDown()){ + if(refreshStype && day >= sDailyTasksConfig.getViewDateUp() && day <=sDailyTasksConfig.getViewDataDown()){ + if(day >= sDailyTasksConfig.getViewDateUp() && day <=sDailyTasksConfig.getViewDataDown()){ fBuilder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(sDailyTasksConfig.getId()).setState(0).setType(dailymissionType).setProgress(0)); } - }else{ + }else if(sDailyTasksConfig.getViewDateUp() == 1){ if(sDailyTasksConfig.getViewDateUp() == 1){ fBuilder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(sDailyTasksConfig.getId()).setState(0).setType(dailymissionType).setProgress(0)); } @@ -494,8 +491,6 @@ public class GlobalDataManaager implements IManager { user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0); // 惊喜礼盒,超值基金,零点逻辑(可以同用一个状态) Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),SuperBoxEvent.zero_init)); - // 心愿格子信息刷新 -// HeroLogic.getInstance().resetWishDrawCardInfoMap(user); //玉虚论道每日刷新 user.getArenaManager().setCrossYuxulundaoDailyRewad(new ArrayList<>(Arrays.asList(0,0,0))); //终身卡在线跨天 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewRechargeSumDayActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewRechargeSumDayActivity.java index 6f5938da0..545f03c72 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewRechargeSumDayActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewRechargeSumDayActivity.java @@ -87,7 +87,7 @@ class NewRechargeSumDayActivity extends AbstractActivity { } ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id); // 表示已购买今天的礼包 - if (mission.getV() == 1){ + if (mission == null || mission.getV() == 1){ return; } List rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/activityLogic/GmActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/activityLogic/GmActivityLogic.java index 8c5a59724..982ab0b8e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/activityLogic/GmActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/activityLogic/GmActivityLogic.java @@ -237,7 +237,7 @@ public class GmActivityLogic implements IEventHandler { // 领取完全部奖励后重置活动 long count = gmActivity.getMissionMap().values().stream().filter(v -> v.getState() == 1).count(); LOGGER.info("单日累充,第二步,userid:{}, 活动id:{}, 完成度对比:{}-{}", user.getId(),gmActivity.getId(),gmMissionList.size(),count); - if (gmMissionList.size() == count){ + if (count > 0 && gmMissionList.size() == count){ // 重置活动对象 gmActivity.setMissionMap(new HashMap<>()); // 减去满级金额 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java index d0ad29347..c663aa0e4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java @@ -65,6 +65,7 @@ public class BuyGoodsNewLogic { private static final String test_buy_order = "test_buy_order"; private static final String gm_modifier = "gm_modifier"; + private static final String vouchers_order = "vouchers_order"; private static final String support_order = "support_order"; //获取充值总金额,结合前面的 @@ -77,12 +78,6 @@ public class BuyGoodsNewLogic { * 登录刷新礼包 */ public static boolean refreshWelfareState(User user) throws Exception { - NewRechargeInfo info = user.getPlayerInfoManager().getNewRechargeInfo(); - if(info == null){ - info = new NewRechargeInfo(); - user.getPlayerInfoManager().setNewRechargeInfo(info); - } - dailyRefresh(user); boolean needChange = false; for(Map.Entry entry : SRechargeCommodityNewConfig.configMap.entrySet()){ SRechargeCommodityNewConfig config = entry.getValue(); @@ -118,7 +113,23 @@ public class BuyGoodsNewLogic { } /** - * gm修改器购买物品 + * 代金卷修改器购买物品 + * @param iSession + * @param goodsId + * @throws Exception + */ + public static void vouchersBuyGoods(ISession iSession, int goodsId) throws Exception { + SRechargeCommodityNewConfig sRechargeCommodityConfig = SRechargeCommodityNewConfig.getConfigById(goodsId); + if(sRechargeCommodityConfig == null){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + int price = (int)sRechargeCommodityConfig.getPrice(); + sendGoods(iSession.getUid(), String.valueOf(goodsId), "", vouchers_order, TimeUtils.now(), price); + MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.TEST_BUY_GIGT_GOODS_RESPONSE_VALUE,null,true); + } + + /** + * gm代金卷购买物品 * @param iSession * @param goodsId * @throws Exception @@ -162,7 +173,7 @@ public class BuyGoodsNewLogic { * @return */ private static boolean isRmbBuy(String orderId){ - return !gm_modifier.equals(orderId) && !test_buy_order.equals(orderId) && !support_order.equals(orderId); + return !gm_modifier.equals(orderId) && !test_buy_order.equals(orderId) && !support_order.equals(orderId) && !vouchers_order.equals(orderId); } /** @@ -241,7 +252,6 @@ public class BuyGoodsNewLogic { changeActivity(user,price,info); } - // todo 可以放到redis 首充标记 if(getFirstRechargeTime(uid) == 0){ setFirstRecharge(uid); } @@ -648,7 +658,7 @@ public class BuyGoodsNewLogic { RechargeHandler rechargeHandler = getRechargeHandler(config.getOtype()); AbstractWelfareBag bag = rechargeHandler.getBag(user, config.getId()); if (bag == null){ - result = true; + result = false; break; } result = bag.getBuyTimes() >= 1; @@ -678,6 +688,8 @@ public class BuyGoodsNewLogic { list.addAll(rechargeInfo.getReceiveMap().values()); // 推送礼包 list.addAll(rechargeInfo.getPushMap().values()); + // gm礼包 + list.addAll(rechargeInfo.getGmSingleMap().values()); for(AbstractWelfareBag bag : list){ if(bag.isOpen()){ @@ -819,9 +831,16 @@ public class BuyGoodsNewLogic { builder.setBuyTimes(bag.getBuyTimes()); builder.setStartTime((int)(bag.getStartTime()/1000)); builder.setEndTime((int)(bag.getEndTime()/1000)); - builder.setDynamicBuyTimes(1); - if(bag.getLimit() != 0){ - builder.setDynamicBuyTimes(bag.getLimit() - bag.getBuyTimes()); + + int limit = bag.getLimit(); + if(limit != 0){ + builder.setDynamicBuyTimes(limit-bag.getBuyTimes()); + }else { + builder.setDynamicBuyTimes(1); + } + + if (bag.getType() == RechargeType.push.getType() && builder.getDynamicBuyTimes() <= 0){ + return null; } if(bag.getType() == RechargeType.perpetual.getType() && bag.getRefreshTime() > 0){ @@ -832,24 +851,15 @@ public class BuyGoodsNewLogic { } } - if(bag.getType() == RechargeType.receive.getType() && bag.getEndTime() == 0){ - builder.setEndTime((int)((bag.getStartTime() + bag.getContinueDays() * TimeUtils.DAY)/1000)); - } - // 礼包类型特殊处理,使用bought字段验证是否购买 if(bag.getType() == RechargeType.receive.getType()){ + if (bag.getEndTime() == 0){ + builder.setEndTime((int)((bag.getStartTime() + bag.getContinueDays() * TimeUtils.DAY)/1000)); + } ReceiveWelfareBag receiveBag = (ReceiveWelfareBag) bag; int bought = receiveBag.isBought()?1:0; builder.setIsBought(bought); } - - if (bag.getType() == RechargeType.push.getType() && builder.getDynamicBuyTimes() <= 0){ - return null; - } - - if (bag.getType() == RechargeType.gmSingle.getType()){ - builder.setStartTime(0); - } return builder.build(); } @@ -987,14 +997,6 @@ public class BuyGoodsNewLogic { return list; } - private static void dailyRefresh(User user){ - NewRechargeInfo info = user.getPlayerInfoManager().getNewRechargeInfo(); - long now = TimeUtils.now(); - if(TimeUtils.differentDays(info.getLastRefreshTime(), now) >= 1){ - info.setLastRefreshTime(now); - } - } - //是否属于五星成长礼 // public static boolean isFiveStarBag(int id){ // return id == 21 || (id >= 400 && id <= 402) || (id >= 7300 && id <= 7304) || (id >= 1100 && id <= 1104); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java index 73540647e..ac0be1e28 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/NewRechargeInfo.java @@ -22,13 +22,10 @@ public class NewRechargeInfo extends MongoBase { private Map receiveMap = new HashMap<>();//限时刷新礼包 private Map pushMap = new HashMap<>();//推送礼包 private Map gmSingleMap = new HashMap<>();//gm单笔礼包 - private long nextPushTime; //上次推送时间 private MaptypePushTimeMap=new HashMap<>();//记录推送条件类型cd时间 private Map dayPushNumMap =new HashMap<>();//记录当天推送次数 private Map allPushNumMap =new HashMap<>();//记录历史推送次数 - - private long lastRefreshTime; public static int FIVESTARLIMIT = 2;//临时五星成长礼每天最多两次 public boolean checkOneGoodsIsOverTimeByPrivilege(int privilegeId){ @@ -248,15 +245,6 @@ public class NewRechargeInfo extends MongoBase { updateString("allPushNumMap."+pushId,pushNum); } - public long getLastRefreshTime() { - return lastRefreshTime; - } - - public void setLastRefreshTime(long lastRefreshTime) { - this.lastRefreshTime = lastRefreshTime; - updateString("lastRefreshTime",lastRefreshTime); - } - public void setRechargeList(long _rechargeTime,double _rechargePrice) { this.rechargeList.put(_rechargeTime,_rechargePrice); updateString("rechargeList",this.rechargeList); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java index 55609e4a8..abfe4e4aa 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/AbstractRechargeHandler.java @@ -20,6 +20,9 @@ public abstract class AbstractRechargeHandler implements RechargeHandler { //判断刷新时间 long now = TimeUtils.now(); AbstractWelfareBag bag = getBag(user, rechargeId); + if (bag == null){ + return false; + } if(bag.getRefreshTime() != 0 && bag.getRefreshTime() < now){ bag.refresh(); return true; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/GmSingleHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/GmSingleHandler.java index 94cd47a8a..a4f7a3575 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/GmSingleHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/newRechargeInfo/rechargeHandler/GmSingleHandler.java @@ -42,10 +42,6 @@ public class GmSingleHandler extends AbstractRechargeHandler { return user.getPlayerInfoManager().getNewRechargeInfo().getGmSingleMap(); } - public boolean rechargeIsInBag(User user, int rechargeId) { - return getRechargeMap(user).containsKey(rechargeId); - } - @Override public AbstractWelfareBag initUnitWF(User user, SRechargeCommodityNewConfig config) { Map> singleIdMap = user.getGmActivityManager().getGmSingleIdMap(); diff --git a/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java b/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java index e4817bbfc..fc7b741dc 100644 --- a/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java +++ b/tablemanager/src/main/java/config/SRechargeCommodityNewConfig.java @@ -12,14 +12,11 @@ import java.util.Map; public class SRechargeCommodityNewConfig implements BaseConfig { private int id; - private String rechargeId; - private String name; - private int type; - private double price; + private int[][] otherBuy; private int[][] firstMultiple; private int[] continuedMultiple; private int[][] baseReward; @@ -125,6 +122,10 @@ public class SRechargeCommodityNewConfig implements BaseConfig { public int getFirstInvest() { return firstInvest; } + public int[][] getOtherBuy() { + return otherBuy; + } + public int getAccumulativeRecharge() { return accumulativeRecharge; } public int getTime() { return time; }