diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/bt/GmBuyGoodHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/bt/GmBuyGoodHandler.java index 0e3434e95..bfe01c7f6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/bt/GmBuyGoodHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/bt/GmBuyGoodHandler.java @@ -42,7 +42,7 @@ public class GmBuyGoodHandler extends BaseHandler poolConfig = SChangingCardLevel.getConfigByPoolId(pool); if (poolConfig == null) { @@ -65,52 +64,49 @@ public class TransformationUpGradeHandler extends BaseHandler itemIdList = proto.getItemListList(); - Map costMap = new HashMap<>(); - for (CommonProto.KeyVal keyVal : itemIdList) { - if (costMap.containsKey(keyVal.getKey())) { - costMap.put(keyVal.getKey(), costMap.get(keyVal.getKey()) + keyVal.getVal()); - } else { - costMap.put(keyVal.getKey(), keyVal.getVal()); + } + //升星 + if (type == 2) { + SChangingCard card = STableManager.getConfig(SChangingCard.class).get(proto.getId()); + if (card == null){ + throw new ErrorCodeException(ErrorCode.CFG_NULL, "变身卡不存在"); + } + if (info.getStar() >= card.getStarMax()){ + throw new ErrorCodeException(ErrorCode.LEVE_MAX, "变身卡最大星级"); + } + Map starMap = SChangingCardStar.getPoolMap().get(card.getStar()); + if (starMap == null){ + throw new ErrorCodeException(ErrorCode.CFG_NULL, "变身卡升星库不存在"); + } + SChangingCardStar cardStar = starMap.get(info.getStar()); + // 转换消耗物品id + HashMap costMap = new HashMap<>(); + for (int[] item : cardStar.getPropList()) { + // 0表示消耗本体 + if (item[0] == 0){ + costMap.put(card.getCardId(),item[1]); + }else { + costMap.put(item[0],item[1]); } } - int num = 0; - int quantity = 0; - if(changingCard.getStarUpCost().length>= info.getStar() + 1){ - num = changingCard.getStarUpCost()[info.getStar()][1]; - quantity = changingCard.getStarUpCost()[info.getStar()][0]; - } - for (Integer itemId : costMap.keySet()) { - SItem sItem = SItem.getsItemMap().get(itemId); - if(sItem == null || sItem.getQuantity() != quantity){ - throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); - } - } - int sum = costMap.values().stream().mapToInt(Integer::intValue).sum(); - if(sum != num){ - throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); - } - if (!ItemUtil.itemCost(user, costMap, BIReason.TRANSFORMATION_CARD_STAR_COST, 1)) { - throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); - } - if (info != null) { - info.setStar(info.getStar() + 1); - user.getHeroManager().putTransformationList(info); - Map itemMap = new HashMap<>(1); - int[] item = changingCard.getStarUpExp()[info.getStar() - 1]; - itemMap.put(item[0], Long.valueOf(item[1])); - ItemUtil.addItem(user, itemMap, drop, BIReason.TRANSFORMATION_CARD_STAR_REWARD); - builder.setDrop(drop); + boolean cost = ItemUtil.itemCost(user, costMap, BIReason.TRANSFORMATION_CARD_STAR_COST, 0); + if (!cost){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH, "变身卡升星库不存在"); } + // 更新变身卡对象 + info.setStar(info.getStar() + 1); + user.getHeroManager().putTransformationList(info); + // 获得道具 + int[][] dropItem = {cardStar.getStarUpExp()}; + ItemUtil.drop(user, dropItem, drop, BIReason.TRANSFORMATION_CARD_LEVEL_REWARD); + builder.setDrop(drop); } CommonProto.TransformationCardInfo cardInfo = CommonProto.TransformationCardInfo.newBuilder() .setId(info.getCardId()) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/gm/GmActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/gm/GmActivity.java index 6041b58de..22b689e71 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/jbean/gm/GmActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/gm/GmActivity.java @@ -1,6 +1,7 @@ package com.ljsd.jieling.jbean.gm; import com.ljsd.common.mogodb.MongoBase; +import com.ljsd.jieling.logic.dao.root.User; import java.util.HashMap; @@ -10,7 +11,7 @@ import java.util.HashMap; * @author ascend * 2022/10/27 16:09:45 */ -public class GmActivity { +public class GmActivity extends MongoBase { private HashMap missionMap = new HashMap<>(); private String id; private int type; @@ -18,12 +19,18 @@ public class GmActivity { private String startTime; private String endTime; + public GmActivity() { + //绑定关系 + this.setRootCollection(User._COLLECTION_NAME); + } + public String getId() { return id; } public void setId(String id) { this.id = id; + updateString("id",id); } public HashMap getMissionMap() { @@ -32,10 +39,12 @@ public class GmActivity { public void setMissionMap(HashMap missionMap) { this.missionMap = missionMap; + updateString("missionMap",missionMap); } public void putMissionMap(String id, GmMission mission) { this.missionMap.put(id,mission); + updateString("missionMap",missionMap); } public int getType() { @@ -44,6 +53,7 @@ public class GmActivity { public void setType(int type) { this.type = type; + updateString("type",type); } public int getValue() { @@ -52,6 +62,7 @@ public class GmActivity { public void setValue(int value) { this.value = value; + updateString("value",value); } public String getStartTime() { @@ -60,6 +71,7 @@ public class GmActivity { public void setStartTime(String startTime) { this.startTime = startTime; + updateString("startTime",startTime); } public String getEndTime() { @@ -68,5 +80,6 @@ public class GmActivity { public void setEndTime(String endTime) { this.endTime = endTime; + updateString("endTime",endTime); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/gm/GmMission.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/gm/GmMission.java index 4ffb37fff..fe6bd5469 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/jbean/gm/GmMission.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/gm/GmMission.java @@ -1,22 +1,31 @@ package com.ljsd.jieling.jbean.gm; +import com.ljsd.common.mogodb.MongoBase; +import com.ljsd.jieling.logic.dao.root.User; + /** * 说明:gm活动档位 * * @author ascend * 2022/10/27 16:09:54 */ -public class GmMission { +public class GmMission extends MongoBase { private String id; private int value; private int state; + public GmMission() { + //绑定关系 + this.setRootCollection(User._COLLECTION_NAME); + } + public String getId() { return id; } public void setId(String id) { this.id = id; + updateString("id",id); } public int getValue() { @@ -25,6 +34,7 @@ public class GmMission { public void setValue(int value) { this.value = value; + updateString("value",value); } public int getState() { @@ -33,5 +43,6 @@ public class GmMission { public void setState(int state) { this.state = state; + updateString("state",state); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_support.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_support.java index 05c18d5a8..618667df0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_support.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_support.java @@ -2,7 +2,6 @@ package com.ljsd.jieling.kefu; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; -import util.TimeUtils; /** * @author hj @@ -13,22 +12,7 @@ public class Cmd_support extends GmRoleAbstract { public boolean exec(String[] args) throws Exception { // 获取用户 User user = getUser(); - // 第一位是奖励信息 - String arg = args[0]; - // 价格 - int price = 0; - // 订单id - String orderId = "support-order"; - // 多个奖励组,需要用"|"分割 - String[] rewards = arg.split("\\|"); - for (String reward : rewards) { - // 奖励id#奖励数量 - String[] item = reward.split("#"); - for (int i = 0; i < Integer.parseInt(item[1]); i++) { - // 发送充值礼包 - BuyGoodsNewLogic.sendGoods(user.getId(), item[0], user.getPlayerInfoManager().getOpenId(), orderId, TimeUtils.now(), price); - } - } + BuyGoodsNewLogic.supportBuyGoods(user,args[0]); return true; } } 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 519b15dcd..6a2ea4e81 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 @@ -105,8 +105,6 @@ public class GmActivityLogic implements IEventHandler { LOGGER.error("充值返利,未找到得活动类型,uid:{}, activityId:{}", user.getId(), gmActivity.getId()); continue; } - // 入库 - manager.putActivityMap(gmActivity.getId(),gmActivity); // 验证奖励非空 String mailReward = ItemUtil.getMailReward(rewards); if (StringUtil.isEmpty(mailReward)){ @@ -241,7 +239,6 @@ public class GmActivityLogic implements IEventHandler { gmActivity.setType(arbActivity.getType()); gmActivity.setStartTime(arbActivity.getStartTime()); gmActivity.setEndTime(arbActivity.getEndTime()); - gmActivityManager.putActivityMap(gmActivity.getId(),gmActivity); } gmActivityManager.setUpdateVersion(version); } @@ -253,14 +250,11 @@ public class GmActivityLogic implements IEventHandler { public void zeroUpdateGmActivity(User user){ updateGmActivity(user); GmActivityManager manager = user.getGmActivityManager(); - HashMap activityMap = manager.getActivityMap(); - for (GmActivity gmActivity : activityMap.values()) { + for (GmActivity gmActivity : manager.getActivityMap().values()) { // 单笔累充和妖晶返利每日清零 if (gmActivity.getType() == 1 || gmActivity.getType() == 2){ gmActivity.setValue(0); gmActivity.setMissionMap(new HashMap<>()); - // 入库 - manager.putActivityMap(gmActivity.getId(),gmActivity); } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java index 535ec8536..30b2d8e7e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/root/User.java @@ -236,7 +236,7 @@ public class User { } public GmActivityManager getGmActivityManager() { - if(null ==gmActivityManager){ + if(null == gmActivityManager){ this.gmActivityManager = new GmActivityManager(); this.gmActivityManager.init(id,MongoKey.gmActivityManager); }else{ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 4690e86f7..332d5dfbc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -2942,30 +2942,15 @@ public class HeroLogic { // 变身卡单独提供得属性 combinedAttribute(card.getPropList(), heroAllAttribute); //变身卡升星属性 - switch (info.getStar()){ - case 1: - combinedAttribute(card.getStar1UpProps(), heroAllAttribute); - break; - case 2: - combinedAttribute(card.getStar2UpProps(), heroAllAttribute); - break; - case 3: - combinedAttribute(card.getStar3UpProps(), heroAllAttribute); - break; - case 4: - combinedAttribute(card.getStar4UpProps(), heroAllAttribute); - break; - case 5: - combinedAttribute(card.getStar5UpProps(), heroAllAttribute); - break; - default:break; + SChangingCardStar cardStar = SChangingCardStar.getPoolMap().get(card.getStar()).get(info.getStar()); + if (cardStar != null){ + combinedAttribute(cardStar.getExp(), heroAllAttribute); } //变身卡升级属性 - int pool = card.getLevelUpPool(); - Map poolConfig = SChangingCardLevel.getConfigByPoolId(pool); - List selectConfiglist = poolConfig.values().stream().filter(n->n.getLevel() == info.getLevel()).collect(Collectors.toList()); - if(selectConfiglist != null &&selectConfiglist.size()>0 ){ - combinedAttribute(selectConfiglist.get(0).getPropList(), heroAllAttribute); + Map poolConfig = SChangingCardLevel.getConfigByPoolId(card.getLevelUpPool()); + List levelList = poolConfig.values().stream().filter(n->n.getLevel() == info.getLevel()).collect(Collectors.toList()); + if(levelList.size()>0){ + combinedAttribute(levelList.get(0).getPropList(), heroAllAttribute); } } } 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 f7987d493..889f4a885 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 @@ -57,13 +57,15 @@ import java.util.*; public class BuyGoodsNewLogic { private static final Logger LOGGER = LoggerFactory.getLogger(BuyGoodsNewLogic.class); - - public static RechargeHandler getRechargeHandler(int type){ return RechargeType.getHandler(type); } + private static final String test_buy_order = "test_buy_order"; + private static final String gm_modifier = "gm_modifier"; + private static final String support_order = "support_order"; + //获取充值总金额,结合前面的 public static double getAllAmount(User user){ PlayerManager playerInfoManager = user.getPlayerInfoManager(); @@ -126,11 +128,9 @@ public class BuyGoodsNewLogic { if (sRechargeCommodityConfig == null){ throw new ErrorCodeException(ErrorCode.CFG_NULL); } - String openId = "test_buy_openId"; - String orderId = "test_buy_order"; int price = (int)sRechargeCommodityConfig.getPrice() *100; MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TEST_BUY_GIGT_GOODS_RESPONSE_VALUE,null,true); - sendGoods(uid, goodsId, openId, orderId, TimeUtils.now(), price); + sendGoods(uid, goodsId, "", test_buy_order, TimeUtils.now(), price); } /** @@ -144,10 +144,32 @@ public class BuyGoodsNewLogic { if(sRechargeCommodityConfig == null){ throw new ErrorCodeException(ErrorCode.CFG_NULL); } - String orderId = "gm_modifier"; int price = (int)sRechargeCommodityConfig.getPrice() * 100; MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.TEST_BUY_GIGT_GOODS_RESPONSE_VALUE,null,true); - sendGoods(iSession.getUid(), String.valueOf(goodsId), "", orderId, TimeUtils.now(), price); + sendGoods(iSession.getUid(), String.valueOf(goodsId), "", gm_modifier, TimeUtils.now(), price); + } + + /** + * 扶持发送奖励 + * @param user + * @param goods + * @throws Exception + */ + public static void supportBuyGoods(User user, String goods) throws Exception { + String[] good = goods.split("\\|"); + for (String info : good) { + String[] gift = info.split("#"); + int goodId = Integer.parseInt(gift[0]); + // 礼包内从校验 + SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(goodId); + if(config == null){ + LOGGER.error("sendGoods to 扶持发奖,礼包id未找到,uid:{},good:{}",user.getId(),goodId); + continue; + } + int price = (int)config.getPrice() * 100; + // 发送多个礼包 + sendGoods(user.getId(), String.valueOf(goodId), "", support_order, TimeUtils.now(), price); + } } /** @@ -156,7 +178,7 @@ public class BuyGoodsNewLogic { * @return */ private static boolean isRmbBuy(String orderId){ - return !"support-order".equals(orderId) && !"gm_modifier".equals(orderId) && !"test_buy_order".equals(orderId); + return !gm_modifier.equals(orderId); } /** @@ -193,7 +215,7 @@ public class BuyGoodsNewLogic { double priceTemp =config.getPrice(); int cfgType = SSpecialConfig.getIntegerValue(SSpecialConfig.EXCHANGE_FORCE_TYPE); double price = priceTemp==0?0: SExchangeRate.doubleIntegerHashMap.get(cfgType).get((int)priceTemp); - if(isRmbBuy(orderId) && !MathUtils.doubleEquals(amount,price * 100)){ + if(!MathUtils.doubleEquals(amount,price * 100)){ resultRes.setResultCode(0); resultRes.setResultMsg("charge price error"); LOGGER.error("sendGoods charge price error, uid={},the goodId={}, currentPrice={},realPrice={}",uid,goodsId, amount,price); @@ -220,13 +242,14 @@ public class BuyGoodsNewLogic { } } List list = bag.getDropByBag(); - if (isRmbBuy(orderId) && config.getGainFame() != null && config.getGainFame().length > 0){ - list.add(config.getGainFame()); + int[][] gainFame = config.getGainFame(); + if (gainFame != null && gainFame.length > 0){ + list.add(gainFame); } //发货 sendGoodsByType(user,config,list); - if(config.getAccumulativeRecharge() == 1 && !"gm_modifier".equals(orderId)){ + if(config.getAccumulativeRecharge() == 1 && !gm_modifier.equals(orderId)){ if(info.getMaxSingleR() < price){ info.setMaxSingleR(price); } @@ -262,7 +285,7 @@ public class BuyGoodsNewLogic { // 更新入库 MongoUtil.getLjsdMongoTemplate().lastUpdate(); // 扶持订单不需要上报 - if(price>0 && !orderId.equals("support-order")) { + if(price>0 && !orderId.equals(support_order)) { MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.RECHARGE_SUCCESS_INDICATION_VALUE, PlayerInfoProto.RechargeSuccessIndication.newBuilder().setOrderId(orderId).build(), true); // 开天上报 diff --git a/tablemanager/src/main/java/config/SChangingCard.java b/tablemanager/src/main/java/config/SChangingCard.java index ea16212d1..6709bb7df 100644 --- a/tablemanager/src/main/java/config/SChangingCard.java +++ b/tablemanager/src/main/java/config/SChangingCard.java @@ -1,48 +1,29 @@ package config; +import manager.STableManager; import manager.Table; +import java.util.HashMap; +import java.util.Map; + @Table(name ="ChangingCard") public class SChangingCard implements BaseConfig { private int id; - private int cardId; - private int[][] propList; - - private int[][] starUpCost; - - private int[][] star1UpProps; - - private int[][] star2UpProps; - - private int[][] star3UpProps; - - private int[][] star4UpProps; - - private int[][] star5UpProps; - + private int star; private int[] exp; - - private int[][] starUpExp; - private int levelUpPool; - private int[] skill; - private int isOpen; - private int starMax; private int levelMax; - @Override public void init() throws Exception { - } - public int getId() { return id; } @@ -55,30 +36,14 @@ public class SChangingCard implements BaseConfig { return propList; } - public int[][] getStarUpCost() { - return starUpCost; - } - - public int[][] getStar1UpProps() { - return star1UpProps; - } - - public int[][] getStar2UpProps() { - return star2UpProps; - } - - public int[][] getStar3UpProps() { - return star3UpProps; + public int getStar() { + return star; } public int[] getExp() { return exp; } - public int[][] getStarUpExp() { - return starUpExp; - } - public int getLevelUpPool() { return levelUpPool; } @@ -98,12 +63,4 @@ public class SChangingCard implements BaseConfig { public int getLevelMax() { return levelMax; } - - public int[][] getStar4UpProps() { - return star4UpProps; - } - - public int[][] getStar5UpProps() { - return star5UpProps; - } } \ No newline at end of file